関数電卓とは
関数電卓すごすぎて、関数電卓なみとか言ってられないわ
三角形の面積を比べよう
底辺が2、高さが√5の三角形Aと底辺が3、高さが√3の三角形Bはどちらの面積が大きいか。
https://edu.casio.jp/cal/cal15/
例題では、三角形Bの面積から三角形Aの面積を引いて、プラスなら三角形Bが大きい、マイナスなら三角形Aが大きい、という判断をします。まず、ここまでをphpスクリプトで書いてみます。
<?php
$a = 2 * sqrt(5) / 2;
$b = 3 * sqrt(3) / 2;
$c = $b - $a;
echo $c;
Code language: PHP (php)
実行すると、
0.36200823385353
Code language: plaintext (plaintext)
結果はプラスなので、三角形Bのほうが大きいことがわかります。
試しに、三角形Aの底辺を2から4に変更して、
<?php
$a = 4 * sqrt(5) / 2;
$b = 3 * sqrt(3) / 2;
$c = $b - $a;
echo $c;
Code language: PHP (php)
実行すると、
-1.8740597436463
Code language: plaintext (plaintext)
結果はマイナスなので、三角形Aのほうが大きいことがわかります。
結果のプラスマイナスを見て判断するのではなく、「Aのほうが大きい」「Bのほうが大きい」と表示したいですね。どうしたらいいでしょうか。
そのためには、if else文を使います。
<?php
$a = 2 * sqrt(5) / 2;
$b = 3 * sqrt(3) / 2;
if ($a <= $b) {
echo "A <= B\n";
} else {
echo "A > B\n";
}
Code language: PHP (php)
実行すると、
A <= B
Code language: plaintext (plaintext)
三角形Aの底辺を2から4に変更して、
<?php
$a = 4 * sqrt(5) / 2;
$b = 3 * sqrt(3) / 2;
if ($a <= $b) {
echo "A <= B\n";
} else {
echo "A > B\n";
}
Code language: PHP (php)
実行すると、
A > B
Code language: plaintext (plaintext)
if文
if文は、数値を比較して、その結果によって、処理を選択します。
まず、if文だけの形式です。
if (条件式) {
処理1
}
Code language: plaintext (plaintext)
if else文の形式です。
if (条件式) {
処理1
} else {
処理2
}
Code language: plaintext (plaintext)
if elseif else文もあります。
if (条件式) {
処理1
} elseif (条件式) {
処理2
} else {
処理3
}
Code language: plaintext (plaintext)
条件式
条件式とは、$a と $b を比較する式で、式を計算した結果、成立したらTrue、不成立ならFalseという値になります。
全て大文字のTRUE、FALSEと書くとどうなるの?
PHPのTrue、Falseは大文字小文字を区別しないから、TRUE、FALSEでもいいのよ。
次の場合、ifの条件式に直接Trueと書くと、"if" と表示されます。
<?php
if (True) {
echo "if";
} else {
echo "else";
}
Code language: PHP (php)
次の場合は、ifの条件式に直接Falseと書くと、"else" と表示されます。
<?php
if (False) {
echo "if";
} else {
echo "else";
}
Code language: PHP (php)
次に、$a < $b という式について考えます。
$aが0、$bが1の場合、成立するので、$a < $b の値は Trueになります。
$aが2、$bが1の場合、成立しないので、$a < $b の値は Falseになります。
次のスクリプトは、$aが0、$bが1なので、$a < $bが成立して、条件式がTrueになり、ifの処理が実行されて、"a < b" と表示されます。elseの処理は実行されません。
<?php
$a = 0;
$b = 1;
if ($a < $b) {
echo "a < b";
} else {
echo "a >= b";
}
Code language: PHP (php)
a < b
Code language: PHP (php)
次のスクリプトは、$aが2、$bが1なので、$a < $bが成立しないので、条件式がFalseになり、ifの処理は実行されず、elseの処理が実行されて、"a >= b" と表示されます。
<?php
$a = 2;
$b = 1;
if ($a < $b) {
echo "a < b";
} else {
echo "a >= b";
}
Code language: PHP (php)
a >= b
Code language: PHP (php)
比較演算子
数値の比較で使う演算子は、次のとおりです。
例 | 名前 | 結果 |
---|---|---|
$a == $b | 等しい | $a が $b に等しい時に TRUE |
$a != $b | 等しくない | $a が $b に等しくない場合に TRUE |
$a < $b | より少ない | $a が $b より少ない時に TRUE |
$a > $b | より多い | $a が $b より多い時に TRUE |
$a <= $b | より少ないか等しい | $a が $b より少ないか等しい時に TRUE |
$a >= $b | より多いか等しい | $a が $b より多いか等しい時に TRUE |
波カッコとインデント
波カッコ内は、必ずインデントしてください。
最近のテキストエディターは自動でインデントしてくれるわ
// よくない例
if (条件式) {
処理1
}
Code language: plaintext (plaintext)
波カッコを省略できる場合もありますが、常に波カッコをつけるようにしてください。
// よくない例
if (条件式)
処理1
Code language: plaintext (plaintext)
1行1コマのスゴロク
おおざっぱに言うと、phpスクリプトは、1行1コマのスゴロクに似ています。
プレーヤーは一人だけだね
サイコロの目は1しかないわ
次のスクリプトを1行づつ実行していく様子を見ましょう。
<?php
$a = 0;
$b = 1;
if ($a < $b) {
echo "a < b";
} else {
echo "a >= b";
}
Code language: PHP (php)
1行目からスタートします。phpの開始タグです。
1: <?php
Code language: PHP (php)
次の行に進みます。
休む間もなく、次に進むんだね
2行目
2: $a = 0;
Code language: PHP (php)
変数$aに0を代入しました。
次の行に進みます。
3行目
3: $b = 1;
Code language: PHP (php)
変数$bに1を代入しました。
次の行に進みます。
4行目
4: if ($a < $b) {
Code language: PHP (php)
$a < $b を計算すると、0 < 1 なので、Trueです。
ifの波カッコ内の最初の行、5行目へ移動します。
5行目
5: echo "a < b";
Code language: PHP (php)
"a < b"を表示しました。
次の行に進みます。
6行目
6: } else {
Code language: PHP (php)
ifの波カッコが閉じたので、ifの処理部はここで終わりです。
elseの波カッコ閉じの次の行、9行目へ移動します。
9行目はないので、phpスクリプトを終了します。
elseを実行する場合も説明してほしいわ
もうひとつのスクリプトを1行づつ実行していく様子を見ましょう。
<?php
$a = 2;
$b = 1;
if ($a < $b) {
echo "a < b";
} else {
echo "a >= b";
}
Code language: PHP (php)
1行目からスタートします。phpの開始タグです。
1: <?php
Code language: PHP (php)
次の行に進みます。
2行目
2: $a = 2;
Code language: PHP (php)
変数$aに2を代入しました。
次の行に進みます。
3行目
3: $b = 1;
Code language: PHP (php)
変数$bに1を代入しました。
次の行に進みます。
4行目
4: if ($a < $b) {
Code language: PHP (php)
$a < $b を計算すると、2 < 1 なので、Falseです。
elseの波カッコ内の最初の行、7行目へ移動します。
7行目
7: echo "a >= b";
Code language: PHP (php)
"a >= b"を表示しました。
elseの波カッコ閉じの次の行、9行目へ移動します。
9行目はないので、phpスクリプトを終了します。
行ごとに見ていくなんて面倒だね
デバッグの基本よ、地味な作業が多いのよ