• Nie Znaleziono Wyników

1 Definicja i algorytmu Notacje algorytmu Algorytm Podstawy informatyki Algorytm vs. program

N/A
N/A
Protected

Academic year: 2021

Share "1 Definicja i algorytmu Notacje algorytmu Algorytm Podstawy informatyki Algorytm vs. program"

Copied!
4
0
0

Pełen tekst

(1)

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 POMYUWARSTWA 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ędu

(2)

2

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

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)

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

Dziękuję za uwagę

Cytaty

Powiązane dokumenty

 Zbiór schematów dla różnych relacji w jednej bazie danych nazywamy schematem bazy danych...  Składa się z elementów, po jednym dla każdego z atrybutów relacji R; każdy

 Podobnie jak dla drzew, dla grafów istnieje możliwość przypisania do każdego wierzchołka etykiety (ang. Nazwy wierzchołków musza być niepowtarzalne, ale kilka

Elżbieta

 Reguła sum określa, że prawdopodobieństwo tego, że zajdzie jedno z dwóch zdarzeń E lub F jest większe lub równe większemu z prawdopodobieństw obu zdarzeń, ale nie

wybieramy losowo kilka kategorii i następnie losowo kilku osobników z każdej z wybranych

 Zaletą systemów addytywnych jest możliwość zapisu nawet dużych liczb całkowitych (pod warunkiem że są okrągłe) za pomocą jednego znaku, a wadą złożoność,

 Poniżej przedstawione typowe podstawowe bloki programów, istnieją oczywiście jeszcze inne...

Ponieważ każda droga jest (n-1) drogą, więc dist[v][w] jest minimalną długością drogi wiodącej z wierzchołka v do w.. Elżbieta