問3 (プログラミング) は擬似言語によるアルゴリズム読解。配列・ループ・再帰の動作を追えれば取れます。
問3 で使われる 擬似言語 は、構文に依存しない仮想プログラミング記述。
代入は ←、比較は =、変数宣言は『型: 変数名』、ループは for / while、条件は if / else。
これってどう解けばいいの?
(1) アルゴリズムの『目的』を最初に把握 (関数名・コメント)、(2) 入出力の関係を確認、(3) 各変数の値を表で追跡、(4) 設問の空欄を周辺ロジックから推測。
例: 配列要素の最大値を求める擬似言語
// 配列 a の最大値を返す
function FindMax(整数の配列: a) を返す: 整数
整数: max ← a[0]
整数: i ← 1
while (i < a.length)
if (a[i] > max)
max ← a[i]
endif
i ← i + 1
endwhile
return max
end
再帰の問題って難しいですぅ…
補足すると、再帰は『基底ケース』と『再帰呼び出し』を区別して、『何を呼び出すと終わるか』を最初に確認するといいですよ。
フィボナッチ・階乗・ハノイの塔が典型題材ですね。
問3 は科目Bで最も得点しやすい問題の1つなのよ。
FE で擬似言語に慣れていれば、AP も同じ感覚で解けるわ。
確認クイズ
上記の FindMax 関数において、配列 a = [3, 1, 4, 1, 5, 9, 2, 6] を引数に呼び出した場合、関数が返す値はいくつか。
- 3
- 5
- 9
- 6
こたえを見る
正解: 3. 9
FindMax は配列の最大値を返す。a = [3, 1, 4, 1, 5, 9, 2, 6] の最大値は 9。max は最初 a[0]=3 で初期化され、ループで a[i] > max のたびに更新され、9 にたどり着いた後は更新されません。