配列と繰り返し処理

学習の目的

  • ・ 配列を使って10人分の得点入力と集計を行う

1. 配列を使って10人分の得点入力と集計を行う

10人分の得点を入力して集計するプログラムは、配列を使うと繰り返し処理で表すことができます。

今回は、2つの繰返し処理でアルゴリズムを考えます。

① 配列に10人分のデータを代入する処理

② 配列のデータを集計する処理

※ただし、配列のデータはわかりやすくするために10,20,30,・・・100と10点刻みで代入をしています。

配列を使った10人分の得点の代入と集計を行うアルゴリズムは次のようになります。

得点の代入と集計の方法

配列を使った場合のフローチャート

配列を使わないフローチャートと比べるとすごく簡単そう。

でも、「score[i] = (i+1) * 10」みたいによくわからない式が書いてある・・・

計算式がありますが、これまで学習してきているのできっとわかるはずです。

一つずつ確認をしていきます。

① 得点の入力

配列を使ったフローチャートも得点を入力する部分と集計をする部分に分かれています。
①の得点を入力する繰り返し処理について確認します。

①-1 繰り返し処理の条件

①-1はループ端記号で、繰り返し処理の継続条件を表しています。

ここでは、変数iを0~9まで1ずつ変化させながら繰り返し処理を実行するための条件指定をしています。

iの値が「0」から始まっているので、条件を「9」まで指定すると10回処理を繰り返します。

①-2 繰り返し処理する内容

①-2は配列scoreにデータを代入をしています。

繰り返し回数と変数iの値および、「score[i] = ( i + 1 ) * 10」の値がどのように変化していくか確認しましょう。

繰り返し回数 変数i score[ i ] = ( i + 1 ) * 10 処理内容 配列score
1回目 0 score[0] = ( 0 + 1 ) * 10 score[0]の要素に10を代入する
2回目 1 score[1] = ( 1 + 1 ) * 10 score[1]の要素に20を代入する
3回目 2 score[2] = ( 2 + 1 ) * 10 score[2]の要素に30を代入する
4回目 3 score[3] = ( 3 + 1 ) * 10 score[3]の要素に40を代入する
5回目 4 score[4] = ( 4 + 1 ) * 10 score[4]の要素に50を代入する
6回目 5 score[5] = ( 5 + 1 ) * 10 score[5]の要素に60を代入する
7回目 6 score[6] = ( 6 + 1 ) * 10 score[6]の要素に70を代入する
8回目 7 score[7] = ( 7 + 1 ) * 10 score[7]の要素に80を代入する
9回目 8 score[8] = ( 8 + 1 ) * 90 score[8]の要素に90を代入する
10回目 9 score[9] = ( 9 + 1 ) * 10 score[9]の要素に100を代入する

繰り返すたびにiの値が変わるので、iを添字にすると配列の要素位置が変わっていくのですね。

配列にすると、添字を使って要素を指定することで繰り返し処理ができるので、プログラムが簡潔になりますね。


② 得点を集計する処理

得点を集計する処理も繰り返し処理で行います。
集計処理のフローチャートは次の部分です。

②-1 集計用変数の初期化

繰り返し処理の前に「sum = 0」という処理がありますが、これは集計用の変数sumを0で初期化しています。
プログラムでは、変数に何も入っていない状態では計算に使うことができません。そのため、集計処理の前に集計用の変数に0を代入して計算に使えるようにします。

なるほど、集計用の変数sumに0を代入すると計算に使えるのか。

集計処理では集計用変数に0を代入するのは定番処理です。

②-2 繰り返し処理の条件

繰り返し処理の条件は「得点を入力する」時と同じです。

集計処理は、配列score[0]~score[9]までの10個を加算するので、加算処理を10回繰り返します。

②-3 集計処理

集計処理は集計用変数sumに配列scoreの値をscore[0]~score[9]まで一つずつ加算を行っています。

繰り返し処理でどのように変数が変わっていくか確認しましょう。

繰り返し回数 変数i sum = sum + score[i] 処理内容 変数sum
1回目 0 sum = sum + score[0]
(sum = 0 + 10)
変数sumにscore[0]の要素を加算してsumに代入 10
2回目 1 sum = sum + score[1]
(sum = 10 + 20)
変数sumにscore[1]の要素を加算してsumに代入 30
3回目 2 sum = sum + score[2]
(sum = 30 + 30)
変数sumにscore[2]の要素を加算してsumに代入 60
4回目 3 sum = sum + score[3]
(sum = 60 + 40)
変数sumにscore[3]の要素を加算してsumに代入 100
5回目 4 sum = sum + score[4]
(sum = 100 + 50)
変数sumにscore[4]の要素を加算してsumに代入 150
6回目 5 sum = sum + score[5]
(sum = 150 + 60)
変数sumにscore[5]の要素を加算してsumに代入 210
7回目 6 sum = sum + score[6]
(sum = 210 + 70)
変数sumにscore[6]の要素を加算してsumに代入 280
8回目 7 sum = sum + score[7]
(sum = 280 + 80)
変数sumにscore[7]の要素を加算してsumに代入 360
9回目 8 sum = sum + score[8]
(sum = 360 + 90)
変数sumにscore[8]の要素を加算してsumに代入 450
10回目 9 sum = sum + score[9]
(sum = 450 + 100)
変数sumにscore[9]の要素を加算してsumに代入 550

これも変数iを添字として使うことで、配列の先頭から最後まで順番に1つずつ加算して集計するのですね。

そうです。配列は添字を使って繰り返し処理をするときに向いていることはわかりましたね。

続いて、配列を使った処理について問題を解いてみましょう。

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる