Algorytmy i programy
Transkrypt
Algorytmy i programy
Algorytmy i programy 11/10/2005 Rozwiązywanie zadania Algorytmy i programy ! ! Rozwiązywanie zadań Rodzaje translacji Syntaktyka i semantyka Jak kończą… się... programy Celem wielu działań jest „rozwiązanie zadania”. Na proces ten składa się wiele różnych powiązanych ze sobą pojęć takich jak: ! ! ! ! ! metoda, która będzie stosowana, plan stosowania tej metody w konkretnym zadaniu, opis czynności wykonywanych podczas realizacji planu, wynik końcowy wykonywanych czynności. Dodatkowe elementami rozwiązania zadania: ! ! dowód poprawności zbudowanego rozwiązania (dla każdego kroku z osobna, jak i też kroków wykonywanych w określonym porządku), stwierdzenie jednoznaczności rozwiązania. 2/12 Algorytm ! ! ! ! Dwa bieguny… W każdym przepisie możemy wyróżnić: ! ! opis obiektów (prostych i złożonych) opis czynności prostych i złożonych, które możemy rozpisać na proste. ! ! ! ©2005 R. Robert ‘RoG@j’ Gajewski ! ! 5/12 ! kompilacji lub interpretacji. Proces tłumaczenia (translacji) programu może przyjąć postać: ! Kompilacja to proces tłumaczenia programu źródłowego napisanego w języku programowania na równoważny mu program (kod) wynikowy w języku maszynowym maszyny docelowej, na której będzie on wykonywany. ! ©2005 R. Robert ‘RoG@j’ Gajewski Translacja: interpretacja Proces tłumaczenia (translacji) programu może przyjąć postać: ! ! Algorytm wyrażony w języku programowania to program. Implementacja to realizacja języka programowania dla określonego komputera lub systemu operacyjnego. 4/12 Translacja: kompilacja ! to co jest zrozumiałe dla programisty jest nieczytelne dla procesora ciągi rozkazów procesora są zrozumiałe jedynie dla bardzo wprawnych programistów. Język programowania jest zbiorem konwencji umożliwiających komunikatywność algorytmu. ! dla programisty (zapis konkretnego algorytmu w określonej notacji) dla komputera (ciąg rozkazów zrozumiałych przez procesor). 3/12 Oba te wymogi reprezentują dwa przeciwstawne bieguny: ! Algorytm to opis obiektów łącznie z opisem czynności, które należy wykonać z tymi obiektami aby osiągnąć określony cel. Algorytm ma być zapisany w notacji zrozumiałej ! ©2005 R. Robert ‘RoG@j’ Gajewski ! ! ! tłumaczenia tego dokonuje program zwany kompilatorem; istnieją kompilatory jednoprzebiegowe i wieloprzebiegowe. ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski Nie jest on nigdy tłumaczony w całości. Czysta interpretacja jest procesem jednostopniowym. ! 6/12 kompilacji lub interpretacji. Interpretacja polega na wykonywaniu programu źródłowego przez interpreter linia po linii. Zapewnia ona większa elastyczność, jest jednak procesem wielokrotnie wolniejszym. ©2005 R. Robert ‘RoG@j’ Gajewski 1 Algorytmy i programy 11/10/2005 Cel programowania ! Implementacja komputerowa Podstawowym celem każdego języka programowania jest pomoc w budowie programu (programowaniu) w sferze: ! ! ! ! ! projektowania programu (zakres programu, specyfikacja danych); przejrzystości (wyrażanie akcji w sposób zrozumiały); dokumentacja powinna być integralną częścią procesu programowania; program powinien być zapisany czytelnie, aby umożliwić jego konserwację i dokonywanie w nim poprawek i rozszerzeń; weryfikacji (łatwość określania poprawności i testowania). 7/12 ©2005 R. Robert ‘RoG@j’ Gajewski ! ! ! ! ©2005 R. Robert ‘RoG@j’ Gajewski Semantyka Syntaktyka języka programowania (składnia) zajmuje się formą pisania programów i jest zbiorem reguł, które definiują sposób konstruowania łańcuchów symboli. ! ! Semantyka zajmuje się znaczeniem programów, czyli tym, co się dzieje podczas wykonywania programów. ! Dopuszczalne zbiory łańcuchów nazywamy programami poprawnymi syntaktycznie. Pomyśl o ‘mowie potocznej’ – wypowiedziach polityków, które są zgodne z regułami gramatyki, formalnie poprawne, ale… mogą być one całkowicie pozbawione sensu! ! ©2005 R. Robert ‘RoG@j’ Gajewski ! ! ! ! poprawne zakończenie przerwanie wykonywania na skutek błędu, proces nieskończony ! Treść programu może być pisana w formatach: ! ! ©2005 R. Robert ‘RoG@j’ Gajewski Komentarze Rozróżnia się trzy warianty zakończenia działania programu: ! stałym (od określonej kolumny, odstępy nie mają znaczenia!!! swobodnym (odstępy są istotnym elementem). Dla uzyskania komunikatywnego przedstawienia algorytmów programista musi mieć możliwość robienia bezpośrednio w programie adnotacji (komentarzy). Możliwe są różne konwencje pisania w programie komentarzy: ! ! ! 11/12 Granica pomiędzy składnią a semantyka nie jest ściśle i jednoznacznie zdefiniowana. 10/12 Wykonanie i treść… ! Reguły semantyczne języka definiują zbiór programów poprawnych semantycznie, a także błędy semantyczne. Ciąg znaków (instrukcji, zdań) poprawny składniowo (syntaktycznie) może się okazać błędny semantycznie (jest to widoczne podczas wykonywania programu). ! 9/12 dostępnością (dla jakich maszyn i systemów operacyjnych istnieją kompilatory danego języka); bibliotekami (czy istnieje wsparcie w postaci gotowych podprogramów); efektywnością (czy kompilator działa szybko i czy produkuje efektywny kod wynikowy); dokumentacją (czy istnieje precyzyjny opis lub norma języka i dokumentacja kompilatora). 8/12 Syntaktyka ! Problem implementacji komputerowej łączy się z następującymi sprawami: ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski 12/12 rozpoczęcie komentarza w z góry zadanej kolumnie obejmuje on wówczas wszystkie znaki do końca wiersza; użycie specjalnego symbolu, oznaczającego, że wiersz jest komentarzem; rozpoczęcie i kończenie komentarza symbolami specjalnymi. ©2005 R. Robert ‘RoG@j’ Gajewski 2