テクノロジー

2023年2月2日

アルゴリズムをわかりやすいコードにする演算子や制御構文

演算子や制御構文の種類を多く学ぶ目的が理解できる

わかりやすいプログラムを書く力

前回までのテキストで作ったプログラムで使用している制御構文や演算子は、アルゴリズムを実現するために用意されていることを学んできました。これまでに使った構文以外にも、PHPにはたくさんの制御構文や演算子が用意されています。

同じ結果になるプログラムでも、構文や演算子の使い方で効率の悪いプログラムになってしまったり、わかりづらいコードになってしまうことがあります。

例えば、以下の例を見てください。

<?php
 
$a = intval(readline());
if ($a === 1) {
  echo "あなたのポイント: {$a}" . PHP_EOL;
} elseif ($a === 2){
  echo "あなたのポイント: {$a}" . PHP_EOL;
} elseif ($a === 3){
  echo "あなたのポイント: {$a}" . PHP_EOL;
} elseif ($a === 4){
  echo "あなたのポイント: {$a}" . PHP_EOL;
} elseif ($a === 5){
  echo "あなたのポイント: {$a}" . PHP_EOL;
} elseif ($a === 6){
  echo '終了します' . PHP_EOL;
} elseif ($a === 0){
  echo '終了します' . PHP_EOL;
}

これまで作ってきた掲示板プログラムの一部を記述してみたものです。

プログラムの要件

  1. 1から5を入力されたら”あなたのポイント: ○”と出力
  2. 数字以外を入力されたら”数字を入力してください”と出力
  3. 6が入力されたら”終了します”と出力

要件は満たしていますが、何度も同じ記述が繰り返されて冗長です。さらに、$a という変数名が何を表しているのか直感的にわかりづらく、とても見づらいコードになっています。

適切な場所で適切な構文を使い、誰が見ても”何をしているコードなのか”がわかるプログラムをかけるようになることは、エンジニアとしてとても重要な力です。
そのためには、自分が知っている・慣れている構文だけを使ってコードを書くのではなく、演算子や構文の種類、使いどころを幅広く習得しておく必要があります。

これから学ぶ演算子・制御構文

演算子

演算子とは、これまでに登場した +-< などです。
四則演算や比較の他に、条件分岐などの制御構文にも使用することができます。

条件分岐

if などの条件によって処理を分岐する代表的な制御構文です。
if の他にもswitch などが用意されています。次回以降のテキストで学習します。

ループ構文

while をはじめとする繰り返すための構文です。
fordo-while などが用意されています。こちらも次回以降のテキストで学習します。

掲示板アプリケーションのプログラムを整えよう

次回からのテキストでは、わかりやすいプログラムを記述できるようになるための演算子や構文の種類を学んでいきます。
学んだ知識を使って、これまでに作ってきた掲示板プログラムをさらにわかりやすく改修していきます。
下記のように仕様を整えていくために、どの演算子・構文が使えそうか考えながらテキストを進めてみてください。

プログラムの要件

  1. プログラムを起動したら何をしたいのか初めに決めるため、下記を出力して該当の数字を入力してもらう
    以下の中から、行う処理を選択してください
    1:評価ポイントとコメントを入力する
    2:今までの結果を確認する
    3:終了する
  2. 1が入力されたら、以下の処理をする
    2-1. “1から5で評価を入力してください”と出力する
    2-2. readline() で入力された評価ポイント受け取る
    2-3. 1から5以外を入力されたら”1から5で入力してください”と出力
    2-4. readline() で入力されたコメントを受け取る
    2-5. 受け取った評価ポイントとコメントをdata.txtに書き込む
  3. 2が入力されたら、”これまでの結果”と出力し、data.txtに書き込まれている過去の評価ポイントとコメントを”ポイント:○ コメント:○○○”という形で全件出力する
  4. 3が入力されたら”終了します”と出力してプログラムを終了する
  5. 1から3以外を入力されたら、”1から3を入力してください”と出力して1に戻る

まとめ

  • 誰が見てもわかりやすいプログラムを書けることは、エンジニアとして重要である。
  • 代表的な制御構文には、条件分岐とループ構文がある。

公式ドキュメント・参考情報

  1. switch

  2. for

  3. do-while

ダイビックのことをもっと知ってみませんか?