Główna zawartość
Kurs: Podstawy informatyki - program rozszerzony > Rozdział 3
Lekcja 5: Warunki- Warunkowy z if, else oraz wartościami logicznymi
- Warunkowy z if, else oraz wartościami logicznymi
- Zagnieżdżone warunki
- Zagnieżdżone warunki
- Złożone typy logiczne z operatorami logicznymi
- Złożone typy logiczne z operatorami logicznymi
© 2024 Khan AcademyWarunki użytkowaniapolitykę prywatnościInformacja o plikach cookie
Zagnieżdżone warunki
Programy komputerowe używają instrukcji warunkowych, aby wybrać prawidłową ścieżkę przebiegu programu. Gdy program wybiera tylko jedną z dwóch ścieżek, może użyć prostego warunku (if/else). Gdy program wybiera jedną z wielu ścieżek, może użyć zagnieżdżonych lub złączonych warunków.
Zagnieżdżone warunki
Wyobraź sobie program, który informuje o tym, czy dana liczba jest dodatnia, ujemna czy zerowa. Program ten musi wybrać jedną z 3 ścieżek.
Schemat blokowy dla logiki mógłby wyglądać tak:
Możemy przetłumaczyć to na język JavaScript za pomocą zagnieżdżonych uwarunkowań. Oto odpowiednik JS:
var numberSign;
if (number > 0) {
numberSign = "positive";
} else {
if (number < 0) {
numberSign = "negative";
} else {
numberSign = "neutral";
}
}
Nasz zewnętrzny warunek jest prosty
if
/else
, odpowiadający górnemu rombowi na schemacie blokowym. Następnie wewnątrz else, zagnieżdżamy wewnętrzny warunek, odpowiadający drugiemu rombowi na schemacie blokowym.W językach opartych na tekście, takich jak JavaScript, ważne jest, aby zwrócić uwagę na składnię i formatowanie zagnieżdżonych warunków. Zauważ, jak używam nawiasów klamrowych wokół każdego zestawu instrukcji i wcinam wewnętrzny warunek wewnątrz
else
. To pomaga innym programistom (w tym przyszłemu mnie!) lepiej zrozumieć przepływ logiki.✏️ Poniższy program porównuje wyniki dwóch graczy i określa, kto wygrał, przegrał lub zremisował. Spróbuj zmienić wartości tak, aby każdy z graczy wygrał.
Zagnieżdżone alternatywne przepływy
Dla większości warunków zagnieżdżonych istnieje wiele możliwości uporządkowania różnych warunków.
Aby zdecydować, czy dana liczba jest dodatnia/ujemna/neutralna, moglibyśmy również zacząć od pytania, czy dana liczba jest równa zeru, jak w tym schemacie blokowym:
Przetłumaczony na JavaScript przepływ wygląda następująco:
var numberSign;
if (number === 0) {
numberSign = "neutral";
} else {
if (number > 0) {
numberSign = "positive";
} else {
numberSign = "negative";
}
}
Przepływ ten jest tak samo poprawny jak drugi schemat i wyświetli ten sam zestaw wartości dla danych wejściowych co pierwszy schemat.
W rzeczywistości są jeszcze co najmniej cztery możliwe schematy, aby osiągnąć ten sam rezultat.
Jakim przepływem powinien podążać twój program? Tak długo, jak każdy z nich osiąga ten sam rezultat, wybierz ten przepływ, który wydaje się najbardziej naturalny i intuicyjny. Po zaprogramowaniu przepływu zawsze testuj swój program z różnymi wartościami, aby upewnić się, że działa on zgodnie z oczekiwaniami.
Głębsze zagnieżdżanie
Byłoby dobrze, gdyby wszystko na świecie zostało podzielone na trzy kategorie, ale świat jest bardziej bałaganiarski.
Na szczęście możemy zagnieżdżać warunki na tylu poziomach, na ilu jest to konieczne, a nasz program może podążać wieloma różnymi ścieżkami.
Na przykład, moglibyśmy napisać program do klasyfikacji salsy na łagodną, średnią, gorącą lub ekstremalną, na podstawie skali Scoville’a.
Ten schemat blokowy opisuje wymaganą logikę:
Możemy zaimplementować to w JavaScript z instrukcjami
if
/else
jak poprzednio, ale z jednym dodatkowym poziomem zagnieżdżania.var level;
if (rating < 5000) {
level = "mild";
} else {
if (rating < 20000) {
level = "medium";
} else {
if (rating < 70000) {
level = "hot";
} else {
level = "extreme";
}
}
}
Teraz nasz program może przypisać
level
do jednej z czterech różnych wartości, w zależności od tego, jaka ścieżka zostanie wybrana. Musimy bardziej uważać na kolejność tutaj, ponieważ każdy zagnieżdżony
if
zakłada, że program sprawdził już poprzedni warunek. Nie możemy mieszać warunków, tak bardzo jakbyśmy mogli dla pozytywnego/negatywnego/neutralnego programu. Po raz kolejny zawsze przemyśl uważnie kolejność, gdy tworzysz swoje warunki.✏️ Poniższy program to prosty dzienny kalkulator kalorii dla kotów i psów. Spróbuj dostosować zmienne na górze, aby odzwierciedlić własnego pupila, jeśli go masz, lub pupila przyjaciela. Możesz również sprawić, że kalkulator będzie bardziej dokładny poprzez uwzględnienie takich czynników, jak nadwaga, czy zwierzę domowe/dzikie. Z zagnieżdżonymi warunkami, możesz sprawdzić wszystko!
Dołączone warunki
Podczas programowania często używamy warunków, aby sprawdzić możliwe wartości konkretnej zmiennej.
Widzieliśmy już dwa przykłady i możemy podsumować każdy z nich w tabeli:
warunek | wyjście |
---|---|
number > 0 | "positive" |
number < 0 | "negative" |
number === 0 | "neutral" |
warunek | wyjście |
---|---|
rating < 5000 | "mild" |
rating < 20000 | "medium" |
rating < 70000 | "hot" |
rating >= 70000 | "extreme" |
Wiele języków programowania zawiera sposób na tworzenie "łączonych" warunków, które są jeszcze lepszym sposobem na sprawdzenie tych wartości.
W języku JavaScript możemy łączyć warunki za pomocą instrukcji
else if
. Oto jak możemy napisać weryfikator do sprawdzania znaku liczby z wykorzystaniem dołączonego warunku:
var numberSign;
if (number > 0) {
numberSign = "positive";
} else if (number < 0) {
numberSign = "negative";
} else {
numberSign = "neutral";
}
Kod ten jest bardzo podobny do kodu oryginalnego, ale używa
else if
zamiast zagnieżdżonego else
z if
wewnątrz niego. Dołączone warunki są łatwiejsze do odczytania, zwłaszcza gdy liczba ich rośnie, a także jest nieco krótszy w zapisie.
Oto kalkulator poziomu salsy napisany dołączonymi warunkami:
var level;
if (rating < 5000) {
level = "mild";
} else if (rating < 20000) {
level = "medium";
} else if (rating < 70000) {
level = "hot";
} else {
level = "extreme";
}
Porównaj to z oryginalną wersją z zagnieżdżonymi warunkami. Wygląda lepiej, prawda?
Nie wszystkie języki dają możliwość dołączania warunkowów, ale jeśli programujesz w języku takim jak JS lub Python, który zawiera tę funkcję, skorzystaj z niej w takich przypadkach.
📝 Wskazówka do egzaminu: Egzamin AP CSP nie zawiera dołączonych warunków. Używa zagnieżdżeń we wszystkich sytuacjach.
Zagnieżdżone warunki w pseudokodzie
Ten pseudokod pokazuje proste zagnieżdżenie warunkowe, z jednym zewnętrznym
IF
/ELSE
i jednym wewnętrznym IF
/ELSE
:IF (<condition 1>)
{
<instructions 1>
}
ELSE
{
IF (<condition 2>)
{
<instructions 2>
}
ELSE
{
<instructions 3>
}
}
Oto program do sprawdzania znaków w pseudokodzie:
IF (number > 0)
{
numberSign ← "positive";
}
ELSE
{
IF (number < 0)
{
numberSign ← "negative";
}
ELSE
{
numberSign ← "neutral";
}
}
Chcesz dołączyć do dyskusji?
Na razie brak głosów w dyskusji