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

SESSION 9 その38
練習問題 つづき
  練習問題4:解答


練習問題4 ことの解答(KotoTest12のKNMain.java)17行目~
 
・・・      
017   public static void main(String[] args) {  
018            // TODO code application logic here  
019      
020            //カウンター用の変数を宣言・初期化  
021            int i = 0;  
022      
023            while(true){  
024                     //現在のカウントをロケットの号数に補正  
025                     int num = i + 1;  
026      
027                   //ロケットを打ち上げるメッセージを表示
028                     System.out.println("ロケット" + num +  
029                                                 "号機を打ち上げました。");  
030      
031                      //最後にカウントをアップする  
032                      i = i + 1;  
033      
034                      //終了チェック処理  
035                      if(i >= 10){  
036                              break;  
037                      }  
038            }  
039      
040            //終了メッセージ  
041            System.out.println("計画完了");  
042      
043   }  
・・・      
黄色の部分を追加して下さい。
 
実行結果(出力ウィンドウ)
実行結果(出力ウィンドウ)
 
細かい事
はいいや。
うん、
いいんじゃないかな。

結果もforのテストの時と
同じだし、さっきの変数の
宣言の間違いも直ってる。
 
さっきは、カウンター用の変数を
ブロック内で宣言してるから
無限ループになっちゃったんだね。

ブロック内で宣言した変数の
有効範囲は、ブロック内だけ

だもんね。

ループする度に、カウンターが
初期化されて0になっちゃって
たんだ。
  気をつけるね。
 
 

無限ループの原因
練習問題4 ことの解答:仮(KotoTest12のKNMain.java)17行目~
・・・      
020            while(true){  
021                     //カウンター用の変数を宣言・初期化  
022                      int i = 0;  
・・・      
whileループの中でカウンター用の変数を宣言していたため
ループする度に初期化されて0になってしまっていた。


今回はtrueで
whileループ
しっぱなしにして・・・

for文と同じように
カウントアップしてから
終了チェックするように
最後にしたよ。

うん、
いいんじゃない。

 
 
 

練習問題4 ことの解答(KotoTest12のKNMain.java)17行目~
 
・・・      
017   public static void main(String[] args) {  
018            // TODO code application logic here  
019      
020            //カウンター用の変数を宣言・初期化  
021            int i = 0;  
022      
023            while(true){  
024                     //現在のカウントをロケットの号数に補正  
025                     int num = i + 1;  
026      
027                   //ロケットを打ち上げるメッセージを表示
028                     System.out.println("ロケット" + num +  
029                                                 "号機を打ち上げました。");  
030      
031                      //最後にカウントをアップする  
032                      i = i + 1;  
033      
034                      //終了チェック処理  
035                      if(i >= 10){  
036                              break;  
037                      }  
038            }  
039      
040            //終了メッセージ  
041            System.out.println("計画完了");  
042      
043   }  
・・・      
 


それから
終了チェックのやり方を変えたよ。

for文の終了チェックが
「i が 10未満なら実行だったので、

while文では逆にして
「i が 10以上なら終了にしました。

だって、i < 10 のままじゃ、
最初カウンターが 0 だから
1回目で終わっちゃうもんね。

i >= 10 なら 0~9までは大丈夫だよね。
やたっ
よくできました。 
お、よく気付いたな。

ちゃんと、
「未満」と「以上」の
違いも理解してるな。
 

練習問題4 ことの解答(KotoTest12のKNMain.java)34行目~
 
・・・      
034                      //終了チェック処理  
035                      if(i >= 10){  
036                              break;  
037                      }  
・・・      
i が 10以上なら 終了


面白いよな。

forもwhileも、
同じ内容の処理なのに
終了条件は正反対だ。


判定の視点が違うんだよな。
 
面白いね! 
頭の体操ね。
 

終了判定の考え方の違い
 
forでは「実行している間」で考えている
「10未満の間」実行する
「未満」かチェックする
 
whileでは「終了する時点」で考えている
「10以上なら」終了する
「以上」かチェックする
 


それから、
for文の条件式を
そのまま使いたければ
こんな書き方もできるね。
そっか、
! 演算子で「以外なら」
に変えたんだ。

これでも「10以上なら」と
同じ意味になるんだね。
他にも
書けるって例ね。

お前の
やり方の方が
素直でいいと思うよ。
 
 

練習問題4 ことの解答(KotoTest12のKNMain.java)34行目~
 
・・・      
034                      //終了チェック処理  
035                      if(!(i < 10)){  
036                              break;  
037                      }  
・・・      
「i が10以下 以外 なら」 終了 の意味になる
(つまり「i が10以上なら」と同じ意味)


他にどんな書き方が
できるかいろいろ
試してみてね。
いろいろ
よくできました。

はなまるです。
ありがと。 

難しかったから
うれしいな。。。
はいっ。

柔軟にね。

     

でも、コードって、
本当にいろいろな
書き方ができるんだね。

どういう書き方しようか
すごい迷っちゃった。


うーん、難しいなあ。
気にするなって。

自由に書ける分、どうしていいのか
分からないかもしれないけど
こういうのは慣れだから。
経験を積めば分かってくよ。

どれが正解ってこともないしね。

今回のテストも
いろいろな形で書けるからね。
これで
いいのかなって
悩んじゃう・・・

あたしに
できるかな・・・。
みんな、
最初はこんな
もんだって。


今回、制御文を見たことで
できることが少し見えてきた
はずだ。


これから
必要に応じて作っていくことで
自然にいろいろな形で書ける
ようになるよ。
今は基本を
しっかり
押さえておこう。

焦らずにね。 
まずは基本ね。
そっか。

ゲームを作っていけば
分かるよね。


めずらしく
弱気ね。

ギブね?
違うもんー。

     

あと、制御文には
switch文やfor文、while文で使える
ラベル
という機能があるんだ。

でも、これは今回は見ないで
別のといっしょに見ることにしよう。

まだあるんだー。

その方が
分かりやすい
からね。

もうちょっと
あとね。
お願いします。


さあっ、
これで制御文については
大体見終わったな。


まだ見ていない他の制御文は、
今後その都度見ていくよ。

最後に、制御文と一緒に使うと
便利な簡略記法を見るぞ!

はいっ。

はあー。あと少し。

今日はほんと
長かったなあ。。。
ありがとね。

お疲れ様。。。

 
 

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