Antoni M. Zaj czkowski: APP - Zadania. Podprogramy 6 kwietnia 2009
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 nieparzyst , 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 programu 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.
1
Antoni M. Zaj czkowski: APP - Zadania. Podprogramy 6 kwietnia 2009
Zadanie.
a) Napisa funkcj Znak wyznaczaj c znak argumentu typu Float tzn. znak +, je eli argument 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 ewentualnie 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;
2