最大・最小
では、今度は配列の中の最大値を探すアルゴリズムです。合計の時の配列を使いましょう。
Dim num(5) num(1)=5 num(2)=8 num(3)=9 num(4)=3 num(5)=2
この配列の中の最大値は9です。これをプログラムで探すためにはどうしたらよいでしょうか?
最大値を求めるためには「最大値勝ち抜き戦」を行い最後まで勝ち残った人が勝利(最大値)になるようなプログラムを組みます。ボクシングのチャンピオンのような感じです。現在のチャンピオンに次々に挑戦者が挑戦しタイトルマッチを行います。勝者は新チャンピオンになります。最後までチャンピオンだったボクサーが最強のチャンピオンというわけです。
まず、初代チャンピオンを決めましょう。最初の数 num(1)を初代チャンピオンにします。
max = num(1)
チャンピオンを入れておく変数はmaxです。そして2番目以降の数がチャンピオンに挑戦します。
for i=2 to 5 if max < num(i) then max = num(i) end if next
for文は2から5までになっていることに注意してください。1番目は初代チャンピオンとしてすでに値を使っていますので、2番目からでいいわけです。そして、for文の中でifを使って現チャンピオン max と挑戦者 num(i) のどちらが大きいかを比較しています。挑戦者の方が大きければ新チャンピオン誕生です。max = num(i) で挑戦者をチャンピオンに置き換えます。
ループを抜けたときmaxには最大値が入っています。
MsgBox max
●全プログラムリスト
Dim num(5) num(1)=5 num(2)=8 num(3)=9 num(4)=3 num(5)=2 max = num(1) for i=2 to 5 if max < num(i) then max = num(i) end if next MsgBox max

問題9-2
この例題で、逆に、最小値を求めてください。