If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Warunkowy z if, else oraz wartościami logicznymi

Jako ludzie codziennie podejmujemy decyzje, np. co zjemy na obiad, czy będziemy zakładać płaszcz przeciwdeszczowy. Podejmując te decyzje, bierzemy pod uwagę wiele czynników z naszego otoczenia, takich jak zawartość naszej lodówki na obiad, czy pogoda na zewnątrz przy podejmowaniu decyzji o płaszczu przeciwdeszczowym.
Programy komputerowe również podejmują decyzje, używając wyrażeń boolowskich (true/false) wewnątrz warunków (if/else). Dzięki funkcjom warunkowym programy mogą reagować w różny sposób na różne dane wejściowe i parametry.

Prosty warunek

Wyobraźmy sobie, że piszemy program, który pomoże nam zdecydować, w co się ubrać na zewnątrz każdego dnia. Istnieje wiele warunków, które możemy wymyślić w tym programie, ale zacznijmy od prostego przypadku: jeśli temperatura jest równa lub niższa od zera, program powinien nas ostrzec, aby nosić kurtkę zimową.
Oto logika na schemacie blokowym:
Wykres, który zaczyna się od rombu, który mówi: "Czy temperatura jest mniejsza lub równa 32?". Romb ma strzałkę z napisem "TRUE", która prowadzi do prostokąta z napisem "Display": "Wear a snow jacket!"
Możemy zaprogramować ten przepływ w języku JavaScript za pomocą instrukcji if:
if (temperature < 32) {
  println("Wear a snow jacket!");
}
Podzielmy tę składnię. Ogólna struktura każdej instrukcji if wygląda w ten sposób:
if (<condition>) {
  <instructions>
}
Różnią się one od siebie warunkami i instrukcjami; tam właśnie dzieje się magia.
Warunek jest wyrażeniem logicznym: wyrażenie, które określa się jako true lub false. Wartości logiczne są kolejnym typem danych w językach programowania i mogą być tylko prawdziwe lub fałszywe.
Na przykład, możemy przechowywać wyniki tego wyrażenia logicznego w zmiennej:
var belowFreezing = temperature < 32;
W zależności od aktualnej wartości temperature, zmienna belowFreezing będzie teraz przechowywać albo true, albo false.
Możemy nawet zastąpić warunek zmienną:
var belowFreezing = temperature < 32;
if (belowFreezing) {
  println("Wear a snow jacket!");
}
Jakkolwiek napiszemy kod, warunek musi zostać określony jako true lub false, ponieważ to informuje komputer, czy wykonać instrukcje w nawiasach klamrowych, czy też nie.
Instrukcjami może być cokolwiek, co twój program jest w stanie zrobić i mogą one być tak długie, jak to konieczne.
✏️ Spróbuj zmienić wartość temperature w poniższym programie i zobacz co się stanie. Możesz również zmienić warunek lub instrukcje.
📝 Zobacz podobny kod w: App Lab | Snap | Python
Uwaga: zazwyczaj program taki odczytywałby wartość temperature z czujnika lub innego przyrządu pomiarowego, ale dla uproszczenia, "hardkodujemy" tę wartość w programie.

Operatory porównania

Nasze powyższe wyrażenie logiczne użyło operatora porównania <= do określenia, czy jedna liczba jest mniejsza lub równa innej liczbie. Istnieje wiele operatorów porównania w językach programowania do określania różnych zależności pomiędzy wartościami, zwłaszcza liczbami.
Oto operatory relacji w języku JavaScript:
OperatorZnaczenieWyrażenia, które są prawdziwe\,
>Większy niż60 > 32
>=Większy lub równy60 >= 3232 >= 32
<Mniejszy niż20 < 32
<=Mniejszy lub równy20 <= 3232 <= 32
===Ściśle równy32 === 32
==Równy32 == 32"32" == 32
!==Ściśle nierówny30 !== 32"32" !== 32
!=Nierówny30 != 32
JavaScript jest tutaj trochę nieco trudnym językiem, ponieważ posiada zarówno operatory równości, jak i "ścisłe" operatory równości.
Operatory porównania najpierw starają się wymusić, aby obie strony wyrażenia były tego samego typu (np. przez konwersję obydwu na liczby), a następnie sprawdzają, czy są równe. Ścisły operator równości zobaczy, że dwie wartości są różnymi typami i natychmiast zadecyduje, że nie mogą być równe sobie. Zalecamy używanie operatorów ścisłych, ponieważ prowadzą one do bardziej przewidywalnego kodu.
Większość języków programowania nie posiada obydwu rodzajów operatorów równości, ale możesz napotkać inne różnice w sposobie, w jaki języki decydują o tym, czy dwie zmienne są równe.
✏️ Poniższy program wyświetla wszystkie rodzaje komunikatów opartych na zmiennej yourAge. Spróbuj zmienić tę wartość na inną, aby zobaczyć, co zostanie wyświetlone na wyjściu. Możesz również dodać do programu więcej instrukcji if.
📝 Zobacz podobny kod w: App Lab | Snap | Python

Instrukcja else

Za pomocą instrukcji if, nasze programy mogą wykonać zestaw poleceń tylko wtedy, gdy warunek jest prawdziwy. Jeśli chcemy, aby nasze programy wykonały inny zestaw instrukcji, gdy warunek jest fałszywy, możemy użyć instrukcji else.
Wyobraźmy sobie super prosty program do sprawdzania haseł. Logika wygląda tak:
Schemat blokowy, który zaczyna się od rombu z napisem "Is password equal to TOPSECRET?". Pierwsza strzałka nosi nazwę "TRUE" i prowadzi od rombu do prostokąta z napisem "Display: 'You got it!'". Druga strzałka nosi nazwę "FALSE" i prowadzi od rombu do prostokąta z napisem "Display: 'Try again!'".
Możemy zaprogramować to za pomocą instrukcji if, a następnie else:
if (password === "TOPSECRET") {
   println("You got it!");
} else {
   println("Try again!");
}
📝 Zobacz podobny kod w: App Lab | Snap | Python
Nasz program gwarantuje, że zawsze będzie podążał jedną z dwóch ścieżek: albo warunek jest prawdziwy i idzie pierwszą ścieżką, albo jest fałszywy i idzie drugą.
✏️ Poniższy program bazuje na wcześniejszym programie sprawdzania wieku, dodając wszędzie instrukcję else. Teraz możesz łatwo zobaczyć, co możesz, a czego nie możesz zrobić w danym wieku. Pobaw się zmienną yourAge i zobacz, jak zmieniają się dane wyjściowe.
📝 Zobacz podobny kod w: App Lab | Snap | Python

Instrukcje warunkowe w pseudokodzie

Ten pseudokod reprezentuje pojedynczą instrukcję if:
IF (<condition>)
{
     <instructions>
} 
Ten pseudokod zawiera instrukcję else z drugim zestawem instrukcji, które mogą zostać wykonane zamiast nich:
IF (<condition>)
{
     <instructions 1>
} 
ELSE 
{
     <instructions 2>
}
Oto operatory relacyjne w pseudokodzie:
OperatorZnaczenie
a = bRówny
a ≠ bNie równy
a > bWiększy od
a < bMniejszy od
a ≥ bWiększy równy od
a ≤ bMniejszy równy od
Oto logika sprawdzenia hasła w pseudokodzie:
IF (password = "TOPSECRET")
{
   DISPLAY("You got it!")
}
ELSE {
   DISPLAY("Try again!");
}