You are on page 1of 92

Algorytmy i struktury danych

Pojęcia wstępne

Wykład 1

2008-02-16 Algorytmy MŁ 2008 1


Pojęcie algorytmu
Algorytmem jest pewna ściśle określona procedura
obliczeniowa, która
dla właściwych danych wejściowych
„produkuje” żądane dane wyjściowe
zwane
wynikiem działania algorytmu .

2008-02-16 Algorytmy MŁ 2008 2


Pojęcie algorytmu
Algorytmem jest pewna ściśle określona procedura
obliczeniowa, która
dla właściwych danych wejściowych
„produkuje” żądane dane wyjściowe
zwane
wynikiem działania algorytmu .
1 2 3

Dane Algorytm Dane


wejściowe wyjściowe

2008-02-16 Algorytmy MŁ 2008 3


Źródłosłów:

Perski pisarz – matematyk Abu Jafar Mohammed


ibn Musa al-Khowarizmi ( IXw n.e.).

Podał regułę wyjaśniającą krok po kroku zasady


operacji arytmetycznych na liczbach dziesiętnych.

Po łacinie jego nazwisko brzmi: Algorismus.

2008-02-16 Algorytmy MŁ 2008 4


Słowo algorytm często jest również kojarzone z
greckim matematykiem Euklidesem (365-300 p.n.e.),
który przedstawił m.in. sformalizowane algorytmy:
• badania identyczności dwóch kątów;
• dzielenia kąta na połowy;
• obliczania Największego Wspólnego Podzielnika
tzw. NWP dwóch liczb naturalnych.

2008-02-16 Algorytmy MŁ 2008 5


Algorytmy muszą wykorzystywać w swoich
działaniach wyłącznie elementarne operacje, które
mogły być wykonane w sposób jednoznaczny, tzn.

2008-02-16 Algorytmy MŁ 2008 6


Algorytmy muszą wykorzystywać w swoich
działaniach wyłącznie elementarne operacje, które
mogły być wykonane w sposób jednoznaczny, tzn.
dla algorytmów geometrycznych
operacje typu prosta – okrąg,
wykonywane przy pomocy cyrkla i linijki;

2008-02-16 Algorytmy MŁ 2008 7


Algorytmy muszą wykorzystywać w swoich
działaniach wyłącznie elementarne operacje, które
mogły być wykonane w sposób jednoznaczny, tzn.
dla algorytmów geometrycznych
operacje typu prosta – okrąg,
wykonywane przy pomocy cyrkla i linijki;

dla algorytmów obliczeniowych


operacje arytmetyczne: +, -, *, /
oraz operatory porównywania.

2008-02-16 Algorytmy MŁ 2008 8


Algorytmy muszą wykorzystywać w swoich
działaniach wyłącznie elementarne operacje, które
mogły być wykonane w sposób jednoznaczny, tzn.

dla algorytmów sortowania


operacje typu :
porównaj dwa elementy,
wymień miejscami dwa elementy

2008-02-16 Algorytmy MŁ 2008 9


Cechy algorytmu informatycznego:

‰ posiada dane wejściowe,

2008-02-16 Algorytmy MŁ 2008 10


Cechy algorytmu informatycznego:

‰ posiada dane wejściowe,


‰ produkuje pewien wynik
(niekoniecznie numeryczny);

2008-02-16 Algorytmy MŁ 2008 11


Cechy algorytmu informatycznego:

‰ posiada dane wejściowe,


‰ produkuje pewien wynik
(niekoniecznie numeryczny);
‰ jest precyzyjnie zdefiniowany,

2008-02-16 Algorytmy MŁ 2008 12


Cechy algorytmu informatycznego:

‰ posiada dane wejściowe,


‰ produkuje pewien wynik
(niekoniecznie numeryczny);
‰ jest precyzyjnie zdefiniowany,
‰ jest skończony,

