前回の続きで今回は繰り返し。
サンプルプログラム
前回もforEach, forを使って配列の要素を繰り返しをしましたが今回はもうちょっとシンプルに。
数値を選んで「how many times shall I call you?」ボタンをクリックした時の動きです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function call_you() { if($('my_name').value == '') { $('call_you').innetText = 'Tell me your name!!!'; return; } var value = $('my_name').value; var times = $('times').value; var list_text = ''; for(i = 0; i < times; i++) { var t = '' if (i > 0) { t= 's' } var count = i + 1; list_text+= 'Hey ' + value+ '! I call you ' + count+ 'time' + t+ '<br>'; } $('call_you').innerHTML = list_text; } |
これはそのまま何回あなたの名前を呼びますか?と言うことをしています。
最初に「what is your name?」に入力した値を見て、
入力されていない場合は「教えてよ!」と叫んで処理を終了します。
名前が入力された場合は名前そして繰り返しの回数を変数に代入します。
表示するテキストを初期化して、選択した回数分繰り返してあなたの名前を叫びます!
前回も説明したとおりfor(i = 0; i < times; i++)
はiが変数timesより小さい間、
すなわちiが選択した数より小さい間処理を繰り返してくださいと命令しています。
i++は一回の処理の度にiに1を加算してくださいと命令しています。
はい、そうですわかりやすく言うと6回繰り返してくださいと言うことです。
その結果、選択した数だけあなたの名前を呼んでくれます!
動きは一緒ですが違う繰り返しの書き方もあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function call_you_while() { if($('my_name').value == '') { $('call_you').innetText = 'Tell me your name!!!'; return; } var value = $('my_name').value; var times = $('while').value; var list_text = ''; var i = 0; while(i < times) { var t = '' if (times > 1) { t = 's' } list_text += 'Hey ' + value + '! I call you while I count ' + times + '<br>'; i++; } $('call_you').innerHTML = list_text; } |
これは回数を選択して「while I call you how many counts do you need?」を押した時の処理です。 while(i < times) iがtimesより小さい間は処理を継続してくださいと命令しています。 前述のforと何が違うのかと言うと、for文は前もって繰り返しの回数が指定されていると言うことです。 whileの場合は繰り返しの処理中に何らかの条件を変わったことを検知して繰り返しの処理を停止します。 ここでは繰り返しのたび、iに1を加算してその値がtimeより小さい場合は繰り返しているので前述の処理と同じような感じになっていますが、大きな違いは繰り返しを停止する条件を常に処理の間確認していると言う点です。 いい例は学校の進級試験ですかね。試験で一定の点数を超えない限りは何度も繰り返して試験を受けなければならないとかもう一年おなじ学年繰り返さなければならないと言うことです。 もし条件から外れない限り永久にループです。そう一生その学年を繰り返さなければなりません。 え?脱出方法はないかって?う〜ん、プログラムを強制的に停止するか、コンピュータが勝手に停止するか、コンピュータを強制的に停止しないとダメですね。 こんな感じですがイメージできますかね?ここまで理解できればほぼプログラムは書けるようになります。 とにかく書くだけであれば本当になんとなります。が更なる飛躍のためにはもうちょっといろいろ知っていた方がいいですよね。 でも今シリーズはこれにて終了。次はまた違うことを考えます。ブログ自体はプログラムの話はちょっとお休みするかもしれませんが懲りずに今後ともお付き合いください。