Algorytmy komputerowe. dr inŝ. Jarosław Forenc



Podobne dokumenty
Algorytmy komputerowe. dr inż. Jarosław Forenc

Algorytm. a programowanie -

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Struktura i funkcjonowanie komputera struktura połączeń, magistrala, DMA systemy pamięci komputerowych hierarchia pamięci, pamięć podręczna

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1

Definicje. Algorytm to:

1 Wprowadzenie do algorytmiki

Informatyka 1. Wykład nr 7 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNI Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

METODY OPISU ALGORYTMÓW KOMPUTEROWYCH

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

MATERIAŁY POMOCNICZE NR 1 DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1. Informacje podstawowe:

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

Algorytm. Krótka historia algorytmów

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

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

POLITECHNIKA OPOLSKA

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

Definicja algorytmu brzmi:

Algorytm. Algorytmy Marek Pudełko

Algorytmy. Programowanie Proceduralne 1

INFORMATYKA. Algorytmy.

Wprowadzenie do algorytmiki

Podstawy i języki programowania

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

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

Algorytmy i złożoność obliczeniowa. Wojciech Horzelski

Technologie informacyjne - wykład 12 -

POLITECHNIKA OPOLSKA

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

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

Algorytmy. Programowanie Proceduralne 1

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

Strategia "dziel i zwyciężaj"

Wykład z Technologii Informacyjnych. Piotr Mika

Metodyki i techniki programowania

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

Sortowanie danych. Jolanta Bachan. Podstawy programowania

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

2.8. Algorytmy, schematy, programy

Algorytm. Krótka historia algorytmów

Metodyki i techniki programowania

Wstęp do informatyki- wykład 2

Podstawy Programowania Algorytmy i programowanie

Algorytmy i struktury danych. wykład 2

Algorytmy, reprezentacja algorytmów.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Informatyka 1. Wykład nr 6 ( ) Plan wykładu nr 6. Politechnika Białostocka. - Wydział Elektryczny. Architektura von Neumanna

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

Wstęp do Informatyki

Algorytmika i pseudoprogramowanie

Programowanie w VB Proste algorytmy sortowania

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

Zapis algorytmów: schematy blokowe i pseudokod 1

Wstęp do informatyki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

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

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

Schematy blokowe. Algorytmy Marek Pudełko

Algorytmy i struktury danych

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Algorytmy i schematy blokowe

dr inż. Jarosław Forenc

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

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

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

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

Podstawy Informatyki. Algorytmy i ich poprawność

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

Zadanie 1. Potęgi (14 pkt)

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

Sterowniki Programowalne (SP)

Podstawy programowania. Podstawy C# Przykłady algorytmów

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

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

ALGORYTMY I PROGRAMY

Zaawansowane algorytmy i struktury danych

WSTĘP DO INFORMATYKI WPROWADZENIE DO ALGORYTMIKI

dr inż. Jarosław Forenc

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

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

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

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

Poprawność semantyczna

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

Podstawy Programowania

Podstawy programowania

Wstęp do programowania

Język ludzki kod maszynowy

Algorytmy od problemu do wyniku

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Programowanie, algorytmy i struktury danych

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

Sortowanie - wybrane algorytmy

Matematyczne Podstawy Informatyki

Algorytmy i Struktury Danych.

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

dr inż. Jarosław Forenc

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

Transkrypt:

Rok akademicki 2009/2010, Wykład nr 8 2/24 Plan wykładu nr 8 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2009/2010 Algorytmy komputerowe definicja algorytmu komputerowego sposoby opisu algorytmów klasyfikacje algorytmów Wykład nr 8 (29.05.2010) dr inż. Jarosław Forenc Rok akademicki 2009/2010, Wykład nr 8 3/24 Rok akademicki 2009/2010, Wykład nr 8 4/24 Algorytm - definicje Algorytmy Definicja 1 Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania Słowo algorytm pochodzi od nazwiska Muhammada ibn-musy al-chuwarizmiego (po łacinie pisanego jako Algorismus), matematyka perskiego z IX wieku Definicja 2 Metoda rozwiązania zadania Definicja 3 Ściśle określona procedura obliczeniowa, która dla właściwych danych wejściowych zwraca żądane dane wyjściowe zwane wynikiem działania algorytmu Badaniem algorytmów zajmuje się algorytmika Algorytm może zostać zaimplementowany w postaci programu komputerowego Przetłumaczenie algorytmu na wybrany język programowania nazywane jest też kodowaniem algorytmu Ten sam algorytm może być zaimplementowany (zakodowany) w różny sposób przy użyciu różnych języków programowania