2008-02-16 Algorytmy MŁ 2008 13


Cechy algorytmu informatycznego:

‰ posiada dane wejściowe,


‰ produkuje pewien wynik
(niekoniecznie numeryczny);
‰ jest precyzyjnie zdefiniowany,
‰ jest skończony,
‰ jest jednoznaczny

2008-02-16 Algorytmy MŁ 2008 14


Cechy algorytmu informatycznego:

‰ posiada dane wejściowe,


‰ produkuje pewien wynik
(niekoniecznie numeryczny);
‰ jest precyzyjnie zdefiniowany,
‰ jest skończony,
‰ jest jednoznaczny
‰ jest kompletny;

2008-02-16 Algorytmy MŁ 2008 15


Cechy algorytmu informatycznego:

‰ posiada dane wejściowe,


‰ produkuje pewien wynik
(niekoniecznie numeryczny);
‰ jest precyzyjnie zdefiniowany,
‰ jest skończony,
‰ jest jednoznaczny
‰ jest kompletny;
‰ jest uniwersalny,

2008-02-16 Algorytmy MŁ 2008 16


posiada dane wejściowe,
ciowe

dane pochodzą z dokładnie określonego zbioru,

np. ze zbioru liczb naturalnych N,

ze zbioru liczb rzeczywistych R;

2008-02-16 Algorytmy MŁ 2008 17


jest precyzyjnie zdefiniowany,
zdefiniowany

tzn. każdy jego krok jest jednoznacznie


określony i obejmuje wyłącznie
operacje elementarne;

2008-02-16 Algorytmy MŁ 2008 18


jest skończony,

tzn. w skończonym czasie wyprodukuje wynik;

czas jego działania powinien być możliwie


precyzyjnie określony;

2008-02-16 Algorytmy MŁ 2008 19


jest jednoznaczny ( powtarzalny),

tzn. jego wielokrotne wykonywanie dla


identycznych danych wejściowych daje
zawsze taki sam wynik;

2008-02-16 Algorytmy MŁ 2008 20


jest kompletny,

tzn. uwzględnia wszystkie możliwe


przypadki, jakie mogą wystąpić
podczas jego wykonywania;

2008-02-16 Algorytmy MŁ 2008 21


jest uniwersalny,

tzn. umożliwia rozwiązanie całej klasy zadań,


a nie tylko pojedynczego, ustalonego
zadania.

2008-02-16 Algorytmy MŁ 2008 22


Formy przedstawiania algorytmu informatycznego:

‰ opis słowny, zazwyczaj z formułami matematycznymi

2008-02-16 Algorytmy MŁ 2008 23


Formy przedstawiania algorytmu informatycznego:

‰ opis słowny, zazwyczaj z formułami matematycznymi


‰ schemat graficzny
schematy blokowe
strukturogramy zwarte NS (Nassi-Shneidermana)

2008-02-16 Algorytmy MŁ 2008 24


Formy przedstawiania algorytmu informatycznego:

‰ opis słowny, zazwyczaj z formułami matematycznymi


‰ schemat graficzny
schematy blokowe
strukturogramy zwarte NS (Nassi-Shneidermana)

‰ specjalne języki matematyczne zwane pseudokodami

2008-02-16 Algorytmy MŁ 2008 25


Formy przedstawiania algorytmu informatycznego:

‰ opis słowny, zazwyczaj z formułami matematycznymi


‰ schemat graficzny
schematy blokowe
strukturogramy zwarte NS (Nassi-Shneidermana)

‰ specjalne języki matematyczne zwane pseudokodami


‰ języki programowania wyższego poziomu np. PASCAL,

2008-02-16 Algorytmy MŁ 2008 26


Strukturogramy zwarte NS
Blok WEJŚCIA
- zawiera wykaz danych wprowadzanych z zewnątrz

Lista wejścia

Przykład:

a, b, c

gdzie a, b, c są współczynnikami trójmianu


