第五回 『for文』について

プログラミング編

はじめに

マサト先生
マサト先生

やあ、こんにちは。今回はfor文について学んでいこう。

ヒロト
ヒロト

はい!よろしくお願いします。

マサト先生
マサト先生

for文は前回学んだif文と同様の条件文の一種だ。for文を使うと処理を繰返して実行できるようになるぞ。for文もif文と同様、決まった型があるからまずはそれを紹介しよう。

for文の型

              for 変数 in range(回数):
                  処理

ヒロト
ヒロト

if文より複雑になりましたね!そして、if文のときと同様に、『コロン』の次の行は4文字分だけインデントされているのですね?

マサト先生
マサト先生

その通りだ!何はともあれ具体例を書いてみよう!

では、いつも通りビットアローを起動してもらおうか!

ヒロト
ヒロト

はい、ただいま!前回はfile4に書き込んだので、今日は『file5』を作成してこれに書き込んでいくことになりますね!・・・はい、出来ました!

マサト先生
マサト先生

では、簡単なfor文を書いていくぞ。

for文の例

マサト先生
マサト先生

一行目を見ると、変数として \(i\) を使って、回数は3回となっている。そして、2~3行名の処理を見ると二つのprint関数が書かれている。ではヒロトよ、このプログラムを実行するとどうなるか分かるかな?

ヒロト
ヒロト

for文は処理を繰り返し実行してくれると言ってましたよね?なので、処理であるprint関数が3回繰り返されると思います。したがって、『Good morning!』と『Hello,Hiroto!』が3回表示されます!

マサト先生
マサト先生

よし、答えは実行してみて確認しよう!

下が実行した画面だ。

ヒロト
ヒロト

やったー!正解ですね!

マサト先生
マサト先生

うむ、今回の例はprint関数2個だが、for文の下に書く処理は何個でもいいのだ。書かれた数だけ指定された回数実行されるのだ!

ヒロト
ヒロト

でも先生、変数の \(i\)って何のためにあるのですか?今回のプログラムではいまいち働きが分かりませんが・・・

for文の変数の働き

マサト先生
マサト先生

うむ、今回のプログラムでは処理の部分が変数を使わないprint関数であったから、変数は働いていないのだ!では、次の画面のプログラムを実行したらどうなるかまた考えてみてくれ。分からなければ自分で同じプログラムを書いて実行していいぞ!

ヒロト
ヒロト

今度はprint関数に変数 \(i\) が代入されていますね。うーん、どうなるのかなー?僕も同じ文を書いて実行してみます!

ヒロト
ヒロト

おっ! 0、1、2が表示されたぞ!

これはどういうことですか?

マサト先生
マサト先生

ふふふ、実はfor文で指定した変数には、実行を行うたびに値が代入されるのだ!range(3)は0、1、2という3個の値を作りそれを変数 \(i\) に一つずつ代入しながら処理が実行されているのだ。

ヒロト
ヒロト

なるほど、そういうことだったのですね!

マサト先生
マサト先生

nを正の整数としてrange(n)と書くと、変数 \(i\) に0からn-1までの値が代入されて結果、n回処理が実行される。また、for i in range(n , m)と書くと、変数 \(i\) にnからm-1までの値が代入されて結果、m-n回処理が実行されるのだ。次のようにな。

ヒロト
ヒロト

いかにも1から5まで表示されそうだけど、5-1=4までなのですね!慣れるまでは混乱しそうですね?

インデントの役割

マサト先生
マサト先生

ああ、私もいまだに慣れてないのだ!

さて、if文やfor文で大事なことはインデントについてだ。if文やfor文はインデントの数で実行する範囲を判断しているため、処理文が複数ある時はインデントをそろえて書かないとエラーになってしまうから注意が必要だ!例えば次の画面を見てくれ。

マサト先生
マサト先生

もう一度このプログラムが実行されたときどうなるか考えてほしい。

ヒロト
ヒロト

なるほど、2行目から4行目までのprint関数のインデントはそろっているのでfor文はこれらを実行範囲だと判断します。なので、ドレミドレミと2回表示されて、その後に5行目と6行目のptint関数が一回ずつ実行されて、ファ、ソと表示されます。僕も同じのを書いて答え合わせしてみますね!

マサト先生
マサト先生

完璧な読み取りだ!for文についてもう大丈夫みたいだな。では最後に練習問題をやって今回を終わろうと思う。準備はいいか?

ヒロト
ヒロト

はい!どんと来てください!

練習問題

問題

上に書いた『ドレミファソのプログラム』において、実行結果が『ドレドレドレミファソ』になるように回数とインデントのみを変更してみよう!

また、

実行結果が『ドレミファソドレミファソ』になるように回数とインデントのみを変更してみよう!

解答

ヒロト
ヒロト

今回は簡単にできたぞ!

下に実行した結果を表示します。

マサト先生
マサト先生

うむ、完璧だ!条件文に段々慣れてきたみたいだな!

今日習った内容で、どんどん遊んでみることが大切だぞ!それが上達の一番の近道だ。次回は『数の計算』についてやろうと思うぞ!では今日はここまでにしよう。お疲れさん。

ヒロト
ヒロト

はい!いろいろ遊んでみます。

今日もありがとうございました!

コメント

タイトルとURLをコピーしました