Antoni M. Zaj czkowski: APP - Zadania. Podprogramy
6 kwietnia 2009
1
Zadanie.
Napisz funkcj Nie_Parzysta przyjmuj c warto True albo False w zale -
no ci od tego, czy jej argument (parametr) typu całkowitego jest odpowiednio liczb niepa-
rzyst , albo parzyst . Oto przykład wykorzystania tej funkcji.
Liczba : Integer
range
-99..99;
..
Put ("Liczba ");
Put (Liczba, 3);
if
Nie_Parzysta (Liczba)
then
Put (" jest nieparzysta");
else
Put (" jest parzysta");
end if
;
Zamie t funkcj na równowa n procedur Sprawdz_Czy_Nie_Parzysta oraz
ewentualnie zmie deklaracje i podany ci g instrukcji tak, e u ytkownik nie zauwa y zast -
pienia funkcji przez procedur .
Zadanie.
Napisa funkcj Suma_Kwadratow obliczaj c iteracyjnie sum kwadratów
pierwszych N liczb całkowitych dodatnich.
Zadanie.
Napisz funkcj Lucas obliczaj c - ty wyraz ci gu Lucasa okre lonego wzorem
,
,
.
Zadanie.
Maj c dan nagłówek funkcji Lucas
function
Lucas (N : in Positive )
return
Positive;
i fragment programu wypisuj cy pierwszych Ile_Wyrazow : Positive; tego ci gu
for
Licznik
in
1..Ile_Wyrazow
loop
Put (Licznik);
Set_Col(20);
Put (Lucas(Licznik));
New_Line;
end loop
;
Napisz nagłówek równowa nej procedury Oblicz_Lucasa i zmie podany fragment pro-
gramu tak, e u ytkownik nie zauwa y zmiany funkcji na procedur oraz zmiany p tli
for
na
p tl
while
. Zadeklaruj odpowiednie zmienne, je eli jest to potrzebne.
Antoni M. Zaj czkowski: APP - Zadania. Podprogramy
6 kwietnia 2009
2
Zadanie.
a) Napisa funkcj Znak wyznaczaj c znak argumentu typu Float tzn. znak +, je eli argu-
ment jest wi kszy od zera, znak – je eli argument jest mniejszy od zera i znak zero je eli
argument jest zerem.
b) Zamieni funkcj Znak na równowa n procedur Wyznacz_Znak i zmieni ewentual-
nie podane deklaracje i instrukcje tak, e u ytkownik nie zauwa y zamiany podprogra-
mów.
Zwró uwag na kolejno deklaracji.
function
Znak (Argument :
in
Float )
return
Character
is
..
end
Znak;
..
Plus :
constant
Character := '+';
Minus :
constant
Character := '-';
Zero :
constant
Character := '0';
Liczba : Float;
..
begin
Read (Liczba);
Ada.Text_Io.New_Line;
if
Znak (Liczba) = Zero
then
Ada.Text_Io.Put (Zero);
elsif
Znak (Liczba) = Plus
then
Ada.Text_Io.Put (Plus);
else
Ada.Text_Io.Put (Minus);
end if
;
end
Test_Znak;