印刷プレビューです。ブラウザの印刷機能でPDF保存・印刷できます。

基本情報技術者 擬似言語トレース(科目B対策)

40問 / トルカ(https://toruca.app)

  1. 1. 次の擬似言語プログラムを実行した後の変数xの値はどれか。 x ← 5 x ← x + 3 x ← x * 2

    • A. 16
    • B. 13
    • C. 10
    • D. 8

    正解: A. 16x←5でx=5、x←x+3でx=5+3=8、x←x*2でx=8*2=16となる。代入文は上から順に実行され、右辺の計算結果が左辺の変数に格納される。

  2. 2. 次の擬似言語プログラムを実行した際の出力はどれか。 x ← 7 if (x > 10) then 出力する("A") else if (x > 5) then 出力する("B") else 出力する("C") endif

    • A. B
    • B. A
    • C. C
    • D. 何も出力されない

    正解: A. Bx=7は10より大きくないため最初のifは成立しない。次にx>5(7>5)は成立するため"B"が出力される。条件分岐は上から順に評価され、最初に成立した条件のブロックのみが実行される。

  3. 3. 次の擬似言語プログラムを実行した後の変数sumの値はどれか。 sum ← 0 for (i を 1 から 5 まで 1 ずつ増やす) sum ← sum + i endfor

    • A. 15
    • B. 10
    • C. 5
    • D. 20

    正解: A. 15iが1から5まで繰り返され、sumに1,2,3,4,5が順に加算される。sum=1+2+3+4+5=15となる。forループはiの初期値から終了値まで、指定された増分で繰り返し実行される。

  4. 4. 次の擬似言語プログラムを実行した後の変数productの値はどれか。 product ← 1 for (i を 1 から 4 まで 1 ずつ増やす) product ← product * i endfor

    • A. 24
    • B. 10
    • C. 12
    • D. 4

    正解: A. 24product=1×1×2×3×4=24となる(4の階乗)。ループが1回実行されるごとにproductにiが乗算されていき、i=1,2,3,4を順に処理した結果、1*1*2*3*4=24が得られる。

  5. 5. 配列data ← {3, 1, 4, 1, 5}が与えられたとき、次の擬似言語プログラムを実行した後の変数maxの値はどれか。 max ← data[1] for (i を 2 から 5 まで 1 ずつ増やす) if (data[i] > max) then max ← data[i] endif endfor

    • A. 5
    • B. 4
    • C. 3
    • D. 1

    正解: A. 5maxは最初data[1]=3で初期化され、その後data[2]=1(更新なし)、data[3]=4(4>3のためmax=4に更新)、data[4]=1(更新なし)、data[5]=5(5>4のためmax=5に更新)と処理され、最終的にmax=5となる。これは配列の最大値を求める典型的なアルゴリズムである。

  6. 6. 配列data ← {2, 4, 6, 8}が与えられたとき、次の擬似言語プログラムを実行した後の変数sumの値はどれか。 sum ← 0 for (i を 1 から 4 まで 1 ずつ増やす) sum ← sum + data[i] endfor

    • A. 20
    • B. 10
    • C. 8
    • D. 24

    正解: A. 20sum=2+4+6+8=20となる。配列の全要素を順にsumへ加算していく、配列合計を求める典型的なアルゴリズムである。

  7. 7. 次の擬似言語プログラムを実行した後の変数countの値はどれか。 count ← 0 i ← 1 while (i <= 10) if (i を 2 で割った余り が 0 と等しい) then count ← count + 1 endif i ← i + 1 endwhile

    • A. 5
    • B. 10
    • C. 4
    • D. 6

    正解: A. 51から10までの整数のうち、2で割った余りが0(偶数)となるのは2,4,6,8,10の5個である。while文はi<=10の条件が成立する間繰り返され、iが2ずつでなく1ずつ増加する点に注意する。

  8. 8. 次の擬似言語で定義された関数calcを、calc(3, 4)として呼び出した場合の戻り値はどれか。 関数 calc(a, b) 戻り値の型: 整数型 x ← a * a y ← b * b return x + y

    • A. 25
    • B. 12
    • C. 7
    • D. 49

    正解: A. 25calc(3,4)ではa=3, b=4となり、x=a*a=9, y=b*b=16、戻り値はx+y=9+16=25となる。これはピタゴラスの定理(a^2+b^2)の計算に相当する。

  9. 9. 配列data ← {5, 2, 8, 1, 9}に対して選択ソート(昇順)を1周(最小値を1回選んで先頭と交換)実行した直後の配列の状態として最も適切なものはどれか。

    • A. {1, 2, 8, 5, 9}
    • B. {5, 2, 8, 1, 9}
    • C. {9, 2, 8, 1, 5}
    • D. {1, 9, 8, 5, 2}

    正解: A. {1, 2, 8, 5, 9}選択ソートは未整列部分から最小値を探して先頭と交換する。data={5,2,8,1,9}の最小値は1(4番目の要素)であるため、これを先頭の5と交換すると{1,2,8,5,9}となる。

  10. 10. 次の擬似言語で定義された再帰関数fact(n)を、fact(4)として呼び出した場合の戻り値はどれか。 関数 fact(n) 戻り値の型: 整数型 if (n <= 1) then return 1 else return n * fact(n - 1) endif

    • A. 24
    • B. 12
    • C. 10
    • D. 4

    正解: A. 24fact(4) = 4 * fact(3) = 4 * 3 * fact(2) = 4 * 3 * 2 * fact(1) = 4 * 3 * 2 * 1 = 24となる。これは階乗(4!)を求める典型的な再帰関数であり、n<=1が基底条件(ベースケース)である。

  11. 11. 次の擬似言語プログラムを実行した際、内側のループ(jのループ)が実行される総回数はどれか。 for (i を 1 から 3 まで 1 ずつ増やす) for (j を 1 から 4 まで 1 ずつ増やす) 処理を行う endfor endfor

    • A. 12
    • B. 7
    • C. 3
    • D. 4

    正解: A. 12外側のループが3回(i=1,2,3)、その各回について内側のループが4回(j=1,2,3,4)実行されるため、内側の処理は合計3×4=12回実行される(二重ループの計算量の考え方)。

  12. 12. 配列data ← {1, 2, 3, 4, 5}に対して、次の擬似言語プログラムを実行した後の配列dataの状態はどれか(要素の反転処理)。 for (i を 1 から 2 まで 1 ずつ増やす) tmp ← data[i] data[i] ← data[6 - i] data[6 - i] ← tmp endfor

    • A. {5, 4, 3, 2, 1}
    • B. {1, 2, 3, 4, 5}
    • C. {2, 1, 3, 5, 4}
    • D. {5, 2, 3, 4, 1}

    正解: A. {5, 4, 3, 2, 1}i=1のときdata[1]とdata[5]を交換(1と5が入れ替わる)、i=2のときdata[2]とdata[4]を交換(2と4が入れ替わる)。中央のdata[3]=3はそのまま残るため、最終的に{5,4,3,2,1}という反転された配列になる。

  13. 13. 次の擬似言語プログラムを実行した際の出力として最も適切なものはどれか。 x ← 15 if (x を 3 で割った余り が 0 と等しい) and (x を 5 で割った余り が 0 と等しい) then 出力する("FizzBuzz") else if (x を 3 で割った余り が 0 と等しい) then 出力する("Fizz") else if (x を 5 で割った余り が 0 と等しい) then 出力する("Buzz") else 出力する(x) endif

    • A. FizzBuzz
    • B. Fizz
    • C. Buzz
    • D. 15

    正解: A. FizzBuzzx=15は3でも5でも割り切れる(余りが両方0)ため、最初の条件(and条件)が成立し"FizzBuzz"が出力される。これは有名な「FizzBuzz問題」のロジックである。

  14. 14. 配列data ← {10, 20, 30}に対して、次の擬似言語プログラムを実行した後の変数countの値はどれか。 count ← 0 for (i を 1 から 3 まで 1 ずつ増やす) for (j を i から 3 まで 1 ずつ増やす) count ← count + 1 endfor endfor

    • A. 6
    • B. 9
    • C. 3
    • D. 12

    正解: A. 6i=1のときjは1〜3の3回、i=2のときjは2〜3の2回、i=3のときjは3〜3の1回実行される。合計3+2+1=6回countがインクリメントされる。内側ループの開始値が外側の変数に依存する三角形状の繰り返しパターンである。

  15. 15. 配列data ← {4, 2, 7, 1}に対してバブルソート(昇順)を実行する際、1回目のパス(隣接要素の比較・交換を先頭から末尾まで1周)が終了した直後の配列の状態として最も適切なものはどれか。

    • A. {2, 4, 1, 7}
    • B. {4, 2, 7, 1}
    • C. {1, 2, 4, 7}
    • D. {2, 7, 1, 4}

    正解: A. {2, 4, 1, 7}バブルソートの1パス目: (4,2)を比較し4>2のため交換→{2,4,7,1}。(4,7)を比較し交換なし→{2,4,7,1}。(7,1)を比較し7>1のため交換→{2,4,1,7}。1回目のパス終了後は{2,4,1,7}となる(最大値7が末尾側に向かって移動する途中の状態)。

  16. 16. 次の擬似言語プログラムを実行した後の変数a, bの値の組み合わせとして最も適切なものはどれか(2つの変数の値を交換する処理)。 a ← 3 b ← 7 tmp ← a a ← b b ← tmp

    • A. a=7, b=3
    • B. a=3, b=7
    • C. a=7, b=7
    • D. a=3, b=3

    正解: A. a=7, b=3一時変数tmpを使ってaとbの値を交換する典型的な処理である。tmp←a(tmp=3)、a←b(a=7)、b←tmp(b=3)となり、最終的にa=7, b=3となる。

  17. 17. 次の擬似言語プログラムを実行した後の変数resultの値はどれか(2の累乗を計算)。 result ← 1 for (i を 1 から 5 まで 1 ずつ増やす) result ← result * 2 endfor

    • A. 32
    • B. 16
    • C. 64
    • D. 10

    正解: A. 32resultは1から始まり、ループが5回実行されるたびに2倍される。1×2×2×2×2×2=32となる(2の5乗=32)。

  18. 18. 配列data ← {3, 1, 4, 1, 5, 9, 2, 6}に対して線形探索で値5を探す場合、比較が行われる回数として最も適切なものはどれか(先頭から順に比較し、見つかった時点で終了するものとする)。

    • A. 5回
    • B. 8回
    • C. 1回
    • D. 4回

    正解: A. 5回先頭から順にdata[1]=3, data[2]=1, data[3]=4, data[4]=1, data[5]=5と比較していき、5番目の要素で値5が見つかるため、比較回数は5回である。線形探索は見つかるまで先頭から順に1つずつ比較する。

  19. 19. 整列済み配列data ← {2, 5, 8, 12, 16, 23, 38, 45, 56, 72}に対して二分探索で値23を探す場合、最初に比較される要素(中央の要素)はどれか。

    • A. 16(5番目の要素)
    • B. 23(6番目の要素)
    • C. 2(1番目の要素)
    • D. 72(10番目の要素)

    正解: A. 16(5番目の要素)要素数10の配列の中央付近のインデックスは(1+10)/2=5.5であり、切り捨てて5番目の要素data[5]=16が最初に比較される。16<23のため、探索範囲は後半(6番目以降)に絞り込まれ、次に23が見つかる。

  20. 20. 次の擬似言語で定義された関数isEven(n)を、isEven(7)として呼び出した場合の戻り値はどれか。 関数 isEven(n) 戻り値の型: 論理型 if (n を 2 で割った余り が 0 と等しい) then return true else return false endif

    • A. false
    • B. true
    • C. 0
    • D. 7

    正解: A. false7を2で割った余りは1であり0ではないため、else節が実行されfalseが返される。この関数は引数が偶数か奇数かを判定する関数である。

  21. 21. 2次元配列matrix(3行3列)の全要素の合計を求める次の擬似言語プログラムについて、空欄に入る最も適切なものはどれか。 sum ← 0 for (i を 1 から 3 まで 1 ずつ増やす) for (j を 1 から 3 まで 1 ずつ増やす) sum ← sum + [ 空欄 ] endfor endfor

    • A. matrix[i, j]
    • B. matrix[j, i]
    • C. matrix[i]
    • D. sum[i, j]

    正解: A. matrix[i, j]2次元配列の全要素を走査する場合、外側ループの変数i(行)と内側ループの変数j(列)を用いてmatrix[i, j]のように行と列を指定してアクセスする。iとjの順序を入れ替えると意図した要素と異なる箇所を参照してしまう可能性がある(正方行列の場合は総和は変わらないが、一般的な走査の考え方として行→列の順が基本)。

  22. 22. 次の擬似言語プログラムにおいて、変数xの最終的な値はどれか(while文とbreakに相当する脱出処理)。 x ← 1 while (true) if (x >= 100) then 脱出する endif x ← x * 3 endwhile

    • A. 243
    • B. 100
    • C. 81
    • D. 729

    正解: A. 243x=1→3→9→27→81→243と3倍され続け、x=243になった時点でx>=100が真となり脱出する(x=81の時点ではまだ100未満なのでループは継続し、次にx=81*3=243となってから判定される)。よって最終的なxの値は243である。

  23. 23. 配列data ← {7, 3, 9, 4, 6}の要素のうち、偶数のみの合計を求める次の擬似言語プログラムについて、実行後のsumの値はどれか。 sum ← 0 for (i を 1 から 5 まで 1 ずつ増やす) if (data[i] を 2 で割った余り が 0 と等しい) then sum ← sum + data[i] endif endfor

    • A. 10
    • B. 19
    • C. 29
    • D. 6

    正解: A. 10配列の要素7,3,9,4,6のうち偶数は4と6のみである。sum=4+6=10となる。条件分岐を用いて配列内の特定の条件を満たす要素のみを集計する典型的なアルゴリズムである。

  24. 24. 次の擬似言語で定義された再帰関数gcd(a, b)(最大公約数を求めるユークリッドの互除法)を、gcd(48, 18)として呼び出した場合の戻り値はどれか。 関数 gcd(a, b) 戻り値の型: 整数型 if (b が 0 と等しい) then return a else return gcd(b, a を b で割った余り) endif

    • A. 6
    • B. 18
    • C. 48
    • D. 12

    正解: A. 6gcd(48,18)→gcd(18, 48%18=12)→gcd(12, 18%12=6)→gcd(6, 12%6=0)→b=0のためa=6を返す。よって48と18の最大公約数は6である。これはユークリッドの互除法という古典的なアルゴリズムである。

  25. 25. プログラムにおける「局所変数(ローカル変数)」の説明として最も適切なものはどれか。

    • A. 特定の関数やブロックの内部でのみ有効で、その範囲外からは参照できない変数
    • B. プログラム全体のどこからでも参照できる変数
    • C. 一度定義すると値を変更できない変数
    • D. 必ず数値型でなければならない変数

    正解: A. 特定の関数やブロックの内部でのみ有効で、その範囲外からは参照できない変数局所変数(ローカル変数)は、特定の関数やブロックの内部で定義され、その範囲(スコープ)の内部でのみ有効な変数である。関数の外部や他の関数からは参照できず、同じ名前の変数を異なる関数内で独立して使用することができる。

  26. 26. 配列data ← {1, 2, 3, 4, 5}に対して、次の擬似言語プログラムを実行した後の変数countの値はどれか(要素数を数える処理と等価な検証)。 count ← 0 i ← 1 while (i <= 5) count ← count + 1 i ← i + 1 endwhile

    • A. 5
    • B. 4
    • C. 6
    • D. 1

    正解: A. 5iが1から5になるまで(i<=5が真である間)ループが実行され、その都度countが1ずつ増加する。i=1,2,3,4,5の5回ループが実行されるため、count=5となる。

  27. 27. 配列data ← {8, 3, 5, 1, 9, 2}の中から最小値を探す次の擬似言語プログラムにおいて、空欄に入る最も適切なものはどれか。 min ← data[1] for (i を 2 から 6 まで 1 ずつ増やす) if ( [ 空欄 ] ) then min ← data[i] endif endfor

    • A. data[i] < min
    • B. data[i] > min
    • C. data[i] = min
    • D. i < min

    正解: A. data[i] < min最小値を求める場合、現在の候補minより小さい値data[i]が見つかった際にminを更新する必要があるため、条件は「data[i] < min」が正しい。「data[i] > min」では最大値を求める処理になってしまう。

  28. 28. 文字列"HELLO"の文字数(長さ)を求める処理として最も適切な考え方はどれか。

    • A. 文字列の長さを返す関数(length等)を利用するか、先頭から末尾まで走査して文字数をカウントする
    • B. 文字列は常に長さを持たないため求めることができない
    • C. 文字列の最初の文字のみを見れば長さが分かる
    • D. 文字列同士を掛け算すれば長さが求まる

    正解: A. 文字列の長さを返す関数(length等)を利用するか、先頭から末尾まで走査して文字数をカウントする文字列の長さは、多くのプログラミング言語で提供されている組み込みの長さ取得関数(lengthやlen等)を利用するか、先頭から末尾(終端文字)まで1文字ずつ走査してカウントすることで求めることができる。"HELLO"の場合、長さは5文字である。

  29. 29. 次の擬似言語プログラムにおいて、do-while型の繰り返し(後判定ループ)の特徴として最も適切なものはどれか。 do 処理を行う while (条件式)

    • A. 条件式の真偽に関わらず、ループ内の処理が少なくとも1回は実行される
    • B. 条件式が最初から偽であれば、ループ内の処理は1度も実行されない
    • C. while文と全く同じ動作をし、判定のタイミングに違いはない
    • D. 繰り返し回数を事前に指定しなければならない

    正解: A. 条件式の真偽に関わらず、ループ内の処理が少なくとも1回は実行されるdo-while型(後判定ループ)は、まずループ内の処理を実行してから条件式を判定する構造であるため、条件式の真偽に関わらずループ内の処理が少なくとも1回は実行される。これは先に条件を判定するwhile文(前判定ループ)との重要な違いである。

  30. 30. 配列data ← {1, 3, 5, 7, 9}に対して、値6を挿入すべき適切な位置(整列を維持する場合)を二分探索的に求める考え方として最も適切なものはどれか。

    • A. 整列済み配列の中で6より小さい要素と大きい要素の境界を探索し、その間の位置に挿入する
    • B. 常に配列の末尾に追加し、整列は考慮しない
    • C. 常に配列の先頭に追加する
    • D. 配列全体をランダムな順序に並び替えてから追加する

    正解: A. 整列済み配列の中で6より小さい要素と大きい要素の境界を探索し、その間の位置に挿入する整列済み配列に新しい要素を整列を維持したまま挿入する場合、6より小さい要素(5)と大きい要素(7)の境界を探索し、その間(5と7の間)に挿入する必要がある。この考え方は挿入ソートや二分探索を用いた挿入位置の特定に応用される。

  31. 31. 次の擬似言語で定義された関数power(base, exp)を、power(2, 4)として呼び出した場合の戻り値はどれか。 関数 power(base, exp) 戻り値の型: 整数型 result ← 1 for (i を 1 から exp まで 1 ずつ増やす) result ← result * base endfor return result

    • A. 16
    • B. 8
    • C. 6
    • D. 4

    正解: A. 16power(2,4)はbase=2, exp=4であり、result=1から始まりループが4回実行されるたびに2を乗算する。1×2×2×2×2=16となる(2の4乗=16)。この関数はbaseのexp乗を計算する処理である。

  32. 32. 配列data ← {5, 5, 5, 5}に対して、次の擬似言語プログラムを実行した後の変数allSameの値はどれか(全要素が同じ値かを判定する処理)。 allSame ← true for (i を 2 から 4 まで 1 ずつ増やす) if (data[i] が data[1] と等しくない) then allSame ← false endif endfor

    • A. true
    • B. false
    • C. 0
    • D. 1

    正解: A. true配列data全体の値が5で統一されているため、data[2],data[3],data[4]は全てdata[1](5)と等しく、allSameがfalseに更新される条件は一度も成立しない。よってallSameはtrueのまま維持される。

  33. 33. 次の擬似言語プログラムにおける「else if」の役割として最も適切なものはどれか。 if (条件1) then 処理A else if (条件2) then 処理B else 処理C endif

    • A. 条件1が成立しない場合にのみ条件2を評価し、追加の分岐先を提供する
    • B. 条件1と条件2の両方が常に評価され、両方の処理が実行される
    • C. 条件1が成立した場合にのみ条件2を評価する
    • D. elseとelse ifは全く同じ意味であり区別がない

    正解: A. 条件1が成立しない場合にのみ条件2を評価し、追加の分岐先を提供するelse ifは、直前の条件(条件1)が成立しなかった場合にのみ次の条件(条件2)を評価する構造であり、複数の分岐先を効率的に表現できる。条件1が成立した時点で処理Aのみが実行され、条件2の評価やelseのブロックは実行されない。

  34. 34. 配列data ← {12, 45, 7, 23, 56, 89, 34}の中から2番目に大きい値を求める考え方として最も適切なものはどれか。

    • A. 配列を降順に整列してから2番目の要素を取得するか、最大値と2番目の候補を同時に追跡しながら走査する
    • B. 配列の2番目の要素(インデックス2)を無条件に採用する
    • C. 配列の最小値を2倍すれば求まる
    • D. 配列の要素数を2で割った値を求める

    正解: A. 配列を降順に整列してから2番目の要素を取得するか、最大値と2番目の候補を同時に追跡しながら走査する配列内で2番目に大きい値を求めるには、配列全体を降順に整列してから2番目の要素を取得する方法(O(n log n))や、走査しながら最大値と2番目に大きい値の2つの候補を同時に更新していく方法(O(n))が考えられる。配列の物理的な2番目の要素(インデックス2)が必ずしも2番目に大きい値であるとは限らない点に注意が必要である。

  35. 35. 次の擬似言語プログラムにおいて、変数iが最終的にとる値はどれか(ループの継続条件に着目)。 i ← 0 while (i < 5) i ← i + 1 endwhile

    • A. 5
    • B. 4
    • C. 6
    • D. 0

    正解: A. 5iは0から始まり、i<5の条件が成立する間ループ内でi←i+1が実行される。i=0,1,2,3,4のときはまだ5未満なのでループが継続し、i=5になった時点でi<5が偽となりループを終了する。よって最終的なiの値は5である。

  36. 36. 配列data ← {1, 2, 3}と配列data2 ← {4, 5, 6}を要素ごとに加算して新しい配列resultを作る処理として最も適切な擬似言語の記述はどれか。

    • A. for (i を 1 から 3 まで 1 ずつ増やす) result[i] ← data[i] + data2[i] endfor
    • B. result ← data + data2 (配列同士をそのまま加算演算子で結合する)
    • C. for (i を 1 から 3 まで 1 ずつ増やす) result ← data[i] + data2 endfor
    • D. result[1] ← data[1] + data2[1] のみを実行し、他の要素は考慮しない

    正解: A. for (i を 1 から 3 まで 1 ずつ増やす) result[i] ← data[i] + data2[i] endfor配列同士を要素ごとに加算するには、ループを用いて各インデックスiについてdata[i]とdata2[i]を加算し、その結果をresult[i]に格納する必要がある。多くのプログラミング言語では配列同士を直接「+」で加算することはできず、明示的なループ処理が必要になる。

  37. 37. 次の擬似言語で定義された関数isPrime(n)(素数判定)について、isPrime(7)を呼び出した際の動作の説明として最も適切なものはどれか。 関数 isPrime(n) 戻り値の型: 論理型 if (n < 2) then return false endif for (i を 2 から n - 1 まで 1 ずつ増やす) if (n を i で割った余り が 0 と等しい) then return false endif endfor return true

    • A. 2から6までのいずれの数でも7を割り切れないため、ループを最後まで終えてtrueが返される
    • B. 最初のif文(n<2)が成立しfalseが返される
    • C. i=2の時点で7が割り切れるためfalseが返される
    • D. 無限ループになりプログラムが終了しない

    正解: A. 2から6までのいずれの数でも7を割り切れないため、ループを最後まで終えてtrueが返されるisPrime(7)では、n=7は2以上なので最初のif文は成立しない。i=2〜6について7を割った余りを調べるが、7は2,3,4,5,6のいずれでも割り切れない(素数であるため)ため、ループ内でreturn falseは一度も実行されず、ループを最後まで終えてreturn trueが実行される。

  38. 38. 配列data ← {3, 6, 9, 12}の各要素を2倍にする次の擬似言語プログラムにおいて、空欄に入る最も適切なものはどれか。 for (i を 1 から 4 まで 1 ずつ増やす) [ 空欄 ] endfor

    • A. data[i] ← data[i] * 2
    • B. data ← data * 2
    • C. data[i] ← i * 2
    • D. i ← data[i] * 2

    正解: A. data[i] ← data[i] * 2配列の各要素を2倍にするには、ループ変数iを使ってdata[i]自身に2を乗算し、その結果を同じdata[i]に再代入する「data[i] ← data[i] * 2」という記述が正しい。「i ← data[i] * 2」ではループ変数自体が書き換わってしまい正しく動作しない。

  39. 39. 配列data ← {"apple", "banana", "cherry"}に対して、次の擬似言語プログラムを実行した際の出力として最も適切なものはどれか。 for (i を 1 から 3 まで 1 ずつ増やす) 出力する(data[i]) endfor

    • A. apple, banana, cherry の順に3行出力される
    • B. cherry, banana, apple の順に3行出力される
    • C. apple のみが1回出力される
    • D. 何も出力されない

    正解: A. apple, banana, cherry の順に3行出力されるiが1から3まで順に増加するforループの中で、その都度data[i]を出力しているため、data[1]="apple"、data[2]="banana"、data[3]="cherry"の順に3行出力される。

  40. 40. 基本情報技術者試験の科目B(擬似言語によるプログラミング能力を問う分野)で求められる能力として最も適切なものはどれか。

    • A. 与えられた擬似言語のプログラムを正確にトレース(追跡)し、変数の値の変化や最終的な出力結果を論理的に導き出す能力
    • B. 特定のプログラミング言語の高度な文法をすべて暗記している能力のみ
    • C. プログラムを一切読まずに感覚で正解を選ぶ能力
    • D. 計算量やアルゴリズムの効率性を一切考慮しない能力

    正解: A. 与えられた擬似言語のプログラムを正確にトレース(追跡)し、変数の値の変化や最終的な出力結果を論理的に導き出す能力基本情報技術者試験の科目Bでは、特定のプログラミング言語に依存しない擬似言語で記述されたプログラムを正確にトレース(追跡)し、変数の値の変化や条件分岐・繰り返し処理の挙動を論理的に読み解いて、最終的な出力結果や戻り値を導き出す実践的なプログラミング的思考力が問われる。