![Page 1: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/1.jpg)
ALGORYTM. SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE
Cele: Poznanie zasad rozwiązywania problemów informatycznych przy wykorzystaniu algorytmu.
Osiągnięcia: Opracowanie algorytmu i przedstawienie go w postaci schematu
blokowego.
![Page 2: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/2.jpg)
Definicja i cechy algorytmu• Algorytm - uporządkowany i skończony ciąg
dokładnie określonych operacji na obiektach, do rozwiązania dowolnego zadania z określonej ich klasy.
• Cechy algorytmu: – skończoność (skończony zbiór operacji), – określoność (operacje i porządek ich wykonania
powinny być ściśle określone, niezależnie od obiektów, na których są wykonywane),
– ogólność (rozwiązywanie klasy zadań a nie pojedynczego zadania),
– efektywność (rozwiązanie najmniejszym kosztem).
![Page 3: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/3.jpg)
Euklides - NWD• Słowo algorytm często kojarzone z Euklidesem
(365 – 300 p.n.e) i jego słynnym przepisem na obliczanie największego wspólnego dzielnika 2 liczb a i b (NWD) – na zasadzie odejmowania
Dane wejściowe a i b;krok 1: Czytaj a, bkrok 2: Dopóki a <> b, wykonuj krok 3. Inaczej pisz a i zakończ algorytm.krok 3: Jeżeli a > b, to a:= a - b. Inaczej b := b - a
![Page 4: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/4.jpg)
Algorytm Euklidesa na zasadzie odejmowania
![Page 5: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/5.jpg)
Złożoność obliczeniowa
• Złożoność obliczeniowa algorytmu: ilość zasobów komputerowych potrzebnych do jego wykonania. W algorytmach uwzględnia się czas działania i ilość zajmowanej pamięci
• czasowa T(n): – złożoność pesymistyczna – ilość zasobów potrzebna przy
najgorszych danych wejściowych rozmiaru n, – złożoność oczekiwana algorytmu (średnia) dla typowych
danych rozmiaru n
• pamięciowa – potrzebny rozmiar pamięci (słowa maszyny)
![Page 6: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/6.jpg)
logarytmiczna T=log(n)
![Page 7: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/7.jpg)
liniowa T=n
![Page 8: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/8.jpg)
Liniowo- logarytmiczna T=n*log(n)
• Czas działania n*log(n) występuje np. dla algorytmów typu:zadanie rozmiaru n zostaje sprowadzone do 2 podzadań rozmiaru n/2plus pewna ilość działań – liniowa względem n, do rozbicia i scalenia rozwiązań.
• Przykładem jest megasort
![Page 9: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/9.jpg)
wielomianowa T=nm , m=2,3...
![Page 10: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/10.jpg)
wykładnicza T=2n
(może też być n!)
![Page 11: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/11.jpg)
Projektowanie algorytmów
• Do metodologii projektowania należy upraszczanie i wyodrębnianie niezależnych części (procedur, funkcji).
• Wyróżnia się algorytmy – szeregowe – równoległe (arch. wieloprocesorowa)
![Page 12: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/12.jpg)
Projektowanie algorytmów:• algorytmy zachłanne (nie analizujemy podproblemów
dokładnie, tylko wybieramy najbardziej obiecującą w tym momencie drogę rozwiązania
• algorytmy wg strategii "dziel i rządź" (dzielimy problem na kilka mniejszych, a te znowu dzielimy, aż ich rozwiązania staną się oczywiste)
• algorytmy oparte na technice rekursji (rekurencji) (procedura lub funkcja wywołuje sama siebie, aż do uzyskania wyniku lub błędu)
• algorytmy oparte na programowaniu dynamicznym (podproblemy)
• algorytmy z powrotem• Heurystyka – na podstawie doświadczenia
![Page 13: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/13.jpg)
Najważniejsze techniki implementacji algorytmów komputerowych
• proceduralność – algorytm dzielimy na szereg podstawowych procedur, wiele algorytmów współdzieli wspólne biblioteki standardowych procedur, z których są one wywoływane w razie potrzeby,
• praca sekwencyjna – wykonywanie kolejnych procedur algorytmu, według kolejności ich wywołań, na raz pracuje tylko jedna procedura,
• praca wielowątkowa – procedury wykonywane są sekwencyjnie, lecz kolejność ich wykonania jest trudna do przewidzenia dla programisty
• praca równoległa – wiele procedur wykonywanych jest w tym samym czasie, wymieniają się one danymi,
• rekurencja – procedura lub funkcja wywołuje sama siebie, aż do uzyskania wyniku lub błędu,
• obiektowość – procedury i dane łączymy w pewne klasy reprezentujące najważniejsze elementy algorytmu oraz stan wewnętrzny wykonującego je urządzenia.
![Page 14: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/14.jpg)
Struktury danych• tablica • lista • kolejka • stos • zbiór• graf
![Page 15: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/15.jpg)
Tablice w programowaniu • Arrays (macierz, tablica) jest to
podstawowa struktura danych składająca się z jednowymiarowej lub wielowymiarowej tabeli, którą program traktuje jak jeden obiekt. Wszystkie obiekty muszą być tego samego rodzaju.W tablicach mogą być np. liczby, napisy, znaki
• Do każdej danej zapisanej w tablicy można się odwołać przez nazwę tablicy i położenie tej danej wewnątrz tablicy.
![Page 16: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/16.jpg)
Lista
Lista - rodzaj kontenera - dynamiczna struktura danych, używana w informatyce. Składa się z podstruktur wskazujących na następniki i/lub poprzedniki. Listy, to struktury, które umożliwiają tworzenie ciągów danych w taki sposób, że każda dana pamięta gdzie się znajduje kolejna.
Istnieją dwie popularne implementacje struktury listy: tablicowa i wskaźnikowa.Tablicowa - jak wskazuje nazwa, lista zaimplementowana w ten sposób opiera się na tablicy obiektów (lub rekordów) danego typu.Wskaźnikowa - w tej implementacji każdy obiekt na liście musi (co nie było konieczne w wersji tablicowej) zawierać dodatkowy element: wskaźnik do innego obiektu tego typu. Wynika to z faktu, że to wskaźniki są podstawą nawigacji w tym typie listy, a dostęp do jej elementów jest możliwy wyłącznie przez wskaźnik.
![Page 17: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/17.jpg)
Kolejka• Kolejka (ang. queue) – liniowa struktura danych,
w której nowe dane dopisywane są na końcu kolejki, a z początku kolejki pobierane są dane do dalszego przetwarzania (bufor typu FIFO, First In, First Out; pierwszy na wejściu, pierwszy na wyjściu).
• StosPrzeciwieństwem kolejki jest stos, bufor typu LIFO (ang. Last In, First Out; ostatni na wejściu, pierwszy na wyjściu), w którym jako pierwsze obsługiwane są dane wprowadzone jako ostatnie.
![Page 18: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/18.jpg)
Graf• Graf to – w uproszczeniu – zbiór wierzchołków,
które mogą być połączone krawędziami, w taki sposób, że każda krawędź kończy się i zaczyna w którymś z wierzchołków.
• Grafy to podstawowy obiekt rozważań teorii grafów.
• Za pierwszego teoretyka i badacza grafów uważa się] Leonarda Eulera, który rozstrzygnął zagadnienie mostów królewieckich.
![Page 19: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/19.jpg)
Sposoby zapisu algorytmów:
• w języku naturalnym (opisowo) • zapis przy pomocy pseudo-kodu• graficzny za pomocą schematów
blokowych (schematy działania) • przy pomocy języków programowania
![Page 20: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/20.jpg)
Opis słowny• Opis słowny jest to zapis kolejnych
kroków algorytmu w języku naturalnym np. polskim
–wyszczególniamy, jakie czynności należy wykonać
– zaznaczamy, kiedy powinien nastąpić koniec algorytmu
![Page 21: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/21.jpg)
Przykład opisu słownego• Dany jest:
– punkt płaszczyzny P(xp,yp) – środek S(a,b) – długość promienia r
okręgu o równaniu (x-a)2+(y-b)2=r2. • Określić położenie punktu P względem tego
okręgu.
![Page 22: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/22.jpg)
Rys. Dane: P(Xp,Yp), S(a,b), r okręgu
Y P(Xp,Yp)
b r d S(a,b)
a X
![Page 23: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/23.jpg)
Oznaczenia, rozwiązanie • Oznaczamy d - odległość punktu od
okręgu.• Jeżeli d<r, to punkt leży wewnątrz
okręgu, • jeżeli d=r, to punkt leży na okręgu • a gdy d>r, to punkt leży na zewnątrz
okręgu
![Page 24: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/24.jpg)
Opis słowny algorytmu• Pobierz wartości xp ,yp, a, b, r. • Oblicz odległość punktu według wzoru • Sprawdź, czy d<r , jeśli TAK,
to „punkt wewnętrzny” i przejdź do KONIEC. • Sprawdź, czy d=r, jeśli TAK, to
„punkt leży na okręgu” i przejdź do KONIEC • W innym przypadku (d>r)
„punkt leży na zewnątrz okręgu” (d>r)• KONIEC
![Page 25: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/25.jpg)
Pseudokod• Opis słowny algorytmu w języku częściowo
sformalizowanym, podobnym np. do Pascala• Elementy:
– pseudosłowa kluczowe → odpowiadają słowom kluczowym składającym się na instrukcje sterujące w językach proceduralnych, np.: jeśli – if, wtedy – then, powtórz – repeatdopóki – while, czytaj – read, pisz - write
– wyrażenia arytmetyczne → pozwalają na reprezentację obliczeń arytmetycznych
![Page 26: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/26.jpg)
PseudokodPseudokod - elementy• 1. Początek i koniec• 2. Zmienne: całkowite, rzeczywiste, …• 3. Instrukcja warunkowa: jeśli – if … then,
if … then … else• 4. Skok do instrukcji: goto • 5. Etykiety• 6. Czytaj i pisz: read, write• 7. Pętle: powtarzaj - repeat, dopóki - while, dla - for• 8. Programowanie strukturalne – procedury i funkcje
![Page 27: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/27.jpg)
Schemat blokowy
Reprezentacja graficzna algorytmu sekwencyjnego• Elementy schematu blokowego:
– elipsa (lub zaokrąglony prostokąt) → początek/koniec algorytmu
– prostokąt → operacja– romb → decyzja/warunek– równoległobok → wczytanie/wyprowadzenie danych– strzałki → kolejność sterowania/przepływu– etykiety → oznaczenia, komentarz
• W języku angielskim schemat blokowy nazywamy flowchart.
![Page 28: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/28.jpg)
Oznaczenia na schematach blokowych
![Page 29: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/29.jpg)
Oznaczenia na schematach blokowych
![Page 30: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/30.jpg)
Oznaczenia na schematach blokowych
![Page 31: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/31.jpg)
Przykład: Obliczenie n! - pseudokod
• Policzenie silni z zadanej liczby naturalnej• Pseudokod
– wczytaj n– jeżeli n<0 idź do 1– licznik=0, silnia=1– jeżeli licznik != n wtedy powiększ licznik o 1,
silnia=silnia*licznik, idź do 4– wypisz silnia
![Page 32: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/32.jpg)
Przykład: Obliczenie n! – schemat blokowy
![Page 33: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/33.jpg)
Instrukcja warunkowa wyboru if: jeśli W to I
![Page 34: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/34.jpg)
Instrukcja wyboru if W then I1 else I2 - alternatywa: jeśli W to I1 w przeciwnym przypadku I2;
![Page 35: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/35.jpg)
Instrukcja wyboru – caseprzypadek W spośród (I1, I2, …In)
![Page 36: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/36.jpg)
Iteracje - powtarzaj I aż do W;
![Page 37: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/37.jpg)
Instrukcja iteracji while : dopóki W wykonuj I;
![Page 38: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/38.jpg)
Instrukcja iteracji for - dla N:=W1 do W2 wykonuj I;
![Page 39: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/39.jpg)
Przykład schematu blokowego: obliczenie iloczynu n liczb
Dany jest zbiór podanych n liczb: X1, X2, ..., Xn. Należy obliczyć iloczyn y=P Xi = X1*X2*...*Xn.
Algorytm• 1) Język naturalny:
A. Przyjmij wartość y równą 1 i skocz do B B. Przyjmij wartość i równą 1 i przejdź do CC. Przyjmij y równe iloczynowi y*Xi i skocz do BD. Jeżeli i=n to Koniec.
W przeciwnym razie przyjmij i równe i+1 i skocz do C
![Page 40: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/40.jpg)
2) Pseudokod - obliczenie iloczynu n liczb
1. y :=12. i := 13. y := y*Xi4. Jeżeli i=n to Koniec.
W przeciwnym razie i := i+1 i skocz do 3
![Page 41: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/41.jpg)
3) Schemat blokowy - obliczenie iloczynu n liczb
![Page 42: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/42.jpg)
Konstrukcje programu spotykane w schematach blokowych:
• sekwencja instrukcji – blok ( begin… end - Pascal; { } - C, END - Basic)
• Test (if, if … else), • instrukcja wyboru (case, switch), • instrukcje iteracji
(while, repeat, do while, for), • instrukcje we/wy (read, write), • Procedury (procedure), • funkcje (function)
![Page 43: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/43.jpg)
Sekwencja instrukcji, operacje testu
![Page 44: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/44.jpg)
Instrukcja wyboru: case of , switch case , select case
![Page 45: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/45.jpg)
Instrukcja while
![Page 46: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/46.jpg)
![Page 47: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/47.jpg)
![Page 48: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/48.jpg)
Podprogram (funkcja lub procedura)
• Podprogram to wydzielona część programu wykonująca jakieś operacje.
• Podprogramy stosuje się, aby uprościć program główny i zwiększyć czytelność kodu.
• W pewnych językach programowania dzieli się podprogramy na funkcje i procedury:
![Page 49: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/49.jpg)
Funkcja - function
• Funkcja ma wykonywać obliczenia i zwracać jakąś wartość, nie powinna natomiast mieć żadnego innego wpływu na działanie programu (np. funkcja obliczająca pierwiastek kwadratowy)
![Page 50: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/50.jpg)
Procedura
• Procedura nie zwraca jednej wartości jak funkcja, zamiast tego wykonuje pewne działania (np. procedura czyszcząca ekran)
• Przez zwracanie wartości należy rozumieć możliwość użycia wywołania funkcji wewnątrz wyrażenia.
• Procedury często też zwracają wartości, ale poprzez odpowiednie parametry.
![Page 51: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/51.jpg)
Podział na funkcje i procedury
• Podział na funkcje i procedury występuje w językach takich jak Pascal i Ada.
• W języku Pascal istnieją 2 rodzaje podprogramów: procedury i funkcje.
• W pozostałych językach (m. in. w C i C++) nie ma już takiego rozróżnienia i funkcją jest każdy podprogram, niezależnie od tego czy zwraca jakieś wartości i czy ma wpływ na program.
![Page 52: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/52.jpg)
Struktura programów w językach Basic, Pascal, C:
Basic' Komentarz' Początek programu głównego - brak
wyróżnienia ' Deklaracje zmiennych, funkcji, podprogramow ' DECLARE function funkcja1 ()' DECLARE SUB podprogram1()I1 : I2 ‘ Instrukcje I1 i I2 – może być kilka w liniiIn ‘ Instrukcja InEND ' Nie musi być jeśli po nim nie m a definicji
procedur lub funkcji
![Page 53: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/53.jpg)
Pascal
{Pascal:}Program Nazwa;{Komentarz}{Deklaracje}Begin {Instrukcje}I1; I2;In;End.
![Page 54: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/54.jpg)
Język C /C++// C// Komentarz// Deklaracje, definicje funkcjivoid funkcja(){};main(){// Instrukcje// Sekwencja instrukcji - poczatek{I1; I2; // Instrukcje I1; I2In; // Instrukcja In} // Sekwencja instrukcji - koniec} // koniec programu main
![Page 55: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/55.jpg)
Przykłady algorytmów
1. Sprawdzanie parzystości liczby całkowitej2. Obliczenie pierwiastka metoda iteracyjną3. Algorytm Euklidesa znajdowania
największego wspólnego dzielnika4. Obliczenie azymutu ze współrzędnych
1. Metoda 1 (bez użycia czwartaków)2. Metoda 2 obliczenia azymutu ze współrzędnych,
z użyciem czwartaków
![Page 56: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/56.jpg)
![Page 57: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/57.jpg)
![Page 58: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/58.jpg)
![Page 59: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/59.jpg)
![Page 60: ALGORYTM . SCHEMATY BLOKOWE. KONSTRUKCJE PROGRAMU, PODPROGRAMY, FUNKCJE](https://reader035.vdocuments.site/reader035/viewer/2022062800/56814299550346895daecb53/html5/thumbnails/60.jpg)