coderill

条件分岐を用いた動的な変数操作

PHPの演習問題

ユーザーがフォームに入力した名前と年齢に基づいて、ウェブページ上に異なるメッセージを動的に表示するプログラムを作成してください。

この演習問題では、PHPの他にHTML(およびCSS)も使用します。

  1. HTMLフォームを作成し、ユーザーに名前(テキストフィールド)と年齢(数値フィールド)を入力してもらいます。
  2. PHPスクリプトを使用して、フォームから送信されたデータを受け取ります。
  3. 名前が空の場合は、「名前を入力してください」というメッセージを表示します。
  4. 年齢が範囲外(例:0歳未満または150歳以上)の場合は、「無効な年齢です」というメッセージを表示します。
  5. 名前と有効な年齢が提供された場合、ユーザーの名前と「こんにちは、[名前]さん!あなたは[年齢]歳ですね。」というメッセージを表示します。
  6. さらに、年齢に基づいて、18歳未満なら「未成年です」、18歳以上65歳未満なら「成人です」、65歳以上なら「シニアです」という追加のメッセージを表示します。

ポイント

条件分岐 : 特定の条件に基づいて異なるコードブロックを実行するには主に以下の方法があります。

  • if文 : 最も基本的な条件分岐です。指定された条件が真(true)であれば、コードブロックを実行します。偽 ( false ) の場合、コードブロックはスキップされます。
if (条件) {
    // 条件が真の時に実行するコード
}Code language: JavaScript (javascript)
  • else文 : if文に続けて使用し、if文の条件が偽の時に実行されるコードブロックを指定します。
if (条件) {
    // 条件が真の時に実行するコード
} else {
    // 条件が偽の時に実行するコード
}Code language: JavaScript (javascript)
  • elseif文 : 複数の条件を順に評価する際に使用します。if文の条件が偽で、elseifの条件が真の場合に実行されます。
if (条件1) {
    // 条件1が真の時に実行するコード
} elseif (条件2) {
    // 条件1が偽で条件2が真の時に実行するコード
} else {
    // すべての条件が偽の時に実行するコード
}Code language: PHP (php)
  • switch文 : 一つの変数に対して多数の値を比較する場合に便利です。指定された変数の値に基づき、対応するcase節のコードブロックを実行します。
if (条件1) {
    // 条件1が真の時に実行するコード
} elseif (条件2) {
    // 条件1が偽で条件2が真の時に実行するコード
} else {
    // すべての条件が偽の時に実行するコード
}Code language: PHP (php)

解答と解説

( 1 ) 真偽を判定する

  1. 変数 $age に任意の数値を代入します。
  2. $age が18以上であれば「成人です」と出力し、そうでなければ「未成年です」と出力するプログラムを書いてください。

if文を使って条件分岐を行います。$age >= 18 という条件で18歳以上かどうかを判断しています。

<?php
$age = 20;  // ここに任意の年齢を代入
if ($age >= 18) {
    echo "成人です";
} else {
    echo "未成年です";
}
?>
Code language: HTML, XML (xml)

( 2 ) 偶数か奇数か

  1. 変数 $number に任意の数値を代入します。
  2. $number が偶数であれば「偶数です」と出力し、奇数であれば「奇数です」と出力するプログラムを書いてください。

%(剰余演算子)を使って数値が偶数か奇数かを判断しています。偶数の場合、数値を2で割った余りが0になります。

<?php
$number = 5;  // ここに任意の数値を代入
if ($number % 2 == 0) {
    echo "偶数です";
} else {
    echo "奇数です";
}
?>
Code language: HTML, XML (xml)

( 3 ) 天気に応じたメッセージ

  1. 変数 $weather に文字列(’晴れ’, ‘曇り’, ‘雨’)のいずれかを代入します。
  2. $weather の値に応じて、適切なメッセージを出力するプログラムを書いてください。例えば、「晴れ」なら「今日は晴天です!」と出力。

このコードでは、switch文を使用しています。$weatherの値に応じて、異なるメッセージを出力するように設定されています。switch文は、特定の変数の値に基づいて複数の選択肢から実行するコードブロックを選択するために使います。case '晴れ'case '曇り'case '雨' はそれぞれの天気の条件に対応しており、該当する場合に特定のメッセージを出力します。どの条件にも当てはまらない場合には、default節が実行されます。

<?php
$weather = '晴れ';  // '晴れ', '曇り', '雨' のいずれかを代入

