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

番外編 自分で作ってみよう その10
初心者がよくする間違い つづき
  おまけ:変数の書き間違い


クイズゲーム完成 解答チェック関数化
(KotoQuizのKQMain.java)161行目~
(エラー例のために一部改変)
 
・・・      
161       /**  
162       * 解答チェック処理  
163       * @param seikaiBangou 正解の番号  
164       * @param kaitouBangou 入力番号  
165       * @param seikaiGoukei 正解数  
166       * @return seikaiGoukei 正解数  
167        */  
168       private static int checkAnswerData(int seikaiBangou,int kaitouBangou ,int seikaiGoukei){  
169      
170           //解答チェック  
171           if(kaitouBangou == seikaiBangou){  
172               System.out.println("やったね!正解");  
173               kaitouBangou += 1;//正解数加算  
174           }else{  
175               System.out.println("残念!不正解");  
176           }  
177      
178           //結果を返す  
179           return kaitouBangou;  
180       }  
・・・    
エラーの場所を探してみて下さい。
写す必要はありません。
 
行数が
少ないから
簡単だろ。
えー・・・。
簡単じゃないよー。

うーん、
どこだろう。
そうそう、おまけついでに
もう1つエラーを見ておこう。

このコードを見てくれ。

これは前回のクイズゲームの
解答チェック処理関数を
変更したものなんだけど、
間違えてる部分があるんだ。

探してみてくれ。
 
解答チェック処理だから・・・。

入力番号と正解番号を
チェックして、
正解と不正解の処理をする・・・

別にどこもおかしくないと
思うけど・・・。
 



クイズゲーム完成 解答チェック関数化
(KotoQuizのKQMain.java)161行目~
(エラー例のために一部改変)
 
・・・      
161       /**  
162       * 解答チェック処理  
163       * @param seikaiBangou 正解の番号  
164       * @param kaitouBangou 入力番号  
165       * @param seikaiGoukei 正解数  
166       * @return seikaiGoukei 正解数  
167        */  
168       private static int checkAnswerData(int seikaiBangou,int kaitouBangou ,int seikaiGoukei){  
169      
170           //解答チェック  
171           if(kaitouBangou == seikaiBangou){  
172               System.out.println("やったね!正解");  
173               kaitouBangou += 1;//正解数加算  
174           }else{  
175               System.out.println("残念!不正解");  
176           }  
177      
178           //結果を返す  
179           return kaitouBangou;  
180       }  
・・・    
黄色の部分は、本来は
正解数(seikaiGoukei)だが
入力番号(kaitouBangou)になっている。
 
この人、
変数名を
勘違いしたの
かもねー
あたし
やりそう!
このコードの間違いは
変数の書き間違いだ。

「正解数」の変数を書かなきゃ
いけない所に間違えて、
「入力番号」の変数
を書いてる。
 
入力番号に1加算して
戻り値で戻したら・・・

正解数が
「入力番号+1」の数に
なっちゃう!


滅茶苦茶だ!
 


注意しても
やっちゃう
だろうけど。
これは、
見つける難易度が高いエラーだ。


違う変数を書いたらロジックが
全く変わっちゃうからね。

プログラムが訳の分からない
動きをして原因を調べるのが大変。

この原因になるのは、
単なる書き間違いに、
勘違いや思い込み。

それから
ロジック自体の間違い・・・


初心者に限らず誰でもする
可能性があるから気をつけよう。
 
はいっ。

変数を
間違えないように
注意するね。
  そうか、
思い込みの
場合もあるんだ。

調べるの
難しそうー。
 

  まとめ

これで
今回のエラーの解説は
全部おしまい。

初心者が起こしやすい
間違いをまとめると
こんな感じ。

どれも混乱が原因の元に
なってるからね。
読みやすいコードを
書くように心がけよう。
はいっ!

ごちゃごちゃ
しないように
気をつけます。
おっ、
いい返事。
もう
大丈夫です!
 

起こしやすい間違いのまとめ
初心者がよくする間違い
・ブロックの整合性
・文字の打ち間違いや見間違い
・制御文の書式間違い
・間違いの場所の思い込み
 
誰でも起こす可能性のある間違い
・変数の書き間違い
 
対応のコツ
・デバッグのコツを掴む
・エラーの原因を探すコツを掴む
 


じゃあ、
作成を続けよう。


がんばっていこー。
はいっ!
ありがとうございました。

続きがんばるぞ!
ゆっくりで
いいからね。
よーし!

