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

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";
  }
}
📝 Zobacz podobny kod w: App Lab | Snap | Python
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ł.
📝 Zobacz podobny kod w: App Lab | Snap | Python

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";
    }
  }
}
📝 Zobacz podobny kod w: App Lab | Snap | Python
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!
📝 Zobacz podobny kod w: App Lab | Snap | Python

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:
warunekwyjście
number > 0"positive"
number < 0"negative"
number === 0"neutral"
warunekwyjś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";
}
📝 Zobacz podobny kod w: App Lab | Python
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";
}
📝 Zobacz podobny kod w: App Lab | Python
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
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.