広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English
 

SESSION 9 その23
for文 つづき


for文の命令文


for 実行する条件(実行回数)を指定する
break 処理を打ち切る
continue 命令以降の処理をキャンセルして
ループを続行する
   
for-each
(拡張for文)
配列やコレクションを操作するのに
便利なfor文拡張

必要に応じて組み合わせて使う
 
今回
は無しね。
それから、for文には他にも
for-each(拡張for文)
という使い方もある。

これはクラスと関係があるから
その時に見よう。
 
はいっ
まだ別のが
あるんだー。
 

  for文のまとめ

for文の説明は
これで終わり。


内容をまとめておこう。

覚える事
いろいろあったねー。

まあ、
ゆっくりね。

これからずっと
使うから自然に
覚えるよ。
 
えーと、
条件式が・・・
 

for文のまとめ(処理)
for文の処理の内容
指定した回数、処理を繰り返す制御文(反復)
break文を使う事でループを打ち切ることができる
continue文を使う事で中断して特定ループをスキップできる
カウンター変数で連番を利用した処理ができる
カウンター変数で特定のループにだけ処理をできる
 
 

for文のまとめ(命令)
for
指定回数処理を実行する命令
カウンター用の変数の宣言と初期値を決める
ループする回数を条件式で決める
カウンターの1回の増減値を決める
カウンターでループの継続を判定する
for文必須の命令
break
ループを「打ち切る」命令
forブロックの中に書く
自分のいるforブロックのループを終了する
continue
ループをその場で中断して「続ける」命令
forブロックの中に書く
自分のいるforブロックのループを中断して戻る
 
for-each
配列やコレクションを操作するのに便利なfor文拡張
 

 
練習問題

さあ、for文のまとめ
の練習問題
だ。

さっきのfor文の例を
改変してくれ。
よーし、
ゲームまで
あとちょっとだー!

がんばるぞー!
いや、まだまだ
だってば。

次のは
すごーく簡単な
ゲームだってば。
それでも
ゲーム
だもーん。

  練習問題2:問い


練習問題 2
 
問1:次の処理を
   プロジェクト名:KotoTest10の for文の例 改変 continue
   
を修正して追加し、実行結果を表示しなさい。
 
ロケットの「号機」表示を、一番最後から先頭へ向かって順番に表示する。

ただし、for文の条件式は変更しない事。
 
 

for文の例 改変 continue(KotoTest10のKNMain.java)17行目~
 
・・・      
017   public static void main(String[] args) {  
018            // TODO code application logic here  
019      
020            for(int i = 0;i < 1000;i++){  
021      
022                      //もし i が100だったら  
023                      if(i == 100){  
024                            //ロケットを打ち上げ失敗メッセージ  
025                            //System.out.println("打ち上げに失敗。" +  
026                            //                            "それはアメリカンドッグでした。");  
027                            //  
028                            //System.out.println("ロケット計画を中断します。");  
029                            //    
030                            //break;  
031                              
032                            //休日メッセージ  
033                            System.out.println("休日のため、" +  
034                                                   "ロケットの打ち上げはありません。");  
035      
036                            continue;  
037                     }  
038      
039                     //現在のカウントをロケットの号数に補正  
040                     int num = i + 1;  
041      
042                   //ロケットを打ち上げるメッセージを表示
043                     System.out.println("ロケット" + num +  
044                                                 "号機を打ち上げました。");  
045            }  
046      
047            //終了メッセージ  
048            System.out.println("計画完了");  
049      
050   }  
・・・      
 
 
難しいー!!  
ゆっくりね。
えー!
これって
1000号機から999号機・・・
ってだんだん小さくして
表示して行く
ってこと?
 
そうだよ。今までと逆。

初めてだと
ちょっと難しいかな。

頭の体操だと思って
やってみて。


えー、
for文の条件式を
変更しないで
でしょ。

どうやればいいんだろう・・・。

うーん・・・・
とりあえずやってみよう!
そっ。

がんばってねー!
うわー
たいへんだー。

でも
あきらめないっ!
 


わっせい
わっせい
がんばるぞー

うーんと、
うーんと、
うーんと・・・


どりゃ
どりゃ
うーんと・・・


・・・
・・・



・・・

あー、えーと。

どこらへんが
うまくできないのカナ、
お姫様。
でびない・・・
教えて
いただけますか?



何をどうすれば
いいのか、
全然分からないよー

ヒントはー?
あー、
今まで復習問題ばかりで
自分で処理内容を考える問題
は、あまりやってなかったからね。

