1
"Podstawy informatyki", Tadeusz Wilusz 2004 1
Podstawy informatyki
Temat 04 OPROGRAMOWANIE cz.1
Tworzenie oprogramowania
"Podstawy informatyki", Tadeusz Wilusz 2004 2
Algorytm vs. program
"Podstawy informatyki", Tadeusz Wilusz 2004 3
DANE
10010100111010 0101 100101001110 100101001110 001110 Alfabet
Język Program
Program tłumaczący Pomysł na
rozwiązanie
• oblicz deltę
• sprawdź jej znak
• oblicz x1 i x2
ALGORYTM Obliczanie
pierwiastków równania kwadratowego PROBLEM
START Wczytaj a b c
D:=b2-4ac STOP
Program delta;
var a,b,c,d,x1,x2:real;
begin writeln(‘Podaj a’);
readln(a);
...
Słowa kluczowe
Składnia Zdania zawierające
“litery” przy zachowaniu obowiązującej składni
Pamięć
Procesor
Magistrala
Układy I/O
WARSTWA POMYSŁUWARSTWA SOFTWARE’UWARSTWA HARDWARE’U
"Podstawy informatyki", Tadeusz Wilusz 2004 4
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
"Podstawy informatyki", Tadeusz Wilusz 2004 5
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
"Podstawy informatyki", Tadeusz Wilusz 2004 6
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ędu2
"Podstawy informatyki", Tadeusz Wilusz 2004 7
terminator
wejścia-wyjścia przetwarzanie
decyzyjny
Blok Nazwa bloku
podprogramu łącznika
komentarza Algorytm
Algorytm
START
STOP We: a,b,c
Delta:=b*b-4*a*c
Delta < 0
?
Wy: brak roz- wiązania X1:=(-b+sqrt (delta)) / 2*a X2:=(-b- sqrt (delta)) / 2*a
Wy: X1 , X2 Tak Nie
Rozwiązanie równania kwadratowego
Tutaj badanie znaku delty
"Podstawy informatyki", Tadeusz Wilusz 2004 8
START
STOP We: a,b,c
Delta:=b*b-4*a*c
Delta < 0
?
Wy: brak roz- wiązania x1:=(-b+sqrt (Delta)) / 2*a x2:=(-b- sqrt (Delta)) / 2*a
Wy: x1 , x2 Tak Nie
Tutaj badanie znaku delty
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.
"Podstawy informatyki", Tadeusz Wilusz 2004 9
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:
POCZĄTEK Czytaj(a,b) P := a*b Pisz(P) KONIEC
Algorytm liniowy
"Podstawy informatyki", Tadeusz Wilusz 2004 10
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
"Podstawy informatyki", Tadeusz Wilusz 2004 11
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)
"Podstawy informatyki", Tadeusz Wilusz 2004 12
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
3
"Podstawy informatyki", Tadeusz Wilusz 2004 13
Translacja kompilacyjna
•KOMPILATOR
•LINKER
•BIBLIOTEKARZ
•EDYTOR .obj
.exe
.lib
"Podstawy informatyki", Tadeusz Wilusz 2004 14
Języki programowania
deklaratywne proceduralne Języki
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
"Podstawy informatyki", Tadeusz Wilusz 2004 15
Języki programowania
Maszynowe Wysokiego poziomu Języki
•Języki maszynowe: Assemblery
•Języki wysokiego poziomu: ADA, Pascal, Fortran, C++, Lisp, B, SmallTalk, Java
"Podstawy informatyki", Tadeusz Wilusz 2004 16
Języki programowania
Kompilowane Interpretowane Języki
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.
"Podstawy informatyki", Tadeusz Wilusz 2004 17
HISTORIA
Algol-60
Pascal
Modula 2
Simula-67 Simula-67
Loglan Loglan
JavaJava C
C++C++
AdaAda
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
"Podstawy informatyki", Tadeusz Wilusz 2004 18
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)
typowe fragmenty programu muszą dać się łatwo użyć w innych programach lub w tym samym programie
– Kompatybilność – Efektywność – Przenaszalność
4
"Podstawy informatyki", Tadeusz Wilusz 2004 19
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
"Podstawy informatyki", Tadeusz Wilusz 2004 20