コウです、よろしくお願いします!
「ゼロからプログラミングを始める」人に役立つ情報を発信しています!
今回はDay5、「バグを見つけて直す」の解説になります。
「バグ」ってなんだかプログラミングっぽいですよね笑
ではいきましょー!!
解答例と解説
初めに解答例と解説です!
解答例
解説
まずは修正例です。
次に、実際にコードを実行すると以下のようになります。
しっかりとデバッグすることができましたか?
今回のポイント
バグについて
バグとは、「アプリケーションが正しく動かない原因となるコードのミス。」です。
(Swift Playgroundsより)
また、バグを見つけて直すことを「デバッグ」と言います。
このステージで取り扱うバグは、ただByteが宝石やスイッチにたどり着けずクリアできないだけです。
しかし、バグの中にはアプリケーションなどを動かすのを根本的に妨げてしまう、致命的なものもあります。
この先のステージでもバグには注意していく必要があります。
ステージ攻略「バグを見つけて直す」
攻略
説明文を読んで、クリア条件を確認しましょう。
説明文にはクリア条件が書かれていませんね。
しかし、ステージ画面の左上に「宝石0/1,スイッチ0/1」があることから、
宝石を1つ取って、スイッチを1つ切り替えることができればクリアのようです。
また、今回はあらかじめコマンドが入力されています。
タイトルの通り、
「このコードにバグがあるから、直してクリアしてね!」
ということのようです。
それでは、説明文にもあるようにコードを1度実行してみましょう。
Byteが宝石やスイッチがあるところの手前で左に曲がってしまいました。
これではこの先での「collectGem()」や「toggleSwitch()」の意味がありませんね。
(Byteはそれでも必死でコマンドを実行してくれています笑)
これは、moveForward()がturnLeft()の前に1つ足りないのが問題のようですね。
足してあげるとこのようになります。
手前で曲がってしまうことはなくなりましたね!しかし、まだ改善点はあるようです。
上から4行目のmoveForward()を実行したあと、
宝石を取ることなく更にmoveForward()で進んでしまっています。
結果、スイッチは切り替えていますが、宝石を取ることはできていません。
では、5行目のmoveForward()を削除してみましょう!
ここまでやるとクリアになるので、解答例に進みます↓
まとめ
今回はあらかじめ入力されているコードの中から、バグを見つけて直すデバッグをしました。
デバッグの際には、とりあえずコードを実行してみておかしいところを発見しましょう!
- バグとは、「アプリケーションが正しく動かない原因となるコードのミス。」
- バグを見つけて直すことを「デバッグ」という。
- デバッグの際にはとりあえずコードを実行して、おかしなところを発見する。
次回はDay6「バグつぶしの練習」でお会いしましょう!ではまた!!