Logické spojky (operátory)

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.

Koeficient BMI

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.).


Úkoly:

Úkol (2 body)

Využijte text lekce pro vytvoření on-line výpočtu koeficientu obezity. Doplňte styl.

Úkol (3 body)

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
Použité zdroje: Není-li uvedeno jinak, jsou všechny ilustrační obrázky dílem autora.