Wprowadzenie do algorytmiki

Podobne dokumenty
1 Wprowadzenie do algorytmiki

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

Definicje. Algorytm to:

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

Algorytmy i schematy blokowe

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytm. Krótka historia algorytmów

Technologie informacyjne - wykład 12 -

Definicja algorytmu brzmi:

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

Metodyki i techniki programowania

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

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

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

POLITECHNIKA OPOLSKA

Algorytm. a programowanie -

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

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Metodyki i techniki programowania

Technologia informacyjna Algorytm Janusz Uriasz

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

Temat 20. Techniki algorytmiczne

POLITECHNIKA OPOLSKA

2.8. Algorytmy, schematy, programy

Algorytmy, reprezentacja algorytmów.

Wykład z Technologii Informacyjnych. Piotr Mika

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

ALGORYTMY I PROGRAMY

Wstęp do informatyki- wykład 2

Programowanie i techniki algorytmiczne

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

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

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

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

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

Podstawy algorytmiki Dariusz Piekarz

Podstawy Programowania Algorytmy i programowanie

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

Algorytm. Krótka historia algorytmów

Algorytmy. dr Dariusz Banaś (UJK) Seminarium w ramach projektu Fascynujący Świat Nauki dla uczniów gimnazjów. wersja 0.9. Start.

Sposoby przedstawiania algorytmów

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

Sposoby zapisywania algorytmów

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

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

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

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

Algorytm. Algorytmy Marek Pudełko

Podstawy programowania

Algorytmy. Programowanie Proceduralne 1

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

W szkole podstawowej materiał przedstawiony powinien być w następującej kolejności:

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

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

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

2. Graficzna prezentacja algorytmów

Algorytmy. Programowanie Proceduralne 1

Podstawy Informatyki. Algorytmy i ich poprawność

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

KARTA PRACY UCZNIA. Klasa II

Zapisywanie algorytmów w języku programowania

Algorytmy i struktury danych. Wykład 4

Spis treści. Część I Metody reprezentowania informacji oraz struktury danych...9. Wprowadzenie Rozdział 1. Reprezentacja liczb całkowitych...

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

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

5 lekcji o algorytmach - Co to jest algorytm?

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Metody numeryczne w przykładach

Gimnazjum w Tęgoborzy - Algorytmika Strona 1 z 22 mgr Zofia Czech

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Algorytmy i struktury danych

Podstawy Informatyki. Metalurgia, I rok niestacjonarne. Wykład 2 Algorytmy

ZADANIE 1. Ważenie (14 pkt)

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

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

Programowanie strukturalne

Algorytmika i pseudoprogramowanie

Zadanie 1. Potęgi (14 pkt)

Poprawność semantyczna

Algorytmy i struktury danych

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

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

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

INFORMATYKA. Algorytmy.

Język ludzki kod maszynowy

wagi cyfry pozycje

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

Sortowanie Shella Shell Sort

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Zapis algorytmów: schematy blokowe i pseudokod 1

EGZAMIN MATURALNY Z INFORMATYKI POZIOM PODSTAWOWY MAJ 2014 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Programowanie w Baltie klasa VII

