Schematy Blokowe wyklad 2 zreal


Schematy blokowe są tzw. metajęzykiem. Oznacza to, że jest to język bardzo ogólny, służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku. Częściami składowymi schematów blokowych są proste figury geometryczne, np. prostokąt, romb, koło, równoległobok itd... W tych figurach umieszczamy warunki oraz proste instrukcje, przy czym mogą być one związane z jakimś konkretnym językiem (np. symbolem instrukcji przypisania może być ":=" tak, jak w Pascalu lub "=" tak, jak w C) Jeśli tworząc schemat nie jesteśmy jeszcze zdecydowani w jakim języku będziemy pisali nasz program lub tworzymy schemat dla kogoś, to lepiej jest stosować notację bardziej symboliczną, np. instrukcję przypisania zapisywać jako strzałkę skierowaną od wartości przypisywanej do zmiennej.

Za chwilę przedstawię elementy składowe schematów blokowych, przedtem jednak powiem coś o narzędziach do ich konstruowania.

Zasadniczo najszybciej schematy pisze się na zwykłej kartce, pojawia się jednak problem, gdy schemat trzeba umieścić w jakimś dokumencie (np. dokumentacji projektu). Można wtedy skorzystać z popularnych edytorów tekstu (np. Word pod Windows lub KWord pod Linux). Mają one wbudowane opcje do tworzenia figur schematu, ale nie są one zbyt wygodne w użyciu.

Teraz przejdźmy do opisu schematów.

0x01 graphic
Poszczególne elementy schematu łączy się za pomocą strzałek. W większości przypadków blok ma jedną strzałkę wchodzącą i jedną wychodzącą, lecz są także wyjątki (omówię je poniżej).

0x01 graphic
Ta figura oznacza początek lub koniec algorytmu. W każdym algorytmie musi się znaleźć dokładnie jedna taka figura z napisem "Start" oznaczająca początek algorytmu oraz dokładnie jedna figura z napisem "Stop" oznaczająca koniec algorytmu. Najczęściej popełnianym błędem w schematach blokowych jest umieszczanie kilku stanów końcowych, zależnych od sposobu zakończenia programu. Jest to niedopuszczalne, w programie mamy przecież dokładnie jedną instrukcję "end." Blok symbolizujący początek algorytmu ma dokładnie jedną strzałkę wychodzącą a blok symbolizujący koniec ma co najmniej jedną strzałkę wchodzącą.

0x01 graphic
Jest to figura oznaczająca proces. W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia. Proces ma dokładnie jedną strzałkę wchodzącą i dokładnie jedną strzałkę wychodzącą.

0x01 graphic
Romb symbolizuje blok decyzyjny. Umieszcza się w nim jakiś warunek (np. "x>2"). Z dwóch wybranych wierzchołków rombu wyprowadzamy dwie możliwe drogi: gdy warunek jest spełniony (strzałkę wychodzącą z tego wierzchołka należy opatrzyć etykietą "Tak") oraz gdy warunek nie jest spełniony. Każdy romb ma dokładnie jedną strzałkę wchodzącą oraz dokładnie dwie strzałki wychodzące.

0x01 graphic
Równoległobok jest stosowany do odczytu lub zapisu danych. W jego obrębie należy umieścić stosowną instrukcję np. Read(x) lub Write(x) (można też stosować opis słowny np. "Drukuj x na ekran"). Figura ta ma dokładnie jedną strzałkę wchodzącą i jedną wychodzącą.

0x01 graphic
Ta figura symbolizuje proces, który został już kiedyś zdefiniowany. Można ją porównać do procedury, którą definiuje się raz w programie, by następnie móc ją wielokrotnie wywoływać. Warunkiem użycia jest więc wcześniejsze zdefiniowanie procesu. Podobnie jak w przypadku zwykłego procesu i tu mamy jedno wejście i jedno wyjście.

0x01 graphic
Koło symbolizuje tzw. łącznik stronicowy. Może się zdarzyć, że chcemy "przeskoczyć" z jednego miejsca na kartce na inne (np. by nie krzyżować strzałek). Możemy w takim wypadku posłużyć się łącznikiem. Umieszczamy w jednym miejscu łącznik z określonym symbolem w środku (np. cyfrą, literą) i doprowadzamy do nie go strzałkę. Następnie w innym miejscu kartki umieszczamy drugi łącznik z takim samym symbolem w środku i wyprowadzamy z niego strzałkę. Łącznik jest często porównywany do teleportacji (z jednego miejsca na kartce do drugiego). Łączniki występują więc w parach, jeden ma tylko wejście a drugi wyjście.

0x01 graphic
Ten symbol to łącznik międzystronicowy. Działa analogicznie jak pierwszy, lecz nie w obrębie strony. Przydatne w złożonych algorytmach, które nie mieszczą się na jednej kartce. Uwaga: jeśli stosujemy oba typy łączników w schemacie, to najlepiej jest stosować liczby do identyfikowania jednych i litery do drugich. Dzięki temu nie dojdzie do pomyłki.

Teraz opiszemy przykładowy algorytm za pomocą schematu blokowego. Zdefiniujmy iteracyjną wersję silni. Dla przypomnienia: rekurencyjna definicja silni wygląda następująco

silnia(0)=1

silnia(n)=n*silnia(n-1)

0x01 graphic

Etapy rozwiązywania problemów:

  1. Sformułowanie zadania

  2. Określenie danych wejściowych

  3. Określenie celu, czyli wyniku

  4. Poszukiwanie metody rozwiązania, czyli algorytmu

  5. Przedstawienie algorytmu w postaci:

  1. Analiza poprawności rozwiązania

  2. Testowanie rozwiązania dla różnych danych - ocena efektywności przyjętej metody

