練習問題 |
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
さあ、for文のまとめ
の練習問題だ。
さっきのfor文の例を
改変してくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
よーし、
ゲームまで
あとちょっとだー!
がんばるぞー! |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
いや、まだまだ
だってば。
次のは
すごーく簡単な
ゲームだってば。 |
 |
|
 |
それでも
ゲーム
だもーん。 |
|
|
|
 |
|
 |
|
練習問題 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 ことの解答(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! |
 |
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
 |
 |
|
いいんじゃないかな。
そう、
カウンターが大きくなって
いくのを逆転させて
表示すればいいんだよ。
それには最大値から
引けばいいんだ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
やったあー!!
でも・・・
分かれば簡単だけど、
やっぱり難しいー・・・
なんか感覚が違うー。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
確かにループとか
変数とか使ってやるのは
普通の計算と感覚が違うよな。
でも、やってみれば
なんとなくやり方分かっただろ。
計算が苦手な人も、感覚覚えて
こうやっていろんなパターンを
考えてれば、自然に覚えちゃう
から大丈夫だよ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
一歩
づつね。 |
 |
|
 |
これも
経験だからね。 |
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
プログラムの動き方、構造のことを
ロジック(論理)って言うんだけど、
これからはこういったロジックを
考える場面が増えていくよ。
頭の体操だと思って考えてくれ。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
|
 |
 |
|
|
|
|
そうか、プログラム
作るんだもんね。
覚えるだけじゃなくて
自分で考えないと
だめなんだね。 |
|
|
|
|
|
 |
 |
|
 |
 |
|
|
 |
 |
 |
 |
 |
|
|
|
|
 |
|
|
|
|
焦らないで
徐々にね。
楽しもうぜ。 |
 |
|
 |
はいっ。
頭の体操ね。 |
|
|
ぐっ |
 |
|
 |
でも、
この計算は
小・中学生
レベルじゃね? |
|
|