Zespół Szkół nr 9 Im. Romualda Traugutta Ul. Jedności 9 75 401 Koszalin



Podobne dokumenty
Definicje. Algorytm to:

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

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Algorytm. Definicja i algorytmu METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE

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

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

1 Wprowadzenie do algorytmiki

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

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

Algorytm. Krótka historia algorytmów

Zapis algorytmów: schematy blokowe i pseudokod 1

Algorytmy i schematy blokowe

Definicja algorytmu brzmi:

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

Algorytm. a programowanie -

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

Algorytm. Krótka historia algorytmów

Język programowania PASCAL

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

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

Programowanie strukturalne

Programowanie i techniki algorytmiczne

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

Wstęp do informatyki- wykład 2

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

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

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

Wstęp do informatyki

Temat 20. Techniki algorytmiczne

Technologia informacyjna Algorytm Janusz Uriasz

Instrukcja warunkowa i złoŝona.

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

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Podstawy Programowania Algorytmy i programowanie

Technologie informacyjne - wykład 12 -

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

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Wprowadzenie do algorytmiki

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

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

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

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

Programowanie w Turbo Pascal

Algorytmy i struktury danych

Algorytmy, reprezentacja algorytmów.

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

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

2.8. Algorytmy, schematy, programy

Informatyka 1. Wyrażenia i instrukcje, złożoność obliczeniowa

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

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

Algorytmy. Programowanie Proceduralne 1

Wykład I Cyfrowa reprezentacja informacji Algorytmy metody prezentacji i zapisu Tablice (wstęp) Rzut okiem na języki programowania

wagi cyfry pozycje

INSTRUKCJE PĘTLI, INSTRUKCJA WYBORU. Instrukcja pętli For to do

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

Podstawy algorytmiki Dariusz Piekarz

Procedury i funkcje. Przykład programu z procedurą. Definicja. Cechy procedury

Zapisywanie algorytmów w języku programowania

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

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Algorytmy. Programowanie Proceduralne 1

Poprawność semantyczna

POLITECHNIKA OPOLSKA

Specyfikacja zadania informatycznego nr 1

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

Podstawy Programowania C++

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

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

Schematy blokowe. Algorytmy Marek Pudełko

Wykład z Technologii Informacyjnych. Piotr Mika

Algorytmy od problemu do wyniku

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

Wprowadzenie komentarzy do programu

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Programowanie w języku Python. Grażyna Koba

WHILE (wyrażenie) instrukcja;

Wstęp do programowania

Luty 2001 Algorytmy (7) 2000/2001

Funkcje i instrukcje języka JavaScript

Podprogramy. Procedury

Algorytmika i pseudoprogramowanie

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

POLITECHNIKA OPOLSKA

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Podstawy i języki programowania

WHILE (wyrażenie) instrukcja;

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

KARTA PRACY UCZNIA. Klasa II

Algorytmy i struktury danych. wykład 2

Wstęp do programowania

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

Programowanie komputerów

ECDL Podstawy programowania Sylabus - wersja 1.0

Podstawy Informatyki. Programowanie. Metalurgia, I rok. Co to jest algorytm? Istotne cechy algorytmu

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Transkrypt:

Zespół Szkół nr 9 Im. Romualda Traugutta Ul. Jedności 9 75 401 Koszalin Katarzyna Pinczak Klasa II LB Koszalin 2006 1

CO NAZYWAMY ALGORYTMIKĄ?? podstawowy dział informatyki poświęcony poszukiwaniom, konstruowaniu i badaniom algorytmów, zwłaszcza w kontekście ich przydatności do rozwiązywania problemów za pomocą komputerów. Autorem nazwy dziedziny jest D. Haral (Spirit of Computing). CO TO JEST ALGORYTM?? inform. dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie kaŝdego zadania danego typu, mat. reguła przekształcania wyraŝeń matematycznych poprzez powtarzanie tych samych działań na kolejno otrzymywanych wynikach działań poprzednich. Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn Musy al- Chorezmi (z Chorezmu), który ok. 820 r n.e. opisał pozycyjny system kodowania dziesiętnego liczb i sztukę liczenia w tym systemie. W XII w. Europie przetłumaczono jego ksiąŝkę i rozpoczęto wykonywanie obliczeń metodą "pisemną". ALGORYTM ALGEBRAICZNY przepis (zbiór instrukcji przekształcania) przetwarzania tzw. danych wejściowych krok po kroku według wskazanej instrukcji (reguły) przetwarzania w celu uzyskania wyników przetwarzania, tzw. danych wyjściowych. Dane, które uzyskuje się w kolejnych krokach przetwarzania nazywane są danymi pośrednimi. ALGORYTM NIEALGEBRAICZNY ciąg prostych zdań lub pytań uporządkowanych w logicznej kolejności (od najbardziej ogólnych do najbardziej szczegółowych) w taki sposób aby trzeba było czytać tylko te zdania, które odnoszą się do danego przypadku. Algorytmy moŝna przedstawiać stosując: 1. opis słowny 2. schemat blokowy 3. umowny strukturalny język programowania 4. język programowania wysokiego poziomu np. Pascal 2

