Wykład 01
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE
"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 2
Algorytm
• 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
"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 3
Definicja i 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:
– uniwersalny – skończony – jednoznaczny – zupełny – wykonalny
• zapisany w języku wykonawcy
• zlecane operacje są „znane” wykonawcy
"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 4
Notacje algorytmu
• 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 – maszynowy (wewnętrzny) – asembler (język symboliczny) – języki wyższego rzędu
"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 5
Język schematów blokowych
P o c z ą t e k s ie c i d z ia ła ń (sc h e m a tu ) . W s c h e m a c ie m o ż e w y s tę p o w a ć t y lk o j e d e n t a k i e le m e n t.
B lo k w e j ś c ia - w y j ś c ia - o z n a c z a c z y n n oś ć w p r o w a d z a n ia d a n y c h i p r z y p o rz ą d k o w y w a n ia i c h z m i e n n y m u ż y w a n y m w d a l s z e j c zę ś c i p ro g r a m u a lb o c z y n n o ść w y p r o w a d z a n ia w y n i k ó w o b l ic z e ń . N a p is w e w n ą trz o k re ś la r o d z a j c z y n n o ś c i (n p . c z y ta j, p is z ) o r a z n a z w y z m ie n n y c h i s tał y c h . E le m e n t ( b lo k ) p r z e t w a r z a n ia ( o b l ic z e n io w y ) o z n a c z a w y k o n a n ie o p e r a c ji ( lu b z b io r u o p e r a c j i ) . W e w n ą t rz b lo k u o k re ś la s ię r o d z a j c z y n n o śc i p r z e tw a rz a n i a i i c h a r g u m e n t y .
B lo k d e c y z y j n y ( w a ru n k o w y , a l t e r n a t y w n y , p r z e łąc z n i k ) - o z n a c z a e l e m e n t w y b o r u je d n e g o z d w ó c h w a r i a n tó w d a ls z e g o w y k o n y w a n ia p r o g r a m u . W y b ó r j e s t d o k o n y w a n y n a p o d staw ie w y n ik u sp r a w d z e n ia w a r u n k u (b ę d ą c e g o w y r a ż e n ie m l o g i c z n y m ) u m ie s z c z o n e g o w e w n ą trz . B lo k te n p o w i n i e n z a w sze p o s ia d a ć d w a w y jśc i a o p isa n e " T " ( T a k , T r u e ) i " N " (N ie , F a ls e ).
Ł ą c z n i k w e w n ą trzstro n i c o w y - s łu ż y d o łą c z e n i a o d r ę b n y c h c z ę ś c i sc h e m a tu z n a j d u j ą c y c h s ię n a t y m s a m ym a r k u s z u . U ł a tw ia z a c h o w a n i e p r z e jrz y s to ś c i sc h e m a tu . K o m p l e m e n ta r n e e le m e n t y o z n a c z a s i ę t y m s a m y m s y m b o l e m .
Z a k o ń c z e n ie w y k o n y w a n i a c z y n n oś c i.
Obliczenie pola prostokąta jest dla każdego bardzo prostym zadaniem. Jest oczywiste, że pole prostokąta równe jest iloczynowi długości jego boków, czyli
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:
Algorytm liniowy
"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 7
Algorytm rozgałęziony
Równanie kwadratowe :
ax2 + bx + c = 0 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:
§ 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
"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 8
Algorytm z cyklem
Algorytm poszukiwania najmniejszej liczby w n elementowym zbiorze liczb a1, a2, ..., an 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:
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)