Czego nauczysz się po ćwiczeniu 4 - instrukcje warunkowe
-
w jaki sposób wykorzystać zmienne typu boolean
-
jak stosować instrukcję warunkową if
-
poznasz pętlę, która wykona kod wskazaną ilość razy
Kontrola przepływu programu w PHP
Każdy program w PHP wykonuje instrukcję po instrukcji, w kolejności w jakiej owe instrukcje zostały zapisane przez programistę. Czasem zachodzi potrzeba, aby pewne instrukcje zostały wykonane tylko wtedy, gdy spełniony jest jakiś określony warunek. A jeśli nie jest spełniony to ma wykonać inną instrukcję.
Można by tę logikę opisać następująco:
1. jeśli zachodzi warunek:
a) to wykonaj pewne instrukcje,
b) w przeciwnym wypadku wykonaj inne instrukcje.
Dla przykładu, jeśli podana przez użytkownika liczba jest większa od zera to wykonaj dzielenie, jeśli nie to wyświetl komunikat błędu.
Do napisania instrukcji warunkowych w PHP służą instrukcje if, elseif, else.
Te instrukcje można porównać do obecnego w języku naturalnym stwierdzenia:
jeśli (if) to zrób to …
jeśli nie to może (else if) zrób to …
jeśli nie wszystkie poprzednie instrukcje to ostatecznie (else), zrób to …
Możemy poprzestać tylko na jednej instrukcji if, nie musimy dopisywać else if i else. Jest to opcjonalny wariant. Składnia tego polecenia w PHP przedstawia się następująco:
/* Zwróć uwagę na nawiasy klamrowe i okrągłe.
if(wyrażenie_warunkowe) {
//instrukcja wykonywana,
//jeśli spełniony zostanie warunek
}
else if(inne_wyrażenie_warunkowe) {
//instrukcje wykonywana, jeśli spełniony
//zostanie drugi warunek, a pierwszy nie
}
else {
//instrukcja wykonywana, jeśli nie zostanie
//spełniony żaden z poprzednich warunków
} */
Jeśli byśmy chcieli napisać kod z podanego przykładu, sprawdzającego czy liczba jest większa od zera, napiszemy następujący kod:
//Przykład sprawdzenia czy podana zmienna jest większa od zera
$n = 5;
if ($n > 0){
echo "zmienna $n większa od zera";
}
W przypadku bardziej rozbudowanego porównania moglibyśmy sprawdzać czy można wykonać działanie dzielenia, jeśli dzielna ( liczba przez którą dzielimy) jest większa od zera.
// Sprawdzamy czy dzielna jest większa od zera
$dividend = 0;
if ($dividend > 0 ){
echo $n / $dividend;
}else {
echo "Pamiętaj ... nie dziel przez zero!";
}
Pętla while
W sytuacji, w której chcemy aby skrypt powtórzył kilkakrotnie wykonanie pewnego fragmentu kodu potrzebna jest konstrukcja, która to umożliwi. Kontrukcje, które umożliwiają powtórzenie fragmentu kodu określona ilość razy nazywane są pętlami (loop z ang.) Są różne rodzaje pętli w PHP różniące się zastosowaniem, ale w głównej mierze powtarzają wykonywanie kodu pewną ilość razy. Jedną z takich pętli jest pętla while. Działa ona w następujący sposób:
-
Na początku sprawdzana jest wartość wyrażenia stanowiącego warunek.
-
Jeżeli wyrażenie to ma wartość true, wykonywane są instrukcje zawarte w ciele pętli (zawarte w nawiasach klamrowych).
-
Po każdorazowym wykonaniu tychże instrukcji ponownie sprawdzany jest warunek kontynuacji pętli.
-
Do momentu zwrócenia przez wyrażenie stanowiące warunek, wartości false pętla kończy powtarzanie kodu z nawiasów klamrowych.
Wynika z tego, że w ciele pętli while powinna być umieszczona instrukcja modyfikująca wartość wyrażenia warunkowego. W przeciwnym wypadku pętla nigdy się nie zatrzyma – pętla nieskończona.
W takich i podobnych przypadkach następuje zawieszenie komputera.
Składnia PHP pętli while wygląda następująco:
/*
while(wyrażenie) {
instrukcja1;
instrukcja2;
…
instrukcjaN;
}
*/
Praktyczny przykład użycia pętli while do wyświetlenia po kolei 9 liczb przedstawia się następująco:
// Wyświetlanie liczb od 0 do 9
$i = 0;
while($i < 10) {
echo "$i";
$i = $i + 1;
}
Zadanie 1
Stwórz trzy zmienne o nazwach nr1, nr2, nr3, przechowujące liczby całkowite.
Następnie za pomocą instrukcji warunkowej if ... elseif ... else wypisz za pomocą instrukcji echo, która z nich jest największa.
Zadanie 2
Stwórz pętlę while, która wyświetli napis "Lubię PHP” podaną ilość razy. Ilość ta niech będzie zapisana w zmiennej o nazwie $loopNumber. Napisy mogą być oddzielone między sobą znakiem końca linii. Dla $loopNumber równego 3 powinien wyglądać:
Lubię PHP
Lubię PHP
Lubię PHP
Zadanie 3
Zadanie to polega na wypisaniu napisu “parzysta” lub “nieparzysta” w pętli odliczającej od 0 do 10. Za każdym “obrotem” pętli w instrukcji powinien znaleźć się warunek sprawdzający czy reszta z dzielenia tej liczby przez 2 jest równa zero. Jeśli tak jest to oznacza, że liczba jest parzysta i należy wyświetlić napis “parzysta”. W przeciwnym przypadku liczba jest nieparzysta i taki też komunikat należy wyświetlić w konsoli. Dla czytelności pomiędzy napisami należy wstawić znak końca linii.