1.Opis słowny - polega na logicznym i zrozumiałym dla odbiorcy przedstawieniu kolejnych czynności (akcji), jakie naleŝy wykonać, aby osiągnąć zamierzony efekt. Przykładami takiego opisu algorytmu mogą być: przepis kulinarny, recepta wykonania leku, metoda rozwiązania zadania. 2.Schemat blokowy - czyli graficzna reprezentacja procedury lub programu sporządzana w celach poglądowych lub jako przedstawienie algorytmu zapisania w języku programowania. Wykorzystuje się w nim, min. następujące symbole (elementy, bloki): Początek sieci działań (schematu). W schemacie moŝe występować tylko jeden taki element. Blok wejścia-wyjścia - oznacza czynność wprowadzania danych i przyporządkowywania ich zmiennym uŝywanym w dalszej części programu albo czynność wyprowadzania wyników obliczeń. Napis wewnątrz określa rodzaj czynności (np. czytaj, pisz) oraz nazwy zmiennych i stałych. Element (blok) przetwarzania (obliczeniowy) oznacza wykonanie operacji ( lub zbioru operacji). Wewnątrz bloku określa się rodzaj czynności przetwarzania i ich argumenty. Blok decyzyjny (warunkowy, alternatywny, przełącznik) - oznacza element wyboru jednego z dwóch wariantów dalszego wykonywania programu. Wybór jest dokonywany na podstawie wyniku sprawdzenia warunku (będącego wyra- Ŝeniem logicznym) umieszczonego wewnątrz. Blok ten powinien zawsze posiadać dwa wyjścia opisane "T" (Tak, True) i "N" (Nie, False). Łącznik wewnątrzstronicowy - słuŝy do łączenia odrębnych części schematu znajdujących się na tym samym arkuszu. Ułatwia zachowanie przejrzystości schematu. Komplementarne elementy oznacza się tym samym symbolem. Zakończenie wykonywania czynności. 3

Rysunek poniŝej schemat blokowy parzenia herbaty Myślę, Ŝe to moŝna zrozumieć. Algorytm sprawdza, czy w czajniku jest woda, jeśli jej nie ma, to kieruje do kroku "Nalej wody". Następnie, kiedy woda na pewno jest w czajniku, naleŝy się upewnić, czy włączyłeś gaz. JeŜeli nie, to naleŝy to zrobić, a następnie postawić czajnik na palniku. Pozostaje czekać. Sprawdzamy, czy woda się zagotowała, jeśli nie, to czekamy dalej. JeŜeli woda się zagotowała, zalewamy herbatę. I koniec. ZAPIS JEDNEGO ALGORYTMU W TRZECH RÓśNYCH SPOSOBACH Najprostszym sposobem jest słowne wyraŝenie poszczególnych operacji w postaci punktów, np. tak: 1. otwórz plik z tekstem do odczytu 2. wyzeruj licznik znaków 3. wyzeruj licznik kropek 4. jeśli koniec pliku, to idź do punktu 9 5. wczytaj kolejny znak z pliku 6. jeśli znak jest kropką, zwiększ licznik kropek o 1 7. zwiększ licznik znaków 8. idź do punktu 4 9. jeśli licznik kropek wynosi zero, idź do punktu 11 10. wypisz (licznik znaków/(licznik kropek)) 11. STOP 4

To samo moŝna przedstawić w postaci graficznej, zwanej schematem blokowym lub z angielskiego flowchart. Rysunek po lewej stronie - schemat blokowy obliczania średniej liczby znaków w zdaniu. Schemat postępowania moŝna wreszcie zapisać w postaci tak zwanego pseudokodu, czyli imitacji "prawdziwego" języka programowania: Start twórz(plik); znaki:= 0; kropki:= 0; dopóki nie koniec_pliku(plik) start czytaj (plik,znak) jeŝeli znak = '.' kropki := kropki+1; znaki := znaki+1; stop; wypisz(znaki/kropki); stop. 5

