Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Podobne dokumenty
1 Wprowadzenie do algorytmiki

Przetwarzanie danych Tworzenie programów

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wprowadzenie do algorytmiki

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

11. Blok ten jest blokiem: a. decyzyjnym b. końcowym c. operacyjnym

Definicje. Algorytm to:

Wykład z Technologii Informacyjnych. Piotr Mika

Algorytm. a programowanie -

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Algorytmika i pseudoprogramowanie

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

POLITECHNIKA OPOLSKA

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

ALGORYTMY I PROGRAMY

Rekurencja (rekursja)

POLITECHNIKA OPOLSKA

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Algorytmy sortujące i wyszukujące

Technologie informacyjne - wykład 12 -

ALGORYTMY I STRUKTURY DANYCH

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Sposoby zapisywania algorytmów

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Zapis algorytmów: schematy blokowe i pseudokod 1

Algorytm. Krótka historia algorytmów

Algorytmy i schematy blokowe

Definicja algorytmu brzmi:

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Wstęp do informatyki

Wstęp do informatyki- wykład 2

Technologia informacyjna Algorytm Janusz Uriasz

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

ZADANIE 1. Ważenie (14 pkt)

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Sortowanie - wybrane algorytmy

Schematy blokowe. Algorytmy Marek Pudełko

KARTA PRACY UCZNIA. Klasa II

Języki programowania zasady ich tworzenia

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Algorytm. Krótka historia algorytmów

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Algorytmy. Programowanie Proceduralne 1

Język C zajęcia nr 5

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Podstawy Programowania Algorytmy i programowanie

Algorytmy. Programowanie Proceduralne 1

Podstawy algorytmiki Dariusz Piekarz

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

2.8. Algorytmy, schematy, programy

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Sortowanie Shella Shell Sort

Algorytm. Słowo algorytm pochodzi od perskiego matematyka Mohammed ibn Musa al-kowarizimi (Algorismus - łacina) z IX w. ne.

Programowanie strukturalne

Podstawy Informatyki. Programowanie. Inżynieria Ciepła, I rok. Co to jest algorytm? Istotne cechy algorytmu

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Metodyki i techniki programowania

Poprawność semantyczna

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Algorytmy i struktury danych. wykład 2

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Programowanie w VB Proste algorytmy sortowania

Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Programowanie w języku C++ Grażyna Koba

Przeglad podstawowych pojęć (3) Podstawy informatyki (3) dr inż. Sebastian Pluta. Instytut Informatyki Teoretycznej i Stosowanej

Programowanie - wykład 4

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Poprawność algorytmów

Złożoność obliczeniowa zadania, zestaw 2

Algorytm. Algorytmy Marek Pudełko

Wykład 8. Rekurencja. Iterować jest rzeczą ludzką, wykonywać rekursywnie boską. L. Peter Deutsch

do instrukcja while (wyrażenie);

1. Algorytmy Składniki algorytmu Podstawowymi elementami każdego algorytmu są dane oraz operacje Metody opisu algorytmu

Instrukcje cykliczne (pętle) WHILE...END WHILE

