まず、構文エラーがある場合は、コンパイラエラーを注意深く読む必要があります。多くの場合、行はエラーとして強調表示されますが、実際にはエラーのある前の行でした。
入門者にとっては、プログラムのコンパイルを妨げるいくつかの編集アーティファクトが見られない可能性があることに注意してください。たとえば、戻るのではなくスペースバーを使用する(私の生徒ではない)学生を見たことがあります。彼のコードは、80列の後に折り返されたエディターで正常に見え(学生は非常に辛抱強く)、彼が追加するまでコードは機能しました//
プログラムの残りすべてをコメントアウトした「」スタイルのコメント。同様に、Webサイトからコードサンプルをコピーする場合、(Webサイトがコードをどのようにフォーマットしたかに応じて)コピーされる印刷できない文字がしばしば存在します。疑わしい場合は、コピーアンドペーストせずに行を再入力してください。[それは一種の驚くべきことですが、私はそれが最近もっと多く発生するのを見てきました。]
厄介なコンパイラエラーの場合、新しいファイルを作成し、すべてのコードを入力してプログラムを拡張する必要があるかもしれません。次のステップに進む前に、主要な各ステップの後に必ずコンパイルしてください。
では、構文エラーがない場合はどうでしょうか?次に、コードをステップ実行します。これにはデバッガを使用できますがprintf
、コード全体に呼び出しを入れることも非常に効果的です。たとえば、for
ループがある場合は、ループカウンターの印刷ステートメントを追加します。ネストされたfor
ループの場合、間違った変数がインクリメントされていることがあります。
printf
s を使用する利点は、現在見ているものを時間/空間にわたって「圧縮」できることです。デバッガーを使用してステップスルーすると、無関係な状態も多く表示され、面倒な場合があります。また、コンソールに出力された内容の履歴を確認しないと、一部のパターンを見逃す可能性があります。ここでのポイントは、デバッガーとprintfsは補完的な手法であり、どちらも常に他のものより優れているということです。
最後に、何が起こっているかを友達に聞いてください!それを見て「ええ」と言う代わりに、彼らが何をしているのかを尋ねます:「今何をしn
ているのですか?」ダイアログを開始すると、彼らは自分の質問に答えてしまうかもしれません。または、彼らがプログラムを概念化した方法に欠陥があったことに気づき、それが解決策につながる可能性があります。
他の場所でコメントしたように、これはすべて経験とともに良くなります。私は20年間プログラミングをしてきましたが、過去5年間、学生と一緒に仕事をするようになってから初めて、生徒たちのエラーを手助けするようになりました。