KaŜda z powyŝszych metod ma swoje wady i zalety. Zapis poszczególnych kroków w postaci punktów jest prosty, ale przy bardziej złoŝonych zadaniach staje się mało czytelny. Zapis w postaci schematu blokowego jest bardzo czytelny, ale pracochłonny w wykonaniu. Wreszcie zapis w pseudokodzie ma tę zaletę, Ŝe po przetłumaczeniu na język angielski staje się praktycznie gotowym tekstem programu. Pętla ciąg instrukcji, z których ostatnia jest instrukcją skoku do pierwszej instrukcji ciągu. Pętla moŝe być powtarzana dowolną,skończoną liczbę razy, co jest kontrolowane za pomocą zmieniającego się wewnątrz niej licznika lub zaleŝy od badanego w pętli warunku. W szczególnych przypadkach lub wskutek błędu pętla moŝe być powtarzana nieustannie. W językach wysokiego poziomu uŝywa się trzech rodzajów pętli o tradycyjnie przyjętych nazwach: for (pętla dla ) while (pętla dopóki ) repeat albo do czyli pętla powtarzaj, inaczej wykonuj PoniŜej jest pokazana przykładowa pętla w języku Pascal: var counter: integer; begin for x:=1 to 10 do writeln('linia numer ',x); end. Rysunek z lewej strony diagram pętli for typu C (C jest językiem programowania stworzonym na początku lat siedemdziesiątych przez Dennisa Ritchie'ego do programowania systemów operacyjnych i innych zadań niskiego poziomu.) 6

Istnieją zasadniczo dwa typy algorytmów rozwiązujących problem obliczenia silni liczby N. 1. Algorytm rekurencyjny algorytm, który wywołuje sam siebie do rozwiązania tego samego problemu. Wykorzystuje się zaleŝność: N!=(N-1)!*N (dla N>1). 2. Algorytm cykliczny (iteracyjny) - to powtarzanie (najczęściej wielokrotne) tej samej instrukcji. Przedstawiony algorytm (cykliczny) oblicza iloczyn kolejnych liczb naturalnych, aŝ do osiągnięcia przez automatycznie zmieniany czynnik wartości N, zgodnie z zaleŝnością: N! = 1*2*3*4*...*N 7

W matematyce funkcję n! (czyt. n-silnia) określoną na zbiorze liczb naturalnych definiuje się rekurencyjnie: { 1, gdy n=0 n! = { { n*(n-1)!, gdy n>0 Dla n=5: 5! = 5*4! = 5*4*3! = 5*4*3*2! = 5*4*3*2*1*0! = 5*4*3*2*1*1 = 120. Gdyby nie wartość 0!=1 moŝna by przyjąć, Ŝe silnia jest iloczynem liczb naturalnych nie większych od n. Na szczęście obliczając wartość funkcji podobnie jak wartość potęgi za pomocą pętli For moŝna o tym zapomnieć: Function Silnia(N : Byte) : LongInt; Var I : Byte; Wynik : LongInt; Begin Wynik:=1; For I:=2 To N Do Wynik:=Wynik*I; Silnia:=Wynik; End; Ze względu na rekurencyjną definicję matematyczną nie wypada nie znać algorytmu rekurencyjnego wyznaczającego wartość funkcji w sposób wynikający z definicji: aby obliczyć n! musisz najpierw obliczyć (n-1)!: Function Silnia(N : Byte) : LongInt; Begin If N=0 Then Silnia:=1 Else Silnia:=N*Silnia(N-1); End; Definicja ta jest dokładnym powieleniem definicji matematycznej - stąd warunek N=0, który z powodzeniem moŝna zastąpić nierównością N<2 Stosując prosty przykład przedstawię uproszczone zasady tworzenia algorytmów. Na kolejnych stronach zostały przedstawione kolejne etapy rozbudowy algorytmu obliczania pola prostokąta. Rozpoczynając od struktury ogólnej poprzez zwiększanie poziomu szczegółowości przechodzimy do algorytmu stosunkowo rozbudowanego. 8

Obliczenie pola prostokąta jest dla kaŝdego bardzo prostym zadaniem. Jest oczywiste, Ŝe pole prostokąta równe jest iloczynowi długości jego boków, czyli P = ab Na rysunku z prawej strony przedstawiono zbiór (sekwencję) prostych czynności, jakie naleŝy wykonać, w określonej kolejności, aby obliczyć pole prostokąta. Jest to tzw. sieć działań inaczej schemat blokowy rozwiązania problemu, graficzna forma prezentacji algorytmu. ALGORYTM NA OBLICZENIE POLA PROSTOKĄTA ZAPISANY UMOWNYM JĘZYKIEM PROGRAMOWANIA Na rysunku nr 1 przedstawiono schemat blokowy z uproszczonym opisem poszczególnych bloków. Dla zwiększenia czytelności i przejrzystości schematów, zazwyczaj stosowane są takie opisy. Związane są one z tzw. metajęzykiem, czyli umownym językiem programowania. PoniŜej przedstawiono ten algorytm zapisany w tym języku. POCZĄTEK Czytaj(a,b) P := a*b Pisz(P) KONIEC Symbol := oznacza czynność przypisania, np. w zapisie P:=a*b zmiennej P zostaje przypisana wartość iloczynu a*b (w zapisie szkolnym odpowiada to wyraŝeniu P = ab). Rys. 1 9

ALGORYTM NA OBLICZANIE POLA PROSTOKĄTA NAPISANY W JĘZYKU PASCAL Algorytm rozwiązuje ten sam problem, lecz pobieranie danych wejściowych przedstawiono bardziej szczegółowo Przykład przedstawienia tego algorytmu w języku Pascal PROGRAM Pole2; Var a,b, P : Integer; BEGIN Write (' Podaj dlugość boku a '); Readln(a); Write (' Podaj dlugość boku b '); Readln(b); P:=a*b; Write(P) END. Rys. 2 ALGORYTM NA OBLICZNIE POLA PROSTOKĄTA W JĘZYKU PASCAL SPOSÓB DRUGI Algorytm rozwiązuje ten sam problem, lecz realizuje takŝe kontrolę pobieranych danych wejściowych. Sprawdzanie danych wejściowych wykonują bloki decyzyjne. Algorytm został przedstawiony na następnej stronie. 10

Drugi przykład w języku Pascal PROGRAM Pole3; Var a,b, P : Integer; BEGIN Write (' Podaj dlugość boku a '); Readln(a); If a <= 0 then Begin Writeln('Niewlaściwa długość boku a '); Write (' Podaj dlugość boku a '); Ciąg dalszy algorytmu Readln(a); End; Write (' Podaj dlugość boku b '); Readln(b); If b<=0 then Begin Writeln ('Niewłaściwa długość boku b '); Write (' Podaj dlugość boku b '); Readln(b); End; P:=a*b; Write(P) END. Rys.3 11

RozróŜniamy następujące rodzaje algorytmów: Algorytm aproksymacyjny Algorytm bankiera Algorytm czekaj albo giń Algorytm Dijkstry Algorytm drugiej szansy Algorytm elekcji Algorytm Euklidesa Algorytm Floyda Warshalla Algorytm głosowania Algorytm Grahama Algorytm Huffmana Algorytm IDEA Algorytm kryptograficzny Algorytm licytowany Algorytm LRU Algorytm LUC Algorytm MDS Algorytm niewywłaszczający Algorytm omiatający Algorytm o optymalnym czasie Algorytm OPT Algorytm piekarniany Algorytm planowania Algorytm plecakowy Algorytm probabilistyczny Algorytm przepisywania Algorytm przydziału ramek Algorytm Rabina Karpa Algorytm rekurencyjny Algorytm rosyjskich wieśniaków Algorytm rotacyjny Algorytm rozproszony Algorytm równoległy Algorytm SHA Algorytm SJF Algorytm SKIPJACK Algorytm strusia Algorytm sympleks Algorytm tyrana Algorytm wielomianowy Algorytm windy Algorytm wywłaszczający 12

Algorytm z nawrotami Algorytm zachłanny Algorytm zastępowania stron Algorytm zrań albo czekaj Algorytm zegarowy Algorytmy grafowe Algorytmy Kruskala i Prima Algorytmy planowania dysku Algorytmy przydziału pamięci Algorytmy przydziału procesora Algorytmy scentralizowane Algorytmy teorioliczbowe Literatura: Szkolny słownik, komputer i internet, wydawnictwo europa www.wikipedia.pl Turbo Pascal. Programowanie. Tomasz M. Sadowisk, wydawnictwo Helion http://www.lo2.opole.pl/~dragosystems/algorytm.htm http://algorytmikaw.maturalny.org/ 13