Podstawy Informatyki. Inżynieria Ciepła, I rok. Iteracja warunkowadopóki(while) Blok instrukcji. Pascal: begin instrukcja1; C: { end;

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

- - Ocena wykonaniu zad3. Brak zad3

Paradygmaty programowania

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Transkrypt:

Informatyka wprowadze do algorytmów (II) dr hab. inż. Mikołaj Morzy

plan wykładu cechy algorytmów sposoby zapisu algorytmów klasyfikacja algorytmów przykłady algorytmów sumowa przeszukiwa ciągu liczb sortowa algorytmy rekurencyjne

cechy algorytmu kompletność algorytm uwzględnia wszystkie możliwe przypadki które mogą wystąpić w trakcie realizacji algorytmu algorytm przewiduje wystąpienia błędów (numerycznych, logicznych, itd.) oraz posiada system reakcji (komunikaty o błędach, odpowied zakończe działania)

cechy algorytmu skończoność algorytm zapewnia osiągnięcie rozwiązania w skończonej liczbie kroków (czyli w skończonym czasie) dokładna liczba kroków jest znana a priori algorytm posiada warunek zakończenia n (n) 1 1 2 4 3 6 4 13 5 4096 6 10 1439 10 3 3 12 4096 166 3 podsione do potęgi 3 3 3 razy, tj. 3 z 7 625 597 484 987 potęgami

cechy algorytmu jednoznaczność dla tych samych danych wejściowych algorytm musi dawać zawsze te same wyniki algorytm jest zależny od momentu jego uruchomienia, wpływu innych programów, sprzętu, kodowania znaków, itp.

z czego składa się algorytm? dane obiekty podlegające przekształceniu podczas działania wynik ostateczny rezultat działania algorytmu instrukcje opis sekwencji czynności które muszą zostać wykonane w ściśle określonej kolejności algorytm zapisany przy pomocy języka programowania nazywamy programem

sposoby zapisu algorytmu lista kroków (opis słowny) najbardziej naturalny sposób zapisu algorytmu zapis graficzny (schemat blokowy) zestaw symbolicznych elementów odpowiadających czynnościom w pseudojęzyku programowania w konkretnym języku programowania

przykład listy kroków 1. Czy słuchawka jest odłożona? Jeśli, to przejdź do (2), jeśli, to odłóż słuchawkę. 2. Podś słuchawkę. 3. Wybierz cyfrę 6. 4. Wybierz cyfrę 1. 5. Wybierz cyfrę 6. 6. Wykonaj czynność cztery razy 1. wybierz cyfrę 2 7. Czy połączyłeś się z fryzjerem? Jeśli, to przejdź do (8), w przeciwnym wypadku przejdź do (9) 8. Umów się na strzyże włosów. 9. Odłóż słuchawkę.

schematy blokowe dla skomplikowanych algorytmów zapis w postaci języka naturalnego szybko staje się czytelny i zagmatwany schemat blokowy to graficzny zapis algorytmu operacje przedstawione są za pomocą odpowiednio połączonych bloków połączenia określają kolejność i sposób wykonywania operacji istje standardowy, ogól przyjęty system oznaczeń graficznych dla schematów blokowych

symbole używane w schematach blokowych symbol nazwa opis początek, koc operator wejście/wyjście element decyzyjny łącznik komentarz linia oznacza miejsce rozpoczęcia i zakończenia algorytmu działa do wykonania wprowadza danych lub wyświetla danych wybór jednej z alternatywnych dróg działania połącze dwóch fragmentów sieci działania miejsce na komentarz połącze kolejnych symboli działania

operacja wyboru na schemacie blokowym operacje wyboru jednej z alternatywnych dróg działania realizujemy za pomocą skrzynki warunkowej wewnątrz skrzynki warunkowej umieszczamy warunek logiczny operatory: = <> < > <= >= OR AND A < 5 OR A > 10

instrukcja warunkowa W instrukcje instrukcje są realizowane jeśli spełniony jest warunek W

instrukcja warunkowa W instrukcje A instrukcje B jeśli spełniony jest warunek W to realizowane są instrukcje A, w przeciwnym wypadku realizowane są instrukcje B

instrukcja pętli "dopóki" W while dopóki spełniony jest warunek W to instrukcje są powtarzane instrukcje

instrukcja pętli "powtarzaj aż" instrukcje instrukcje są powtarzane aż do spełnia jest warunek W W repeat until

instrukcja pętli "powtarzaj n raz" zmienna := X zmienna < W instrukcje zwiększ zmienną zainicjalizuj zmienną za pomocą wartości powtarzaj określoną liczbę razy jeśli zmienna jest poniżej warunku zmiennej kontrolnej, to wejdź do pętli jeśli warunek jest fałszywy, to następuje koc przetwarzania

klasyfikacja algorytmów algorytmy proste i rozgałęzione algorytmy cykliczne i mieszane algorytmy sekwencyjne i równoległe/współbieżne algorytmy numeryczne i numeryczne algorytmy rekurencyjne i iteracyjne iteracja: wielokrotne wywoła sekwencji poleceń aż do spełnia warunku sterującego rekurencja: wywoła procedury z wewnątrz tej samej procedury

algorytm prosty i rozgałęziony operacja 1 operacja 1 operacja 2 operacja 3 operacja 2 operacja 3

algorytm cykliczny i mieszany operacja 1 operacja 1 operacja 2 operacja 3 operacja 2 operacja 3 operacja 4

algorytm sekwencyjny i równoległy start start operacja 1 operacja 1 operacja 2 operacja 2 operacja 3 operacja 4 operacja 5 operacja 3 stop operacja 6 stop

algorytm iteracyjny i rekurencyjny start start operacja 1 operacja 2 krok 1 krok 2 krok 3 krok 4 operacja 3 stop stop

przegląd podstawowych algorytmów

sumowa liczb naturalnych zada zsumuj liczby naturalne z zakresu 1.. n start stop podaj n suma := 0 liczba := n pisz suma czy liczba > 0 suma := suma+liczba liczba := liczba-1

sumowa liczb naturalnych zada wylicz sumę z podanych 10 liczb, uwzględnij tylko liczby większe od 5 start suma := 0 i := 0 podaj a i := i+1 stop pisz suma i > 10 a > 5 suma := suma+a

zagadka zada co robi ten algorytm? jak go poprawić? start podaj a podaj b c := 1 d := b stop pisz d c = a podaj b c := c + 1 b > d

algorytm Euklidesa zada znajdź największy wspólny dzielnik dwóch liczb start podaj a, b a <> b stop pisz a a := a - b a > b b := b - a

przeszukiwa sekwencyjne: lista kroków dane wejściowe n liczba elementów w zbiorze d[.] zbiór wejściowy x poszukiwana wartość algorytm 1. p := 1 2. dopóki (p n) i (d[p] <> x) to 1. p := p + 1 3. jeśli p > n to wówczas p := 0 4. zakończ algorytm

przeszukiwa sekwencyjne: schemat blokowy start p := 1 p <= n p > n x!= d[p] p := 0 p := p+1 stop

przeszukiwa z wartownikiem generalna zasada wyszukiwania warunek sprawdzania zakresu ( p <= n ) jest potrzebny jedy w przypadku, gdy zbiór d[.] zawiera poszukiwanego elementu (gwarancja zakończenia pętli) jeśli można zagwarantować, że element zawsze zosta znaleziony, to warunek staje się zbyteczny na końcu zbioru d[.] dodajemy poszukiwany element x. jeśli algorytm zwróci w wyniku pozycję n+1, to wiemy, że znaleziony został wartownik (przeszukiwa jest udane).

przeszukiwa z wartownikiem: lista kroków dane wejściowe n liczba elementów w zbiorze d[.] zbiór wejściowy x poszukiwana wartość algorytm 1. d[n+1] = x 2. p := 1 3. dopóki (d[p] <> x) to 1. p := p + 1 4. jeśli p > n to wówczas p := 0 5. zakończ algorytm

przeszukiwa z wartownikiem: schemat blokowy start d[n+1] := x p := 1 p > n x!= d[p] p := p+1 p := 0 stop

wyszukiwa najczęstszego elementu dane wejściowe n liczba elementów w zbiorze, n N, n>0 d[.] zbiór wejściowy algorytm 1. w n := d[1], p n := 1, l n := 1 2. dla i = 1, 2,, n wykonuj kroki (3).. (5) 3. licznik := 0 4. dla j = 1, 2,, n 1. jeśli d[i] = d[j] to licznik++ 5. jeśli licznik > l n to o 1. w n := d[i], p n := i, l n := licznik 6. zakończ algorytm

sito Erastotenesa najszybszy algorytm wyszukiwania liczb pierwszych w ograniczonym zbiorze idea: usuń z zadanego zbioru liczb naturalnych wielokrotności tych liczb, które zostały usunięte przykład: znajdź liczby pierwsze w zbiorze <1..20> usuń pozostała sekwencja 1 1 2 3 4 5 6 18 19 20 2 1 2 3 5 7 9 11 19 3 1 2 3 5 7 11 13 17 19

zada samodzielne zapisz sito Erastotenesa jako listę kroków i za pomocą schematu blokowego

sortowa bąbelkowe sortowa polega na cyklicznym porównywaniu par elementów sąsiadujących ze sobą w zbiorze jeśli elementy spełniają kryterium porządkowania zbioru, to następuje zamiana miejsc między elementami algorytm działa aż do wyczerpania zasobów 1 przebieg II przebieg II przebieg 4 2 8 6 1 2 4 6 1 8 2 4 1 6 8 2 4 8 6 1 2 4 6 1 8 2 4 1 6 8 2 4 8 6 1 2 4 6 1 8 2 1 4 6 8 2 4 6 8 1 2 4 1 6 8 2 1 4 6 8 2 4 6 1 8 2 4 1 6 8 2 1 4 6 8

sortowa bąbelkowe: lista kroków dane wejściowe n liczba elementów w zbiorze, n N, n>0 d[.] zbiór wejściowy do posortowania algorytm 1. dla j = 1, 2,, n-1 wykonaj 1. wykonuj krok (2) 2. dla i = 1, 2,, n-1 wykonaj 1. jeśli d[i] > d[i+1] wówczas zamień d[i] i d[i+1] 3. zakończ algorytm

sortowa bąbelkowe: schemat blokowy start j := 1 j < n i := 1 stop d[i] d[i+1] i < n d[i] > d[i+1] i := i + 1 j := j + 1

zada samodzielne wykorzystując algorytm sortowania bąbelkowego posortuj zbiór 8 5 2 9 3 6 1 przebieg II przebieg III przebieg 8 5 2 9 3 6 5 8 2 9 3 6 5 2 8 9 3 6 5 2 8 9 3 6 5 2 8 3 9 6 5 2 8 3 6 9 5 2 8 3 6 9 2 5 8 3 6 9 2 5 8 3 6 9 2 5 3 8 6 9 2 5 3 6 8 9 2 5 3 6 8 9 2 5 3 6 8 9 2 5 3 6 8 9 2 3 5 6 8 9 2 3 5 6 8 9 2 3 5 6 8 9 2 3 5 6 8 9

sortowa przez wybór sortowa polega na cyklicznym znajdowaniu najmjszego elementu w zbiorze i wymienianiu tego elementu z pierwszym elementem sortowanej części zbiór operacja 4 7 2 9 3 najmjszym elementem jest 2 2 7 4 9 3 zamieniamy miejscami 2 i 4 2 7 4 9 3 w pozostałej części zbioru najmjsza jest 3 2 3 4 9 7 zamieniamy miejscami 3 i 7 2 3 4 9 7 w pozostałej części zbioru najmjsza jest 4, która już jest na właściwej pozycji 2 3 4 9 7 w pozostałej części zbioru najmjsza jest 7 2 3 4 7 9 zamieniamy miejscami 7 i 9 2 3 4 7 9 zbiór jest już posortowany

sortowa przez wybór: lista kroków dane wejściowe n liczba elementów w zbiorze, n N, n>0 d[.] zbiór wejściowy do posortowania algorytm 1. dla j = 1, 2,, n-1 wykonaj 1. wykonuj kroki (2-4) 2. p min := j 3. dla i = j+1, j+2,, n wykonaj 1. jeśli d[i] < d[p min ] wówczas p min := i 4. d[j] := d[p min ] 5. zakończ algorytm

sortowa przez wybór: schemat blokowy start j := 1 j < n p min := j i := j+1 stop p min := i i <= n d[i] < d[p min ] i := i + 1 d[p min ] d[j]

rekurencja rekurencja, rekursja to zjawisko wywołania, w pewnym kroku algorytmu, całego algorytmu obiekt rekurencyjny to obiekt, który we fragmencie składa się z samego siebie, lub którego definicja odwołuje się do jego samego funkcja rekurencyjna to funkcja, która wywołuje samą siebie

definicja rekurencyjna definicja rekurencyjna składa się z dwóch części warunek początkowy: wylicze elementów podstawowych stanowiących części składowe wszystkich pozostałych elementów zbioru krok indukcyjny: reguły umożliwiające konstruowa nowych obiektów z elementów podstawowych lub obiektów zbudowanych wcześj, reguły mogą być stosowane wielokrot do tworzenia nowych obiektów uwaga: należy uważać, aby doszło do zjawiska skończonej pętli rekurencyjnych wywołań funkcji

wywoła funkcji rekurencyjnej kolejne wywołania funkcji rekurencyjnej odkładają na stosie rekordy aktywacji procedury w trakcie kończenia działania poszczególnych funkcji kolejne rekordy aktywacji są zdejmowane ze stosu zwalnia stosu podczas kończ zenia kolejnych wywołań funkcji pierwszy poziom rekurencji drugi poziom rekurencji trzeci poziom rekurencji ostatni poziom rekurencji dno stosu szczyt stosu

przykład rekurencji: silnia definicja funkcji silnia n! = 1*2* K*n definicja rekurencyjna funkcji silnia n! = 1 n = 0 warunek początkowy n*( n 1)! n > 0 krok indukcyjny przykład 5! = 5 * 4! = 5 * 4 * 3! = 5 * 4 * 3 * 2! = 5 * 4 * 3 * 2 * 1! = = 5 * 4 * 3 * 2 * 1 * 0! = 5 * 4 * 3 * 2 * 1 * 1 = 120

rekurencyjna silnia: schemat blokowy start wczytaj n n >= 0 i := 0 silnia := 1 i = n wypisz silnia i ++ silnia := silnia * i stop

zada samodzielne opracuj rekurencyjną wersję algorytmu wyznaczania n-tej liczby Fibonacciego narysuj schemat blokowy opracowanego algorytmu