Podstawy informatyki Algorytm vs. program Algorytm Definicja i
Transkrypt
Podstawy informatyki Algorytm vs. program Algorytm Definicja i
Podstawy informatyki Algorytm vs. program Temat 04 OPROGRAMOWANIE cz.1 Tworzenie oprogramowania 1 "Podstawy informatyki", Tadeusz Wilusz 2004 Pomysł na rozwiązanie Obliczanie pierwiastków równania kwadratowego • oblicz deltę • sprawdź jej znak • oblicz x1 i x2 ALGORYTM WARSTWA POMYSŁU PROBLEM "Podstawy informatyki", Tadeusz Wilusz 2004 DANE START Wczytaj a b c D:=b2-4ac STOP Składnia Program Zdania zawierające “litery” przy zachowaniu obowiązującej składni Program delta; var a,b,c,d,x1,x2:real; begin writeln(‘Podaj a’); readln(a); ........... Program tłumaczący 10010100111010 0101 100101001110 100101001110 001110 Magistrala Pamięć Procesor "Podstawy informatyki", Tadeusz Wilusz 2004 3 Definicja i algorytmu • 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ą znaną dzisiaj jako"pisemną". • · [w informatyce] dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie każdego zadania danego typu "Podstawy informatyki", Tadeusz Wilusz 2004 4 • Języki naturalne – polski, angielski, etc. – wzory matematyczne – pseudojęzyk • Schematy blokowe (diagramy przepływu) - graficzna prezentacja algorytmu zapisanego w języku naturalnym • Języki programowania uniwersalny skończony jednoznaczny zupełny wykonalny – maszynowy (wewnętrzny) – asembler (język symboliczny) – języki wyższego rzędu • zapisany w języku wykonawcy • zlecane operacje są „znane” wykonawcy "Podstawy informatyki", Tadeusz Wilusz 2004 Algorytm Notacje algorytmu • Ściśle określony tok postępowania gwarantujący rozwiązanie określonego problemu na drodze wykonania skończonej liczby operacji • własności: – – – – – WARSTWA HARDWARE’U Układy I/O WARSTWA SOFTWARE’U Słowa kluczowe Alfabet Język 2 5 "Podstawy informatyki", Tadeusz Wilusz 2004 6 1 Algorytm Rozwiązanie równania kwadratowego program delta ; var a,b,c,Delta,x1,x2 : real; begin write(‘podaj a’); readln(a); write(‘podaj b’); readln(b); write(‘podaj c’); readln(c); Delta:=sqr(b)-4*a*c; { Tutaj badanie znaku delty } if Delta<0 then writeln(‘Brak rozwiązania’) else begin x1:=(- b +sqrt (Delta) ) / 2*a; x2:=(- b - sqrt (Delta) ) / 2*a; writeln(‘x1=‘,x1); writeln(‘x2=‘,x2); end; end. START Blok START Nazwa bloku We: a,b,c We: a,b,c terminator Delta:=b*b-4*a*c Delta:=b*b-4*a*c przetwarzanie Tutaj badanie znaku delty Tutaj badanie znaku delty Delta < 0 ? wejścia-wyjścia Delta < 0 ? Tak Nie decyzyjny x1:=(-b+sqrt (Delta)) / 2*a x2:=(-b- sqrt (Delta)) / 2*a X1:=(-b+sqrt (delta)) / 2*a X2:=(-b- sqrt (delta)) / 2*a podprogramu Wy: x1 , x2 Wy: X1 , X2 łącznika Tak Nie Wy: brak rozwiązania Wy: brak rozwiązania STOP komentarza STOP "Podstawy informatyki", Tadeusz Wilusz 2004 7 Algorytm liniowy "Podstawy informatyki", Tadeusz Wilusz 2004 8 Algorytm rozgałęziony Obliczenie pola prostokąta jest dla każdego bardzo Równanie kwadratowe : prostym zadaniem. Jest oczywiste, że pole prostokąta ax2 + bx + c = 0 równe jest iloczynowi długości jego boków, czyli można rozwiązać różnymi metodami. Jedną z nich jest zastosowanie wyróżnika (tzw. delty). W przykładowym algorytmie oznaczony jest literą D. W zależności od wartości tego wyróżnika można rozpatrywać następujące sytuacje: P = ab Na rysunku z lewej strony przedstawiono zbiór (sekwencję) prostych czynności jakie należy wykonać, w § określonej kolejności, aby obliczyć pole prostokąta. Jest to § Zapis w pseudokodzie: § POCZĄTEK Czytaj(a,b) P := a*b Pisz(P) Jeśli D > 0 to równanie posiada dwa pierwiastki x1 i x2: Jeśli D = 0 wtedy równanie posiada jeden pierwiastek. Jeśli D < 0 to wówczas równanie nie posiada rozwiązań rzeczywistych (istnieją tylko pierwiastki urojone - patrz akademicki zakres matematyki KONIEC 9 "Podstawy informatyki", Tadeusz Wilusz 2004 Algorytm z cyklem 10 Język programowania Algorytm poszukiwania najmniejszej liczby w n elementowym zbiorze liczb a1, a2, ..., an • Jest to notacja dla której opracowano program automatycznego przekładu (translator) na język maszynowy (wykonawcy) • Podstawowe techniki translacji: Jest to także algorytm z cyklem (algorytm z pętlą). Analogicznie post ępując wyszukamy także wartość maksymalną. Zmienna pomocnicza i pełni rolę licznika pętli. Algorytm w języku naturalnym: – kompilacyjna – interpretacyjna 1. Przyjmujemy i = 1 i idziemy do etapu 2. 2. Przyjmujemy Min = 1 i idziemy do następnego etapu. 3. Sprawdzamy czy i < n. Jeśli tak to przechodzimy do etapu 4. W przeciwnym przypadku ko ńczymy poszukiwanie i podajemy wartość Min. 4. Zwiększamy i o 1 ( aktualizacja licznika p ętli) i przechodzimy do kolejnego etapu. 5. Porównujemy ai (kolejna liczba z przeszukiwanego zbioru) z bieżącą wartością Min.. Jeśli ai >= Min to przechodzimy do etapu 3. W przeciwnym przypadku przechodzimy do etapu 2 (czyli dotychczasowy element minimalny zostanie zastąpiony kolejnym mniejszym) "Podstawy informatyki", Tadeusz Wilusz 2004 "Podstawy informatyki", Tadeusz Wilusz 2004 11 "Podstawy informatyki", Tadeusz Wilusz 2004 12 2 Translacja kompilacyjna Języki programowania Języki • EDYTOR .obj deklaratywne • KOMPILATOR .exe • LINKER • BIBLIOTEKARZ .lib 13 "Podstawy informatyki", Tadeusz Wilusz 2004 Języki programowania Języki proceduralne (opisujące sposób postępowania, algorytm): np. C++, Fortran, Pascal Języki deklaratywne (opisujące intencje, oczekiwane wyniki, pozostawiając opracowanie procedury/algorytmu ich realizacji komputerowi sam): np. SQL Języki programowania Języki Kompilowane Wysokiego poziomu • Języki maszynowe: Assemblery • Języki wysokiego poziomu: ADA, Pascal, Fortran, C++, Lisp, B, SmallTalk, Java 15 "Podstawy informatyki", Tadeusz Wilusz 2004 HISTORIA asemblery Fortran 16 – Odporność (robustness) program ma zachowywać się sensownie w każdej (nawet nieprzewidzianej) sytuacji Loglan Loglan – Modyfikowalność i rozszerzalność Smalltalk Smalltalk program musi być łatwo dostosowywalny do zmian w specyfikacji C++ C++ inne innejęzyki językihybrydowe hybrydowe – Możliwość wielokrotnego użycia elementów projektu i programu (reusability) Java Java typowe fragmenty programu muszą dać się łatwo użyć w innych programach lub w tym samym programie Simula-67: lata 60-te Smalltalk: lata 70-te, rozwój w latach 90-tych PASCAL, C: lata 70-te Ada: początek lat 80 C++: początek lat 80-tych Java: połowa lat 90-tych popularność programowania obiektowego: lata 90 "Podstawy informatyki", Tadeusz Wilusz 2004 "Podstawy informatyki", Tadeusz Wilusz 2004 program ma robić dokładnie (i poprawnie) to, co zostało zdefiniowane w specyfikacji C Modula 2 Kompilowane - tekst źródłowy zamieniany na kod maszyny Interpretowane - tekst źródłowy interpretowany przez tzw. “maszynę wirtualną” (np. Lisp) (Pascal – technologia mieszana) Kompilator to translator języka wysokiego poziomu, którego programy wynikowe mogą być wprowadzone do pamięci i wykonane dopiero po zakończeniu tłumaczenia całego programu. Programy wynikowe kompilatora mogą być przechowywane, łączone z innymi programami i wielokrotnie wykonywane znacznie szybciej niż programy interpretowane. Jakość oprogramowania Simula-67 Simula-67 Pascal Interpretowane – Poprawność (correctness) Algol-60 Ada Ada 14 "Podstawy informatyki", Tadeusz Wilusz 2004 Języki Maszynowe proceduralne – Kompatybilność – Efektywność – Przenaszalność 17 "Podstawy informatyki", Tadeusz Wilusz 2004 18 3 Jak osiągnąć cele jakości oprogramowania? – Modularność, programowanie strukturalne, wielokrotny użytek procedur (funkcji) • Pascal, Modula 2, C – Wielokrotny użytek całych struktur danych, ochrona danych • Modula 2 Dziękuję za uwagę – Wielokrotny użytek struktur danych i obiektów, hermetyzacja poprzez klasy i dziedziczenie • języki obiektowe Użycie metodologii obiektowej (od analizy, poprzez projekt do programu) ->następny semestr: • przyspiesza proces tworzenia systemu poprzez wielokrotne użycie elementów • ułatwia modyfikowalność i rozszerzalność • pozwala szybko stworzyć prototyp "Podstawy informatyki", Tadeusz Wilusz 2004 19 "Podstawy informatyki", Tadeusz Wilusz 2004 20 4