• Nie Znaleziono Wyników

1 Definicja i algorytmu Algorytm

N/A
N/A
Protected

Academic year: 2021

Share "1 Definicja i algorytmu Algorytm"

Copied!
5
0
0

Pełen tekst

(1)

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

(2)

"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

(3)

"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)

"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 9

Język programowania

• Jest to notacja dla której opracowano program automatycznego przekładu (translator) na język maszynowy (wykonawcy)

• Podstawowe techniki translacji:

– kompilacyjna

– interpretacyjna

(4)

"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 10

Translacja kompilacyjna

KOMPILATOR

LINKER

BIBLIOTEKARZ

EDYTOR .obj

.exe

.lib

"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 11

HISTORIA

Algol-60

Pascal

Modula 2

Simula-67 Simula-67

Loglan Loglan

Java Java C

C++ C++

Ada Ada

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 inne języki hybrydowe

inne języki hybrydowe

Smalltalk Smalltalk Fortran

asemblery

Jakość oprogramowania

– Poprawność (correctness)

program ma robić dokładnie (i poprawnie) to, co zostało zdefiniowane w specyfikacji

– Odporność (robustness)

program ma zachowywać się sensownie w każdej (nawet nieprzewidzianej) sytuacji

– Modyfikowalność i rozszerzalność

program musi być łatwo dostosowywalny do zmian w specyfikacji

– Możliwość wielokrotnego użycia elementów projektu i

programu (reusability)

(5)

"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 13

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

– 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

"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 14

Krótka historia języka C

1969 język BCPL; Martin Richards z University Mathematical Laboratories w Cambridge; dla pierwszej instalacji systemu operacyjnego UNIX 1970 język B zdefiniowany dwa lata wcześniej

przez Kena Thompsona dla pierwszego systemu UNIX działającego na DEC PDP-7.

1972 definicja języka C przez Dennisa M. Ritchie z Bell Laboratories w New Jersey dla systemu UNIX działającego na minikomputerze DEC PDP- 11.

"Metody i języki programowania. Programowanie strukturalne", Tadeusz Wilusz, 2004 15

NAJPROSTSZY PROGRAM

/* (Prawie) najprostszy przykład programu w C */

/*= = = = = = = = = = = = = = = = = = */

/* Między tymi znaczkami można pisać, co się chce - to komentarz*/

#include < stdio.h> /* znaczek # - polecenie(dyrektywa) translatora*/

void main (void)

{ /* poczatek definicji funkcji głównej programu */

char x[100]; /* deklaracja zmiennej tekstowej - na Twoja odpowiedz na pozdrowienie komputera */

printf("Witaj !\r\n"); /*komputer wypisuje pozdrawienie */

scanf("%s",x); /* i czeka na Twoja odpowiedz z klawiatury */

} /* koniec instrukcji zlozonej */

Repertuar zdań tekstu programu w języku C:

KOMENTARZE, DYREKTYWY TRANSLATORA,

DEKLARACJE (DEFINICJE) OBIEKTÓW, INSTRUKCJE

Cytaty

Powiązane dokumenty

Szkolny zestaw podręczników dla klas I w roku szkolnym 2011/2012 Zasadnicza Szkoła

Drodzy uczniowie proszę obejrzyjcie filmiki o tematyce „Pierwsza pomoc” – pod podanymi poniżej linkami:.. https://www.youtube.com/watch?v=-yF_1BM3F8E

Zapoznanie się z ciekawostką (informacje na temat Juliana Konstantego Ordona) str. Uważne przeczytanie lub wysłuchanie ,,Reduty Ordona”... 3. Ułożenie planu wydarzeń

2. Następnie nauczyciel czyta fragment jakiegoś opowiadania, np. Nauczyciel prosi, aby uczniowie zajrzeli do podręczników i na podstawie któregoś z tekstów spróbowali powiedzieć

Strona główna portalu www.amazon.com- przestrzeganie wielu zasad, wybór nowej strony.. Strona portalu www.amazon.com- przestrzeganie wielu zasad (np.ten

Maszyna Turinga przesuwa głowicę wejś- ciową w prawo, zwiększając w każdym kroku licznik o 1, aż do pierwszej litery b (jeśli jej nie ma, to jest jeszcze łatwiej, bo

Twierdzenie Cayley’a-Hamiltona daje kolejną możliwość wyznaczenia macierzy odwrotnej do macierzy nieosobliwej — wystarczy wyznaczyć równanie charakterystyczne macierzy A,

Algorytmy i Struktury