kwadratowego
2008-02-16 Algorytmy MŁ 2008 27
Strukturogramy zwarte NS
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

Przykład:

pole, obwód

Gdzie pole, obwód są zmiennymi wynikowymi


2008-02-16 Algorytmy MŁ 2008 28
Strukturogramy zwarte NS
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

Przykład:

„Jest to trójkąt równoboczny”

Wynik jest tekstem.


2008-02-16 Algorytmy MŁ 2008 29
Strukturogramy zwarte NS
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

Przykład:
x1, x2

Gdzie x1, x2 są obliczonymi pierwiastkami


trójmianu kwadratowego, np.
x1=23 x2= 34
2008-02-16 Algorytmy MŁ 2008 30
Strukturogramy zwarte NS
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

Przykład:
a*b, 2*a+2*b

pole= 123.20 obwód= 200


2008-02-16 Algorytmy MŁ 2008 31
Strukturogramy zwarte NS
Blok OPERACYJNY
- zawiera czynność obliczeniową (numeryczna, logiczna)

Operacja

Przykład:

delta:= b2-4*a*c

Oblicza wartość wyrażenia arytmetycznego


2008-02-16 Algorytmy MŁ 2008 32
Strukturogramy zwarte NS
Blok OPERACYJNY
- zawiera czynność obliczeniową (numeryczna, logiczna)

Operacja

Przykład:

zakres:= a>3 i b<3

Oblicza wartość wyrażenia logicznego


2008-02-16 Algorytmy MŁ 2008 33
Strukturogramy zwarte NS
Blok OPERACYJNY
- zawiera czynność obliczeniową (numeryczna, logiczna)

Operacja

Przykład:

zakres:= a>3 ∧ b<3

Oblicza wartość wyrażenia logicznego


2008-02-16 Algorytmy MŁ 2008 34
Strukturogramy zwarte NS
Blok DECYZYJNY
- zawiera pytanie i wybór jednej z dwóch możliwych instrukcji

Tak Warunek
Nie
Instrukcja 1 Instrukcja 2

2008-02-16 Algorytmy MŁ 2008 35


Strukturogramy zwarte NS
Blok DECYZYJNY
- zawiera pytanie i wybór jednej z dwóch możliwych instrukcji

Tak Warunek
Nie
Instrukcja 1 Instrukcja 2

Przykład:
Tak a>b
Nie
max:= a max:= b
Oblicza wartość maksimum z dwóch zmiennych: a, b
2008-02-16 Algorytmy MŁ 2008 36
Strukturogramy zwarte NS
Blok DECYZYJNY
-
Przykład:
Tak a>b
Nie
fun1:=a*b-3 fun1:=3*b+2+a
fun2:=a+b-a/b fun2:=a+b
fun3:=1
fun3
fun1, fun2

2008-02-16 Algorytmy MŁ 2008 37


Strukturogramy zwarte NS
Blok DECYZYJNY
-
Przykład:
Tak a>b Nie

Min:= b Min:= a
Max:= a Max:= b
Min, Max

2008-02-16 Algorytmy MŁ 2008 38


Strukturogramy zwarte NS

Blok pętli typu: DLA (FOR)

licznik:= początek, koniec, krok

Blok treści pętli

2008-02-16 Algorytmy MŁ 2008 39


Strukturogramy zwarte NS

Przykład pętli typu: DLA (FOR)

suma:= 0
i := 1, 100, 1

suma := suma+ i

suma

2008-02-16 Algorytmy MŁ 2008 40


Strukturogramy zwarte NS

Przykład pętli typu: DLA (FOR)

suma:= 0
i := 1, 100

suma := suma+ i

suma

2008-02-16 Algorytmy MŁ 2008 41


Strukturogramy zwarte NS

Przykład pętli typu: DLA (FOR)


