pascal_11.pdf

(74 KB) Pobierz
Obsługa klawiszy rozszerzonych i własne Menu
Turbo Pascal cześć 11
ver. 1.1
Dziś poznamy inną metodę rozwiązywania zadań. Ciekawą metodą są algorytmy rekurencyjne jako
alternatywne do iteracyjnych. Nie zawsze iteracja jest efektywna i odwrotnie, nie zawsze rekurencja jest
efektywna. Przedstawię teraz zadanie i rozwiąże je dwiema metodami. Kilka słów o rekurencji.
Rekurencja – algorytm, który stosuje się do samego siebie
Np. mówiąc o kalafiorze bierzemy małą jego część i opisujemy że kalafior wygląda identycznie, tylko że
powiększony
Opiszę teraz zadanie dla dwóch metod.
Piotruś sprząta zabawki – wersja rekurencyjna
Dane wejściowe: bałagan w pokoju
Dane wyjściowe: porządek w pokoju
(1) Jeśli jest bałagan, to weź jakąś zabawkę i włóż ją do pudełka w przeciwnym razie idź do (3)
(2) Piotruś sprząta pozostałe zabawki
(3) Koniec sprzątania
Zadanie 1
Dla 3 zabawek wygląda następująco
1. (1) Chowanie zabawki A do pudełka
2. (2) Piotruś sprząta pozostałe zabawki
3. (1) Chowanie zabawki B do pudełka
4. (2) Piotruś sprząta pozostałe zabawki
5. (1) Chowanie zabawki C do pudełka
6. (2) Piotruś sprząta pozostałe zabawki
7. (1) Nie ma bałaganu idź do (3)
8. (3) koniec
9. (3) koniec
10. (3) koniec
11. (3) koniec
Wersja iteracyjna
(1) Jak długo jest bałagan wykonuj krok (1,a)
a. Weź zabawkę i włóż ją do pudełka
(2) Koniec, pokój posprzątany
Do pisania programów z algorytmami rekurencyjnymi wykorzystujemy procedury i funkcje.
Z funkcji już korzystaliśmy, Writeln jest funkcją, a ja teraz stworzę własną funkcję. Funkcja w odróżnieniu od
procedury nie tylko wykonuje ciąg czynności, ale jeszcze wyrzuca wyniki jak np. funkcja sin. (wpierw oblicza
w sobie, później przestawia wynik w postaci numerycznej)
Zapiszmy:
Funkcja
Procedura
Function xxxx (lista_parametrów) : typ wyniku;
Deklaracje obiektów lokalnych
Begin
Instrukcje
End.
Procedure yyyy (lista_parametrów);
Deklaracje obiektów lokalnych
Begin
Instrukcje
End.
Kurs opracował mgr Jarosław Teodorczuk
veljarek@poczta.gazeta.pl
1
322273458.001.png 322273458.002.png 322273458.003.png
Sprawdź działanie poniższej funkcji.
Zadanie 2
Function f(x:real) : real;
Begin
end;
f:=1-exp(x);
Najprostszym zastosowaniem rekurencji jest potęga i silnia
Zadanie 3
Przepisz funkcje obliczającą silnie liczby (metoda rekurencji). Zwróć uwagę na zapis silni!!
í
1
=
1
0
=
1
î
n
!
=
n
×
(
n
-
1
)!
Function silnia(n:byte) : LongInt;
Begin
If n=0 then silnia:=1
Else silnia:=n*silnia(n-1)
End;
Zadanie 4
Napisz program liczący potęgę liczby na podstawie poniższego zapisu:
ì
a n
n
=
a
×
a
-
1
í
a
0
=
1
Zadanie 5
Napisz program obliczający pierwiastek z danej liczby.
Zadanie 6
Napisz funkcję wyznaczającą, która z podanych liczby jest największa, a która najmniejsza.
Kurs opracował mgr Jarosław Teodorczuk
veljarek@poczta.gazeta.pl
2
ì
Zgłoś jeśli naruszono regulamin