1.5. Instrukcja warunkowa - algorytmy rozgałęzione Do tej pory
Transkrypt
1.5. Instrukcja warunkowa - algorytmy rozgałęzione Do tej pory
1.5. Instrukcja warunkowa - algorytmy rozgałęzione Do tej pory mówiliśmy o algorytmach, w których sposób wykonania kolejnych instrukcji nie zależał od otrzymywanych wyników ani danych wejściowych. Poznasz teraz instrukcję, która pozwala uzależnić dalszą drogę postępowania w algorytmie od otrzymanego wyniku. Jest to instrukcja warunkowa, będąca „rozgałęźnikiem" w algorytmie. Sformułujmy problem w sposób następujący: ----------------------------------------------------------------------------------------------------------------Przykład Daną wejściową niech będzie dowolna liczba rzeczywista. Na wyjściu chcemy otrzymać informację, czy liczba ta jest dodatnia czy nie. ----------------------------------------------------------------------------------------------------------------Zapiszmy algorytm rozwiązujący to zadanie za pomocą listy kroków: 1. Wczytaj x. 2. Jeśli x > 0, to wypisz: „x jest liczbą dodatnią" i zakończ. 3. Jeśli x≤0, to wypisz: „x nie jest liczbą dodatnią" i zakończ. Możemy ten zapis zredukować do dwóch kroków, przy czym obie listy kroków będą poprawne: 7. Wczytaj x. 2. Jeśli x > 0, to wypisz: „x jest liczbą dodatnią”, w przeciwnym wypadku wypisz: „x nie jest liczbą dodatnią" i zakończ. Wykonanie instrukcji jest zatem uzależnione od tego, czy zajdzie badany warunek (tu warunek x > 0). Pamiętasz z matematyki, że zaprzeczaniem warunku x > 0 jest warunek x ≤0. Definicja Instrukcja warunkowa to taka instrukcja, która w zależności od wartości warunku logicznego W umieszczonego w tej instrukcji umożliwia wykonywanie lub nie innych instrukcji - tak zwanych instrukcji wewnętrznych A i B. Instrukcję tę będziemy zapisywać w algorytmach następująco: Jeśli spełniony jest warunek W, to wykonaj instrukcję A; lub: Jeśli spełniony jest warunek W, to wykonaj instrukcję A, w przeciwnym wypadku wykonaj instrukcję B. Zauważ, że pierwszy rodzaj instrukcji warunkowej jest realizacją drugiego zapisu w wypadku, gdy instrukcja B jest instrukcją pustą, czyli taką, która nie wykonuje żadnej konkretnej czynności. Warunek w instrukcji warunkowej może być warunkiem prostym (jak w powyższym przykładzie) lub warunkiem złożonym, będącym koniunkcją lub alternatywą kilku innych warunków. Definicja Algorytm, w którym występują instrukcje warunkowe, nazywa się algorytmem rozgałęzionym. ----------------------------------------------------------------------------------------------------------------Przykład Napiszmy schemat blokowy algorytmu podejmowania decyzji, czy pobrana liczba jest dodatnia. ---------------------------------------------------------------------------------------------------------------- Schemat blokowy tego algorytmu może wyglądać tak jak na rycinie 1.2: Ryc. 1.2. Schemat blokowy algorytmu sprawdzającego, czy liczba jest dodatnia. Zauważ, że w schemacie pojawił się blok decyzyjny. Przy realizacji algorytmu wybór ścieżki TAK lub NIE zależy od prawdziwości warunku umieszczonego w tym bloku. Warunek musi być tak określony, aby ocena jego prawdziwości była jednoznaczna. Modyfikacja algorytmu pozwoli nam otrzymać odpowiedź nie tylko na pytanie, czy liczba jest dodatnia czy nie, ale uzyskamy również informację o wartości zerowej, jeśli taka została pobrana (ryc. 1.3): Ryc. 1.3. Schemat blokowy algorytmu badającego znak podanej liczby Mamy tu już do czynienia z pełną wersją algorytmu określającego znak pobranej liczby, ponieważ przewidziany został przypadek, że liczba jest zerem. Zwróć uwagę, że kolejność podejmowanych decyzji lub określenie badanych warunków można zmienić. Na przykład: już w pierwszym bloku pytamy o to, czy liczba jest zerem, i łączymy z blokiem wyjściowym wyprowadzającym napis: „liczba jest zerem" w wypadku prawdziwości warunku. W kolejnym bloku decyzyjnym pytamy, czy jest większa od zera - tu w zależności od odpowiedzi łączymy ją z blokami wyjścia odpowiednio wyprowadzającymi napisy: „liczba jest dodatnia", „liczba jest ujemna". Spróbuj zapisać rozwiązanie tego zadania za pomocą listy kroków. Możesz wykorzystać do tego drzewo postępowania zamieszczone na rycinie 1.4: Ryc. 1.4. Drzewo postępowania ilustrujące schemat czynności przy badaniu znaku liczby