background image

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. 

 

background image

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;