Rok akademicki 2009/2010, Wykład nr 8 5/24 Rok akademicki 2009/2010, Wykład nr 8 6/24 Podstawowe cechy algorytmu Algorytm powinien: Posiadać dane wejściowe (w ilości większej lub równej zeru) pochodzące z dobrze zdefiniowanego zbioru Zwracać pewien wynik Być precyzyjnie zdefiniowany (każdy krok algorytmu musi być jednoznacznie określony) Być zawsze poprawny (dla każdego z założonego dopuszczalnego zestawu danych wejściowych) Sposoby opisu algorytmów 1. Opis słowny algorytmu (w języku naturalnym) 2. Opis w punktach (lista kroków) 3. Opis w postaci schematu blokowego 4. Z zastosowaniem pseudokodu, czyli niezbyt formalnej odmiany języka programowania 5. W wybranym języku programowania Zawsze kończyć się po skończonej liczbie kroków (powinna istnieć poprawnie działająca reguła stopu algorytmu) Być efektywny (jak najkrótszy czas wykonania i jak najmniejsze zapotrzebowanie na pamięć) Rok akademicki 2009/2010, Wykład nr 8 7/24 Rok akademicki 2009/2010, Wykład nr 8 8/24 Opis słowny algorytmu Lista kroków Polega na podaniu kolejnych czynności, które należy wykonać, aby otrzymać oczekiwany efekt końcowy Lista kroków jest to uporządkowany opis wszystkich czynności, jakie należy wykonać podczas realizacji algorytmu Przypomina przepis kulinarny z książki kucharskiej lub instrukcję obsługi urządzenia, np. Algorytm: Tortilla ( Podróże kulinarne R. Makłowicza) Dane wejściowe: 0,5 kg ziemniaków, 100 g kiełbasy Chorizo, 8 jajek Dane wyjściowe: gotowa Tortilla Opis algorytmu: Ziemniaki obrać i pokroić w plasterki. Kiełbasę pokroić w plasterki. Ziemniaki wrzucić na gorącą oliwę na patelni i przyrumienić z obu stron. Kiełbasę wrzucić na gorącą oliwę na patelni i przyrumienić z obu stron. Ubić jajka i dodać do połączonych ziemniaków i kiełbasy. Dodać sól i pieprz. Usmażyć z obu stron wielki omlet nadziewany chipsami ziemniaczanymi z kiełbaską. Krok jest to pojedyncza czynność realizowana w algorytmie Kroki w algorytmie są numerowane, operacje wykonywane są zgodnie z rosnącą numeracją kroków Jedynym odstępstwem od powyższej reguły są operacje skoku (warunkowe lub bezwarunkowe), w których jawnie określa się numer kolejnego kroku Przykład (instrukcja otwierania wózka-specerówki): Krok 1: Krok 2: Krok 3: Zwolnij element blokujący wózek Rozkładaj wózek w kierunku kółek Naciskając nogą dolny element blokujący aż do zatrzaśnięcia, rozłóż wózek do pozycji przewozowej

Rok akademicki 2009/2010, Wykład nr 8 9/24 Rok akademicki 2009/2010, Wykład nr 8 10/24 Schematy blokowe Schematy blokowe Schemat blokowy zawiera plan algorytmu przedstawiony w postaci graficznej struktury elementów zwanych blokami Każdy blok zawiera informację o operacji, która ma być w nim wykonana Pomiędzy blokami umieszczone są linie przepływu (strzałki) określające kolejność wykonywania bloków algorytmu Zależnie od typu wykonywanej operacji stosowane są różne kształty bloków Podstawowe symbole stosowane na schematach blokowych: STOP blok startowy, początek algorytmu wskazuje miejsce rozpoczęcia algorytmu może występować tylko jeden raz blok końcowy, koniec algorytmu wskazuje miejsce zakończenia algorytmu musi występować przynajmniej jeden raz Podstawowe symbole stosowane na schematach blokowych: linia przepływu (połączenie) występuje w postaci linii zakończonej strzałką określa kierunek przemieszczania się po schemacie blok wykonawczy, blok funkcyjny zawiera polecenie (elementarną instrukcję) instrukcją może być podstawienie, operacja arytmetyczna, wprowadzenie danych lub wyprowadzenie wyników Rok akademicki 2009/2010, Wykład nr 8 11/24 Rok akademicki 2009/2010, Wykład nr 8 12/24 Schematy blokowe Pseudokod Podstawowe symbole stosowane na schematach blokowych: blok warunkowy (decyzyjny, porównujący) sprawdza umieszczony w nim warunek i dokonuje wyboru tylko jednej drogi wyjściowej połączenia wychodzące z bloku: - T lub TAK - gdy warunek jest prawdziwy - N lub NIE - gdy warunek nie jest prawdziwy Czasami wprowadzanie i wyprowadzanie danych oznacza się dodatkowym blokiem wejścia-wyjścia Pseudokod (pseudojęzyk) - jest to uproszczona wersja języka programowania Symbole geometryczne występujące na schematach blokowych zastępowane są zdaniami w języku ojczystym Często pojawiają się w nim zwroty pochodzące z języków programowania Zapis w pseudokodzie może być łatwo przetłumaczony na wybrany język programowania blok wejścia-wyjścia poprzez ten blok wprowadzane są dane i wyprowadzane wyniki

