Główna zawartość
Programowanie
Kurs: Programowanie > Rozdział 1
Lekcja 11: Logika i instrukcja if- Zdanie warunkowe if
- Wyzwanie: Skacząca piłeczka
- Więcej interakcji z myszką
- Wyzwanie: Twoja pierwsza aplikacja do malowania
- Wartości logiczne
- Wyzwanie: Analizator Liczb
- Operatory logiczne
- Wyzwanie: Twój pierwszy przycisk
- Wyzwanie: Sprytniejszy przycisk
- If/else - Część 1
- Wyzwanie: Pytanie - odpowiedź
- If/Else - Część 2
- Przegląd: Zdania logiczne i warunkowe
- Liczby losowe
- Projekt: Magiczna ósemka
© 2023 Khan AcademyWarunki użytkowaniapolitykę prywatnościInformacja o plikach cookie
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;
Operator | Znaczenie | Wyrażenie "prawda" | ||
---|---|---|---|---|
=== | === | Ścisła równość | myAge === 28 | |
!== | Ścisła nierówność | myAge !== 29 | 28 !== 29 | |
> | Większy od | myAge > 25 | 28 > 25 | |
>= | Większy lub równy | myAge >= 28 | 28 >= 28 | |
< | Mniejszy od | myAge < 30 | 28 < 30 | |
<= | Mniejszy lub równy | myAge <= 28 | 28 <= 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?
- Dlaczego przed funkcją mousePressed niczego się nie stosuje, ale
zaleca się rozpoczynać definicję mouseClicked od słowa kluczowego 'var'?
Czy słowo 'var' wpływa na działanie programu, czy używanie go w tej sytuacji wynika tylko z jakiegoś przyzwyczajenia?(0 głosów)- Zarówno przed funkcją mousePressed i mouseClicked niczego się nie stosuje.
Linki do tych funkcji w dokumentacji KhanAcademy:
https://pl.khanacademy.org/computer-programming/var-mousepressed-function/1907626123
https://pl.khanacademy.org/computer-programming/var-mouseclicked-function/1897113673(10 głosów)