クイズゲーム
作るぞ!

     

なぽちゃん、
大変、大変っ!


今度こそ
本当にコンピューター
壊れちゃった!
ぽっぽー  
あわわわ

たいへんっ。
俺が壊して
やろうか?
あなた、
どうしても
壊したいんだ。


今度こそ
本当だって!!


だってだって、コード見て!
どこも間違って無いでしょ。


「初心者がよくする間違い」も
全部確認したよ!


なのに変な動きをするの!
ぽっぽー
ぽっぽー
 
あわあわ

たいへん
なんだってー。
こほん。

鳩ぽっぽ
になってるよ。
・・・そこ。

書く変数
間違ってるから。


そこに書くのは
「正解数」の変数でしょ。

「入力番号」の変数
書いてどうするの。

例とまったく同じ
間違いして
どうするの!
あれっ・・・?

本当だね・・・


変数が間違えて
たんだねえ・・・
あれは正解
じゃなくて
間違いだから!

全部ごっちゃに
なってるでしょ!
あれえ・・・?


なぽちゃん、
すごーい!!


ちょっとコード見ただけで
間違いが分かるんだ!

すごい!すごい!
すごーい、
超能力みたい!
他人事
みたいに
言うなー!
感心するとこ
じゃないから!!


あ、じゃあ、
なぽちゃん、第2問!

このエラーの原因は
分かるカナ?
エラーを
クイズにするなっ!


もおっ、ダメ!
少し自分で悩みなさい!
はーい。。。
教えてくん
だめ!




・・・・・
・・・・・

ねえ、ねえ・・・
ことちゃん、大丈夫?


やっぱり
コード見てあげるう~
ありがとー。

でも、
甘やかしちゃだめ!


分からない時は聞くから
そこで休んでてね。







あー!
こっちが気を使って
やってるのに~・・・

大体、お前は・・・

・・・
もおー、
寂しがりやなんだからー。

あたしもなぽちゃん
大好きだからね、
今は、ちょっと後ろ・・・
もうちょっと・・・そこっ!

そこら辺で遊んでてね。
いい子だから、
目の届く所にいてねー。










あ・・・そうくるんだ・・・

・・・クイズです。

ことは1人で
クイズゲームを
作れるでしょーか?

1:作れない
2:作れない
3:作れない


ククク
あーん、そんなこと
言わないでー!

ごめんなさーい!

 
まとめ
自分一人で最初からプログラムを作る
今回のセッションは番外編です。
自分一人で最初からプログラムを作るという以外は、新しいことはあまりない復習のセッションでした。これは次回のまとめの前の準備体操だと思ってください。

どうですか?
自分だけで0からクイズゲームを作れましたか?

難しかったんではないでしょうか。
一度やったことや頭では分かっていることでも、いざ自分だけでやるとなると慌てますよね。いきなりやるように言われても、筆者には作る自信はありません(汗)
(実際、筆者は最初の頃はなかなか自分では作れませんでした。)

自分でクイズゲームを作ることができ、処理の流れが大体理解できれば
復習は完了です。

でも、今回作れなかったとしても大丈夫です。気にしないで下さい。

これは単なるトレーニング。自分で作るトレーニングに過ぎません。
次回のまとめも、自分で作るトレーニングです。

何回も作ることで「自分で作る」ことに慣れていきましょう。
今後のセッションでも同じように自分で考えて作る機会がたくさんあります。
繰り返すことで自然に作ることに慣れていくと思います。

そして、今回作れなかったとしてもその経験は無駄では無かったはずです。
試行錯誤する中で気付いたことも多かったのではないでしょうか?
一生懸命やったことに無駄はありませんよね。

今回作れなかった方は、時間があったらまたトライしてみてくださいね。
初心者がよくする間違い
今までの筆者の経験で、初心者が起こしやすいと思う間違いををまとめてみました。

これらは頭では分かっていても意外と引っかかりやすいものばかりです。
エラーに、はまった時は今回の例を思い出してチェックしてみて下さい。

今後もエラーについていろいろ見て行く予定です。
最後に
次のセッションは今までのまとめ。応用問題のテストが含まれます。
自分で考えて作る応用問題なので、クイズゲームより少し難しくなります。

今回の準備体操で自分で作ることに少し慣れましたよね?
次回も軽い気持ちで作ってみてくださいね。
 
いろいろ覚えると同時に作ることにも慣れて行きましょう。

 

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