Všetky potrebné služby sú v
docker-compose.yml
. Po ich spustení sa vytvorí:
- webový server, ktorý do document root namapuje adresár tejto úlohy s modulom PDO. Port 80 a bude dostupný na adrese http://localhost/. Server má pridaný modul pre ladenie Xdebug 3 nastavený na port 9000.
Ako prvé je potrebné zistiť, ako sa počíta faktoriál. Na webe, napr. na stránkach Wikipédie, je možné nájsť tento vzorec pre výpočet faktoriálu čísla 5:
5! = 5 * 4 * 3 * 2 * 1 = 120
Na stránkach Wikipédie nájdeme dva pseudokódy s cyklom a použitím rekurzie. V tomto riešení si vyberieme nerekurzívny pseudokód, ktorý vyzerá nasledovne:
long double factorial (int n) {
long double b = 1;
while (n--)
b*=n+1;
return b;
}
V prvom kroku prepíšeme pseudokód do jazyka PHP. Začneme deklaráciou funkcie, ktorej kód umiestnime na začiatok súboru. Pozor, súbor musí mať koncovku .php
. Na výpočet použijeme cyklus while
, v ktorom postupne zmenšujeme hodnotu parametra $cislo
dekrementáciou, výsledok vzniká postupným násobením:
function factorial($number)
{
$result = 1;
while (--$number > 0) {
$result *= $number + 1;
}
return $result;
}
V zadaní je uvedené, že máme vypísať postupne faktoriál od čísla 0 po 10. To vieme urobiť vytvorením cyklu, ktorý sa spustí 11x a práve tu použijeme cyklus for
. Všimnite si, ako sa navzájom mixuje HTML a PHP kód. Táto časť kódu bude vyzerať nasledovne:
<ul>
<?php for ($i = 0; $i < 10; $i++) { ?>
<li><?php echo $i . "! = ". factorial($i)?></li>
<?php } ?>
</ul>
Na záver, keď všetko spojíme dokopy a pridáme štandardnú HTML kostru, celé riešenie bude vyzerať:
<?php
function factorial($number)
{
$result = 1;
while (--$number > 0) {
$result *= $number + 1;
}
return $result;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Faktoriál</title>
</head>
<body>
<ul>
<?php for ($i = 0; $i < 10; $i++) { ?>
<li><?php echo $i . "! = " . factorial($i) ?></li>
<?php } ?>
</ul>
</body>
</html>