sbírka příkladů

aneb příkazy pro větvení a cyklus v jazyce PHP v praxi

gymnázium
karviná

Kalkulačka

zadání

Vytvořte jednoduchou kalkulačku. Vytvořte dvě pole, každé pro vložení jednoho čísla, a výběr početní operace, která bude provedena (sčítání, odčítání, násobení, dělení). Při dělení nulou vypište chybovou hlášku, výsledek zaokrouhlete na dvě desetinná místa.

zobrazení

řešení

Formulář pro vložení informací vytvoříme pomocí dvou input pro čísla (“prvni”, “druhy”) a jednoho select pro výběr početní operace ze čtyř možností. Hodnoty získané z formuláře si vložíme do proměnných ($prvni, $druhy, $operace) a vytvoříme si ještě jednu proměnnou ($vypocti), kterou stanovíme na true. Pokračujeme větvením, pokud $prvni a $druhy nejsou čísla, což zjistíme pomocí funkce is_numeric, proměnnou $vypocti přepíšeme na false. Pokud je zvolená operace dělení a dělitelem je nula, opět $vypocti nastavíme na false a vypíšeme chybovou hlášku. Pokud je zvolena operace, nevykoná se nic, v else vypíšeme chybovou hlášku a $vypocti stanovíme na false. Poté napíšeme další podmínku, pokud je stanovena proměnná $vypocti (není false), do proměnné $vysledek vypočítáme příklad pomocí funkce eval, která zjistí hodnotu příkladu, který získáme z řetězce příkazem return. Napíšeme příklad s výsledkem zaokrouhleným pomocí funkce round () na dvě desetinná místa.

<form method="post">
  <input type="text" name="prvni"/>
  <select name="operace">
	<option value="+">plus</option>
	<option value="-">mínus</option>
	<option value="*">krát</option>
	<option value="/">děleno</option>
  </select>
  <input type="text" name="druhy" />
  <input type="hidden" name="formular" value="kalkulacka" />
  <input type="submit" value="vypočítej"/>
</form>
<?php
  if(isset($_POST["prvni"]) && isset($_POST["druhy"]) && isset($_POST["operace"])) {
    $vypocti = true;
    $prvni = $_POST["prvni"];
    $druhy = $_POST["druhy"];
    $operace = $_POST["operace"];
    if (!is_numeric($prvni) || !is_numeric($druhy)) { 
  	echo "<br>Zadej příklad";
  	$vypocti = false;
    }
    elseif ($operace == '/') {
  	if ($druhy == 0) {
  	  echo "<br>Nelze dělit nulou";
  	  $vypocti = false;
  	}
    }
    elseif ($operace == '/' || $operace == '+' || $operace == '-' || $operace == '*') {
    }
    else {
    	echo "<br>Někde je chyba";
    	$vypocti = false;
    }
    if ($vypocti) { 
    	$vysledek = eval("return " . $prvni . $operace . $druhy . ";");
    	echo "<br>$prvni $operace $druhy = ";
    	echo round($vysledek, 2);
    }
  }
?>

použité příkazy: if, is_numeric, eval, round