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.
Ź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
Grafika przedstawia granatowy romb z napisem "a > 0" z dwoma rozgałęzieniami w postaci poziomych strzałek zaczepionych na bocznych wierzchołkach rombu o grotach skierowanych na zewnątrz figury. Lewe rozgałęzienie opisane jest jako "prawda", a prawe rozgałęzienie opisane jest jako "fałsz".
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
Grafika przedstawia poziomo ustawioną zieloną elipsę z napisem "START". Od krawędzi elipsy odchodzi rozgałęzienie w postaci pionowej strzałki z grotem skierowanym w dół. Strzałka zaczepiona jest w dolnej środkowej części figury.
Ź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
Grafika przedstawia poziomo ustawioną zieloną elipsę z napisem "START". Od krawędzi elipsy odchodzi rozgałęzienie w postaci pionowej strzałki z grotem skierowanym w dół. Strzałka zaczepiona jest w dolnej środkowej części figury i skierowana jest na kolejną figurę - fioletowy równoległobok z napisem "Wczytaj liczba". Od środka dolnej podstawy równoległoboku również odchodzi rozgałęzienie w postaci pionowej strzałki skierowanej w dół.
Ź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: prawda i fał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
Grafika przedstawia poziomo ustawioną zieloną elipsę z napisem "START". Od krawędzi elipsy odchodzi rozgałęzienie w postaci pionowej strzałki z grotem skierowanym w dół. Strzałka zaczepiona jest w dolnej środkowej części figury i skierowana jest na kolejną figurę - fioletowy równoległobok z napisem "Wczytaj liczba". Od środka dolnej podstawy równoległoboku również odchodzi rozgałęzienie w postaci pionowej strzałki skierowanej w dół do granatowego rombu z napisem "liczba > 0". Od rombu odchodzą dwa boczne rozgałęzienia: prawe opisane jest jako "prawda", lewe jako "fałsz".
Ź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
Grafika przedstawia poziomo ustawioną zieloną elipsę z napisem "START". Od krawędzi elipsy odchodzi rozgałęzienie w postaci pionowej strzałki z grotem skierowanym w dół. Strzałka zaczepiona jest w dolnej środkowej części figury i skierowana jest na kolejną figurę - fioletowy równoległobok z napisem "Wczytaj liczba". Od środka dolnej podstawy równoległoboku również odchodzi rozgałęzienie w postaci pionowej strzałki skierowanej w dół do granatowego rombu z napisem "liczba > 0". Od rombu odchodzą dwa boczne rozgałęzienia: prawe opisane jest jako "prawda", lewe jako "fałsz". Rozgałęzienie "prawda" skierowane jest do fioletowego równoległoboku z napisem "Wypisz "Podana liczba jest dodatnia"".
Ź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
Grafika przedstawia poziomo ustawioną zieloną elipsę z napisem "START". Od krawędzi elipsy odchodzi rozgałęzienie w postaci pionowej strzałki z grotem skierowanym w dół. Strzałka zaczepiona jest w dolnej środkowej części figury i skierowana jest na kolejną figurę - fioletowy równoległobok z napisem "Wczytaj liczba". Od środka dolnej podstawy równoległoboku również odchodzi rozgałęzienie w postaci pionowej strzałki skierowanej w dół do granatowego rombu z napisem "liczba > 0". Od rombu odchodzą dwa boczne rozgałęzienia: prawe opisane jest jako "prawda", lewe jako "fałsz". Rozgałęzienie "prawda" skierowane jest do fioletowego równoległoboku z napisem "Wypisz "Podana liczba jest dodatnia"". Od granatowego rombu z napisem "liczba > 0" biegnie prawe rozgałęzienie "fałsz" do fioletowego równoległoboku z napisem "Wypisz "Podana liczba nie jest dodatnia"".
Ź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
Grafika przedstawia poziomo ustawioną zieloną elipsę z napisem "START". Od krawędzi elipsy odchodzi rozgałęzienie w postaci pionowej strzałki z grotem skierowanym w dół. Strzałka zaczepiona jest w dolnej środkowej części figury i skierowana jest na kolejną figurę - fioletowy równoległobok z napisem "Wczytaj liczba". Od środka dolnej podstawy równoległoboku również odchodzi rozgałęzienie w postaci pionowej strzałki skierowanej w dół do granatowego rombu z napisem "liczba > 0". Od rombu odchodzą dwa boczne rozgałęzienia: prawe opisane jest jako "prawda", lewe jako "fałsz". Rozgałęzienie "prawda" skierowane jest do fioletowego równoległoboku z napisem "Wypisz "Podana liczba jest dodatnia"". Od granatowego rombu z napisem "liczba > 0" biegnie prawe rozgałęzienie "fałsz" do fioletowego równoległoboku z napisem "Wypisz "Podana liczba nie jest dodatnia"". Oba rozgałęzienia, zarówno "prawda", jak i "fałsz" biegną do dwóch różnych fioletowych równoległoboków, z których biegną pojedyncze strzałki do jednej czerwonej poziomo ułożonej elipsy z napisem "STOP".
Ź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.
Rozpocznij algorytm.
Wczytaj wartość liczby liczba.
Jeżeli liczba > 0
pierwiastek :=
Wypisz pierwiastek.
W przeciwnym przypadku
Wypisz "Nie można obliczyć pierwiastka kwadratowego z liczby ujemnej."
Zakończ algorytm.
Schemat blokowy algorytmu zbudowany na podstawie zapisanej listy czynności wygląda następująco:
RkIDdqLehAZPy
Grafika algorytm z następujących krokach: 1: zielona elipsa z napisem "START", 2: Fioletowy równoległobok z napisem "Wczytaj liczba", 3: Granatowy romb z napisem "liczba > 0". Od rombu odchodzą dwa boczne rozgałęzienia. Rozgałęzienie lewe "prawda". 4: Niebieski prostokąt "pierwiastek := ", 5: Fioletowy równoległobok "Wypisz pierwiastek", 6: Czerwona elpisa "STOP". Wróćmy do kroku trzeciego. 3: Granatowy romb "liczba > 0", prawe rozgałęzienie "fałsz", 4: Fioletowy równoległobok "Wypisz "Nie można obliczyć pierwiastka kwadratowego z liczby ujemnej"", 5: Czerwona elipsa "STOP".
Ź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ń