Instrukcje warunkowe
if…, else…, elseif…
Najprościej rzecz ujmując instrukcje warunkowe tj. if…, else…, ? oraz switch… pozwalają, w trakcie pisania programu, na rozważanie wielu możliwości odpowiadając na pytania co jeżeli?
Podam wam teraz prosty przykład:
Jeżeli liczba jest większa od zera, to wypisz że jest dodatnia
zapis tego stwierdzenia za pomocą instrukcji if będzie wyglądał następująco:
if($liczba>0) echo "jest dodatnia";
Jeżeli potrzebujemy rozwinąć naszą myśl o zapytanie „a co gdy warunek nie jest spełniony?” – używamy else.
Jeżeli liczba jest większa od zera, to wypisz że jest dodatnia – w przeciwnym wypadku napisz, że nie jest dodatnia
if($liczba>0) {echo "jest dodatnia";} else {echo "nie jest dodatnia";}
Oczywiście instrukcje możemy zagnieżdżać jedna w drugiej.
Może zajść sytuacja, że przed użyciem else chcemy sprawdzić jeszcze jakieś inne warunki, wtedy przychodzi nam z pomocą instrukcja elseif.
if($liczba>0) { echo "jest dodatnia"; } elseif($liczba==0) { echo "liczba jest zerem"; } else { echo "jest ujemna"; }
switch
Gdy wiemy, że nasza zmienna będzie przyjmowała jakieś konkretne wartości, możemy użyć wtedy instrukcji switch.
switch ($plec) { case "K": echo "Kobieta"; break; case "M": echo "Mężczyzna"; break; default: echo "Nierozpoznany wybór"; break; }
break; używamy by przerwać działanie instrukcji, gdy warunek zostanie spełniony.
default; oznacza akcję domyślą, gdy żaden z warunków nie zostanie spełniony.
Alternatywna składnia if i switch
Występuje alternatywa zapisów przedstawionych wyżej – można zastąpić nawias { znakiem : i zamiast zamykającego } użyć odpowiednio endif; lub endswitch;
Przykład dla if:
if ($a == 5):
echo "a jest równe 5";
echo "...";
elseif ($a == 6):
echo "a jest równe 6";
echo "!!!";
else:
echo "a nie jest 5 ani 6";
endif;
Przykład dla switch:
switch ($plec): case "K": echo "Kobieta"; break; case "M": echo "Mężczyzna"; break; default: echo "Nierozpoznany wybór"; break; endswitch;
ta forma zapisu jest bardzo rzadko spotykana.
Zadania do wykonania:
Zadanie 1: Napisz program sprawdzający czy liczba jest parzysta.
Rozwiązanie:
$a = 5; if($a==0){echo 'podałeś 0';} elseif ($a%2==0) { echo 'parzysta'; } else { echo 'nieparzysta'; } echo '<br /><br />';
Zadanie 2: Porównaj ze sobą 2 dowolne liczby i wypisz która jest większa.
Rozwiązanie:
echo "<u>Zadanie 2: Porównaj ze sobą 2 dowolne liczby i wypisz która jest większa.</u></br></br>"; $a = 10; $b = 5; $warunek = $a > $b; echo "porównujemy liczby $a i $b</br>"; if ($warunek) { echo 'większa jest liczba $a='.$a; } else { echo 'większa jest liczba $b='.$b; } echo '<br /><br />';
Zadanie 3: Porównaj ze sobą 4 nie równe sobie liczby i wypisz największą.
Rozwiązanie:
echo "<u>Zadanie 3: Porównaj ze sobą 4 nie równe sobie liczby i wypisz największą.</u></br></br>"; $a = 10; $b = 5; $c = 18; $d = 1; $m=$a; echo "porównujemy liczby: $a, $b, $c, $d</br>"; if($b > $m) {$m = $b;} if($c > $m) {$m = $c;} if($d > $m) {$m = $d;} echo 'większa z liczb to '.$m; echo '<br /><br />';
Zadanie 4: Porównaj ze sobą 3 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.
Rozwiązanie:
echo "<u>Zadanie 4: Porównaj ze sobą 3 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.</u></br></br>"; $a = 10; $b = 5; $c = 18; echo "porównujemy liczby: $a, $b, $c</br>"; $min = $a; //zakladamy ze jest to najmniejsza if ($b < $a && $b < $c) {$min = $b;} if ($c < $a && $c < $b) {$min = $c;} $max = $a; //zakladamy ze jest to największa if ($b > $max) {$max = $b;} if ($c > $max) {$max = $c;} if($a != $min && $a != $max) {$mid = $a;} if($b != $min && $b != $max) {$mid = $b;} if($c != $min && $c != $max) {$mid = $c;} echo 'większa z liczb to '.$max.', '.$mid.', '.$min; echo '<br /><br />';
Zadanie 5: Porównaj ze sobą 4 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.
Rozwiązanie:
echo "<u>Zadanie 5: Porównaj ze soba 4 nie równe sobie liczby i wypisz je w kolejności od największej do najmniejszej.</u></br></br>"; $a = 10; $b = 5; $c = 18; $d = 1; echo "porównujemy liczby: $a, $b, $c, $d</br>"; //szukamy najmniejszej if ($a < $b && $a < $c && $a < $d) {$l1 = $a;} elseif ($b < $a && $b < $c && $b < $d) {$l1 = $b;} elseif ($c < $a && $c < $b && $c < $d) {$l1 = $c;} else $l1 = $d; $l4 = $a; //zakladamy ze jest to ostatnia liczba if ($b > $l4) {$l4 = $b;} if ($c > $l4) {$l4 = $c;} if ($d > $l4) {$l4 = $d;} if($a != $l1 && $a != $l4) {$m2 = $a;} if($b != $l1 && $b != $l4) { $m1 = $b; (empty($m2) ? $m2 = $b : $m2 = $m2); } if($c != $l1 && $c != $l4) { $m1 = $c; (empty($m2) ? $m2 = $c : $m2 = $m2); } if($d != $l1 && $d != $l4) {$m1 = $d; $m2 = $m2;} ($m1 > $m2 ? $l2 = $m2 : $l2 = $m1); ($m1 < $m2 ? $l3 = $m2 : $l3 = $m1); echo 'większa z liczb to '.$l4.', '.$l3.', '.$l2.', '.$l1; echo '<br /><br />';
Zadanie 6: Napisz program potrafiący rozwiązywać równanie kwadratowe: y = ax2 + bx + c. Przypominamy, że ilość rozwiązań zależy od wartości tzw. współczynnika Δ (Δ = b2 − 4ac).
Rozwiązanie:
echo "<u>Zadanie 6: Napisz skrypt, obliczający pierwiastki trójmianu kwadratowego ax<sup>2</sup> + bx + c = 0. Za obliczanie pierwiastka kwadratowego odpowiada funkcja sqrt(\$zmienna)</u></br></br>"; $a = 1; $b = 2; $c = 1; $delta = $b * $b - 4 * $a * $c; //obliczamy wg wzoru if ($delta > 0) { $x1 = (-$b - sqrt($delta)) / 2 * $a; //sqrt() pierwiastek kwadratowy $x2 = (-$b + sqrt($delta)) / 2 * $a; echo ' posiada dwa pierwiastki x1 = '.$x1.', x2 = '.$x2; } else if ($delta == 0) { $x = -$b / 2 * $a; echo ' posiada jeden pierwiastek x = '.$x; } else echo ' nie posiada pierwiastków';
Zadanie 7: Zrealizuj kalkulator, który dla zadanych liczb w zależności od wartości zmiennej $wybor wykonuje: mnożenie, dzielenie, odejmowanie, dodawanie. Użyj instrukcji „switch”.
Rozwiązanie:
echo "<u>Zadanie 7: Kalkulator</u></br></br>"; $liczba1 = 4; $liczba2 = 2; $wybor = '/'; switch ($wybor) { case "+": echo $liczba1+$liczba2; break; case "-": echo $liczba1-$liczba2; break; case "*": echo $liczba1*$liczba2; break; case "/": echo $liczba1/$liczba2; break; }
Zadanie 8: Napisz program, który dla danego punktu na płaszczyźnie sprawdzi, w której ćwiartce układu współrzędnych się on znajduje. Może jednak być tak, że punkt nie znajduje się w żadnej ćwiartce – leży na jednej z osi lub w środku układu współrzędnych. Wówczas program powinien to stwierdzić. Na wejściu znajdują się dwie liczby całkowite oddzielone spacją, x i y(−1 000 000 000≤x, y≤1 000 000 000), oznaczające współrzędne danego punktu. Jeżeli podany punkt nie leży na żadnej z osi, Twój program powinien wypisać: I, II, III lub IV, w przypadku gdy punkt należy do, odpowiednio, pierwszej, drugiej, trzeciej lub czwartej ćwiartki układu współrzędnych. Jeżeli punkt leży w środku układu współrzędnych, program powinien wypisać liczbę 0. W przeciwnym razie, program powinien wypisać OX (duże O i duże X), jeśli punkt leży na osi X, a OY – jeśli punkt leży na osi Y.
Przykład
Dla danych wejściowych:
5 7
poprawnym wynikiem jest:
I
a dla danych wejściowych:
0 -1000000000
poprawnym wynikiem jest:
OY
natomiast dla danych wejściowych:
0 0
Zadanie 9: Twoim zadaniem jest stwierdzić, czy z trzech odcinków o podanych długościach można zbudować trójkąt o dodatnim polu. Pierwszy i jedyny wiersz wejścia zawiera trzy liczby naturalne a,b,c(1≤a, b, c≤1 000 000 000), oddzielone spacjami. Liczby te oznaczają długości trzech odcinków. Twój program powinien wypisać jedno słowo TAK lub NIE, w zależności od tego, czy z odcinków o długościach takich jak na wejściu można zbudować niezdegenerowany trójkąt, czyli trójkąt o dodatnim polu.
Przykład
Dla danych wejściowych:
8 7 5
poprawnym wynikiem jest:
TAK
a dla danych wejściowych:
1 10 2
poprawnym wynikiem jest:
NIE
oraz dla danych wejściowych:
4 4 8
poprawnym wynikiem jest:
NIE
Zadanie 15: Napisz skrypt, który sprawdzi, czy zmienna $x jest większa od liczby 20 (użyj instrukcji warunkowej if)
Zadanie 16: Napisz skrypt, który sprawdzi, czy zmienna $z jest liczbą trzycyfrową (użyj instrukcji warunkowej if)
Zadanie 17: Napisz skrypt, który w zależności od wartości zmiennej $age umieszcza odpowiedni napis na stronie:
• jeżeli $wiek mniejszy od 18, wyświetl: „Jeszcze nie możesz głosować”
• jeżeli $wiek większy lub równy 18, wyświetl: „Możesz tylko głosować”
• jeżeli $wiek większy lub równy 21, wyświetl: „Możesz głosować i kandydować do Sejmu”
• jeżeli $wiek większy lub równy 30, wyświetl: „Możesz głosować i kandydować do Sejmu i Senatu”
• jeżeli $wiek większy lub równy 35, wyświetl: „Możesz głosować, kandydować do Sejmu i Senatu oraz
na Prezydenta”
Zadanie zrealizuj za pomocą instrukcji warunkowej if oraz Switch
Zadanie 18: Napisz skrypt, używając instrukcji switch, który umieszcza na stronie odpowiednią liczbę znaków + (plus) w zależności od wartości zmiennej $ile:
- jeżeli $ile równe 1: wyświetl: +
- jeżeli $ile równe 2: wyświetl: ++
- jeżeli $ile równe 3: wyświetl: +++
- …
- jeżeli $ile równe 9: wyświetl: +++++++++
- jeżeli $ile mniejsze od 1 lub większe od 9: wyświetl: „Wartość poza zakresem”
Zadanie 19: Napisz skrypt, używając instrukcji switch, który umieszcza na stronie napis z numerem kwartału roku w od zmiennej $miesiac:
- jeżeli $miesiac równe 1,2, lub 3: wyświetl: „Kwartał I”
- jeżeli $miesiac równe 4,5, lub 6: wyświetl: „Kwartał II”
- jeżeli $miesiac równe 7,8, lub 9: wyświetl: „Kwartał III”
- jeżeli $miesiac równe 10,11, lub 12: wyświetl: „Kwartał IV”
- jeżeli $miesiac mniejsze od 1 lub większe od 12: wyświetl: „Błędny numer miesiąca”