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