„Podaj liczbę naturalną n=" , n
suma:= 0 , iloczyn:=1
i := 1, n
suma := suma + i
Iloczyn:= iloczyn * i

suma, iloczyn
2008-02-16 Algorytmy MŁ 2008 42
Strukturogramy zwarte NS

Blok pętli typu: DOPÓKI ( WHILE )

warunek

Blok treści pętli

2008-02-16 Algorytmy MŁ 2008 43


Strukturogramy zwarte NS

Blok pętli typu: DOPÓKI ( WHILE )

warunek

Blok treści pętli

Ilość wykonań: DOPÓKI warunek ma wartość PRAWDA


Zakończenie : warunek ma wartość FAŁSZ
UWAGA:
2008-02-16
Blok pętli możeAlgorytmy
nie wykonać
MŁ 2008
się ANI RAZU44
Strukturogramy zwarte NS

Przykład pętli typu: DOPÓKI ( WHILE )

licznik <= 10
liczba
suma:= suma+ liczba
licznik:= licznik + 1

2008-02-16 Algorytmy MŁ 2008 45


Strukturogramy zwarte NS

Przykład pętli typu: DOPÓKI ( WHILE )


suma:= 0
licznik:= 1
licznik <= 10
liczba
suma:= suma+ liczba
licznik:= licznik + 1
suma
2008-02-16 Algorytmy MŁ 2008 46
Strukturogramy zwarte NS
Przykład pętli typu: DOPÓKI ( WHILE )
‘Podaj liczbę n=" , n
suma:= 0
licznik:= 1
licznik <= n
liczba
suma:= suma+ liczba
licznik:= licznik + 1
n, suma
2008-02-16 Algorytmy MŁ 2008 47
Strukturogramy zwarte NS

Blok pętli typu: POWTARZAJ ( REPEAT)

Blok treści pętli

warunek

2008-02-16 Algorytmy MŁ 2008 48


Strukturogramy zwarte NS

Blok pętli typu: POWTARZAJ ( REPEAT)

Blok treści pętli

warunek

Ilość wykonań: GDY warunek ma wartość FAŁSZ


Zakończenie : warunek ma wartość PRAWDA
UWAGA: Blok pętli wykona się ZAWSZE co najmniej
JEDEN RAZ
2008-02-16 Algorytmy MŁ 2008 49
Strukturogramy zwarte NS

Przykład pętli typu: POWTARZAJ

liczba
suma:= suma+ liczba
licznik:= licznik + 1
licznik > 10

2008-02-16 Algorytmy MŁ 2008 50


Strukturogramy zwarte NS

Przykład pętli typu: POWTARZAJ

licznik:= 0
suma:= 0
liczba
suma:= suma+ liczba
licznik:= licznik + 1
licznik > 10

2008-02-16 Algorytmy MŁ 2008 51


Strukturogramy zwarte NS
Przykład pętli typu: POWTARZAJ
n
licznik:= 0
suma:= 0
liczba
suma:= suma+ liczba
licznik:= licznik + 1
licznik > n
2008-02-16
n, suma
Algorytmy MŁ 2008 52
Typy algorytmów
Z punktu widzenia organizacji wykonywanych
czynności (obliczenia, rysowanie, porównywanie)
rozróżniamy trzy podstawowe typy algorytmów:

2008-02-16 Algorytmy MŁ 2008 53


Typy algorytmów
Z punktu widzenia organizacji wykonywanych
czynności (obliczenia, rysowanie, porównywanie)
rozróżniamy trzy podstawowe typy algorytmów:

‰ liniowy (sekwencyjny)

2008-02-16 Algorytmy MŁ 2008 54


Typy algorytmów
Z punktu widzenia organizacji wykonywanych
czynności (obliczenia, rysowanie, porównywanie)
rozróżniamy trzy podstawowe typy algorytmów:

‰ liniowy (sekwencyjny)
‰ z rozgałęzieniami (selekcja)

