Back to Top

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

Link do ćwiczenia 4 - instrukcje warunkowe

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:

  1. Na początku sprawdzana jest wartość wyrażenia stanowiącego warunek.

  2. Jeżeli wyrażenie to ma wartość true, wykonywane są instrukcje zawarte w ciele pętli (zawarte w nawiasach klamrowych).

  3. Po każdorazowym wykonaniu tychże instrukcji ponownie sprawdzany jest warunek kontynuacji pętli.

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