はじめに
やあ、こんにちは。今回はfor文について学んでいこう。
はい!よろしくお願いします。
for文は前回学んだif文と同様の条件文の一種だ。for文を使うと処理を繰返して実行できるようになるぞ。for文もif文と同様、決まった型があるからまずはそれを紹介しよう。
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文についてもう大丈夫みたいだな。では最後に練習問題をやって今回を終わろうと思う。準備はいいか?
はい!どんと来てください!
練習問題
問題
上に書いた『ドレミファソのプログラム』において、実行結果が『ドレドレドレミファソ』になるように回数とインデントのみを変更してみよう!
また、
実行結果が『ドレミファソドレミファソ』になるように回数とインデントのみを変更してみよう!
解答
今回は簡単にできたぞ!
下に実行した結果を表示します。
うむ、完璧だ!条件文に段々慣れてきたみたいだな!
今日習った内容で、どんどん遊んでみることが大切だぞ!それが上達の一番の近道だ。次回は『数の計算』についてやろうと思うぞ!では今日はここまでにしよう。お疲れさん。
はい!いろいろ遊んでみます。
今日もありがとうございました!
コメント