Przejdź do zawartości

Perl/Instrukcja kontrolna if

Z Wikibooks, biblioteki wolnych podręczników.
Poprzedni rozdział: Operacje wejścia/wyjścia
Następny rozdział: Pętle

Instrukcja if jest najważniejszą strukturą warunkową w Perlu. Składnia jest taka jak pokazano niżej:

if (wyrażenie logiczne) {
  instrukcje
} 

Jeśli wyrażenie logiczne jest prawdziwe, instrukcje zawarte między nawiasami klamrowymi zostaną wykonane. Wyrażenie logiczne może zawierać dowolne operatory porównania opisane wcześniej. Może także zawierać operatory logiczne. Na przykład:

if (($x < -10) || (($x > 0)&&($x < 10))){
    print "x jest mniejsze niż -10 lub jest ściśle zawarte między 0 a 10.\n";
}

Instrukcje warunkowe mogą także zostać rozszerzone poprzez struktury elsif i else:

if (wyrażenie logiczne 1) {
  instrukcje 1
} elsif (wyrażenie logiczne 2) {
  instrukcje 2
} else {
  instrukcje 3
}

Działa to następująco. Program po kolei sprawdza wszystkie wyrażenia logiczne. Jeżeli któreś z nich zwróci wartość prawdziwą zostaną wykonane instrukcje zawarte w odpowiednim bloku po czym program wyjdzie z instrukcji warunkowej if. Jeżeli wszystkie wyrażenia zwrócą wartość fałszywą zostanie wykonany blok else.

 $x = 5;
 if ($x > 10) {
   print "$x jest większe od 10\n";
 } elsif ($x > 2) {
   print "$x jest większe od 2\n";
 } elsif ($x == 5) {
   print "$x jest równe 5\n";
 } else {
   print 'Nie wiem ile wynosi $x', "\n";
 }

Powyższy program wyświetli napis "5 jest większe od 2" i zakończy działanie. Dzieje się tak dlatego, że perla nie obchodzi czy wyrażenia dalej też spełniają warunek.

Uwaga! W przeciwieństwie np. do języka C w Perlu instrukcja nie może występować bezpośrednio po warunku - musi znajdować się wewnątrz nawiasów klamrowych. Na przykład poniższy kod zostanie uznany za nieprawidłowy:

 if ($x < -10)
   print "x jest mniejsze niż -10"; # blad!

Można też użyć zamiast if słowa kluczowego unless - znaczy tyle, co if z zaprzeczeniem. Tak więc kod

unless (wyrażenie logiczne) {
  instrukcja
}

jest równoważny

if ( !(wyrażenie logiczne) ) {
  instrukcja
}

Po unless można oczywiście używać elsif i else tak jak w normalnym if.

Spróbuj napisać program, który pobiera jedną liczbę od użytkownika i mówi czy jest ona parzysta.
  • podpowiedź: skorzystaj z operatora "%".
Poprzedni rozdział: Operacje wejścia/wyjścia
Następny rozdział: Pętle