Transkrypt:

Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki i informatyki, ale ostatnio stał się również popularnym synonimem przepisu lub instrukcji postępowania. W literaturze fachowej termin algorytm jest w różny sposób określany lub wyjaśniany. Poniżej przedstawione zostały przykłady definicji tego terminu. S. Węgrzyn algorytm definiuje w następujący sposób: Przez algorytm będziemy rozumieć( ) skończony ciąg operacji wraz z ściśle sprecyzowanym porządkiem ich wykonywania, które po realizacji dają rozwiązanie dowolnego zadania z określonej klasy 1. L. Banachowski i A. Kreczmar przyjmują, że: Algorytmem nazywa się najczęściej przepis postępowania, który ma prowadzić w sposób autonomiczny do rozwiązania określonego zadania. Ten przepis postępowania powinien być na tyle precyzyjny, aby posługiwanie się nim polegało tylko na automatycznym wykonywaniu instrukcji tego zapisu. Zakłada się przy tym, że pewne pierwotne instrukcje tego przepisu są wykonalne, to znaczy, że są one zdefiniowane i w algorytmie nie musi się ich definiować, ale można ich używać 2. Algorytm również określa się, jako dokładny przepis określanego zagadnienia, najczęściej przedstawiany w postaci skończonej sekwencji elementarnych (na danym poziomie) operacji, które należy wykonać 3. Cechy algorytmu poprawność, co oznacza, że dla każdego poprawnego zestawu danych, po wykonaniu skończonej liczby kroków otrzymujemy poprawny wynik; skończoność, co oznacza, że realizowany ciąg operacji powinien mieć swój koniec; określoność, co oznacza, że zarówno operacje, jak i porządek ich wykonywania powinny być ściśle określone, nie zostawiając miejsca na dowolną interpretację użytkownika; ogólność, co oznacza, ze ich stosowanie nie ogranicza się do jednego, pojedynczego, szczegółowego przypadku, ale odnosi się do pewnej klasy zadań; efektywność, co jest najtrudniejsze do zdefiniowania, a oznacza, że algorytm powinien prowadzić do rozwiązania możliwie prostą drogą; uniwersalność, co oznacza, że służy do rozwiązania pewnej grupy zadań, a nie tylko jednego zadania: np. algorytm który jest przepisem na rozwiązanie równania postaci 1 Węgrzyn S., Podstawy informatyki, PWN, Warszawa 1985. 2 Banachowski L., Kreczmar A., Elementy analizy algorytmów, WNT, Warszawa 1982. 3 Święcicki K., Walat A., Szkolny słownik informatyki, BGW, Warszawa 1987. str. 1

ax + b = 0 dla dowolnych współczynników a i b, a nie jednego konkretnego równania, np. 2x + 3 = 0. Sposoby zapisu algorytmu Algorytmy można przedstawić w następujący sposób: w języku naturalnym, za pomocą schematów blokowych, za pomocą drzewa, w języku formalnym, w języku programowania. Zestaw instrukcji umownego strukturalnego języka programowania W programowaniu strukturalnym korzysta się z pewnych prostych konstrukcji, z których można zbudować poprawny program. W tym celu wprowadzamy zestaw podstawowych instrukcji umownego języka programowania zwanego także pseudojęzykiem, który w dalszej części zostanie zastosowany do stworzenia przykładów algorytmów. W dużym stopniu będą one przypominały programy. Z tego powodu rozwiązania tych problemów nie będą nazywały się algorytmami, ale programami, mimo iż nie będą one zrozumiałe przez komputer. 1) Instrukcja przypisania: Z:=W; 2) Instrukcje wejścia/wyjścia: Podaj(x); Pisz(x); 3) Instrukcja złożona: POCZĄTEK Instrukcja1; Instrukcja2; Instrukcja3;. KONIEC; 4) Instrukcja warunkowa (decyzyjna). a) instrukcja warunkowa prosta: JEŚLI warunek TO instrukcja; b) instrukcja warunkowa złożona: JEŚLI warunek TO instrukcja1 W PRZECIWNYM RAZIE instrucja2; 5) Instrukcje iteracyjne. a) Instrukcja POWTARZAJ: POWTARZAJ instrukcję AŻ warunek; str. 2

b) Instrukcja DOPÓKI: DOPÓKI warunek WYKONUJ instrukcję; Operatory relacji Operator Znaczenie = równe <> nierówne (różne) < mniejsze > większe <= mniejsze lub równe >= większe lub równe Operatory logiczne Operator Znaczenie ang. Znaczenie NIE NOT zaprzeczenie I AND i LUB OR lub Metody przedstawiania algorytmów schematy blokowe Podstawowym i łatwym sposobem przedstawiania algorytmów (na podstawie którego opracowuje się później program) jest schemat blokowy, który jest traktowany jako algorytm problemu. Jest graficznym przedstawieniem zbioru instrukcji i wzajemnych powiązań między nimi, które określają kolejność wykonywanych instrukcji. Schemat blokowy jest zbudowany z figur geometrycznych zwanych skrzynkami oraz połączeń między skrzynkami. Oto podstawowe zestaw skrzynek stosowanych do budowy schematów blokowych: 1) Skrzynki graniczne START/STOP mają kształt owalu; wskazują początek i koniec wykonywania schematu blokowego. Ze skrzynki START wychodzi tylko jedno połączenie, natomiast skrzynka STOP nie ma połączenia wychodzącego. START STOP str. 3

