Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日: 更新日:

第8回 配列やif文、ループを組み合わせて使おう

著者: 崎谷実穂

第8回 配列やif文、ループを組み合わせて使おう

数学の点数が一番高い人は誰?

配列とfor文を使った本格的なプログラム

配列やfor文を組み合わせて使うと、これまで以上に複雑なプログラムを書くことができます。このプログラムの場合、どのような値が出力されるか考えてみましょう。

Lesson 1●値を足して最高合計点を出力しよう

右ページのプログラムと比べると、下のプログラムでは「K_point」という配列が増えました。メモで「国語の点数」と書いてあります。ここまでくれば、このプログラムは、「sakiya」「sato」「suzuki」「tanaka」という4人の生徒のテストの点数を扱っているということがわかるでしょう。名前の順番と、点数の順番が対応しています。

配列、for文、if文を組み合わせる

「i」が「0」のときは、「S_point」の1番目の値が「95」、「K_point」の1番目の値も「95」なので、合計は「190」。「SK_max = 0」なので、if文は成立します。次の合計点は「180」で不成立。「SK_max」は「190」のままです。3番目の合計点は「123」でまたもや不成立。最後の4番目の合計点は「190」なので成立します。よって、最高合計点は「190」と出力されます。

Lesson 2● 「誰の」点数なのかを出力しよう

上のプログラムには、落とし穴があります。それは、最高合計点はわかっても、「誰がその点数をとったのか」がわからないところです。しかも、190点をとった人は2人います。誰なのかを明らかにするには、どうすればよいのでしょうか。答えは、「もう一度配列の処理を行う」です。

「print(SK_max)」で最高合計点を出力したあと、もう1回、生徒の数だけ、その最高合計点と「i」番目の合計点を比較します。そして、同じ点数だったら、「name」の配列に格納された「i」番目の名前を出力する、というプログラムを書くのです。そうすれば、「sakiya」さんと「tanaka」さんが190点をとった人だということがわかります。

もう1つ配列を加えて名前を出力する

このプログラムは生徒数が4人なので手計算でも簡単に計算できますが、この数が100、1000と増えていった場合はどうでしょう。点数の足し算自体は簡単でも、ものすごく手間がかかります。そういったときにこのプログラムを書けば、一瞬で処理が終わるのです。