switch ($weather) {
    case '晴れ':
        echo "今日は晴天です!";
        break;
    case '曇り':
        echo "今日は曇りですね。";
        break;
    case '雨':
        echo "雨が降っています。傘を忘れずに!";
        break;
    default:
        echo "未知の天気です。";
        break;
}
?>
Code language: HTML, XML (xml)

( 4 ) 成績の評価

  1. 変数 $score に0から100までの数値を代入します。
  2. $score が80以上なら「優秀です!」、60以上80未満なら「良好です!」、それ未満なら「もっと頑張りましょう!」と出力するプログラムを書いてください。

このコードは$scoreの値に基づいて異なるメッセージを出力します。まず80以上かどうかをチェックし、次に60以上かどうかをチェックします。どちらの条件にも当てはまらない場合、最後のelseブロックが実行されます。

<?php
$score = 75;  // ここに0から100までの数値を代入
if ($score >= 80) {
    echo "優秀です!";
} elseif ($score >= 60) {
    echo "良好です!";
} else {
    echo "もっと頑張りましょう!";
}
?>
Code language: HTML, XML (xml)

( 5 ) 複数条件の組み合わせ

  1. 変数 $temperature に温度(数値)、$weather に天気(’晴れ’, ‘曇り’, ‘雨’)を代入します。
  2. $temperature が30度以上で $weather が ‘晴れ’ の場合は「熱中症に注意!」、$temperature が0度未満で $weather が ‘雨’ の場合は「凍結の恐れあり!」と出力するプログラムを書いてください。

ここでは&&(AND演算子)を使用して、2つの条件が同時に真であるかどうかをチェックしています。1つ目のif文は、温度が30度以上かつ天気が晴れの場合に警告を出力します。2つ目のelseif文は、温度が0度未満かつ天気が雨の場合に別の警告を出力します。

<?php
$temperature = 32;  // 温度を代入
$weather = '晴れ';  // 天気を代入
if ($temperature >= 30 && $weather == '晴れ') {
    echo "熱中症に注意!";
} elseif ($temperature < 0 && $weather == '雨') {
    echo "凍結の恐れあり!";
}
?>
Code language: HTML, XML (xml)

PHPの演習問題

ユーザーがフォームに入力した名前と年齢に基づいて、ウェブページ上に異なるメッセージを動的に表示するプログラムを作成してください。

この演習問題では、PHPの他にHTML(およびCSS)も使用します。

  1. HTMLフォームを作成し、ユーザーに名前(テキストフィールド)と年齢(数値フィールド)を入力してもらいます。
  2. PHPスクリプトを使用して、フォームから送信されたデータを受け取ります。
  3. 名前が空の場合は、「名前を入力してください」というメッセージを表示します。
  4. 年齢が範囲外(例:0歳未満または150歳以上)の場合は、「無効な年齢です」というメッセージを表示します。
  5. 名前と有効な年齢が提供された場合、ユーザーの名前と「こんにちは、[名前]さん!あなたは[年齢]歳ですね。」というメッセージを表示します。
  6. さらに、年齢に基づいて、18歳未満なら「未成年です」、18歳以上65歳未満なら「成人です」、65歳以上なら「シニアです」という追加のメッセージを表示します。

ポイント

条件分岐 : 特定の条件に基づいて異なるコードブロックを実行するには主に以下の方法があります。

  • if文 : 最も基本的な条件分岐です。指定された条件が真(true)であれば、コードブロックを実行します。偽 ( false ) の場合、コードブロックはスキップされます。
if (条件) {
    // 条件が真の時に実行するコード
}Code language: JavaScript (javascript)
  • else文 : if文に続けて使用し、if文の条件が偽の時に実行されるコードブロックを指定します。
if (条件) {
    // 条件が真の時に実行するコード
} else {
    // 条件が偽の時に実行するコード
}Code language: JavaScript (javascript)
  • elseif文 : 複数の条件を順に評価する際に使用します。if文の条件が偽で、elseifの条件が真の場合に実行されます。
if (条件1) {
    // 条件1が真の時に実行するコード
} elseif (条件2) {
    // 条件1が偽で条件2が真の時に実行するコード
} else {
    // すべての条件が偽の時に実行するコード
}Code language: PHP (php)
  • switch文 : 一つの変数に対して多数の値を比較する場合に便利です。指定された変数の値に基づき、対応するcase節のコードブロックを実行します。