2008-02-16 Algorytmy MŁ 2008 55


Typy algorytmów
Z punktu widzenia organizacji wykonywanych
czynności (obliczenia, rysowanie, porównywanie)
rozróżniamy trzy podstawowe typy algorytmów:

‰ liniowy (sekwencyjny)
‰ z rozgałęzieniami (selekcja)
‰ iteracyjny (pętla).
2008-02-16 Algorytmy MŁ 2008 56
Typ: liniowy (sekwencyjny):

wszystkie czynności są wykonywane w ściśle


określonej kolejności, jedna za drugą

2008-02-16 Algorytmy MŁ 2008 57


Typ: z rozgałęzieniami (selekcja):

kolejność i zakres wykonywanych czynności


zależy od warunków, których spełnienie (lub
niespełnienie) zależy od danych wejściowych
oraz pewnych wyników pośrednich;

2008-02-16 Algorytmy MŁ 2008 58


Typ: iteracyjny (pętla):

pewien ciąg identycznych czynności


(tzw. cykl lub pętla) jest powtarzany
wielokrotnie dla różnych danych.

2008-02-16 Algorytmy MŁ 2008 59


Schematy blokowe zorientowane

Blok STARTOWY

Start

Wskazuje miejsce rozpoczęcia pracy algorytmu.


2008-02-16 Algorytmy MŁ 2008 60
Schematy blokowe zorientowane

Blok KOŃCOWY

Koniec

Wskazuje miejsce zakończenia pracy algorytmu.


2008-02-16 Algorytmy MŁ 2008 61
Schematy blokowe zorientowane
Blok WEJŚCIA
- zawiera wykaz danych wprowadzanych z zewnątrz

Lista wejścia

Przykład:
a,b,c

Gdzie a, b, c są współczynnikami trójmianu


kwadratowego
2008-02-16 Algorytmy MŁ 2008 62
Schematy blokowe zorientowane
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

Przykład:

pole, obwód

Gdzie pole, obwód są zmiennymi wynikowymi


2008-02-16 Algorytmy MŁ 2008 63
Schematy blokowe zorientowane
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

Przykład:
a*b, 2*a+2*b

Listę tworzą dwa wyrażenia arytmetyczne


2008-02-16 Algorytmy MŁ 2008 64
Schematy blokowe zorientowane
Blok OPERACYJNY
- zawiera czynność obliczeniową

Operacja

Przykład:

delta:= b2-4*a*c

Oblicza wartość wyrażenia arytmetycznego


2008-02-16 Algorytmy MŁ 2008 65
Schematy blokowe zorientowane
Blok DECYZYJNY
- zawiera pytanie i wybór jednej z dwóch możliwych instrukcji

Tak warunek
Nie

: Instrukcje_1 Instrukcje_2

. . . . . . .

Instrukcje wspólne
2008-02-16 Algorytmy MŁ 2008 66
Schematy blokowe zorientowane
Blok DECYZYJNY
Przykład:

Tak Nie
a>b

: Min:=b Min:=a
Max:=a Max:=b

2008-02-16 Algorytmy MŁ 2008 67


Schematy blokowe zorientowane

Blok pętli typu: DLA

licznik:=początek, koniec,krok

Instrukcje 1

Instrukcje dalsze

2008-02-16 Algorytmy MŁ 2008 68


Schematy blokowe zorientowane
Przykład pętli typu: DLA

Suma:=0

i:=1,100,2

Suma:=suma+i
Instrukcje dalsze

2008-02-16 Algorytmy MŁ 2008 69


Schematy blokowe zorientowane
Blok pętli typu: DOPÓKI ( WHILE )

Nie
warunek

Tak

Blok pętli

Dalsze operacje

2008-02-16 Algorytmy MŁ 2008 70


Schematy blokowe zorientowane

Blok pętli typu: POWTARZAJ ( REPEAT )

Blok pętli

Nie
warunek

