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