if (条件1) {
    // 条件1が真の時に実行するコード
} elseif (条件2) {
    // 条件1が偽で条件2が真の時に実行するコード
} else {
    // すべての条件が偽の時に実行するコード
}Code language: PHP (php)

解答と解説

( 1 ) 真偽を判定する

  1. 変数 $age に任意の数値を代入します。
  2. $age が18以上であれば「成人です」と出力し、そうでなければ「未成年です」と出力するプログラムを書いてください。

if文を使って条件分岐を行います。$age >= 18 という条件で18歳以上かどうかを判断しています。

<?php
$age = 20;  // ここに任意の年齢を代入
if ($age >= 18) {
    echo "成人です";
} else {
    echo "未成年です";
}
?>
Code language: HTML, XML (xml)

( 2 ) 偶数か奇数か

  1. 変数 $number に任意の数値を代入します。
  2. $number が偶数であれば「偶数です」と出力し、奇数であれば「奇数です」と出力するプログラムを書いてください。

%(剰余演算子)を使って数値が偶数か奇数かを判断しています。偶数の場合、数値を2で割った余りが0になります。

<?php
$number = 5;  // ここに任意の数値を代入
if ($number % 2 == 0) {
    echo "偶数です";
} else {
    echo "奇数です";
}
?>
Code language: HTML, XML (xml)

( 3 ) 天気に応じたメッセージ

  1. 変数 $weather に文字列(’晴れ’, ‘曇り’, ‘雨’)のいずれかを代入します。
  2. $weather の値に応じて、適切なメッセージを出力するプログラムを書いてください。例えば、「晴れ」なら「今日は晴天です!」と出力。

このコードでは、switch文を使用しています。$weatherの値に応じて、異なるメッセージを出力するように設定されています。switch文は、特定の変数の値に基づいて複数の選択肢から実行するコードブロックを選択するために使います。case '晴れ'case '曇り'case '雨' はそれぞれの天気の条件に対応しており、該当する場合に特定のメッセージを出力します。どの条件にも当てはまらない場合には、default節が実行されます。

<?php
$weather = '晴れ';  // '晴れ', '曇り', '雨' のいずれかを代入

switch ($weather) {
    case '晴れ':
        echo "今日は晴天です!";
        break;
    case '曇り':
        echo "今日は曇りですね。";
        break;
    case '雨':
        echo "雨が降っています。傘を忘れずに!";
        break;
    default:
        echo "未知の天気です。";
        break;
}
?>
Code language: HTML, XML (xml)

( 4 ) 成績の評価

  1. 変数 $score に0から100までの数値を代入します。
  2. $score が80以上なら「優秀です!」、60以上80未満なら「良好です!」、それ未満なら「もっと頑張りましょう!」と出力するプログラムを書いてください。

このコードは$scoreの値に基づいて異なるメッセージを出力します。まず80以上かどうかをチェックし、次に60以上かどうかをチェックします。どちらの条件にも当てはまらない場合、最後のelseブロックが実行されます。

<?php
$score = 75;  // ここに0から100までの数値を代入
if ($score >= 80) {
    echo "優秀です!";
} elseif ($score >= 60) {
    echo "良好です!";
} else {
    echo "もっと頑張りましょう!";
}
?>
Code language: HTML, XML (xml)

( 5 ) 複数条件の組み合わせ

  1. 変数 $temperature に温度(数値)、$weather に天気(’晴れ’, ‘曇り’, ‘雨’)を代入します。
  2. $temperature が30度以上で $weather が ‘晴れ’ の場合は「熱中症に注意!」、$temperature が0度未満で $weather が ‘雨’ の場合は「凍結の恐れあり!」と出力するプログラムを書いてください。

ここでは&&(AND演算子)を使用して、2つの条件が同時に真であるかどうかをチェックしています。1つ目のif文は、温度が30度以上かつ天気が晴れの場合に警告を出力します。2つ目のelseif文は、温度が0度未満かつ天気が雨の場合に別の警告を出力します。

<?php
$temperature = 32;  // 温度を代入
$weather = '晴れ';  // 天気を代入
if ($temperature >= 30 && $weather == '晴れ') {
    echo "熱中症に注意!";
} elseif ($temperature < 0 && $weather == '雨') {
    echo "凍結の恐れあり!";
}
?>
Code language: HTML, XML (xml)