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ść

Przegląd: Zdania logiczne i warunkowe

To jest przegląd tego, co zostało omówione w poradniku na temat logiki i instrukcji warunkowej.
Często zdarza się że chcemy by nasz program wykonał jakąś czynność "pod pewnym warunkiem" - chcemy móc powiedzieć "jeśli to jest prawdą, wtedy wykonaj X lecz jeśli prawdą jest co innego, wykonaj Y." To tak, jak po obudzeniu się rankiem- "i jeśli pada deszcz, wezmę parasol, lecz jeśli świeci słońce, założę okulary przeciwsłoneczne." W naszych programach możemy wykonywać operacje warunkowo wykorzystując konstrukcje if oraz if/else łącznie z wyrażeniami warunkowymi.
Instrukcja if mówi programowi, aby wykonać blok kodu, kiedy warunek jest prawdziwy. W kodzie poniżej, zobaczymy wiadomość tylko i wyłącznie, kiedy x jest większe od 0:
var x = 5;

if (x > 0) {
text('x jest dodatnie!', 200, 200);
}
Ponieważ x wynosi 5, które jest większe od 0, możemy zobaczyć wiadomość na płótnie. Jeśli zmienimy x na -1, nie będzie wiadomości, ponieważ x jest mniejsze od 0.
Fragment x > 0 nazywamy wyrażeniem warunkowym - co oznacza, że wyrażenie musi sprowadzać się do prawdy lub fałszu. Kiedy wartość jest true lub false, nazywamy tę wartość logiczną ( w przeciwieństwie do liczby czy napisu). Na przykład, możemy po prostu wyświetlać wyrażenie warunkowe:
text(x > 0, 200, 200); // Wyświetla "true"
Możemy także przechowywać ja w zmiennej, a potem ją wyświetlić:
var isPositive = x > 0;
text(isPositive, 200, 200);
Możemy wtedy powiedzieć, że isPositive przechowuje wartość logiczną, ponieważ jest true lub false, w zależności od tego co znajduje się w x.
Mamy wiele sposobów tworzenia wyrażeń warunkowych, które będą ocenianie jako true czy false, ponieważ mamy wiele operatorów. Oto najbardziej popularne:
Zakładając następującą zmienną, tutaj są najbardziej typowe operatory porównania i wyrażeń, które byłoby to prawdą z nimi:
var myAge = 28;
OperatorZnaczenieWyrażenie "prawda"
======Ścisła równośćmyAge === 28
!==Ścisła nierównośćmyAge !== 2928 !== 29
>Większy odmyAge > 2528 > 25
>=Większy lub równymyAge >= 2828 >= 28
<Mniejszy odmyAge < 3028 < 30
<=Mniejszy lub równymyAge <= 2828 <= 28
Jest to bardzo częsty błąd, mylić operator przypisania (=) z operatorem porównania (===), ponieważ oba używają znaku "równa się", ale są bardzo różne. Operator przypisania będzie rzeczywiście zmienić wartość zmiennej, natomiast operator równości po prostu odczyta wartość zmiennej i zobaczy, czy zmienna równa się czemuś. Na przykład:
var x = 2 + 2; // ustala wartość na  4

if (x === 4) { // Zadaje pytanie: "równa się 4?"
text("yep, 2 + 2 = 4!", 200, 200);
}
Czasami chcemy połączyć kilka porównań razem w jednym wyrażeniu warunkowym, dlatego mamy operatory logiczne. Te operatory pozwalają nam wykorzystać w naszych programach relacje takie jak "jeśli X i Y są prawdziwe (true)" albo "jeśli X lub Y są prawdziwe "
Jeśli chcemy wymagać, aby dwa warunki były prawdziwe, możemy użyć operatora & & ("i"):
var degreesOutside = 70;
var numberOfClouds = 50;
if (degreesOutside > 70 && numberOfClouds < 5) {
  text("Załóż okulary przeciwsłoneczne!", 200, 200);
}
Często używaliśmy w naszych programach sprawdzania, czy pozycja myszki użytkownika jest wewnątrz prostokąta (naśladującego przycisk), w takim przypadku potrzebujemy wielu operatorów &&:
rect(100, 50, 100, 100);

mousePressed = function() {
if (mouseX > 100 && mouseX < 200 && mouseY > 50 && mouseY < 150) {
text("Udało Ci się!", 80, 75);
}
};
Jeśli chcemy sprawdzić czy tylko jeden z warunków jest spełniony, możemy użyć operatora || czyli ("albo"):
var degreesOutside = 70;
var numberOfClouds = 50;
if (degreesOutside < 70 || numberOfClouds < 5) {
  text("Załóż okulary przeciwsłoneczne jeśli jest gorąco lub niebo jest czyste", 200, 200);
}
Możemy użyć jednocześnie && i || w tym samym warunku, jeśli mamy bardziej złożony warunek do sprawdzenia. Wystarczy użyć nawiasów do pogrupowania wyrażeń, tak aby program się nie pogubił podczas wykonywania:
var myAge = 28;
if ((myAge >= 0 && myAge < 3)  || myAge > 90) {
println('Nie jesteś w swoim żywiole.');
}
Teraz powróćmy do instrukcji if. Często chcemy wykonać jakich blok kodu w przypadku nie spełnienia warunku, w takim przypadku dodajemy blok else.
var age = 28;
if (age > 18) {
  println('Tak, możesz prowadzić!');
} else {
  println('Przykro mi, ale musisz mieć ' + (18 - lat) + ' by móc prowadzić.');
}
Czasami chcemy sprawdzić wiele warunków, i zrobić inną rzecz na podstawie każdego z nich, w takim przypadku możemy użyć else if:
var age = 20;
if (age >= 35) {
println('Możesz głosować i zasiadać w rządzie!');
} else if (age >= 25) {
println('Możesz głosować i zasiadać w Sejmie!');
} else if (age >= 18) {
println('Możesz głosować!');
} else {
println('Nie możesz głosować!');
}
Możesz sprawdzać warunki tak długo jak chcesz - po prostu upewnij się, że warunki są faktycznie dostępne. Sprawdzaj kod tak długo jak, aż upewnisz się, że możesz dostać się do każdego kawałka kodu, by mieć pewność, że wszystko działa.
Mam nadzieje, że widzisz teraz, jak ważną częścią programowania są instrukcje warunkowe oraz jak wydajne i elastyczne programy możesz tworzyć.

Chcesz dołączyć do dyskusji?

Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.