Laboratorium Informatyki instrukcja 1

Transkrypt

Laboratorium Informatyki instrukcja 1
Laboratorium Informatyki
Studia niestacjonarne
Instrukcja 1 - Algorytmika
Ćwiczenie ma na celu zapoznanie z zagadnieniami związanymi z projektowaniem blokowych schematów algorytmicznych,
symbolicznym przedstawieniem elementów algorytmów oraz metodologii procesu tworzenia blokowych schematów opisujących
algorytmy.
Elementem poprzedzającym pisanie kodu programu powinno być przygotowanie schematu
jego działania (algorytmu). Algorytm programowania to ciąg czynności, dzięki którym
możliwe jest wykonanie konkretnego zadania. Algorytm dla wielu określany jest jako
pewien system, który ma poprowadzić dane zadanie od początku do samego końca. Może
być samodzielną operacją, wykorzystywaną w dalszym procesie, ale może też być samym
programem, dzięki czemu wiemy, że mają one szerokie zastosowanie.
Jednym ze sposobów przedstawiania algorytmów są schematy blokowe. W niektórych
sytuacjach korzystanie z nich jest bardzo wygodne. Schemat blokowy jest to układ figur
geometrycznych (nazywanych skrzynkami lub blokami) połączonych ze sobą odcinkami
prostymi lub łamanymi (ścieżki sterujące). Figury służą do przedstawiania rodzaju działań
zaprojektowanych w algorytmie, zaś linie wskazują kolejność wykonywania tych działań.
Każda figura w schemacie blokowym prezentuje określony rodzaj operacji. Zasadniczą
zaletą schematów blokowych jest to, że graficznie prezentują one algorytm zarówno od
strony występujących w nim działań, jak i ich kolejności.
Elementy schematu blokowego
• Strzałki — określają kierunek przepływu danych lub kolejność wykonywania działań.
Powinny składać się z linii prostych, należy unikać łuków oraz krzyżowania się linii.
• Operacje systemowe – (np. rozpoczęcie i zakończenie działania oraz instrukcje użycia
innych algorytmów) — oznaczane za pomocą owalu,
• Operacja START — oznacza punkt startu algorytmu (programu). Od tego bloku
rozpoczyna się wykonywanie algorytmu. Występuje dokładnie jeden raz w każdym
schemacie blokowym.
• Operacja STOP — oznacza punkt zakończenia algorytmu (programu). Na tym bloku
kończy się wykonywanie algorytmu. Najczęściej występuje jeden raz, jednakże dla
zwiększenia czytelności schematu może zostać powtórzony wielokrotnie.
•
Blok wykonawczy – najczęściej reprezentuje instrukcje proste, tzn. wykonanie
pojedynczej operacji niepodzielnej z punktu widzenia wykonawcy — oznaczane za pomocą
prostokąta. Typowym zastosowaniem są operacje arytmetyczne, logiczne, podstawiania.
Jeśli kilka operacji tworzy logiczną całość, to wszystkie można umieścić w jednym bloku.
• operacje wejścia–wyjścia (tzn. pobieranie lub wysyłanie danych) — oznaczane za
pomocą równoległoboku. W środku równoległoboku wpisuje się odpowiedni komentarz,
odpowiadający żądanej operacji. Należy podkreślić, że inne operacje, nie będące operacjami
wejścia / wyjścia oznaczane są innym blokiem— blokiem operacji.
• instrukcje decyzyjne - w których wybór dalszej drogi postępowania zależy od spełnienia
pewnego warunku logicznego — oznaczane za pomocą rombu z dwoma wyjściami
odpowiadającymi możliwym wartościom warunku. Warunek
logiczny znajduje
się
wewnątrz symbolu. Blok ten utożsamiany jest z operacją warunkową JEŻELI. Operacje
warunkowe zawsze prowadzą do konieczności rozważenia dwóch dróg: jednej (TAK) kiedy
rozpatrywany warunek jest spełniony i drugiej (NIE), kiedy rozpatrywany warunek nie jest
spełniony. Przy zapisie warunku powinno się używać operatorów matematycznych =, ≠,<,>.
• Blok proceduralny - proces uprzednio zdefiniowany — proces określony poza
programem i z tego powodu nie wymagający zdefiniowania w rozpatrywanym programie
(podprogram), przy definiowaniu tych elementów należy pamiętać, że ich wykonanie nie
rozpoczyna się od START i nie kończy STOP (najczęściej podprogram kończy wykonanie
instrukcji powrotu (RETURN) do głównego programu)
• komentarze - nie mają wpływu na wykonanie, zawierają notatki autora schematu.
Oznaczane są za pomocą klamry lub nawiasu. Ukośna kreska wskazuje (dotyka)
komentowanego bloku.
Łączniki - połączenie z inną częścią schematu blokowego, np. gdy nie mieści się
on na jednej stronie.
• Łącznik stronnicowy (rys.6) — oznacza łączenie w obrębie jednej strony. Używany
w przypadku, gdy użycie strzałki znacząco zmniejszyłoby czytelność schematu.
Poszczególne łączniki oznacza się liczbami całkowitymi. Zawsze istnieją dwa łączniki
oznaczone tym samym numerem: jeden źródłowy, drugi — docelowy.
• Łącznik międzystronnicowy — używany w przypadku, gdy konieczne jest
przeniesienie sterowania między stronami (arkuszami papieru) schematu. Zasady
jego użycia są analogiczne do zasad użycia łącznika stronnicowego. Poszczególne
łączniki oznacza się liczbami całkowitymi. Zawsze istnieją dwa łączniki oznaczone
tym samym numerem: jeden źródłowy, drugi — docelowy.
• Punkt koncentracji — blok używany dla podniesienia czytelności schematu. Oznacza
miejsce, do którego wpływa kilka strzałek. Rysuje się go w postaci punktu.
Schemat blokowy tworzony jest według następujących reguł:
1. Schemat blokowy składa się z bloków połączonych zorientowanymi liniami;
2. Bloki obrazują ciąg operacji; powinien być start i koniec;
3. Zawsze wykonywane są albo wszystkie instrukcje w bloku albo żadna;
4. Dalsze operacje nie zależą od poprzednich wariantów, chyba że zależności te
zostały przekazane za pomocą danych;
5. Kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące
poszczególne bloki;
7. Do każdego bloku może prowadzić co najwyżej jedna linia;
8. Linie mogą się łączyć ale nie mogą się rozdzielać (bez bloku decyzyjnego).
Analiza przykładowych algorytmów
Przykład prostego algorytmu
na sumę trzech liczb.
Przykładowy prosty algorytm
obliczający średnią z 3 liczb.
Przykładowy rozgałęziony algorytm (dzielenie
dwóch liczb)
Większe projekty wymagają aby wraz ze schematem blokowym definiować listę kroków,
proste relacje w języku programowania, wprowadzać komentarze. Należy pamiętać, że wiele
aplikacji może mieć różne konfiguracje schematów – a wynik będą wskazywały ten sam.
Często prowadzi to do prac optymalizujących cały algorytm. Pomocne mogą być przy
wielowątkowych aplikacjach wprowadzenie wspólnej kolorystyki bloków. Umożliwiają to
dedykowane schematom blokowym programy. Przykład poniżej to pokolorowany algorytm
prezentujący poszukiwanie większej z dwóch liczb a,b.
program porownanie;
var a,b : integer;
begin
write(‘podaj a’);
readln(a);
write(‘podaj b’);
readln(b);
if a > b then
writeln(‘większa była’, a)
else
if a = b
writeln(‘sa rowne’)
else
writeln(‘wieksza była’, b)
end.
Do realizacji diagramów graficznych można wykorzystać wiele programów, w tym nawet
proste programy graficzne. Na laboratorium wykorzystywany będzie darmowy program
Diagram Designer. Aktualną wersje programu można ściągnąć ze strony projektu:
http://meesoft.logicnet.dk/
Realizacja ćwiczenia laboratoryjnego
Zapoznać się z wprowadzeniem teoretycznym budowania schematów blokowych. Następnie
uruchomić program do rysowania diagramów (Diagram Designer). Zapoznać się z jego
interfejsem. Przerysować wszystkie przykłady, zapisać diagramy w formacie podstawowym
(ddd) oraz w postaci pliku graficznego. Ostatnim etapem zajęć jest wykonanie zadań
zleconych przez prowadzącego lub opracowanie poniższych.
ZADANIA DO SAMODZIELNEGO WYKONANIA
1. Określić schemat algorytmu prezentującego rozwiązanie wielomianu stopnia drugiego (ax2+bx+c=0). Algorytm
powinien podawać rzeczywiste rozwiązania lub ich brak.
2. Określić
schemat
algorytmu
prezentującego
obliczanie
wartości
funkcji
f ( x) =
x
x
Podpowiedź: W matematyce opis słowny przedstawiamy następująco:
Przykładowy algorytm w postaci listy kroków może być następujący
Dane wejściowe: Dowolna liczba rzeczywista x.
Wynik końcowy : Wartość funkcji f(x)
Krok 1. Wczytaj wartość danej x.
Krok 2. Jeśli x > 0, to f(x)=1. Zakończ algorytm.
Krok 3. Jeśli x = 0, to f(x)=0. Zakończ algorytm.
Krok 4. Jeśli x < 0, to f(x)=-1. Zakończ algorytm.
3. Zdefiniować algorytm prezentujący poszukiwanie największej z trzech liczb a,b,c.
4. Zdefiniować w sposób graficzny algorytm sprawdzający, czy suma dwóch liczb podanych przez użytkownika jest
parzysta.
5. Narysować schemat blokowy programu wyznaczającego sumę liczb podawanych z klawiatury tak długo, aż
użytkownik nie wprowadzi liczby zero.

Podobne dokumenty