科目Bで頻出の配列操作。要素アクセスとループの組み合わせを理解しましょう。
擬似言語で配列ってどう書くの?
「{要素1, 要素2, 要素3}」のように {} で表記し、a[1] のように [] でアクセスするのよ。
重要なのは、IPA擬似言語では配列のインデックスが 1から始まる こと。
0始まりのプログラム言語と違うので注意!
○ 手続: arrayMax(整数型の配列: a)
整数型: i, max
max ← a[1]
for (i を 2 から aの要素数 まで 1 ずつ増やす)
if (a[i] > max)
max ← a[i]
endif
endfor
return max
これは配列の最大値を返す手続きね。
最初に a[1] を仮の最大値として、2番目以降と比較しながら大きい方に更新していく、古典的なアルゴリズムよ。
{3, 1, 4, 1, 5} を渡したら、どうなりますかぁ?
max ← a[1] でまず 3 から始まるわね。
i=2 では a[2]=1 で 3>1 だから変化なし。
i=3 では a[3]=4 で 4>3 なので max=4。
i=4 は 1 で変化なし。
i=5 は 5>4 なので max=5。
最終的に 5 を返すことになるわ。
ふむふむ、インデックスは1から始まって、要素数は「aの要素数」で取れるってことね。
あたしメモする!
そうそう。
配列の長さを扱うときは「aの要素数」と書くのが擬似言語の特徴なのよ。
これも頻出の記法ね。
確認クイズ
上記の arrayMax 手続に配列 {7, 2, 9, 1, 5} を渡した場合の戻り値はいくつか。
- 1
- 5
- 7
- 9
こたえを見る
正解: 4. 9
max ← 7 (初期値)、i=2: 2<7、i=3: 9>7なので max=9、i=4: 1<9、i=5: 5<9。最終的な max は 9 です。