Wykład 1

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 93

Algorytmy i struktury danych

Wykład 1

Pojęcia wstępne
 
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 .
 
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
Źródłosłów:

Perski pisarz – matematyk Abu Jafar Mohammed


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

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


operacji arytmetycznych na liczbach dziesiętnych.

  Po łacinie jego nazwisko brzmi: Algorismus.


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.
Algorytmy muszą wykorzystywać w swoich
działaniach wyłącznie elementarne operacje, które mogą
być wykonane w sposób jednoznaczny, np.
     
 
Algorytmy muszą wykorzystywać w swoich
działaniach wyłącznie elementarne operacje, które mogą
być wykonane w sposób jednoznaczny, np.
     
      
dla algorytmów geometrycznych

operacje typu prosta – okrąg,


wykonywane przy pomocy cyrkla i linijki;

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

operacje arytmetyczne: +, -, *, /
operatory porównywania: <,>,#,=,≥ ,≤
operatory logiczne: ˄,˅
funkcje matematyczne: sin, log, pierwisatek

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

operacje typu : porównaj dwa elementy,


wymień miejscami dwa elementy

 
Cechy algorytmu informatycznego:
 
Cechy algorytmu informatycznego:
 

     posiada dane wejściowe


Cechy algorytmu informatycznego:
 

     posiada dane wejściowe


q produkuje pewien wynik
(niekoniecznie numeryczny)
Cechy algorytmu informatycznego:
 

     posiada dane wejściowe


q produkuje pewien wynik
(niekoniecznie numeryczny)
q       jest precyzyjnie zdefiniowany
Cechy algorytmu informatycznego:
 

     posiada dane wejściowe


q produkuje pewien wynik
(niekoniecznie numeryczny)
q       jest precyzyjnie zdefiniowany
q       jest skończony
Cechy algorytmu informatycznego:
 

     posiada dane wejściowe


q produkuje pewien wynik
(niekoniecznie numeryczny)
q       jest precyzyjnie zdefiniowany
q       jest skończony
q       jest jednoznaczny
Cechy algorytmu informatycznego:
 

     posiada dane wejściowe


q produkuje pewien wynik
(niekoniecznie numeryczny)
q       jest precyzyjnie zdefiniowany
q       jest skończony
q       jest jednoznaczny
q       jest kompletny
Cechy algorytmu informatycznego:
 

     posiada dane wejściowe


q produkuje pewien wynik
(niekoniecznie numeryczny);
q       jest precyzyjnie zdefiniowany
q       jest skończony
q       jest jednoznaczny
q       jest kompletny
q       jest uniwersalny
  Posiada dane wejściowe,

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

np. ze zbioru liczb naturalnych N,

ze zbioru liczb rzeczywistych R;


      Jest precyzyjnie zdefiniowany,

tzn. każdy jego krok jest jednoznacznie


określony i obejmuje wyłącznie
operacje elementarne;
Jest skończony,

tzn. w skończonym czasie wyprodukuje wynik;

czas jego działania powinien być możliwie


precyzyjnie określony;
Jest jednoznaczny ( powtarzalny),

tzn. jego wielokrotne wykonywanie dla


identycznych danych wejściowych
daje zawsze taki sam wynik;
  Jest kompletny,

tzn. uwzględnia wszystkie możliwe


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

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


a nie tylko pojedyńczego, ustalonego zadania.
Formy przedstawiania algorytmu informatycznego:
 

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


Formy przedstawiania algorytmu informatycznego:
 

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


q       schemat graficzny
schematy blokowe;
     strukturogramy zwarte NS (Nassi-Shneidermana)
Formy przedstawiania algorytmu informatycznego:
 

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


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

q       specjalne języki matematyczne zwane pseudokodami


Formy przedstawiania algorytmu informatycznego:
 

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


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

q       specjalne języki matematyczne zwane pseudokodami


q       języki programowania wyższego poziomu np. PASCAL,
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ą np. współczynnikami trójmianu


kwadratowego
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


Strukturogramy zwarte NS
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

Przykład:

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

Wynik może być tekstem (komunikatem) .


Strukturogramy zwarte NS
Blok WYJŚCIA
- zawiera wykaz wyprowadzanych wyników

Lista wyjścia

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

Np. pole= 200 obwód= 60 ( a=10, b=20)


Strukturogramy zwarte NS
Blok OPERACYJNY
- zawiera czynność obliczeniową (numeryczną, logiczną)

Operacja

Przykład:

delta:= b2-4*a*c

Oblicza wartość wyrażenia arytmetycznego


Strukturogramy zwarte NS
Blok OPERACYJNY
- zawiera czynność obliczeniową (numeryczną, logiczną)

Operacja

Przykład:

zakres:= a>3 i b<3