Zasady budowania schematu blokowego:

1. Zbuduj algorytm, za pomocą, którego można obliczyć drugą i trzecią potęgę danej liczby.

BUDOWA ALGORYTMU:

START

- podaj liczbę a,

- oblicz kwadrat liczby a,

- oblicz sześcian liczby a,

- podaj wartość kwadratu liczby a,

- podaj sześcian liczby a.

STOP

0x01 graphic

Ćwiczenie 2 Przestaw schemat blokowy algorytmu obliczania wartości bezwzględnej.

Wartością bezwzględną liczby nieujemnej jest ta sama liczba, a wartością bezwzględną liczby ujemnej jest liczba do niej przeciwna.

Ćwiczenie 3

Wprowadź dwie liczby a i b. Przedstaw w postaci ciągu kroków i graficznie algorytm porównania tych liczb i wyprowadzania na wyjściu większej z nich. W przypadku liczb równych wyprowadź napis "liczby równe".

Na czym polega iteracja, czyli działanie w pętli ?

Czasami trzeba wykonać te same operacje na wielu liczbach. W takich przypadkach nie jest konieczne wielokrotne opisywanie działań lub rysowanie takich samych skrzynek. Stosujemy wówczas iterację. Mówimy także, że działania te wykonywane są w pętli. Liczba powtórzeń tych działań może być z góry określona lub zależeć od spełnienia warunku. Iteracja to najczęściej spotykana technika algorytmiczna.

Iteracja to technika algorytmiczna polegająca na wykonaniu tej samej instrukcji dla n zmiennych.

Iteracja oszczędza czas programisty, który ten musiałby spędzić wpisując instrukcję n razy, zależnie od liczby zmiennych. Liczba powtórzeń w iteracji jest zwykle z góry określona lub zależy od spełnienia określonego warunku.

Ćwiczenie 4

Przeanalizuj schemat i odpowiedz na pytania:

  1. Jakie są dane wejściowe do zadania i jakich użyto zmiennych pomocniczych?

  2. Jaki cel chcesz osiągnąć (wynik)?

  3. Jaki algorytm zastosowano w operacji dodawania liczb ?

  4. W którym miejscu wykonywane są działania w pętli ?

  5. Które operacje powtarzają się wielokrotnie ?

  6. Co określa liczbę powtórzeń ?

  7. Kiedy kończy się działanie w pętli ?

W analizowanym algorytmie występuje przypisanie typu s:=s + l. Nie jest to równość w rozumieniu matematyki, ale przypisanie zmiennej "s" (sumie) poprzedniej wartości pamiętanej w zmiennej "s" (poprzedniej sumie) zwiększonej o wartość pamiętaną w zmiennej "l" (kolejną liczbę) - w ten sposób powtarzanie operacji przypisania, realizowane jest dodawanie kolejnych liczb naturalnych.

Przypisania l:=l-1 ma tu bardzo istotne znaczenie. Jest to tzw. licznik, w którym następuje obliczanie, ile zostało jeszcze powtórzeń do wykonania. W tym algorytmie liczba powtórzeń została określona na początku instrukcją l:=n.

0x01 graphic

Gdyby nie umieszczono tego działania nastąpiło by tzw. zapętlenie algorytmu, czyli po sprawdzeniu warunku l>0 działanie w schemacie przebiegałoby zawsze drogą TAK. W realizacji algorytmów iteracyjnych ważne jest prawidłowe określenie sposobu zakończenia działań. Można to zrobić za pomocą licznika, który odlicza kolejne kroki iteracji (liczbę powtórzeń).

Ćwiczenie 1

Opracuj algorytm obliczający sumę 3 wprowadzonych z klawiatury liczb.

Przedstawmy najpierw algorytm w postaci ciągu kroków do wykonania:

  1. Podaj pierwszą liczbę

  2. Podaj drugą liczbę

  3. Podaj trzecią liczbę

  4. Dodaj do siebie liczby i wynik zapamiętaj

  5. Wypisz otrzymany wynik

0x08 graphic

0x08 graphic

Ćwiczenie 2

Dane są dwie liczby. Opracuj algorytm wybierający większą z nich, w przypadku gdy są równe wypisz stosowny komunikat.

0x01 graphic

Ćwiczenie 3

Zbuduj algorytm obliczający sumę 5 kolejnych liczb naturalnych.

0x01 graphic

Ćwiczenie 5

Narysuj algorytm sumujący liczby większe od 5 spośród 10 wprowadzonych.

0x01 graphic

Ćwiczenie 1

Opracuj algorytm obliczający kwadrat i sześcian wprowadzonej liczby.

Ćwiczenie 2

Opracuj schemat obliczania średniej n liczb naturalnych.

3



Wyszukiwarka

Podobne podstrony:
5 Algorytmy i schematy blokowe
3 Projektowanie układów automatyki (schematy blokowe, charakterystyki)
10 schematy blokowe i grafy (jako zobrazowanie modeli matematycznych)
Schemat blokowy For 1
Schemat blokowy Do While 2
SCHEMAT BLOKOWY
SCHEMAT BLOKOWY RADARU
Algebra schematów blokowych c d
Schemat blokowy If 1
Schemat blokowy For 3
SCHEMATY BLOKOWE ODBIORNIKÓW
06-10, schematy-blokowe
Schemat blokowy While 3
kl 2, folie1, ZAPIS PROGRAMU ZA POMOCĄ SCHEMATÓW BLOKOWYCH
Schematy , Schemat blokowy produkcji sadzonek So 1/0; 2/0
Podstawy informatyki, Schemat blokowy 2
Podstawy informatyki, Schemat blokowy 2
schemat blokowy

więcej podobnych podstron