algorytmy.pdf

(203 KB) Pobierz
algorytmy
1 / 15
ALGORYTMIKA
2 / 15
ALGORYTMIKA
Wprowadzenie do algorytmów.
START
1. Podstawowe okrelenia.
Algorytmika – dział informatyki, zajmuj cy si nymi aspektami tworzenia i analizowania
algorytmów.
we: a,b,c
delta:=b 2 -4ac
Algorytm
T
N
delta>0
Program ródłowy
T
N
-
b
-
delta
Delta=0
x
=
1
2
×
a
Program wynikowy
-
+
Rys. A. Ka dy program działa według okre lonego algorytmu.
x
=
b
delta
-
=
b
x 0
2
×
2
a
2
a
wy: brak pierw.
rzeczywistych
Algorytm – dokładny („krok po kroku”) opis rozwi zania postawionego problemu lub sposobu
osi gni cia jakiego celu.
Specyfikacja problemu (specyfikacja algorytmu) – opisanie problemu przez podanie danych ,
z których korzysta algorytm oraz okre lenie wyniku , który ma by efektem działania algorytmu.
W specyfikacji podajemy równie :
- warunki , jakie powinny spełnia dane i wyniki,
- ewentualne zale no ci mi dzy danymi i wynikami.
2. Metody opisu algorytmów.
wy: x 1 ,x 2
wy: x 0
STOP
Rys. B. Schemat blokowy algorytmu obliczania pierwiastków równania kwadratowego.
Elementy schematu – bloki:
a) Opis słowny
Kolejne kroki algorytmu przedstawiamy za pomoc słów j zyka naturalnego.
b) Pseudo-kod
W opisie kolejnych kroków algorytmu ł czymy j zyk naturalny (opis słowny) ze znanymi nam
elementami składni wybranego j zyka programowania.
Przykład 1.
Algorytm obliczania pierwiastków równania kwadratowego.
Krok 1 : Na podstawie współczynników równania kwadratowego oblicz warto delty:
D :=b*b-4*a*c .
Krok 2 : Je li D >0 to oblicz dwa pierwiastki:
x1:=(-b-pierwiastek( D ))/(2*a) , x2:=(-b+pierwiastek( D ))/(2*a) ;
wypisz ich warto na ekran i zako cz działanie algorytmu.
Krok 3 : W przeciwnym wypadku, je li D =0 to oblicz jeden pierwiastek:
x0:=-b/(2*a) ; wypisz jego warto na ekran i zako cz działanie algorytmu.
Krok 4 : W przeciwnym wypadku, (je li D <0 ) wypisz na ekran komunikat: „brak pierwiastków
rzeczywistych” i zako cz działanie algorytmu.
c) Składnia jzyka programowania
3. Graficzna reprezentacja algorytmów.
a) Schemat blokowy
START STOP
pocz tek i koniec algorytmu
blok wprowadzania i wyprowadzania danych
blok przeprowadzania oblicze
blok podejmowania decyzji
b) Drzewo
a b
Korze
T
N
a c
b c
Wierzchołki po rednie
T
N
T
N
(a) (c) (b) (c)
Wierzchołki ko cowe - li cie
Rys. C. Drzewo algorytmu wyznaczania najwi kszej spo ród trzech liczb.
×
102702149.009.png 102702149.010.png 102702149.011.png 102702149.012.png 102702149.001.png 102702149.002.png 102702149.003.png 102702149.004.png
3 / 15
ALGORYTMIKA
4 / 15
ALGORYTMIKA
5. Podział algorytmów.
Algorytmy iteracyjne.
a) Algorytm liniowy
Algorytm, w którym nie wyst puj bloki decyzyjne.
Iteracja – wielokrotne powtarzanie tej samej czynno ci (operacji).
1. Wielokrotne wykonywanie całego programu.
START
we: r
START
pole:= r 2
obw:=2 r
we: r
wy: pole,obw
pole:= r 2
obw:=2 r
STOP
wy: pole,obw
Rys. D. Algorytm liniowy – brak elementów decyzyjnych.
b) Algorytm nieliniowy (warunkowy)
Algorytm, w którym wyst puje, co najmniej jeden blok decyzyjny, tzw. algorytm z rozgał zieniami
(przykłady na rys. B i rys. C).
Koniec programu?
(T/N)
T
N
odp=’T’
wy: ’Cze
STOP
Rys. E. Algorytm iteracyjny – powtarzanie całego programu po decyzji u ytkownika.
2. Schemat Hornera - obliczanie wartoci wielomianu.
a) Operacje dodawania i mnoenia w wielomianach.
„+” „*”
w(x) = ax 2 + bx + c
2
3
w(x) = ax 3 + bx 2 + cx + d
3
5
w(x) = ax 4 + bx 3 + cx 2 + dx + e
4
7
Po odpowiednich przekształceniach zapisu wielomianu ilo operacji mno enia zmniejsza si .
„+” „*”
w(x) = ax 2 + bx + c = (ax + b)x + c
2
2
w(x) = ax 3 + bx 2 + cx + d = (ax 2 + bx + c)x + d = ((ax +b)x + c)x + d
3
3
w(x) = ax 4 + bx 3 + cx 2 + dx + e = (ax 3 + bx 2 + cx +d)x + e = ((ax 2 + bx + c)x + d)x + e =
= (((ax +b)x + c)x + d)x + e
4
4
102702149.005.png
5 / 15
ALGORYTMIKA
6 / 15
ALGORYTMIKA
b) Opracowanie algorytmu obliczania wartoci wielomianu.
Dla wielomianu 3 stopnia:
w 3 (x) = a 0 x 3 + a 1 x 2 + a 2 x + a 3 = (a 0 x 2 + a 1 x + a 2 )x + a 3 = ((a 0 x + a 1 )x + a 2 )x + a 3
wprowadzamy pomocnicz zmienn y i wykonujemy kolejne operacje przypisania ( := ):
Schemat blokowy algorytmu:
START
y := a 0
y := yx + a 1
y := yx + a 2
y := yx + a 3
we: n; a 0 ,...,a n ; x
y := yx + a i
dla i=1..3
i:=1
y:=a 0
Dla wielomianu n-tego stopnia:
w n (x) = a 0 x n + a 1 x n-1 + … + a n-1 x + a n
T
i>n
N
y := a 0
y := yx + a 1
y := yx + a 2
...
y := yx + a n-1
y := yx + a n
wy: y
y:=yx+a i
i:=i+1
y := yx + a i
dla i=1..n
STOP
Specyfikacja algorytmu:
Dane:
n – stopie wielomianu (nieujemna liczba całkowita),
a 0 , …, a n – współczynniki wielomianu (ilo współczynników: n-1),
x – warto argumentu.
Wyniki:
Warto wielomianu w(x) n -tego stopnia dla danej warto ci argumentu x .
Rys. F. Schemat blokowy algorytmu obliczania warto ci wielomianu (schemat Hornera).
3. Wyszukiwanie najwikszego (najmniejszego) elementu w zbiorze.
a) Wstpne informacje.
Odszukanie okre lonego elementu w zbiorze wymaga przejrzenia wszystkich jego elementów.
W zwi zku z tym musimy okre li ilo wszystkich elementów, tzw. moc zbioru. Wykonujemy to
zwykle dwoma metodami:
- poprzedzamy elementy zbioru liczb , która okre la ilo wszystkich elementów, lub
- przyjmujemy okre lony element za „wartownika”, który nie nale y do zbioru i wskazuje jego koniec.
Dodatkowo zakładamy te , e zbiór nie mo e by niesko czony oraz e elementy zbioru nie s
uporz dkowane.
Słowny opis algorytmu:
Krok 1: Przyjmij współczynnik a 0 wielomianu (stoj cy przy argumencie x o najwy szej pot dze) za
warto pocz tkow i przypisz do pomocniczej zmiennej y.
/ y:=a 0 /
Krok 2: Oblicz n razy warto wyra enia y:=yx+a i dla i=1, 2, …, n.
b) Algorytm wyszukiwania najwikszego elementu.
Specyfikacja algorytmu:
Dane:
n – liczba naturalna okre laj ca ilo liczb w zbiorze,
x 1 , x 2 , …, x n – ci g liczb zbioru.
Wynik:
max – najwi ksza spo ród liczb: x 1 , x 2 , …, x n .
Słowny opis algorytmu:
Krok 1: Przyjmij pierwszy element zbioru (x 1 ) jako max [ max:=x 1 ].
Krok 2: Dla kolejnych elementów x i (i = 1, 2, …, n) sprawdzaj czy max jest mniejsze od x i [ max<x 1 ]
i je li tak to przyjmij za max – x i [ max:=x 1 ].
102702149.006.png
7 / 15
ALGORYTMIKA
8 / 15
ALGORYTMIKA
Schemat blokowy algorytmu:
Algorytmy wyszukiwania danych.
START
1. Wyszukiwanie w zbiorze nieuporzdkowanym (liniowe).
Specyfikacja algorytmu:
Dane:
a[i] ( i=1..n ) – nieuporz dkowana n-elementowa, jednowymiarowa tablica ( a ),
x – poszukiwany element w tablicy a .
Wynik:
Poło enie (indeks – i ) elementu x w tablicy a lub informacja o braku elementu.
we: n; x 0 ,...,x n
i:=1
max:=x 1
Schemat blokowy algorytmu:
T
i>n
N
START
T
max<x i
N
we: a[i],i=1..n; x
max:=x i
i:=1
wy: max
i:=i+1
STOP
T
N
i:=i+1
i>n
Rys. G. Schemat blokowy algorytmu wyszukiwania najwi kszego elementu.
c) Złoono algorytmów wyszukiwania najwikszego lub najmniejszego elementu.
Zgodnie z widocznym na rys. F schematem algorytmu odszukanie najwi kszego b d najmniejszego
elementu w zbiorze wymaga wykonania n-1 porówna , gdzie n jest ilo ci wszystkich elementów.
Poniewa nie jest mo liwe wykonanie mniejszej liczby porówna (dla poprawnego działania
algorytmu), dlatego mo emy powiedzie , e powy szy algorytm jest optymalny pod wzgl dem
zło ono ci obliczeniowej . Optymalny, a wi c najszybszy.
T
a[i]=x
N
wy: ’brak
elementu’
wy: i
STOP
Ę WICZENIA :
1. Co nale y zmieni w algorytmie umieszczonym na rys. G, aby odszuka element najmniejszy?
2. Uzupełnij schemat algorytmu z rys. G o mo liwo odczytania pozycji, na której znajdował si
poszukiwany element.
3. Narysuj schemat blokowy algorytmu jednoczesnego wyszukiwania elementu najwi kszego
i najmniejszego.
Rys. H. Schemat blokowy algorytmu wyszukiwania „liniowego”.
Ę WICZENIA :
1. Uzupełnij schemat algorytmu z rys. H o mo liwo wypisania wszystkich pozycji, na których
znajdował si poszukiwany element.
2. Wyszukiwanie w zbiorze uporzdkowanym (binarne).
Specyfikacja algorytmu:
Dane:
a[i] ( i=1..n ) – uporz dkowana n-elementowa, jednowymiarowa tablica ( a ),
x – poszukiwany element w tablicy a .
102702149.007.png
9 / 15
ALGORYTMIKA
10 / 15
ALGORYTMIKA
Wynik:
Poło enie (indeks – i ) elementu x w tablicy a lub informacja o braku elementu.
Pomocnicze zmienne:
l , p – tymczasowy lewy i prawy koniec zakresu,
s – tymczasowy rodek zakresu.
Tworzenie algorytmów – przykłady.
1. Suma i rednia arytmetyczna.
Przykładowy algorytm korzysta z elementu zwanego wartownikiem . Warto tego elementu jest znana
u ytkownikowi. Jej wprowadzenie ko czy działanie algorytmu.
Specyfikacja algorytmu:
Dane:
x – kolejno wprowadzane liczby (wartownikiem jest dowolna całkowita liczba ujemna).
Wynik:
Suma s i rednia arytmetyczna sr wprowadzonych liczb.
Pomocnicze zmienne:
il – ilo wprowadzonych liczb.
Schemat blokowy algorytmu:
Schemat blokowy algorytmu:
START
we: a[i],i=1..n; x
l:=1; p:=n
START
T
l>p
N
s:=0; il:=0
s:=(l+p) div 2
we: x
T
a[s]=x
N
T
N
wy: ’brak
elementu’
x 0
wy: s
T
a[s]<x
N
s:=s+x
il:=il+1
sr:=s/il
l:=s+1
p:=s-1
wy: s,sr
STOP
STOP
Rys. I. Schemat blokowy algorytmu wyszukiwania „binarnego”.
Rys. J. Schemat blokowy algorytmu obliczania sumy i redniej arytmetycznej liczb.
2. Silnia.
Zapis matematyczny:
1
dla n = 0
(0! = 1)
n! =
1 2 3 n dla n 1
Specyfikacja algorytmu:
Dane:
n – liczba naturalna, z której obliczamy silni .
102702149.008.png
Zgłoś jeśli naruszono regulamin