Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.: http://www.algorytm.org/index.php?option=com_frontpage&...
Algorytmy <ul><li>Czym różni się komputer od kalkulatora? </li></ul>
Przepis Składniki Czynności Przypomnienie
Algorytmy - geneza Algorytm jest to precyzyjny opis sposobu rozwiązania określonego zadania lub osiągnięcia jakiegoś celu....
Algorytmy - geneza <ul><li>U podstaw informatyki leżała arytmetyka.  </li></ul><ul><li>U podstaw algorytmiki logika matema...
Algorytmy - geneza <ul><li>Najstarszym znanym algorytmem jest algorytm Euklidesa który powstał w  IV wiek p.n.e </li></ul>...
Algorytmy - geneza <ul><li>Dla liczb 8 i 32 </li></ul><ul><li>32 – 8, 8  -> 24, 8 </li></ul><ul><li>24 – 8, 8 -> 16, 8 </l...
Algorytmy - geneza <ul><li>Dla liczb 17 i 4 </li></ul><ul><li>17-4, 4  -> 13,4 </li></ul><ul><li>13-4, 4  -> 9, 4 </li></u...
Algorytmy - geneza <ul><li>Leibniz w 1680 roku pisał  o rozstrzyganiu dysput naukowych za pomocą rachunku - wyobrażał sobi...
Algorytmy - geneza <ul><li>W XVIII i XIX w. popularnością cieszyły się  marionetki  i  androidy,  cuda mechaniki, piszące,...
Człowiek a logika <ul><li>Niestety logika nie jest naturalnym sposobem rozumowania człowieka… </li></ul><ul><li>Jest tzw. ...
Wracamy do informatyki… <ul><li>Zainteresowania informatyki dotyczą rozwiązywania  zada ń  algorytmicznych , czyli zadań, ...
Definicja w informatyce <ul><li>Algorytm to  kompletny ,  jednoznaczny  przepis przetworzenia w  skończonym czasie  pewnyc...
<ul><li>Algorytm musi być  kompletny : </li></ul><ul><li>Musi uwzględniać wszystkie możliwe przypadki, które mogą pojawić ...
<ul><li>Algorytm musi być s kończony: </li></ul><ul><li>Musi zapewnić osiągnięcie rozwiązania w skończonej liczbie kroków ...
<ul><li>Algorytm musi być  jednoznaczny : </li></ul><ul><li>Dla tych samych danych wejściowych algorytm musi zawsze dawać ...
<ul><li>Dla rozruszania umysłów – łamigłówka algorytmiczna: </li></ul><ul><li>A ma wyznaczyć wiek trójki dzieci kolegi B <...
Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
<ul><li>Większość zadań da się zalgorytmizować, czyli znaleźć algorytm prowadzący do rozwiązania. </li></ul><ul><li>Istnie...
<ul><li>Niektóre problemy dają się rozwiązać  w sposób ścisły. Dla innych  nie istnieje , lub  trudno jest znaleźć  ścisłe...
<ul><li>Zapisujemy algorytmy </li></ul>
Reprezentacja algorytmów <ul><li>Algorytmy powinny być tak przedstawiane, aby było możliwe ich jednoznaczne odczytanie i z...
Reprezentacja algorytmów <ul><li>lista kroków  - najbardziej naturalny sposób zapisu algorytmu, </li></ul><ul><li>graficzn...
Reprezentacja algorytmów <ul><li>Przykład listy kroków </li></ul><ul><ul><li>1. Wlać do garnka zimną wodę. </li></ul></ul>...
Reprezentacja algorytmów <ul><li>Istnieją jednak sytuacje, w których dalsze postępowanie w algorytmie zależy od spełnienia...
Reprezentacja algorytmów <ul><li>Działa według jednego z dwóch przedstawionych schematów: </li></ul><ul><li>Jeśli spełnion...
<ul><li>1. Podnieś słuchawkę. </li></ul><ul><li>2. Wybierz cyfrę 6. </li></ul><ul><li>3. Wybierz cyfrę 1. </li></ul><ul><l...
Reprezentacja algorytmów <ul><li>Wielokrotne powtarzanie niektórych instrukcji jest cechą charakterystyczną wielu algorytm...
<ul><li>1. Podnieś słuchawkę. </li></ul><ul><li>2. Wybierz cyfrę 6. </li></ul><ul><li>3. Wybierz cyfrę 1. </li></ul><ul><l...
<ul><li>1.Czy słuchawka jest odłożona ? </li></ul><ul><li>A.Jeśli tak, to przejdź do kroku 2. </li></ul><ul><li>B.Jeśli ni...
Schematy blokowe <ul><li>Algorytmy wygodnie jest zapisywać  w postaci diagramów   czy schematów blokowych. </li></ul><ul><...
Schematy blokowe <ul><li>Schematy blokowe są tzw.  metajęzykiem -  jest to  język ogólny , służy do opisywania algorytmów ...
Schematy blokowe <ul><li>Ta figura oznacza początek lub koniec algorytmu.  W każdym algorytmie musi się znaleźć dokładnie ...
Proces <ul><li>Jest to figura oznaczająca  proces . W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia.  </li>...
Warunek <ul><li>Romb symbolizuje blok decyzyjny. Umieszcza się w nim warunek (np. &quot;x>2&quot;). Z dwóch wierzchołków r...
Odczyt / zapis <ul><li>Równoległobok oznacza odczyt lub zapis danych. Oznacza więc tzw. operacje wejścia/wyjścia (np. „ Dr...
Funkcje, procedury <ul><li>Oznacza proces, który został wcześniej zdefiniowany. Możemy się więc do niego odwołać. W ten sp...
Łączniki <ul><li>Łącznik, który oznacza punkt do którego prowadzi wiele dróg, które „schodzą” się w tym miejscu. </li></ul>
Przykład 1 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf <ul><li>Opracuj algo...
Przykład 1 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
Przykład 2 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
Przykład 3 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
Przykład 4 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
Przykład 5 – algorytm Euklidesa Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
A jak wygląda nasz przykład z umawianiem się na randkę…?
Pseudokod <ul><li>Czasem algorytmy zapisuje się w języku symbolicznym służącym jedynie do zapisu algorytmów, tzw.  pseudok...
Klasyfikacja algorytmów Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
Klasyfikacja algorytmów Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
Klasyfikacja algorytmów Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
Klasyfikacja algorytmów Algorytmy rekurencyjne Algorytmy sekwencyjne Co to jest rekurencja?
Rekurencja Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Rekurencja, rekursja...
Rekurencja
Rekurencja Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Ważne jest, aby kole...
Rekurencja Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Definicja rekurencyj...
Silnia wczytaj n; n = 0 zwróć n*(n-1)! zwróć 1 POWRÓT START TAK NIE
Przykład – rekurencyjne obliczanie silni Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algo...
Wieże Hanoi Problem: Przełożyć krążki, przenosząc po jednym,  z jednego „patyka” na drugi  z zachowaniem docelowej kolejno...
Wieże Hanoi Rozwiązanie sprowadza się do odpowiedniego podziału problemu w sposób rekurencyjny.
Ciąg Fibonacciego F = 1 + 1 + 2 + 3 + 5 + 8 + 13… F(5)=  F(4) + F(3) = F(3) + F(2) + F(2) + F(1) =  F(2) + F(1) + F(1) + F...
Podsumowanie, wnioski ?
Upcoming SlideShare
Loading in …5
×

Wprowadzenie do algorytmow.

2,336 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,336
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Faktycznie wymyslił go Eudoksos z Knidos , a Euklides zawarl w swojej ksiazce.
  • Faktycznie wymyslił go Eudoksos z Knidos , a Euklides zawarl w swojej ksiazce.
  • Faktycznie wymyslił go Eudoksos z Knidos , a Euklides zawarl w swojej ksiazce.
  • Zdarzali się też oszuści, którzy ukrywali ludzi-operatorów, sterujących ruchami „robota”.
  • Heurystyka – w logice umiejętność wykrywania nowych faktów oraz znajdywania związków między faktami, zwłaszcza z wykorzystaniem hipotez. Na podstawie istniejącej wiedzy stawia się hipotezy, których nie trzeba udowadniać. W informatyce metoda znajdowania rozwiązań, dla której nie ma gwarancji znalezienia rozwiązania optymalnego, a często nawet prawidłowego. Rozwiązań tych używa się np. wtedy, gdy pełny algorytm jest z przyczyn technicznych zbyt kosztowny, lub gdy jest nieznany (np. przy przewidywaniu pogody lub przy wykrywaniu niektórych zagrożeń komputerowych, takich jak wirusy lub robaki ). Metody używa się też często do znajdowania rozwiązań przybliżonych, na podstawie których później wylicza się ostateczny rezultat pełnym algorytmem . To ostatnie zastosowanie szczególnie dotyczy przypadków, gdy heurystyka jest wykorzystywana do nakierowywania pełnego algorytmu ku optymalnemu rozwiązaniu, aby zmniejszyć czas działania programu w typowym przypadku bez poświęcania jakości rozwiązania (np. algorytm A* ).
  • Wprowadzenie do algorytmow.

    1. 1. Algorytmy, programy Przy opracowywaniu wykładu wykorzystano m.in.: http://www.algorytm.org/index.php?option=com_frontpage&Itemid=1 Wstęp do informatyki (materiały Wyższej Szkoły Informatyki) J. Sikorski
    2. 2. Algorytmy <ul><li>Czym różni się komputer od kalkulatora? </li></ul>
    3. 3. Przepis Składniki Czynności Przypomnienie
    4. 4. Algorytmy - geneza Algorytm jest to precyzyjny opis sposobu rozwiązania określonego zadania lub osiągnięcia jakiegoś celu.. Słowo &quot;algorytm&quot; pochodzi od starego angielskiego słowa algorism , oznaczającego wykonywanie działań przy pomocy liczb arabskich. Słowo to pochodzi od nazwiska Muhammed ibn Musa Alchwarizmi ( أبو عبد الله محمد بن موسى الخوارزمي ) matematyka perskiego z IX wieku. Upowszechnił system dziesiętny i stosowanie symbolu 0 (zero) http://pl.wikipedia.org/wiki/Algorytm#Algorytmy_komputerowe
    5. 5. Algorytmy - geneza <ul><li>U podstaw informatyki leżała arytmetyka. </li></ul><ul><li>U podstaw algorytmiki logika matematyczna… </li></ul>
    6. 6. Algorytmy - geneza <ul><li>Najstarszym znanym algorytmem jest algorytm Euklidesa który powstał w IV wiek p.n.e </li></ul><ul><li>1. Dane są dwie niezerowe liczby naturalne a i b . </li></ul><ul><li>2. Dopóki liczby nie są równe powtarzaj krok 3, </li></ul><ul><li>w przeciwnym razie przejdź do kroku 4. </li></ul><ul><li>3. Od większej liczby odejmij mniejszą i tę większą zastąp otrzymaną różnicą. </li></ul><ul><li>4. Wyprowadź wynik: NWD (największy wspólny dzielnik) jest równy pierwszej liczbie. </li></ul>
    7. 7. Algorytmy - geneza <ul><li>Dla liczb 8 i 32 </li></ul><ul><li>32 – 8, 8 -> 24, 8 </li></ul><ul><li>24 – 8, 8 -> 16, 8 </li></ul><ul><li>16 – 8, 8 -> 8, 8 -> 8 </li></ul>
    8. 8. Algorytmy - geneza <ul><li>Dla liczb 17 i 4 </li></ul><ul><li>17-4, 4 -> 13,4 </li></ul><ul><li>13-4, 4 -> 9, 4 </li></ul><ul><li>9-4, 4 -> 5, 4 </li></ul><ul><li>5-4, 4 -> 1, 4 </li></ul><ul><li>1, 4-1 -> 1, 3 </li></ul><ul><li>1, 3-1 -> 1, 2 </li></ul><ul><li>1, 2-1 -> 1, 1 -> 1 </li></ul>
    9. 9. Algorytmy - geneza <ul><li>Leibniz w 1680 roku pisał o rozstrzyganiu dysput naukowych za pomocą rachunku - wyobrażał sobie, że filozofowie sprawy sporne zamiast drogą dyskusji rozstrzygać powinni prowadząc obliczenia. </li></ul><ul><li>Jego główną ideą było stworzenie języka, w którym wszystkie stwierdzenia zredukowane będą do stwierdzeń ściśle prawdziwych lub fałszywych, pozwalając na rozumowanie w oparciu o logikę formalną. </li></ul>Znów jestem na WSB?
    10. 10. Algorytmy - geneza <ul><li>W XVIII i XIX w. popularnością cieszyły się marionetki i androidy, cuda mechaniki, piszące, rysujące i grające na pianinie lalki, automaty do gry w szachy i warcaby. </li></ul><ul><li>Urządzenia te sterowane były skomplikowanymi mechanizmami zegarowymi. Wymienne metalowe płytki, podobnie jak w pianoli wymienne wałki z zapisaną sekwencją naciskania klawiszy, pozwalały na wykonywanie różnych czynności. Płytki te zawierają algorytm ruchów androida. </li></ul><ul><li>Szczególnie piękne, działające do dzisiejszych czasów, budowali szwajcarscy rzemieślnicy. Stworzony przez nich „Skryba” potrafi pisać (gęsim piórem), „Rysownik” robi portrety kilku postaci, a „Muzyk” gra na instrumencie poruszając przy tym głową i zmieniając wyraz twarzy. </li></ul>Tan android był fałszywy.
    11. 11. Człowiek a logika <ul><li>Niestety logika nie jest naturalnym sposobem rozumowania człowieka… </li></ul><ul><li>Jest tzw. artefaktem kulturowym , związanym tylko z kulturami, w których rozwinęła się zdolność czytania i pisania. </li></ul>
    12. 12. Wracamy do informatyki… <ul><li>Zainteresowania informatyki dotyczą rozwiązywania zada ń algorytmicznych , czyli zadań, dla których można znaleźć formalne sposoby postępowania , prowadzące do ich rozwiązania. </li></ul><ul><li>A l g o r y t m i k a </li></ul><ul><li>jest podstawowym działem informatyki zajmującym się poszukiwaniem, konstruowaniem i badaniem własności algorytmów w kontekście ich przydatności do rozwiązywania problemów za pomocą komputerów. </li></ul>
    13. 13. Definicja w informatyce <ul><li>Algorytm to kompletny , jednoznaczny przepis przetworzenia w skończonym czasie pewnych danych wejściowych do pewnych danych wynikowych. </li></ul><ul><li>Dla identycznego zestawu danych początkowych, algorytm zdefiniowany klasycznie zawsze zwróci identyczny wynik. </li></ul><ul><li>Algorytm rozwiązuje określoną klasę problemów. </li></ul>
    14. 14. <ul><li>Algorytm musi być kompletny : </li></ul><ul><li>Musi uwzględniać wszystkie możliwe przypadki, które mogą pojawić się podczas jego realizacji. </li></ul><ul><li>Uwzględnienie rożnych przypadków oznacza zapewnienie realizacji algorytmu, zgodnie z przewidzianymi na taką okoliczność instrukcjami, czyli przewiduje: </li></ul><ul><li>przewidzenie wystąpienia błędów numerycznych i logicznych </li></ul><ul><li>opracowanie systemu reakcji (komunikaty o błędach, odpowiednie zakończenie działania). </li></ul><ul><li>np. Obliczanie rozwiązań równania kwadratowego wymaga uwzględnienia przypadków: b 2 − 4ac > 0, b 2 − 4ac < 0. Czego jeszcze? </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    15. 15. <ul><li>Algorytm musi być s kończony: </li></ul><ul><li>Musi zapewnić osiągnięcie rozwiązania w skończonej liczbie kroków (a więc też w skończonym czasie). </li></ul><ul><li>Skończona liczba kroków nie oznacza, ze z góry wiadomo po ilu krokach algorytm się zakończy. </li></ul><ul><li>Komunikat o błędzie lub braku rozwiązania też jest jednym z możliwych poprawnych zakończeń realizacji algorytmu. </li></ul><ul><li>Algorytm musi posiadać warunek zakończenie operacji (np. kryterium dokładności) aby nie wykonywał się, mimo że poprawnie, to w nieskończoność. </li></ul><ul><li>Np. obliczenie liczby PI – Jaka dokładność? </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    16. 16. <ul><li>Algorytm musi być jednoznaczny : </li></ul><ul><li>Dla tych samych danych wejściowych algorytm musi zawsze dawać te same wyniki. </li></ul><ul><li>Oznacza to niezależność działania programu od momentu jego wykonania, wpływu innych programów realizowanych równocześnie przez system operacyjny oraz, co najtrudniejsze, od sprzętu realizującego dany algorytm </li></ul><ul><li>np. algorytmy wykonujące obliczenia arytmetyczne powinny dawać dokładnie takie same wyniki - jest to bardzo trudne do spełnienia (różne kodowanie liczb, różne algorytmy ich przetwarzania) </li></ul><ul><li>np. algorytmy formatujące tekst (procesory tekstu) powinny dawać taki sam wygląd strony (układ tekstu, łamanie wyrazów, etc.) zgodny z informacją zapisaną w pliku. </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    17. 17. <ul><li>Dla rozruszania umysłów – łamigłówka algorytmiczna: </li></ul><ul><li>A ma wyznaczyć wiek trójki dzieci kolegi B </li></ul><ul><li>B informuje, że iloczyn wieku dzieci to 36 </li></ul><ul><li>A zastanawia się i prosi o dodatkową informację </li></ul><ul><li>B podaje sumę wieku dzieci 13 </li></ul><ul><li>A zastanawia się, ale dalej nie może ustalić wieku dzieci, prosi o dodatkową informację </li></ul><ul><li>B informuje, że najstarsze dziecko gra na gitarze </li></ul><ul><li>A podaje rozwiązanie zagadki </li></ul><ul><li>Jakie kroki należało przeprowadzić? </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    18. 18. Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    19. 19. <ul><li>Większość zadań da się zalgorytmizować, czyli znaleźć algorytm prowadzący do rozwiązania. </li></ul><ul><li>Istnieją rozwiązania algorytmiczne większości problemów matematycznych. Należą do nich zagadnienia wyszukiwania, przesyłania i przetwarzania informacji. </li></ul>
    20. 20. <ul><li>Niektóre problemy dają się rozwiązać w sposób ścisły. Dla innych nie istnieje , lub trudno jest znaleźć ścisłe rozwiązanie. </li></ul><ul><li>Dla takich problemów próbuje się znajdować algorytmy heurystyczne . </li></ul><ul><li>Z takimi rozwiązaniami związane są też zagadnienia tzw. „sztucznej inteligencji”. </li></ul>
    21. 21. <ul><li>Zapisujemy algorytmy </li></ul>
    22. 22. Reprezentacja algorytmów <ul><li>Algorytmy powinny być tak przedstawiane, aby było możliwe ich jednoznaczne odczytanie i zastosowanie. </li></ul><ul><li>Niektóre algorytmy można opisać w języku potocznym, zwłaszcza wtedy, gdy jego wykonawcą ma być człowiek </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    23. 23. Reprezentacja algorytmów <ul><li>lista kroków - najbardziej naturalny sposób zapisu algorytmu, </li></ul><ul><li>graficznie (tzw. schematy blokowe) - z użyciem symbolicznych elementów będących odpowiednikiem czynności, </li></ul><ul><li>w pseudojęzyku programowania, </li></ul><ul><li>w konkretnym języku np. C++, TP, Java, itp. </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    24. 24. Reprezentacja algorytmów <ul><li>Przykład listy kroków </li></ul><ul><ul><li>1. Wlać do garnka zimną wodę. </li></ul></ul><ul><ul><li>2. Zapalić gaz. </li></ul></ul><ul><ul><li>3. Gotować wodę do wrzenia. </li></ul></ul><ul><ul><li>4. Włożyć jajko. </li></ul></ul><ul><ul><li>5. Odczekać trzy minuty. </li></ul></ul><ul><ul><li>6. Zgasić gaz. </li></ul></ul><ul><ul><li>7. Wyjąć jajko. </li></ul></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    25. 25. Reprezentacja algorytmów <ul><li>Istnieją jednak sytuacje, w których dalsze postępowanie w algorytmie zależy od spełnienia, bądź nie, określonych warunków. </li></ul><ul><li>Czasami musimy powtórzyć pewne kroki algorytmu kilka razy. </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    26. 26. Reprezentacja algorytmów <ul><li>Działa według jednego z dwóch przedstawionych schematów: </li></ul><ul><li>Jeśli spełniony jest warunek W, wykonaj instrukcję A. </li></ul><ul><li>Jeśli spełniony jest warunek W, to wykonaj instrukcję A; w przeciwnym razie wykonaj instrukcję B. </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    27. 27. <ul><li>1. Podnieś słuchawkę. </li></ul><ul><li>2. Wybierz cyfrę 6. </li></ul><ul><li>3. Wybierz cyfrę 1. </li></ul><ul><li>4. Wybierz cyfrę 6. </li></ul><ul><li>5. Wybierz cyfrę 2. </li></ul><ul><li>6. Wybierz cyfrę 2. </li></ul><ul><li>7. Wybierz cyfrę 2. </li></ul><ul><li>8. Wybierz cyfrę 2. </li></ul><ul><li>9. Czy połączyłeś się z koleżanką ? </li></ul><ul><li>A. Jeśli TAK, to przejdź do kroku 10. </li></ul><ul><li>B. Jeśli NIE, to przejdź do kroku 11. </li></ul><ul><li>10. Zaproś koleżankę. </li></ul><ul><li>11. Odłóż słuchawkę . </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Umawiamy się na randkę…
    28. 28. Reprezentacja algorytmów <ul><li>Wielokrotne powtarzanie niektórych instrukcji jest cechą charakterystyczną wielu algorytmów (choć nie zawsze możemy określić dokładnie liczbę powtórzeń). </li></ul><ul><li>Liczba powtórzeń może zależeć od spełnienia pewnych warunków. </li></ul><ul><li>Wielokrotne powtarzanie instrukcji umożliwiają instrukcje iteracyjne (pętle) . Są różne rodzaje pętli. </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    29. 29. <ul><li>1. Podnieś słuchawkę. </li></ul><ul><li>2. Wybierz cyfrę 6. </li></ul><ul><li>3. Wybierz cyfrę 1. </li></ul><ul><li>4. Wybierz cyfrę 6. </li></ul><ul><li>5. Wykonaj czynność cztery razy </li></ul><ul><li>A. Wybierz cyfrę 2. </li></ul><ul><li>6. Czy połączyłeś się z koleżanką ? </li></ul><ul><ul><li>A. Jeśli tak, to przejdź do kroku 7. </li></ul></ul><ul><ul><li>B. Jeśli nie, to przejdź do kroku 8. </li></ul></ul><ul><li>7. Zaproś koleżankę. </li></ul><ul><li>8. Odłóż słuchawkę. </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Umawiamy się na randkę… z pętlą
    30. 30. <ul><li>1.Czy słuchawka jest odłożona ? </li></ul><ul><li>A.Jeśli tak, to przejdź do kroku 2. </li></ul><ul><li>B.Jeśli nie, to odłóż słuchawkę. </li></ul><ul><li>2.Podnieś słuchawkę. </li></ul><ul><li>3.Czy linia jest zajęta ? </li></ul><ul><li>A.Jeśli Tak, to: </li></ul><ul><li>a.Odłóż słuchawkę. </li></ul><ul><li>b.Podnieś słuchawkę. </li></ul><ul><li>c.Przejdź do kroku 3. </li></ul><ul><li>B.Jeśli Nie, to przejdź do kroku 4. </li></ul><ul><li>4.Wybierz cyfrę 6. </li></ul><ul><li>5.Wybierz cyfrę 1. </li></ul><ul><li>6.Wybierz cyfrę 6. </li></ul><ul><li>7.Wykonaj czynność cztery razy </li></ul><ul><li>A.Wybierz cyfrę 2. </li></ul><ul><li>8.Czy połączyłeś się z koleżanką ? </li></ul><ul><li>A.Jeśli tak, to przejdź do kroku 9. </li></ul><ul><li>B.Jeśli nie, to przejdź do kroku 1. </li></ul><ul><li>9.Zaproś koleżankę. </li></ul><ul><li>10.Odłóż słuchawkę. </li></ul>Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Umawiamy się na randkę… kompleksowo
    31. 31. Schematy blokowe <ul><li>Algorytmy wygodnie jest zapisywać w postaci diagramów czy schematów blokowych. </li></ul><ul><li>Takie schematy przedstawiają w formie graficznej każdy krok wykonywanego algorytmu. </li></ul>
    32. 32. Schematy blokowe <ul><li>Schematy blokowe są tzw. metajęzykiem - jest to język ogólny , służy do opisywania algorytmów w taki sposób, by na jego podstawie można było je zaimplementować w każdym języku. </li></ul><ul><li>Częściami składowymi schematów blokowych są proste figury geometryczne. </li></ul>
    33. 33. Schematy blokowe <ul><li>Ta figura oznacza początek lub koniec algorytmu. W każdym algorytmie musi się znaleźć dokładnie jedna taka figura z napisem &quot;Start&quot; oznaczająca początek algorytmu oraz dokładnie jedna figura z napisem &quot;Stop&quot; oznaczająca koniec algorytmu. </li></ul>START STOP
    34. 34. Proces <ul><li>Jest to figura oznaczająca proces . W jej obrębie umieszczamy wszelkie obliczenia lub podstawienia. </li></ul><ul><li>To odbywa się więc właściwe przetwarzanie danych. </li></ul>
    35. 35. Warunek <ul><li>Romb symbolizuje blok decyzyjny. Umieszcza się w nim warunek (np. &quot;x>2&quot;). Z dwóch wierzchołków rombu prowadzą drogi TAK: gdy warunek jest spełniony oraz NIE: gdy warunek nie jest spełniony. </li></ul>TAK NIE warunek
    36. 36. Odczyt / zapis <ul><li>Równoległobok oznacza odczyt lub zapis danych. Oznacza więc tzw. operacje wejścia/wyjścia (np. „ Drukuj wynik na ekranie ”). </li></ul>
    37. 37. Funkcje, procedury <ul><li>Oznacza proces, który został wcześniej zdefiniowany. Możemy się więc do niego odwołać. W ten sposób oznaczane są np.. Funkcje i procedury. </li></ul>
    38. 38. Łączniki <ul><li>Łącznik, który oznacza punkt do którego prowadzi wiele dróg, które „schodzą” się w tym miejscu. </li></ul>
    39. 39. Przykład 1 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf <ul><li>Opracuj algorytm obliczający sumę 3 wprowadzonych z klawiatury liczb. </li></ul><ul><li>Algorytm w postaci ciągu kroków do wykonania: </li></ul><ul><ul><ul><ul><ul><li>1.Podaj pierwszą liczbę </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>2.Podaj drugą liczbę </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>3.Podaj trzecią liczbę </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>4.Dodaj do siebie liczby i wynik zapamiętaj </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>5.Wypisz otrzymany wynik </li></ul></ul></ul></ul></ul>
    40. 40. Przykład 1 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    41. 41. Przykład 2 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    42. 42. Przykład 3 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    43. 43. Przykład 4 Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    44. 44. Przykład 5 – algorytm Euklidesa Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    45. 45. A jak wygląda nasz przykład z umawianiem się na randkę…?
    46. 46. Pseudokod <ul><li>Czasem algorytmy zapisuje się w języku symbolicznym służącym jedynie do zapisu algorytmów, tzw. pseudokodzie . </li></ul>IF HoursWorked > NormalMax THEN Display overtime message ELSE Display regular time message ENDIF CASE Title OF Mr : Print &quot;Mister&quot; Mrs : Print &quot;Missus&quot; Miss : Print &quot;Miss&quot; Ms : Print &quot;Mizz&quot; Dr : Print &quot;Doctor&quot; ENDCASE v FOR X = 1 to 10 FOR Y = 1 to 10 IF gameBoard[X][Y] = 0 Do nothing ELSE CALL figureFound (X, Y) increment counter END IF END FOR END FOR
    47. 47. Klasyfikacja algorytmów Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    48. 48. Klasyfikacja algorytmów Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    49. 49. Klasyfikacja algorytmów Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    50. 50. Klasyfikacja algorytmów Algorytmy rekurencyjne Algorytmy sekwencyjne Co to jest rekurencja?
    51. 51. Rekurencja Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Rekurencja, rekursja (ang. recursion ) - cecha algorytmu, polegająca na tym, że w którymś kroku algorytmu następuje odwołanie do całego algorytmu. Obiekt rekurencyjnym – obiekt, który częściowo składa się z siebie samego lub jego definicja odwołuje się do jego samego (np. płatek śniegu, kalafior, fraktale). Funkcja (procedura) jest rekurencyjna, jeśli wywołuje sama siebie.
    52. 52. Rekurencja
    53. 53. Rekurencja Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Ważne jest, aby kolejne wywołania funkcji (procedury) rekurencyjnej były realizowane dla kolejnych wartości parametrów formalnych w taki sposób, aby nie doszło do zjawiska „ nieskończonej pętli rekurencyjnych wywołań funkcji ”
    54. 54. Rekurencja Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf Definicja rekurencyjna składa się z dwóch części: • W pierwszej, zwanej podstawową lub warunkiem początkowym, są wyliczone elementy podstawowe, stanowiące części składowe wszystkich pozostałych elementów zbioru. • W drugiej części, zwanej krokiem indukcyjnym, są podane reguły umożliwiające konstruowanie nowych obiektów z elementów podstawowych lub obiektów zbudowanych wcześniej. Reguły te można stosować wielokrotnie, tworząc nowe obiekty.
    55. 55. Silnia wczytaj n; n = 0 zwróć n*(n-1)! zwróć 1 POWRÓT START TAK NIE
    56. 56. Przykład – rekurencyjne obliczanie silni Przykład z http://www.cs.put.poznan.pl/akobusinska/downloads/wprowadzenie/w4-algorytmy.pdf
    57. 57. Wieże Hanoi Problem: Przełożyć krążki, przenosząc po jednym, z jednego „patyka” na drugi z zachowaniem docelowej kolejności (mniejsze na większych). Dla 3:
    58. 58. Wieże Hanoi Rozwiązanie sprowadza się do odpowiedniego podziału problemu w sposób rekurencyjny.
    59. 59. Ciąg Fibonacciego F = 1 + 1 + 2 + 3 + 5 + 8 + 13… F(5)= F(4) + F(3) = F(3) + F(2) + F(2) + F(1) = F(2) + F(1) + F(1) + F(0) + F(1) + F(0) + F(1)= F(1) + F(0) + F(1) + F(1) + F(0) + F(1) + F(0) + F(1) = 1 + 0 + 1 + 1 + 0 + 1 + 0 + 1 = 5 - pułapka rekurencji! Ciąg Fibonacciego używany jest do określanie idealnej populacji zwierząt (pszczoły,króliki), jest również używany w pseudogeneratorach liczb losowych oraz w zaawansowanych obliczeniach matematycznych.
    60. 60. Podsumowanie, wnioski ?

    ×