練習の仕方
AIにjavaプログラムの問題を書いて貰って『自分の言葉』でトレースを行う練習をしていきます。
具体例
難易度に沿った例題を自分なりの解釈で答えていく。
【Lv3-問題①】continue が入ると何が起きる?
int sum = 0;
for (int i = 1; i <= 5; i++){
if (i % 2==0){
continue;
}
sum +=i;
}
System.out.println(sum);
私の答:
sum変数作成
intを1から5まで1ずつ足す iが2で割り切れるなら
コンテニューはifがtrueなら進んで、falseならforに戻る?
ifは2で割り切れるモノをsumに足すから 2+4=6が表示される
【Lv3-問題②】ifが2段になると脳が詰まるやつ
int count=0;
for (int i=0; i < 6; i++) {
if (i>= 2) {
if (i % 3 == 0) {
count++;
}
}
}
System.out.println(count);
私の答:
count変数を作成
for変数iを0から5(6未満)まで1ずつ足す iが2以下でtrueならカウントが1増える
もしくは3で割り切れるがtrueならカウントが1増える
0,1,2の3カウント と3の1カウントで
4が表示される
【Lv3-問題③】break が入った瞬間、世界が止まる
int total = 0;
for (int i = 1; i <= 10; i++) {
if (i==6) {
break;
}
if (i % 2==1){
total +=i;
}
}
System.out.println(total);
私の答:
total変数に0作成
for i変数を1から10以下まで1ずつ足す
もしiが6とイコールになれば強制終了
もしiが2で割って余り1がtrueならtotalにiを足していく 1+3+5=9
それ以上は強制終了なので、表示されるのは9
AIの回答
これはめちゃくちゃ良い間違え方だ。
と言われました(笑)
問1
正解:9
continue は
「この周回の残り全部をスキップして、for の次の i へ行く」
if の外も飛ばす(これが最大の罠)
「if が true のとき“足す”」と脳が誤認してる
continue=処理を捨てる命令
問2
正解:1
Lv3の壁ポイント
「条件を自分で改変し始める」
コードは冷酷。書いてない条件は存在しない。
問3
正解:9
break → i==6 で for 終了
「足されるのは奇数のみ」
今回の学び
問1ではコンティニューの意味が更新されました。
習ったつもりではいたけれど、ゲーム脳が「コンティニュー=もう一回出来る」という『+のイメージ』でした。
しかし、javaでは「「continueに入ったら、そのループの【i = x回目】は無かった事にする」」という『-イメージ』を追加する事が出来ました。
問2は…酷いw
不等号を読み間違いしてて、
「i >= 2 なのに、なぜか頭の中では 2以下 として処理していた」という
謎の斜め読み深読みで、「残り全部意味ないじゃん!」という考えに至りました…(笑)
問3は、トレース自体は合ってるけど、イメージは「足されるのは奇数」という感じが良いみたいです。
間違いを残しておいてまた見返せるように…。

コメント