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