分岐と繰り返し(ループ)の間違えやすいポイントチェックリスト

checklist 理想の働き方へのキャリアステップ

あなたは、プログラミングに関する勉強を始めてしばらく経った頃だと思います。

コンソールを立ち上げて自分が書いたコードが動いて感動したあの時と比べると、あなたはプログラムについてたくさんのことを学んできました。

ここからは、どんどん実際にプログラムを書きながら慣れていく段階です。
プログラミングの練習問題は調べればたくさん出てきます。練習できるサイトもたくさんあるので、毎日練習して、考え方や実践的な理解を深めていきましょう。

練習問題の仕様をプログラムにできない場合は、コチラを読んでください。
実は、すべてのプログラムは、単純処理・分岐・繰り返し(ループ)の3つで出来上がっています。どれだけ複雑なプログラムも、この3つの組み合わせです。

つまり、この3つの組み合わせ方が分かれば、あなたはどんなプログラムでも書けるというわけです。
これらを駆使してプログラムを仕上げていくことになりますが、簡単ではありません。
特に、分岐と繰り返しはバグが発生する主なポイントでもあります。
テストをしている際は、ほとんどこの2つの書き間違えを探して修正することに時間を費やします。ものによっては何時間もかかります。

そこで今回は、分岐と繰り返しを書く際のチェックポイントを説明します。
分岐を書くとき、繰り返しを書くときは、毎回このチェックポイントをすべて確認して、丁寧に処理を作りましょう。

分岐処理のチェックポイント

branch

分岐処理は、「もし~ならば」「~の場合は」などの仕様を表現するために使います。

ただし、明確に分岐の条件が指示されていない場合もあります。
たとえば、「うるう年ならば」と言われたとき。うるう年の条件は、意外と複雑です(ぜひ調べてみてください)。知らなければ、ありえない日付を存在させてしまうことになります。

このように、分岐処理でよく間違えるポイントは、「漏れ」です。
条件が漏れていた、分岐が漏れていた、ということがバグにつながる大きな要因です。

このような漏れを防ぐためのチェックリストです。

分岐処理のチェックリスト
  • 仕様の言葉を網羅しているか?
    先ほどのうるう年のように、指示された条件をプログラムとして網羅しているかは、業務でコードを書く場合にも重要なポイントです。
  • ifを書いたのであれば、elseを書いているか?
    常にelseを考える癖をつけておきましょう。ifを書いたらelseも書く。その後、elseが不要だと判断したら消してください。
  • 以上・以下なのか、より大きい・より小さいなのか、は明確になっているか?
    if(value >= 100)なのか、if(value > 100)なのかは、会話ではあまり明確に指示されないポイントです。しかし、プログラムとしては大切なポイントになるため、こだわりましょう。
  • Nullなどの特殊な値の場合はどうなるか?
    stringのNullと空文字は意味が違います。Nullだとエラーになる関数もあるため、今の変数の値がNullになる可能性があるかどうかは、常に確認しましょう。
  • 変数の値の取りうる範囲は、どこからどこまでか?
    数値の場合に多いポイントですが、負の数も扱うのか、intの最大値を超える値が来る可能性があるのか、といった範囲を考慮することで、堅牢なプログラムを書けます。
  • リストや配列には、要素があるか?
    リストや配列に要素がないにもかかわらず、「i番目の値を変数にセットする」ようなコードを書くとエラーになります。指定の行数が存在しているかどうかも、分岐の一つです。

Nullでない、リストに行が存在している・・・と、何でもかんでも分岐を記述するのも良くありませんが、必要な箇所で漏れてしまうと、「たまに処理がエラーになる」という厄介なバグを生み出してしまいます。

必要な分岐を漏らさないように、丁寧に漏れをなくしていきましょう。

繰り返し処理のチェックポイント

loop

繰り返し処理(ループ処理)は、「~になるまで」「~の間」などの「いつまでずっと~し続ける」を表現するために使います。

コチラにあるように、繰り返し処理にはテンプレートもあります。
このテンプレートも頻出ですが、実際の業務ではもっと複雑な繰り返し処理を書くこともあります。

繰り返し処理でよく間違えるポイントは、「最初」と「最後」です。
forやwhileの1行目、または最終行の処理を誤ったがために、合計金額が合わなくなったり、計算できずにエラーになったりします。

このような誤りを防ぐためのチェックリストです。

繰り返し処理のチェックリスト
  • 初期値をセットしているか?
    1行目で初期値のセットが必要になる繰り返し処理では、繰り返し処理の中で、if(1行目)と書いて初期値のセットをします。忘れずに初期値をセットしましょう。
  • ループの外で宣言した変数に変な値はセットしていないか?
    ループの外で宣言した変数に対してループの中で何かする場合は、特に注意が必要です。ループの中で正しく値をセットしたと思っても、次の行でまた違う値をセットして結果がおかしくなる場合があります。
  • 変数の初期化を正しくできているか?
    ループの中で使いまわす変数は、適切なタイミングで値をセットし、適切なタイミングで値をクリアする必要があります。先ほどのリンク先にあったキーブレイク処理が参考になるでしょう。
  • 最終行まで処理対象になっているか?
    ループの書き方によっては、最終行が処理されないこともあります。最初から最後まで必ず処理がなされるように丁寧に記述しましょう。
  • 繰り返し処理を抜けるタイミングは適切か?
    forループではあまり起きませんが、whileループの場合はループの抜け方も丁寧に考える必要があります。ここは分岐処理に近い話ですが、無限ループを避けるためにも大切なポイントです。

繰り返し処理は、一度書いたら同じ書き方で使い回せることも多いです。
うまく動いたコードをメモとして残しておいて、他のときにも使えるようにしておくことで、あなたのコードの品質を保つ手助けにもなるでしょう。

まとめ

最初にもお伝えしたように、プログラムは単純処理・分岐・繰り返しの3つで成り立っています。
これらの使い方と書き方をマスターすることを意識しながら練習問題に取り組むことで、より早く優秀なプログラマーになれるでしょう。

プログラマーに求められることは、コードを書くことではなく、詳細設計書をプログラムに翻訳することです。
仕様の言葉を分岐でどう表現するのか、繰り返しでどう表現するのかを考える力が求められています。そして、考えたことをプログラムとして正確に表現することが求められています。

これからたくさん練習して、コーディングに慣れていきましょう。

タイトルとURLをコピーしました