2) Skrzynka operacyjna jest prostokątem, w którym znajdują się instrukcje. Ze skrzynki operacyjnej wychodzi tylko jedno połączenie. instrukcja 3) Skrzynka warunkowa (decyzyjna) jest rombem, w którym umieszcza się warunek decyzyjny o dalszej kolejności wykonywania operacji. Ze skrzynki wychodzą dwa połączenia: jedno oznaczone przez T (TAK), a drugie oznaczone przez N (NIE). W N T 4) Skrzynka wprowadzania i wyprowadzania informacji jest równoległobokiem, którym umieszcza się dane lub wyniki. Ze skrzynki wychodzi jedno połączenie. WE / WY Przykłady algorytmów Przykład 1. Suma dwóch liczb rzeczywistych (algorytm sekwencyjny liniowy). Specyfikacja problemu: Dane wejściowe: a, b liczby rzeczywiste dla których wyznaczamy sumę. Wynik: S liczba rzeczywista równa sumie liczb a i b. Lista kroków: str. 4

K01: Czytaj a, b; K02: S:= a + b; K03: Pisz S; K04: Zakończ algorytm. Schemat blokowy W powyższym przykładzie kolejne instrukcje wykonywane są w porządku, w jakim zostały wprowadzone. Mówimy, że takie algorytmy i programy posiadają strukturę sekwencyjną (liniową). Przykład 2. Max(a,b) (algorytm z rozgałęzieniami). Specyfikacja problemu: Dane wejściowe: a, b liczby rzeczywiste dla których wyznaczamy liczbę większą. Wynik: max liczba rzeczywista równa liczbie większej z danych a, b. Lista kroków: K01: Czytaj a, b; K02: Jeśli a > b, to max:= a w przeciwnym razie max:= b; K05: Pisz max; K06: Zakończ algorytm. Schemat blokowy str. 5

W powyższym algorytmie wykonanie instrukcji: max:=a; i max:=b; uzależniona jest od wyniku warunku a > b. Jeśli warunek będzie spełniony to wykonana zostanie instrukcja pierwsza, w przeciwnym razie instrukcja druga, a więc dalsze wykonanie algorytmu może być zrealizowane na dwa sposoby (drogi realizacji rozgałęziają się). Jest to przykład algorytmu z rozgałęzieniami. Przykład 3. Liczba pierwsza. (algorytm z pętlą). Algorytm badania, czy dowolna liczba naturalna n > 1 jest liczbą pierwszą, tzn., czy jest podzielna tylko przez 1 i samą siebie. Specyfikacja problemu: Dane wejściowe: n dowolna liczba naturalna większa od 1. Wynik: informacja czy podana liczba n jest liczbą pierwszą, czy też nie jest liczbą pierwszą. Zmienne pomocnicze: i - pełni rolę zmiennej sterującej pętlą i wartością kolejnych liczb naturalnych mniejszych lub równych połowie liczby n, i należy do zbioru liczb naturalnych. Lista kroków: K01: Czytaj n; K02: i:= 2; K03: Dla i n/2: Jeśli (n mod i) = 0, to Pisz (Liczba nie jest pierwsza); K05; str. 6

K04: Pisz (Liczba jest pierwsza); K05: Zakończ algorytm. Schemat blokowy Powyższy algorytm zawiera blok instrukcji który jest wielokrotnie powtarzany. Liczba tych powtórzeń nie zawsze jest dokładnie określona i przeważnie zależy od postawionych warunków. Wielokrotne powtarzanie instrukcji umożliwiają instrukcje iteracyjne nazywane krótko pętlami. Przykłady algorytmów klasycznych Przykład 1. Algorytm Euklidesa. Algorytm znajdowania największego wspólnego dzielnika (NWD) dwóch różnych liczb naturalnych. Nie wymaga rozkładania liczb na czynniki pierwsze. Ten algorytm jest jednym z najstarszych przepisów - schematów obliczeń. Jest on pomysłowy i szybko daje wynik. Specyfikacja problemu: Dane wejściowe: a, b liczby naturalne dla których wyznaczamy NWD. Wynik: NWD liczba naturalna równa największemu wspólnemu dzielnikowi liczb a i b. Lista kroków: K01: Czytaj a, b; str. 7

