[条件分岐,ループ編]非プログラミングエンジニアが条件分岐,ループ処理をなぜやるのから学び直してみた!
- 2024/11/25
- ブログ
- [条件分岐,ループ編]非プログラミングエンジニアが条件分岐,ループ処理をなぜやるのから学び直してみた! はコメントを受け付けていません
前回の続きとなります。前回はこちら
前回リストやマップなどのデータ構造がどのように使われるかを理解することで、データの取り扱い方や知らず知らずのうちに設定ファイルを書く際などにその恩恵を受けていたことが見えてきました。この次のステップとして、「条件分岐」と「ループ」を学ぶことで、プログラムが状況に応じた判断をしたり、同じ処理を繰り返すことができるようになります。
そこで今回は、これらの基本的な制御構文について学んだことを書いていきます!
この記事の目次
条件分岐(if文)
プログラムに特定の条件を満たす場合のみ、特定の処理を実行するように指示することができます。これにより、ユーザーの入力やプログラムの状態に応じた動作をすることができるようになります。
例)年齢によって料金がかわる場合
13歳未満であれば子供料金、13歳以上65歳未満であれば大人料金、それ以外はシニア料金を出力する場合
<?php
$age = 65; // 例として65歳を指定
if ($age < 13) {
echo "子供料金です。500円をお支払いください。";
} elseif ($age >= 13 && $age < 65) {
echo "大人料金です。1000円をお支払いください。";
} else {
echo "シニア料金です。700円をお支払いください。";
}
?>
$ageが13歳未満であれば子供料金、13歳以上65歳未満であれば大人料金、それ以外はシニア料金を出力します。条件に合う料金が順番にチェックされ、最初に一致したものが出力されます。
例)複数条件の組み合わせ
ユーザーのログイン状態と権限によって異なるメッセージを表示する場合
<?php
$isLoggedIn = true;//ログインはしている状態とします
$isAdmin = false;//管理者ではないとします
if ($isLoggedIn && $isAdmin) {
echo "管理者としてログインしています。";
} elseif ($isLoggedIn && !$isAdmin) {
echo "一般ユーザーとしてログインしています。";
} else {
echo "ログインしていません。";
}
?>
上記の場合は、
$isLoggedIn = true;//ログインはしている状態とします
$isAdmin = false;//管理者ではないとします
としているため一般ユーザーとしてログインしている状態を作っています。それではこの状態におけるそれぞれのコードを見て行きましょう!
if ($isLoggedIn && $isAdmin) {
echo "管理者としてログインしています。";
&&演算子について
&&は論理AND演算子と呼ばれ、両方の条件がtrueのときにのみ、全体の条件がtrueと評価されます。つまり、$isLoggedInがtrueであり、かつ$isAdminもtrueである場合にのみ「管理者としてログインしています。」が表示されます。
しかし今回の場合は$isAdmin = false;
ですので、両方の条件には一致しないので、「管理者としてログインしています。」は表示されません。更に、
elseif ($isLoggedIn && !$isAdmin) {
echo "一般ユーザーとしてログインしています。";
がついている場合は、!は論理NOT演算子で、条件の値を逆にします。私は勝手に打消しと呼ぶようにしています(笑)したがって、
$isAdminがfalse(そうではない)の場合、!$isAdminはtrue(正しい)となり、条件が成立します。なので、今回は$isLoggedIn = true;
としている為、この条件に一致し、一般ユーザーとしてログインしています。が表示されます。
$isAdmin = false;
実行結果の例
- $isLoggedIn = true; と $isAdmin = false; の場合:
「一般ユーザーとしてログインしています。」
- $isLoggedIn = true; と $isAdmin = true; の場合:
「管理者としてログインしています。」
$isLoggedIn = false; の場合($isAdminの値は関係なし):
「ログインしていません。」
&&のまとめ
&&は「両方の条件が成り立つときだけ実行したい」というときに使う論理演算子です。
条件分岐(switch文)特定の値に基づいて処理を分岐
上記で学んだif文は、複数の条件や複雑な条件を処理する際に適しています。switch文は、特定の値に基づいて処理を分岐させる際に便利です。
<?php
$fruit = "りんご";
switch ($fruit) {
case "りんご":
echo "これはりんごです";
break;
case "ばなな":
echo "これはばななです";
break;
default:
echo "果物が見つかりません";
}
?>
switch: 条件の変数を指定します。ここでは$fruitが「りんご」に一致するかを判断しています。
case: それぞれの条件を記述します。たとえば「りんご」に一致する場合、case “りんご”:に対応するコードを実行します。
default: どのケースにも一致しない場合の処理を定義します。
switch文は、基本的には一つの変数や式の単一の値に基づいて分岐する構文ですが、複数の条件を扱う方法もあります。ただし、if文に比べて柔軟性が低いため、工夫が必要です。以下にその方法と応用例を解説します。
- 複数の値で同じ処理を実行する
switch文内で複数の値を同じcaseで処理することは可能です。例えば、caseの値が「りんご」または「みかん」の場合に同じ処理を行いたい場合は、次のように記述します。
$fruit = "りんご";
switch ($fruit) {
case "りんご":
case "みかん":
echo "これは果物です。\n";
break;
case "にんじん":
echo "これは野菜です。\n";
break;
default:
echo "これは果物でも野菜でもありません。\n";
}
このコードでは、「りんご」または「みかん」が選ばれると、”これは果物です。”が出力されます。
2. switch文の中で計算結果を使用する
計算や簡単な式の結果をswitch文で評価することもできます。たとえば、$ageが偶数か奇数かを判別するような場合は、次のように記述できます。
$age = 21;
switch ($age % 2) { // 剰余で偶数・奇数を判定
case 0:
echo "偶数の年齢です。\n";
break;
case 1:
echo "奇数の年齢です。\n";
break;
}
ここでは、$ageを2で割った余りを評価し、case 0で偶数、case 1で奇数として処理を分けています。
- 複数の条件をif文と組み合わせて処理する
switch文は単一の条件しか扱えないため、複数の条件式が必要な場合はif文を併用することが一般的です。
$isLoggedIn = true;
$isAdmin = false;
switch (true) { // trueに対して評価する
case ($isLoggedIn && $isAdmin):
echo "管理者としてログインしています。\n";
break;
case ($isLoggedIn && !$isAdmin):
echo "一般ユーザーとしてログインしています。\n";
break;
default:
echo "ログインしていません。\n";
}
ここでswitch(true)を使うと、case内に複数の条件を持たせることができます。
まとめ
switch文では通常、1つの変数や式の結果を基に分岐しますが、複数のcaseに同じ処理を指定することは可能です。
switch(true)を使うことで、複数条件のように扱うことができますが、この場合、if文で書くほうが可読性が高い場合もあります。
ループ処理
同じ処理を繰り返し実行するために、ループを使います。
たとえば、リスト内の全ての要素に対して特定の処理を行いたい場合、ループは非常に便利です。
for文:for文は、回数が決まっている繰り返し処理に向いています。
<?php
for ($i = 1; $i <= 5; $i++) {
echo "数値: $i\n";
}
?>
こんなコード見せられても何もありがたみを感じないですよね!?
それでは、こう考えてみましょう!
たとえば、「1から5までの数字を順番に表示する」という作業をしたいとします。for文を使わない場合、こんなコードを書く必要があります。
<?php
echo "1\n";
echo "2\n";
echo "3\n";
echo "4\n";
echo "5\n";
?>
これだと、いまは1から5までなので簡単ですが、「1から100まで表示したい」となると、100行も書かないといけません!非常に面倒ですよね。
for文を使うと、次のように短いコードで済ませることができます
<?php
for ($i = 1; $i <= 5; $i++) {
echo $i . "\n";
}
?>
なぜfor文を使うのか?そのメリット
- 効率的: for文を使えば、何度も同じ処理を書かなくてすむため、コードが短くなり、書くのが楽です。
- わかりやすい: 繰り返したい回数や条件が1行でわかるので、他の人が見ても「何回繰り返すのか」がすぐにわかります。
- メンテナンスが簡単: 例えば「1から5ではなく、1から10までに変えたい」といった場合も、for文の数字を変えるだけですぐに対応できます。
for文はプログラミングでよく使われる「ループ処理(繰り返し処理)」の中でも特に使いやすい方法です。同じ作業を繰り返す必要があるときには、for文を使うことを考えるとよいでしょう!
カテゴリー: