JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 1 1
MTA s1, sem. III Prowadzący: dr hab. inż. Witold Beluch (p. 149) Instytut Mechaniki i Inżynierii Obliczeniowej konsultacje: plan.polsl.pl wykład: 30h, laboratorium: 30h ZAJĘCIA KOŃCZĄ SIĘ EGZAMINEM Ocena końcowa: E - ocena z egzaminu L - ocena z laboratorium O=0.5 E+0.5 L - obydwie oceny muszą być pozytywne! 2
KRK 3
ZALICZENIE PRZEDMIOTU Wymagania związane z U3: Sprawozdanie w postaci elektronicznej (plik.doc lub.pdf) zawierające: propozycje zadań laboratoryjnych do poszczególnych ćwiczeń. proponowane rozwiązania tychże zadań w postaci kodu źródłowego (możliwego do skompilowania i uruchomienia) pliki.cpp, typowo 1 na zadanie. Szczegóły: W każdej grupie dziekańskiej (wszystkie grupy)!: pierwsze 3 osoby na liście z dziekanatu przygotowują (grupowo) sprawozdanie z propozycjami zadań do Lab2; nie są dopuszczalne grupy jednoosobowe!; następne 3 osoby do Lab3, itd. dotyczy to Lab2-Lab7 oraz Lab8-Lab14 (12 tematów); termin oddania do 14 dni po danym laboratorium; nieoddanie w terminie dodatkowe zadania do zrobienia. 4
ZALICZENIE PRZEDMIOTU Szczegóły cd: Plik ze sprawozdaniem ma zawierać: stronę tytułową, w tym: - numer laboratorium, - tematykę laboratorium, - osoby wykonujące zadania, - grupę dziekańską i rok akademicki, - datę zajęć laboratoryjnych. - pełną i precyzyjną treść zadań, w tym: - co dany program ma robić, - co należy wpisać/przypisać/zainicjalizować, - jakie typy zmiennych (jeśli powinno się podać) są wymagane, - co program ma wypisywać na ekran, - ew. inne wymagania związane z tematyką laboratorium. 5
ZALICZENIE PRZEDMIOTU rok ak. 2016/17 Dotyczy lab. z dnia: 13.10.2016 6
LITERATURA Podstawowa: Dodatkowa: http://xion.org.pl/productions/texts/coding/megatutorial/ Materiały z internetu, własne notatki... 7
LITERATURA dodatkowa: http://wazniak.mimuw.edu.pl 8 8
9
TEMATYKA wykładu 1 Zakres wykładu: o Od problemu do programu; o Algorytmy: o pojęcie algorytmu i przykłady; o cechy algorytmów; o złożoność algorytmów; o zapis algorytmów; o klasyfikacja algorytmów 10
PROGRAMOWANIE Od PROBLEMU do PROGRAMU Problem Algorytmizacja Algorytm Struktury danych Programowanie Kodowanie Program 11
PROGRAMOWANIE Języki programowania o Służą do przedstawiania algorytmów w postaci programów komputerowych. o Tylko algorytm zapisany w postaci programu komputerowego w konkretnym języku programowania może być zrealizowany przez komputer. Struktury danych o Określają sposób uporządkowania informacji w komputerze. o Na strukturach danych operują algorytmy. o np.: tablice (więcej później...) 12
ALGORYTMY Pojęcie algorytmu Abu Abdullah Muhammad ibn Musa al-chuwarizmi Perski matematyk, astronom, geograf i kartograf (ok. 780 - ok. 850). Wikipedia: Urodzony w Chiwie, w latach 813-833 żył w Bagdadzie. Wszystkie jego dzieła zostały napisane po arabsku. Nosił przydomek pana tablic. Dzięki jego pracom na Bliskim Wschodzie zaczęto stosować pochodzące z Indii dziesiętny system liczenia i pozycyjny system zapisu liczb, które wkrótce dotarły do Europy. Cyfry arabskie wyparły cyfry rzymskie w Europie. Jego prace pozwoliły też wprowadzić i wyjaśnić pojęcia zera, ułamków oraz funkcje trygonometryczne sinus i tangens. Jako pierwszy ułożył tablice funkcji sinus i tangens, wprowadził elementy algebry. Termin algebra pochodzi od tytułu jego dzieła Kitāb al-jabr wa'l-muqābala ("Zasady redukcji i przenoszenia"), zaś algorytm od łacińskiej wersji jego nazwiska (Algorismus). 13
ALGORYTMY Algorytm (przykładowe definicje): Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania Skończony ciąg czynności, przekształcający zbiór danych wejściowych na zbiór danych wyjściowych (wyników) Przykładowy algorytm ( Noc Naukowców 2014 ): 1) Weź jajka. 2) Rozgrzej patelnię. 3) Rozpuść na patelni masło. 4) Wbij jajka. 5) Dodaj sól. 6) Zawartość patelni mieszaj przez około 3 minuty. 7) Jajecznica gotowa. wynik: dane WE 14
ALGORYTMY o przepis kucharski zawiera obiekty (składniki), ich początkowe wartości (miary) oraz opis działań dających w efekcie potrawę; o instrukcja montażu mebla, urządzenia, klocków zawiera ryciny obrazujące kolejne fazy powstawania składanego obiektu. Elementy (obiekty składowe) i ich liczba (wartości) są również umieszczane w takiej instrukcji; o zapis nutowy określa wysokości i względne czasy trwania nut i pauz między nimi. Obiekty to określenia instrumentów, dane początkowe to np. metrum czy dynamika poszczególnych części; o opisy dojazdu; o opisy układów choreograficznych; o scenopisy przedstawień; o... Zbiór przepisów kulinarnych Stanisława Czernieckiego Compedium ferculorum albo zebranie potraw, Kraków, 1682 15
ALGORYTMY Pierwsze opisy, które później nazwano algorytmami, dotyczyły rozwiązań zadań matematycznych. Pierwszy nietrywialny i nadal używany algorytm: Algorytm Euklidesa wyznaczania największego wspólnego dzielnika dwóch dodatnich liczb całkowitych (wrócimy do tego...) Euklides (ok. 365 - ok. 300 r. p.n.e.) Grecki matematyk pochodzący z Aten, przez większość życia działający w Aleksandrii. Elementy - traktat arytmetyczny i geometryczny w 13 księgach, podstawa nauki geometrii na świecie przez kilkanaście wieków. 16
ALGORYTMY Cechy algorytmu: o o o o Skończoność Musi zapewnić osiągnięcie rozwiązania w skończonej liczbie kroków (zatem w skończonym czasie). Dokładna liczba kroków nie musi być znana a priori. Komunikat o błędzie lub braku rozwiązania jest jednym z możliwych poprawnych zakończeń realizacji algorytmu. Często - warunek zakończenia (np. kryterium dokładności) by algorytm nie wykonywał się w nieskończoność. o o Kompletność Musi uwzględnić wszystkie możliwe przypadki które mogą wystąpić w trakcie realizacji. Dopuszcza wystąpienia błędów (numerycznych i logicznych ) i posiada system reakcji na nie (komunikaty o błędach, stosowne zakończenie działania). 17
ALGORYTMY o o Jednoznaczność Te same dane wejściowe zawsze te same wyniki działania algorytmu. Jest niezależny od momentu jego uruchomienia, wpływu innych programów, sprzętu, kodowania znaków, itp. Algorytm jest poprawny, jeżeli: o o algorytm zatrzymuje się po skończonej liczbie kroków (posiada własność stopu). dla danych spełniających warunek początkowy (WP), algorytm generuje dane spełniające warunek końcowy (WK). 18
ALGORYTMY Algorytm Euklidesa znajdowania największego wspólnego dzielnika: o gdy mniejsza z liczb jest równa zero, to NWD jest równy drugiej z nich; o gdy obie są dodatnie, to NWD jest równy największemu wspólnemu dzielnikowi ich różnicy oraz mniejszej z nich (84,36) =>(48,36)=>(12,36)=>(36,12)=>(24,12)=>(12,12)=>(0,12)=>(12,0)=>12 zapis w pseudokodzie (o tym później...) http://wazniak.mimuw.edu.pl/index.php?title=wstęp_do_programowania/wstęp_do_algorytmów 19
ALGORYTMY Spróbujmy dobrać złośliwe dane wejściowe, np.: a = 10 30, b = 1 Liczba pętli algorytmu: 10 30 Może istnieć kilka przepisów, które dają te same wyniki: Dla a = 10 30, b = 1 liczba pętli < 150. Tu już nie tak oczywiste będzie dobranie kłopotliwych danych; więcej: http://wazniak.mimuw.edu.pl/index.php?title=wstęp_do_programowania/wstęp_do_algorytmów 20
ALGORYTMY Złożoność algorytmu: Ilość zasobów komputerowych niezbędna do wykonania algorytmu. Mierzona wymaganiami czasowymi T i pamięciowymi S. W jakich jednostkach? o o Dla złożoności czasowej: wykonanie jednej tzw. operacji dominującej (złożoność czasowa powinna być określana w oderwaniu od możliwości sprzętowych czy języka programowania). Dla złożoności pamięciowej: zwykle słowo pamięci maszyny. Operacja dominująca to np.: dla sortowania: porównanie 2 elementów w ciągu wejściowym, dla wyznaczania wartości wielomianu operacje +, -, /, *. dla znajdowania najkrótszej drogi przejście między dwoma węzłami (miastami). 21
ALGORYTMY Rzędy złożoności (najczęściej spotykane): o 1 stała; o log n logarytmiczna; o n liniowa; o n log n liniowo-logarytmiczna; o n 2 kwadratowa; o n c wielomianowa; o 2 n, n! wykładnicza. n wielkość danych algorytmu, np.: - dla sortowania liczba elementów w ciągu wejściowym; - dla wyznaczania wartości wielomianu jego stopień; - dla znajdowania najkrótszej drogi liczba węzłów. Na złożoność czasową składają się dwie wartości: o złożoność pesymistyczna (taka, która charakteryzuje najgorszy przypadek); o złożoność oczekiwana (dla typowych danych wejściowych). 22
ALGORYTMY Np. sortowanie n obiektów: o o o sprawdzenie wszystkich możliwości: O(n!) wykładnicza; algorytm bąbelkowy: O(n 2 ) kwadratowa; algorytm szybki - O(n log n) - liniowo-logarytmiczna. O(. ) patrz: następny slajd... Dopiero znalezienie algorytmu o niższym rzędzie złożoności jest istotnym ulepszeniem rozwiązania danego zadania algorytmicznego. Najlepszym sposobem przyspieszania komputerów jest obarczanie ich mniejszą liczbą działań (szybszymi algorytmami). [Ralf Gomory, IBM] 23
ALGORYTMY Notacja O(. ): Mówimy, że funkcja f(n) złożoności algorytmu jest co najwyżej rzędu O(g(n)) i zapisujemy: f(n) =O(g(n)) jeśli istnieją: stała rzeczywista c > 0 oraz stała naturalna n 0 takie, że dla każdego n n 0 zachodzi nierówność: np.: n 2 + 2n = O(n 2 ) gdyż dla każdego naturalnego n: Inne notacje: f(n) c g(n) n 2 + 2n 3n 2 - f(n) = (g(n)) f jest co najmniej rzędu g - f(n) = (g(n)) f jest dokładnie rzędu g 24
ALGORYTMY Np.: jeśli jedna operacja trwa 1 ms: Typ złożoności Oznaczenie n 10 50 100 logarytmiczna logn 0.000003 s 0.000006 s 0.000007 s liniowa n 0.00001 s 0.00005 s 0.0001 s liniowologarytmiczna n logn 0.00003 s 0.0003 s 0.0007 s kwadratowa n 2 0.0001 s 0.0025 s 0.01 s wielomianowa n k ; k=3 0.001 s 0.008 s 1 s wykładnicza 2 n 0.001 s 35.6 lat 4 10 16 lat wykładnicza n! 3.6 s 2.6 10 68 lat 3 10 144 lat 25
ALGORYTMY Cykl Eulera (zadanie łatwe ): cykl w grafie, który przechodzi przez każdą krawędź niezorientowanego grafu dokładnie jeden raz (przez węzły może przechodzić wielokrotnie). Cykl Hamiltona (zadanie trudne ): cykl w grafie, w którym każdy wierzchołek grafu występuje dokładnie jeden raz. (znalezienie cyklu Hamiltona o minimalnej sumie wag krawędzi jest równoważne rozwiązaniu problemu komiwojażera). William R. Hamilton (1805-1865): 26
ALGORYTMY Zadanie (problem) komiwojażera Znajdź najkrótszą drogę między danymi miastami (węzłami), przy czym: o należy odwiedzić wszystkie miasta; o każde miasto można odwiedzić tylko jeden raz; o należy wrócić do miasta początkowego; o kolejność odwiedzanych miast jest dowolna. 4 miasta: 3 możliwości 9 miast: 20 160 możliwości 10 miast: 181 440 możliwości... Liczba możliwych tras: n 2 1! jeśli 100 miast 1 minuta, to: 101 ok. 2 godzin 102 7 dni 103 2 lata... 27
Rekordy: ALGORYTMY o rok 1954: 49 miast o rok 1980: 318 miast o rok 1998: 13 509 miast w USA o rok 2001: 15 112 miast w Niemczech o rok 2004: 24 978 miast w Szwecji Jak sprawdzić, czy nie istnieje krótsza trasa? http://www.math.uwaterloo.ca/tsp/index.html 28
ALGORYTMY Np.: Znaleźć najkrótszą trasę dla Bardzo Ważnego Polityka (BWP) przez wszystkie miasta wojewódzkie. o start: Warszawa. 15! o możliwości jest: 2 o podział administracyjny 1975-1998: 48! 2 29 29
Na superkomputerze o mocy 1 PFLOPS o o ALGORYTMY 15!/2 => ok. 0.005 sek. 48!/2 => ok. 1.5*10 38 lat FLOPS (ang. FLoating point Operations Per Second) liczba operacji zmiennoprzecinkowych na sekundę. PFLOPS petaflops: 10 15 FLOPS Prometheus (27.04.2015) - 1.7 PFLOPS informatyka w pierwszej + 30 na świecie 30 30
ALGORYTMY Poszukuje się skutecznych algorytmów przybliżonych szukania rozwiązań, jak np. metody inteligencji obliczeniowej (algorytmy ewolucyjne, sztuczne systemy immunologiczne, algorytmy mrówkowe itp.). ale to już temat na zupełnie inny wykład... 31
ZAPIS ALGORYTMU 1. Opis słowny (zwykle jako lista kroków) - proste zdania (lub równoważniki zdań) w trybie rozkazującym. 1) Weź jajka. 2) Rozgrzej patelnię.... Dla algorytmu Euklidesa np.: 32
ZAPIS ALGORYTMU 2. Zapis graficzny (schemat blokowy, sieć działań) o zestaw symbolicznych elementów odpowiadających czynnościom; o elementarne czynności oznaczone blokami (węzły), kolejność wyznaczona przez linie łączące węzły; o struktura algorytmu niezależna od maszyny i rodzaju kodowania liczb; o można w ten sposób zapisać każdy algorytm; o każdy algorytm można zapisać za pomocą różnych schematów blokowych 33
ZAPIS ALGORYTMU Reguły tworzenia: o Schemat blokowy składa się z bloków połączonych zorientowanymi liniami; o Bloki obrazują ciąg operacji; o Zawsze wykonywane są albo wszystkie instrukcje w bloku albo żadna; o Dalsze operacje nie zależą od poprzednich wariantów, chyba że zależności te zostały przekazane za pomocą danych; o Kolejność wykonania operacji jest ściśle określona przez zorientowane linie łączące poszczególne bloki; o Do każdego bloku może prowadzić co najwyżej jedna linia; o Linie mogą się łączyć ale nie mogą się rozdzielać (bez bloku decyzyjnego). 34
ZAPIS ALGORYTMU Bloki (nie wszystkie...): - blok startu jedno WY oznaczające początek algorytmu start - blok stopu jedno WE oznaczające koniec algorytmu stop - blok operacyjny (obliczeniowy) jedno WE i jedno WY: realizacja elementarnej czynności operacja - blok decyzyjny (warunkowy) jedno WE i dwa (lub więcej) WY: miejsce rozgałęziania programu w zależności od spełnienia warunku warunek wartość 2 wartość 1 - blok wejścia-wyjścia jedno WE i jedno WY: miejsce wymiany danych ze światem zewnętrznym dane 35
ZAPIS ALGORYTMU Dla algorytmu Euklidesa np.: 36
ZAPIS ALGORYTMU Każdy algorytm można zapisać za pomocą różnych schematów blokowych: za: Witold Marańda, Politechnika Łódzka, Algorytmy i struktury danych, http://neo.dmcs.pl/aisd/ 37
ZAPIS ALGORYTMU A B? Optymalizacja schematu blokowego polega na znalezieniu schematu najlepszego dla określonego kryterium (rozmiaru, szybkości, możliwości rozbudowy). 38