平成16年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
W−22
以下のプログラムは整数列を入力パラメータとし、ある処理をして結果を返す
Javaのプログラム (メソッド) である。このテストデータとして、次の項目から
パステストの一種である分岐網羅の基準を100%満たすものを選択せよ。
なお、分岐網羅とはプログラムに対応するコントロールフローグラフの
全アーク (またはリンク) を網羅することである。

int check ( int[] data ) {
 int sum = 0;
  int i;
   for (i = 0; data[i] > 0; i++) {
    if (data[i] > 80) sum = sum + 3;
    else {
     if (data [i] > 50) sum = sum + 2;
     else sum = sum + 1;
    }
   }
  return sum;
}
@ (79, 50, 1, 0)       A (80, 60, 40, 20, 0)
B (100, 81, 80, 79, 51, 0) C (100, 81, 50, 49, 0)
D (130, 80, 50, 0)



【正解】 D

題意より、
sum = sum + 3;
sum = sum + 2;
sum = sum + 1;
のすべての処理を網羅する必要がある。

整数列が入力パラメータであるかr、あ
81以上は sum = sum + 3;
51以上、80以下は sum = sum + 2;
1以上 50以下は sum = sum + 1;
0の時は、forループを抜け、return する。

すべての条件が揃っているのは、Dである。

@81以上の数字がない。
A81以上の数字がない。
B1以上、50以下の数字がない。
C51以上、80以下の数字がない。
D正しい。


EXCELのマクロのご相談なら ファーストマクロ 



W−21 目次 W−23
ファーストマクロ TOPページ