Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Algorytm liniowy a algorytm rozgałęziony

Algorytmy, które do tej pory omawialiśmy miały strukturę liniową. Czynności w nich opisane były wykonywane kolejno jedna po drugiej. W przypadku schematu blokowego przedstawionego na rys. , po zrealizowaniu każdej instrukcji istnieje tylko jedna droga postępowania: przejście do wykonania kolejnego polecenia.

REvqofNFwUisV
rys. 1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Na schemacie blokowym został przedstawiony algorytm obliczania dwukrotności liczby podanej przez użytkownika. Jak już wiesz, jest to algorytm liniowyalgorytm liniowyalgorytm liniowy.

W przypadku algorytmów rozgałęzionychalgorytm rozgałęzionyalgorytmów rozgałęzionych pojawia się warunek logiczny. Gdy jest on spełniony, przechodzimy do wykonywania instrukcji, do której prowadzi linia oznaczona słowem prawda. Jeżeli warunek nie jest spełniony, wykonujemy polecenie, do którego prowadzi droga oznaczona słowem fałsz. Blok warunkowy w schemacie blokowym przedstawiamy w postaci rombu mającego dwa wyjścia, tak jak na rys. . Wewnątrz rombu zapisujemy warunek, który należy sprawdzić.

RngOY65pDONHj
rys. 2
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Sprawdzanie, czy liczba jest dodatnia

Jednym z przykładów algorytmów rozgałęzionych jest algorytm wykorzystywany do sprawdzania, czy podana przez użytkownika liczba jest dodatnia, oraz wyświetlania odpowiedniego komunikatu („Podana liczba jest dodatnia” lub „Podana liczba nie jest dodatnia”). Opracujmy schemat blokowy tego algorytmu. Rozpoczniemy od bloku startowego.

R15G9qC2HZnFP
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Następnie pobieramy od użytkownika liczbę, którą chcemy sprawdzić. W schemacie blokowym umieścimy tę instrukcję w równoległoboku – bloku wyjścia/wejścia.

R1arETsEh6VBn
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Kolejną czynnością będzie sprawdzenie, czy pobrana od użytkownika liczba jest dodatnia. W schemacie zapiszemy tę operację, używając bloku warunkowego w postaci rombu z dwoma wyjściami: prawdafałsz. W rezultacie pojawią się dwie różne ścieżki postępowania. Jeżeli warunek będzie spełniony, przejdziemy do bloku, do którego prowadzi droga oznaczona jako prawda. W przeciwnym przypadku pójdziemy ścieżką oznaczoną słowem fałsz.

RS3NkcScTf5Y8
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Jeżeli pobrana od użytkownika liczba okaże się większa od , wybierzemy drogę z lewej strony (prawda). Będzie ona prowadzić do bloku wyjścia w postaci równoległoboku, w którym umieścimy polecenie wypisania komunikatu „Podana liczba jest dodatnia”.

RtTo0SAPhZGNs
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Jeżeli z kolei wyrażenie warunkowe okaże się fałszywe, pójdziemy drogą po prawej stronie (fałsz). Na końcu tej ścieżki umieszczamy blok zawierający instrukcję wypisania komunikatu „Podana liczba nie jest dodatnia”.

R1J6itaCTgGHN
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Po wybraniu odpowiedniej drogi i wyświetleniu komunikatu możemy zakończyć działanie algorytmu, używając bloku STOP. Oczywiście należy poprowadzić do niego linie łączące z obydwu bloków wyjściowych. Aby poprawnie przedstawić algorytm, musimy opisać zakończenie operacji w każdym przypadku – zarówno wtedy, kiedy liczba będzie dodatnia, jak i ujemna lub równa zero.

R14Z1gVZRMvVv
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Obliczanie pierwiastka z liczby nieujemnej

Kolejnym przykładem, który przeanalizujemy, będzie algorytm obliczania pierwiastka kwadratowego z liczby liczba pobranej od użytkownika. W przypadku, gdy wartość ta będzie nieujemna, należy obliczyć i wyświetlić pierwiastek z liczby. W przeciwnym przypadku powinien zostać wyświetlony komunikat „Nie można obliczyć pierwiastka kwadratowego z liczby ujemnej”.

Rozpiszmy listę czynności składających się na algorytm. Na jej podstawie opracujemy schemat blokowy.

  1. Rozpocznij algorytm.

  2. Wczytaj wartość liczby liczba.

  3. Jeżeli liczba > 0

    • pierwiastek :=

    • Wypisz pierwiastek.

    W przeciwnym przypadku

    • Wypisz "Nie można obliczyć pierwiastka kwadratowego
      z liczby ujemnej."

  4. Zakończ algorytm.

Schemat blokowy algorytmu zbudowany na podstawie zapisanej listy czynności wygląda następująco:

RkIDdqLehAZPy
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Pierwsze dwa bloki schematu są powtórzeniem elementów z poprzedniego przykładu algorytmu rozgałęzionego. Następnie pojawia się blok zawierający wyrażenie warunkowe. Sprawdzamy, czy liczba podana przez użytkownika jest nieujemna. Jeżeli tak jest, przechodzimy ścieżką po lewej stronie do bloku operacyjnego, w którym obliczany jest pierwiastek kwadratowy z podanej liczby. Wynik zapisujemy w zmiennej pierwiastek. Następnie wyświetlamy wartość tej zmiennej na ekranie i kończymy algorytm.

Jeżeli podana liczba nie jest nieujemna, wybierzemy drugą drogę, oznaczoną słowem fałsz. Prowadzi ona do bloku wyjścia, w którym znajduje się polecenie wyświetlenia komunikatu „Nie można obliczyć pierwiastka kwadratowego z liczby ujemnej”. Po wypisaniu komunikatu algorytm jest zakończony.

Słownik

algorytm liniowy
algorytm liniowy

algorytm zwany również sekwencyjnym; kroki algorytmu następują po sobie; wykonanie jednego kroku powoduje przejście bezpośrednio do kolejnego; nie określa się w nim żadnych warunków

algorytm rozgałęziony
algorytm rozgałęziony

algorytm warunkowy; algorytm, w którym może występować kilka ciągów działań; po spełnieniu lub niespełnieniu danego warunku następuje wybór jednego z ciągów działań