Chceme-li zjistit například, jestli je hodnota proměnné z nějakého intervalu, třeba větší než 3 a menší než 10, mohli bychom vytvořit podmínku pomocí vnořených příkazů IF a ELSE, ale poměrně komplikovanou. Pro takový a podobné případy podmínek se používají tzv. logické operátory.
Pomocí logických operátorů můžeme vytvořit například následující podmínku:
if ($a > 3 and $a < 10) echo "číslo je větší než 3 a zároveň menší než 10";
Význam dalších logických spojek uvádí následující tabulka, všimněte si, že pro součin a součet existují dvě možnosti, většinou je jedno, kterou z nich použijete, liší se jen prioritou, neboli pořadím vyhodnocení ve složitějších výrazech a s těmi se nepotkáme.
Operátor |
Význam |
Pravda
když |
and |
Logický součin |
Jsou zároveň obě hodnoty pravdivé |
or |
Logický součet |
Je alespoň jedna hodnota
pravdivá |
xor |
Exkluzivní OR |
Je právě jedna hodnota
pravdivá |
! |
Negace |
True když bylo False a
naopak |
&& |
Logický součin |
Jsou zároveň obě hodnoty pravdivé |
|| |
Logický součet |
Je alespoň jedna hodnota pravdivá |
Některé z uvedených logických spojek vyzkoušíme na projektu pro určování koeficientu obezity :-) . Stejně jako v minulé lekci použijeme jeden soubor php.
První část souboru bmi.php bude obsahovat vysvětlení výpočtu známého lékařského koeficientu BMI a jednoduchý formulář pro zadání váhy a výšky zkoumaného jedince:
<h1>Nemáš nadváhu?</h1>
Známý lékařský koeficient obezity jednotlivce BMI se počítá následovně: váha (kg) lomeno druhou mocninou výšky (m).
Stupeň obezity se určuje podle tohoto rozdělení:
<table border=1>
<tr>
<td>hodnoty BMI</td><td> stupeň obezity </td></tr>
<tr><td>BMI < 20 </td><td> podváha </td></tr>
<tr><td>20 < BMI <= 25 </td><td> ideální </td></tr>
<tr><td>25 < BMI <= 30 </td><td> mírná nadváha </td<
</tr>
<tr><td>30 < BMI <= 40 </td><td> obezita </td></tr>
<tr><td>40 < BMI </td><td> těžká obezita (nebo silná podmíra :-) ) </td></tr>
</table>
Zadejte svoji váhu (v kg) a výšku (v metrech s desetinnou tečkou):
<form name="BMI" action="" method="post">
váha: <input type="text" name="m" value="" /> výška: <input type="text" name="v" value="" />
<input type="submit" value="vyhodnoť" />
</form>
Protože vyhodnocení indexu bude součástí téhož souboru, je jako v minulé lekci u formuláře uveden parametr action="".
Druhá část souboru bmi.php bude opět obsahovat kód PHP, s příkazem if (!empty ($_POST)) , který jsme také použili v minulé lekci (vzpomínáte, že :-) ).
<?php
if (!empty ($_POST))
{$m= $_POST["m"]; $v=$_POST["v"];
echo "<b>váha:</b> $m kg <br />";
echo "<b>výška:</b> $v m <br />";
$bmi=$m/($v*$v);
echo "<b>koeficient BMI:</b> $bmi <br /><br />";
echo"<h2>Výsledné hodnocení: ";
if ($bmi < 20) echo "podváha";
if ($bmi > 20 and $bmi <= 25) echo "ideální váha";
if ($bmi > 25 && $bmi <= 30) echo "mírná nadváha";
if ($bmi > 30 && $bmi <= 40) echo "obezita";
if ($bmi > 40) echo "těžká obezita";
echo"</h2>";
}
?>
Všimněte si použitých logických spojek v podmínkách (např. ($bmi > 20 and $bmi <= 25) ), v tomto případě potřebujeme vždy logický součin (koeficient je větší než 20 a zároveň menší nebo roven 25). Je také vidět, že je v tomto případě jedno, jestli použijeme spojku and nebo &&. Pozorný čtenář minulé lekce by si mohl uvědomit, že jsme mohli úlohu řešit také pomocí elseif (např.: if ($bmi < 20) echo "podváha"; elseif ($bmi <= 25) echo "ideální váha"; atd.).
Využijte text lekce pro vytvoření on-line výpočtu koeficientu obezity. Doplňte styl.
Doplňte vyhodnocení testu (testů) z 5. lekce známkou. Zpravidla jsou pro jednotlivé známky dané tyto hranice:
1: 100%-90%, 2: 90%-75%, 3: 75%-50%, 4: 50%-25%, 5: 25%-0% (krajní hodnoty zařaďte podle svého soudu, případně stejně jako vaše paní učitelka :-) ).
Název školy: | Základní škola, Hradec Králové, M. Horákové 258 |
Název projektu: | EU peníze školám |
Číslo projektu: | CZ.1.07/1.4.00/21.2575 |
Téma: | Programování v PHP |
Název: | VY_32_INOVACE_07_10A_PHP7 |
Autor: | Pavel Petr |