Tak

2008-02-16 Algorytmy MŁ 2008 71


Przykłady różnych form zapisu
TEGO SAMEGO
algorytmu

2008-02-16 Algorytmy MŁ 2008 72


Zagadnienie:
Problem: Oblicz wartość funkcji:
x
f(x) = -----
|x|
Dane: dowolna liczba rzeczywista x
Wynik: wartość funkcji f(x) określona jest wzorem:

-1 dla x < 0
f(x) = 0 dla x=0
1 dla x > 0
2008-02-16 Algorytmy MŁ 2008 73
Opis słowny

krok 0: Podaj wartość danej x

2008-02-16 Algorytmy MŁ 2008 74


Opis słowny

krok 0: Podaj wartość danej x

krok 1: Jeśli x>0, to f(x)=1 i zakończ algorytm.

2008-02-16 Algorytmy MŁ 2008 75


Opis słowny

krok 0: Podaj wartość danej x

krok 1: Jeśli x>0, to f(x)=1 i zakończ algorytm.

krok 2: Jeśli x=0, to f(x)=0 i zakończ algorytm.

2008-02-16 Algorytmy MŁ 2008 76


Opis słowny

krok 0: Podaj wartość danej x

krok 1: Jeśli x>0, to f(x)=1 i zakończ algorytm.

krok 2: Jeśli x=0, to f(x)=0 i zakończ algorytm.

krok 3: Mamy f(x)= -1 i zakończ algorytm.

2008-02-16 Algorytmy MŁ 2008 77


Schemat zwarty:

2008-02-16 Algorytmy MŁ 2008 78


Schemat zwarty:

x
x <0
Tak Nie

2008-02-16 Algorytmy MŁ 2008 79


Schemat zwarty:

x
x <0
Tak Nie
-1

2008-02-16 Algorytmy MŁ 2008 80


Schemat zwarty:

x
x <0
Tak Nie
-1 Tak x=0 Nie

2008-02-16 Algorytmy MŁ 2008 81


Schemat zwarty:

x
x <0
Tak Nie
-1 Tak x=0 Nie
0

2008-02-16 Algorytmy MŁ 2008 82


Schemat zwarty:

x
x <0
Tak Nie
-1 Tak x=0 Nie
0 1

2008-02-16 Algorytmy MŁ 2008 83


Schemat blokowy
start

2008-02-16 Algorytmy MŁ 2008 84


Schemat blokowy
start

2008-02-16 Algorytmy MŁ 2008 85


Schemat blokowy
start

Tak Nie
X<0

2008-02-16 Algorytmy MŁ 2008 86


Schemat blokowy
start

Tak Nie
X<0
-1

koniec

2008-02-16 Algorytmy MŁ 2008 87


Schemat blokowy
start

Tak Nie
X<0
-1 Tak Nie
X=0

koniec

2008-02-16 Algorytmy MŁ 2008 88


Schemat blokowy
start

Tak Nie
X<0
-1 Tak Nie
X=0

koniec 0

koniec

2008-02-16 Algorytmy MŁ 2008 89


Schemat blokowy
start

Tak Nie
X<0
-1 Tak Nie
X=0

koniec 0 1

koniec koniec

2008-02-16 Algorytmy MŁ 2008 90


Zapis w pseudokodzie :

Funkcja f(x)
początek
wczytanie x
jeżeli x>0 to pisz (1)
w przeciwnym razie
jeżeli x=0 to pisz(0)
w przeciwnym razie pisz(-1)
koniec

2008-02-16 Algorytmy MŁ 2008 91


Program w języku Turbo Pascal

PROGRAM funkcja;
VAR x: Real;
BEGIN
READ (x);
IF x>0 THEN WRITE(1)
ELSE IF x=0 THEN WRITE(0)
ELSE WRITE(-1);
END.

2008-02-16 Algorytmy MŁ 2008 92

You might also like