Oblicza wartość wyrażenia logicznego


Strukturogramy zwarte NS
Blok OPERACYJNY
- zawiera czynność obliczeniową (numeryczną, logiczną)

Operacja

Przykład:

zakres:= a>3  b<3

Oblicza wartość wyrażenia logicznego


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

Tak Warunek
Nie
Instrukcja 1 Instrukcja 2
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
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
Strukturogramy zwarte NS
Blok DECYZYJNY

Przykład:
Tak a>b Nie

Min:= b Min:= a
Max:= a Max:= b
Min, Max
Strukturogramy zwarte NS

Blok pętli typu: DLA (FOR)

licznik:= początek, koniec, krok

Blok treści pętli


Strukturogramy zwarte NS

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

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

suma := suma+ i

suma
Strukturogramy zwarte NS

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

suma:= 0
i := 1, 100

suma := suma+ i

suma
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
Strukturogramy zwarte NS

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

warunek

Blok treści pętli


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: Blok pętli może nie wykonać się ANI RAZU
Strukturogramy zwarte NS

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

licznik <= 10
liczba
suma:= suma + liczba
licznik:= licznik + 1
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
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
Strukturogramy zwarte NS

Blok pętli typu: POWTARZAJ ( REPEAT)

Blok treści pętli

warunek
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
Strukturogramy zwarte NS

Przykład pętli typu: POWTARZAJ

liczba
suma:= suma+ liczba
licznik:= licznik + 1
licznik > 10
Strukturogramy zwarte NS

Przykład pętli typu: POWTARZAJ

licznik:= 0
suma:= 0
liczba
suma:= suma+ liczba
licznik:= licznik + 1
licznik > 10
Strukturogramy zwarte NS
Przykład pętli typu: POWTARZAJ
n
licznik:= 0
suma:= 0
liczba
suma:= suma+ liczba
licznik:= licznik + 1
licznik > n
n, suma
Typy algorytmów

Z punktu widzenia organizacji wykonywanych


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

q       liniowy (sekwencyjny)


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

q       liniowy (sekwencyjny)

q      z rozgałęzieniami (selekcja)


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

q       liniowy (sekwencyjny)

q      z rozgałęzieniami (selekcja)

q      iteracyjny (pętla).
 Typ:     liniowy (sekwencyjny):

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


określonej kolejności, jedna za drugą
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;
Typ:     iteracyjny (pętla):

pewien ciąg identycznych czynności


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

Blok STARTOWY

Start

Wskazuje miejsce rozpoczęcia pracy algorytmu.


Schematy blokowe zorientowane

Blok KOŃCOWY

Koniec

Wskazuje miejsce zakończenia pracy algorytmu.


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ą np. współczynnikami trójmianu


kwadratowego
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


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


Schematy blokowe zorientowane
Blok OPERACYJNY
- zawiera czynność obliczeniową

Operacja

Przykład:

delta:= b2-4*a*c

Oblicza wartość wyrażenia arytmetycznego


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
Schematy blokowe zorientowane
Blok DECYZYJNY
Przykład:

Tak Nie
a>b

: Min:=b Min:=a
Max:=a Max:=b
Schematy blokowe zorientowane

Blok pętli typu: DLA

licznik := początek, koniec, krok

Instrukcje 1

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

Suma:=0

i:=1,100,2

Suma:=suma+i
Instrukcje dalsze
Schematy blokowe zorientowane
Blok pętli typu: DOPÓKI ( WHILE )

Nie
warunek

Tak

Blok pętli

Dalsze operacje
Schematy blokowe zorientowane

Blok pętli typu: POWTARZAJ ( REPEAT )

Blok pętli

Nie
warunek

Tak
Przykłady różnych form zapisu
TEGO SAMEGO
algorytmu
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
Opis słowny

krok 0: Podaj wartość danej x


Opis słowny

krok 0: Podaj wartość danej x

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


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.


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.


Schemat zwarty:

x
Schemat zwarty:

x
x <0
Tak Nie
Schemat zwarty:

x
x <0
Tak Nie
-1
Schemat zwarty:

x
x <0
Tak Nie
-1 Tak x=0 Nie
Schemat zwarty:

x
x <0
Tak Nie
-1 Tak x=0 Nie
0
Schemat zwarty:

x
x <0
Tak Nie
-1 Tak x=0 Nie
0 1
Schemat blokowy
start
Schemat blokowy
start

X
Schemat blokowy
start

Tak Nie
X<0
Schemat blokowy
start

Tak Nie
X<0
-1

koniec
Schemat blokowy
start

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

koniec
Schemat blokowy
start

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

koniec 0

koniec
Schemat blokowy
start

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

koniec 0 1

koniec koniec
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
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.
Koniec

You might also like