Rok akademicki 2009/2010, Wykład nr 8 13/24 Rok akademicki 2009/2010, Wykład nr 8 14/24 Opis w języku programowania Zapis programu w konkretnym języku programowania Najczęściej stosowane języki to Pascal i C Lista kroków: Dane wejściowe: niezerowe liczby naturalne a i b Dane wyjściowe: NWD(a,b) Kolejne kroki: 1. Czytaj liczby a i b 2. Dopóki a i b są większe od zera, powtarzaj krok 3, a następnie przejdź do kroku 4 3. Jeśli a jest większe od b, to weź za a resztę z dzielenia a przez b, w przeciwnym razie weź za b resztę z dzielenia b przez a 4. Przyjmij jako największy wspólny dzielnik tę z liczb a i b, która pozostała większa od zera 5. Drukuj NWD(a,b) Rok akademicki 2009/2010, Wykład nr 8 15/24 Rok akademicki 2009/2010, Wykład nr 8 16/24 Przykład: Schemat blokowy: NWD(1675,3752)? a b Dzielenie większej liczby przez mniejszą Zamiana 1675 3752 b/a 3752/1675 2 402 b 402 1675 402 a/b 1675/402 4 67 a 67 67 402 b/a 402/67 6 0 b 0 67 0 KONIEC NWD(1675,3752) 67

Rok akademicki 2009/2010, Wykład nr 8 17/24 Rok akademicki 2009/2010, Wykład nr 8 18/24 Pseudokod: Język C: NWD(a,b) while a>0 i b>0 do if a>b then a a mod b else b b mod a if a>0 then return a else return b int NWD(int a, int b) { while (a>0 && b>0) if (a>b) a a % b; else b b % a; if (a>0) return a; else return b; } Rok akademicki 2009/2010, Wykład nr 8 19/24 Rok akademicki 2009/2010, Wykład nr 8 20/24 Zamiana zapisu liczby naturalnej l danej w systemie dziesiętnym, na zapis w systemie pozycyjnym o podstawie p Lista kroków: Dane wejściowe: liczba l w systemie dziesiętnym, podstawa systemu p Dane wyjściowe: zapis liczby l w systemie o podstawie p Kolejne kroki: 1. Czytaj liczby l i p 2. Dopóki l > 0 powtarzaj krok 3 3. Wykonaj dzielenie całkowite liczby l przez p, resztę z dzielenia zapamiętaj jako kolejną cyfrę przedstawienia liczby l w nowym systemie pozycyjnym 4. Drukuj cyfry przedstawienia liczby l w nowym systemie pozycyjnym w odwrotnej kolejności niż były zapamiętywane Zamiana zapisu liczby naturalnej l danej w systemie dziesiętnym, na zapis w systemie pozycyjnym o podstawie p Przykład: 1751 (10)? (6) 1751 (10) 12035 (6 ) 1751/ 6 291/ 6 48 / 6 8 / 6 1/ 6 291 48 8 1 0 5 3 0 2 1 kolejność odczytywania cyfr liczby w systemie szóstkowym

Rok akademicki 2009/2010, Wykład nr 8 21/24 Rok akademicki 2009/2010, Wykład nr 8 22/24 Klasyfikacje algorytmów Klasyfikacje algorytmów Paradygmaty tworzenia programów komputerowych: strategia dziel i zwyciężaj programowanie dynamiczne algorytmy zachłanne programowanie liniowe algorytmy siłowe (brute force) algorytmy probabilistyczne heurystyka Techniki implementacji algorytmów komputerowych: proceduralność obiektowość praca sekwencyjna praca wielowątkowa praca równoległa rekurencja Rok akademicki 2009/2010, Wykład nr 8 23/24 Rok akademicki 2009/2010, Wykład nr 8 24/24 Strategia dziel i zwyciężaj Koniec wykładu nr 8 Strategia dziel i zwyciężaj (ang. divide and conquer) jest strategią konstruowania algorytmów, jedną z najefektywniejszych metod w informatyce W strategii tej zazwyczaj rekurencyjnie dzielimy problem na dwa lub więcej mniejszych problemów tego samego (lub podobnego) typu tak długo, aż stanie się on wystarczająco prosty do bezpośredniego rozwiązania Rozwiązania otrzymane dla mniejszych podproblemów są scalane w celu uzyskania rozwiązania całego zadania Przykłady zastosowań: sortowanie szybkie (quicksort) wyszukiwanie binarne - sprawdzenie czy element znajduje się w uporządkowanej tablicy, jeśli tak, to zwraca jego indeks Dziękuję za uwagę!