Algoritmy s PHP

Ján Guniš, PF UPJŠ, Košice

 

Príkazy cyklu, príkazy WHILE a DO WHILE

Častým programátorským problémom, býva opakovanie postupnosti príkazov. Aj tu PHP ponúka riešenie, cykly. Najjednoduchším z nich je príkaz cyklu WHILE (pascalisti, spomínate si na príkaz s podmienkou na začiatku?).

    

Príklad príkazu WHILE Vysvetlenie
while (podmienka) príkaz;
 
Takto vyzerá všeobecný tvar príkazu WHILE. Pokiaľ podmienka platí, bude sa vykonávať príkaz. Ak podmienka hneď na začiatku neplatí, príkaz sa nemusí vykonať ani raz.
$a=1;
while ($a <= 10) echo $a++;
                                               
Program vypíše čísla od 1 do 10. $a++ (post increment) vráti hodnotu premennej $a a potom ju zvýši o 1.
Zistite, aký bude výpis tohto algoritmu:
   $a=1;
   while ($a <= 10) echo ++$a;
$a=1;
while ($a <= 100)
{
 echo $a . "<sup>2</sup> = " . $a*$a . "<br>\r";
 ++$a;
}
                                                
Ak potrebujeme opakovať viac príkazov, použijeme {}. Program vypíše druhé mocniny čísel od 1 do 100, navyše to urobí vo formáte HTML. Escape sekvencia "\r" spôsobí riadkovanie aj v html kóde.
výstup z programu zobrazenie v prehliadači
1<sup>2</sup> = 1<br>
2<sup>2</sup> = 4<br>
...
99<sup>2</sup> = 9801<br>
100<sup>2</sup> = 10000<br>
12 = 1
22 = 4
...
992 = 9801
1002 = 10000
$a=1;
while ($a <= 100):
 echo $a."<sup>2</sup>=".$a*$a."<br>\r";
 ++$a;
endwhile;
                                     
Samozrejme, že aj WHILE ma svoju alternatívnu syntax. Zátvorky {} sme nahradili ":" a slovíčkom ENDWHILE.

 

Ďaľším cyklom, ktorý ponúka PHP je cyklus DO WHILE. Rozdiel je v tom, že podmienka je umiestnená na konci cyklu. Najskôr sa teda príkaz vykoná, a potom sa testuje platnosť podmienky. Príkaz sa teda opakuje minimálne 1 krát. (pascalisti, spomínate si na REPEAT?. Viete v čom je rozdiel?)

Príklad príkazu DO WHILE Vysvetlenie
do príkaz while (podmienka);
 
Takto vyzerá všeobecný tvar príkazu DO WHILE. Príkaz sa vykoná a potom sa testuje platnosť podmienky. Ak podmienka platí, opakuje sa telo cyklu
do
{
 echo $a . "<sup>2</sup> = " . $a*$a . "<br>\r";
 ++$a;
}
while ($a <= 100);
                                                
Ak potrebujeme opakovať viac príkazov, použijeme {}. Program vypíše druhé mocniny čísel od 1 do 100, navyše to urobí vo formáte HTML.
výstup z programu zobrazenie v prehliadači
1<sup>2</sup> = 1<br>
2<sup>2</sup> = 4<br>
...
99<sup>2</sup> = 9801<br>
100<sup>2</sup> = 10000<br>
12 = 1
22 = 4
...
992 = 9801
1002 = 10000