最初は、何をすればいいか、
どう考えればいいか分かんないか。
ぎぶみー
なんだ
ギブなの。


あっそー

俺が
ギブアップ
したいわ
ギブが違うー!

絶対しないー!


 
じゃあ、ヒントをやろう。

今までの
小から大への「号機」表示には
カウンターを使ってたよな。


だったら、大から小への新表示も
カウンターを使えばできるはずだ。


このループの表を見て、カウンターを
どう使えば新表示にできるか
式にして
考えてみてくれ。
 

for文の例 改変 continue(KotoTest10のKNMain.java)38行目~
 
・・・      
038      
039                     //現在のカウントをロケットの号数に補正  
040                     int num = i + 1;  
041      
042                   //ロケットを打ち上げるメッセージを表示
043                     System.out.println("ロケット" + num +  
044                                                 "号機を打ち上げました。");  
・・・      
小から大への表示にはカウンター変数 i を使っていた。
大から小への表示もカウンター変数 i を使えばできるはず。

どんな式にする?
 
新表示(号機)のループを考える
ロケット最大数:1000
カウンター開始:0
 
  新表示
(表示したい値)
カウンター
開始 1000号機 0
  999号機 1
  998号機 2
 
  3号機 997
  2号機 998
終了 1号機 999
 
新表示とカウンターの表を作って法則を考えてみる
 
法則かなんかあるの・・・?

うーん・・・

1000の時、0
999の時、1
・・・
1の時、999

だから・・・

表示とカウンターを
足すとどれも1000になるね。

1000 + 0 = 1000
999 + 1 = 1000
・・・
1 + 999 = 1000

・・・うーん
うーん。
 


!!

「1000」って、
「ロケット最大数」じゃないの!

分かったあ!
新表示はロケット最大数から・・・
なんだ、
分かれば
簡単ー!
がんばってねー

  練習問題2:解答


練習問題2 ことの解答(KotoTest10のKNMain.java)17行目~
 
・・・      
017   public static void main(String[] args) {  
018            // TODO code application logic here  
019      
020            for(int i = 0;i < 1000;i++){  
021      
022                      //もし i が100だったら  
023                      if(i == 100){  
024                            //ロケットを打ち上げ失敗メッセージ  
025                            //System.out.println("打ち上げに失敗。" +  
026                            //                            "それはアメリカンドッグでした。");  
027                            //  
028                            //System.out.println("ロケット計画を中断します。");  
029                            //    
030                            //break;  
031                              
032                            //休日メッセージ  
033                            System.out.println("休日のため、" +  
034                                                   "ロケットの打ち上げはありません。");  
035      
036                            continue;  
037                     }  
038      
039                     //現在のカウントをロケットの号数に補正  
040                     //int num = i + 1;  
041                     int num = 1000 - i;  
042      
043                   //ロケットを打ち上げるメッセージを表示
044                     System.out.println("ロケット" + num +  
045                                                 "号機を打ち上げました。");  
046            }  
047      
048            //終了メッセージ  
049            System.out.println("計画完了");  
050      
051   }  
・・・      
黄色の部分を書き写して実行して下さい。
 
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ)
 
これで、どうかな!
出来てると思うんだけど。

ロケット最大数から
現在のカウントを引けば
表示数が出るんだね!

1000 - 0 = 1000号機
1000 - 1 = 999号機
1000 - 999 = 1号機

最大数 - カウント = 表示数


完璧!
どう!
OK!
いいんじゃないかな。

そう、
カウンターが大きくなって
いくのを逆転させて
表示すればいいんだよ。

それには最大値から
引けばいいんだ。


やったあー!!

でも・・・
分かれば簡単だけど、
やっぱり難しいー・・・

なんか感覚が違うー。
確かにループとか
変数とか使ってやるのは
普通の計算と感覚が違うよな。

でも、やってみれば
なんとなくやり方分かっただろ。


計算が苦手な人も、感覚覚えて
こうやっていろんなパターンを
考えてれば、自然に覚えちゃう
から大丈夫だよ。
一歩
づつね。
これも
経験だからね。


プログラムの動き方、構造のことを
ロジック
(論理)って言うんだけど、

これからはこういったロジックを
考える場面が増えていくよ。

頭の体操だと思って考えてくれ。
そうか、プログラム
作るんだもんね。

覚えるだけじゃなくて
自分で考えないと
だめなんだね。
焦らないで
徐々にね。

楽しもうぜ。
はいっ。

頭の体操ね。


ぐっ
でも、
この計算は
小・中学生
レベルじゃね?

 
 

広告
home もくじ 前のページを読む 次のページを読む
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -
広告