K02: Dopóki a b: wykonuj krok K03; K03: Jeżeli a > b, to a:= a b w przeciwnym razie b:= b a; K04: NWD:= a; K05: Zakończ algorytm. Przykład. Obliczmy tym sposobem NWD dla liczb 24 i 15. 1) 24-15 = 9 Od większej liczby odejmujemy mniejszą. Liczby 24 i 15 przechodzą w 15 i 9. Ponieważ nie są one równe, wykonujemy dalej odejmowanie 2) 15-9 = 6 Teraz otrzymujemy parę 9 i 6, która dalej nie składa się z liczb sobie równych, więc kontynuujemy odejmowanie. 3) 9-6 = 3 Para 6 i 3 - odejmujemy dalej 4) 6-3 = 3 Para 3 i 3 - otrzymaliśmy równość, więc liczba 3 jest największym wspólnym podzielnikiem liczb 24 i 15. Schemat blokowy Po odczytaniu wartości liczb a i b rozpoczynamy pętlę, która przerwie się, gdy w wyniku działania algorytmu liczba a będzie równa liczbie b. W takim przypadku dowolna z tych liczb jest największym wspólnym dzielnikiem pierwotnych wartości i wyprowadzamy ją. W przeciwnym wypadku jedna z liczb a lub b jest większa od drugiej. Odejmujemy więc liczbę mniejszą od większej i kontynuujemy pętlę, aż do zrównania wartości a i b. str. 8

START Czytaj(a,b); a b N T T a < b N Pisz(a); STOP b:= b - a; a:= a - b; Przykład 2. Liczba dokonała. Algorytm znajdowania liczby naturalnej, która jest sumą wszystkich swoich dzielników (mniejszych od niej). Najmniejszą liczbą doskonałą jest 6, ponieważ 6 = 1*2*3=1+2+3. Specyfikacja problemu: Dane wejściowe: n liczba naturalna. Wynik: informacja czy podana liczba n jest liczbą doskonałą, czy też nie jest liczbą doskonałą. Zmienne pomocnicze: i - pełni rolę zmiennej sterującej pętlą i wartością kolejnych liczb naturalnych mniejszych lub równych połowie liczby n, i należy do zbioru liczb naturalnych. Lista kroków: str. 9

K01: Czytaj n; K02: suma:=0; i:=1; K03: Dla i n/2: Jeśli (n mod i) = 0, to suma:= suma + i; i:= i + 1; w przeciwnym razie K4; K04: Jeśli n = suma, to Pisz (Liczba jest doskonała); w przeciwnym raz Pisz (Liczba nie jest doskonała); K05: Zakończ algorytm. Schemat blokowy Przykład 2. Max(a,b,c) (algorytm z rozgałęzieniami). Specyfikacja problemu: str. 10

Dane wejściowe: a, b, c liczby rzeczywiste dla których wyznaczamy liczbę większą. Wynik: max liczba rzeczywista równa liczbie większej z danych a, b, c. Lista kroków: K01: Czytaj a, b, c; K02: max:= a; K03: Jeśli max < b, to max:= b; K04: Jeśli max < c, to max:= c; K05: Pisz max; K06: Zakończ algorytm. Schemat blokowy str. 11

Literatura: [1] Nowakowski Z., Sikorski W., Informatyka bez tajemnic cz. III, MICOM, Warszawa 1996. [2] Kingsley-Hughes A., Kingsley-Hughes K., Od podstaw programowanie, Helion, 2006. [3] Suraj Z., Rumak T., Algorytmiczne rozwiązywanie zadań i problemów, WO FOSZE, Rzeszów, 1995. str. 12