background image

PODST AWY PROGRAM OWANIA

 

 

Procedury i funkcje – przekazywanie parametrów przez zmienną

 

 

Parametry formalne służą do przekazywania danych. Deklaracje parametrów są oddzielane średnikami, każda 
deklaracja składa się z listy zmiennych i nazwy typu. Poprzedzające listę słowo var określa przekazanie danych 
przez zmienną, jego brak – przekazanie danych przez wartość.  

Przekazanie przez zmienną może przenieść wartość do procedury (wejście), po jej zakończeniu powoduje zwrot 
nowej  wartości  do  programu  wywołującego  procedurę.  Parametry  aktualne  przekazujące  przez  zmienną  muszą 
być identyfikatorami (nazwami) zmiennych.  
 
Ćwiczenie 1 

• 

Uruchom poniższy program. 

Program rachunki; 
var x, y, s: Integer; 

procedure suma(a, b, c: Integer); 
begin 
c := a + b; 
writeln('suma ', c:4); 
end; 

begin 
randomize; 
x := random(10); 
y := random(10); 
suma(x, y, s); 
writeln('suma wynosi ', s); 
end. 

• 

Zinterpretuj wyniki. 

Uwagi 

 Parametry w procedurze przekazywane są przez wartość, tzn. traktowane są jako wartości początkowe 

zmiennych  lokalnych.  W  momencie  zakończenia  procedury  parametr  formalny  przestaje  istnieć, 
dlatego wartość parametru aktualnego (zmienna 

c

) nie została zmieniona. 

 Aby wartość wyliczona w procedurze została zwrócona do programu po zakończeniu procedury, trzeba 

ten parametr przekazać przez zmienną. 

• 

Wprowadź modyfikacje aby wyniki były poprawne.  

 Parametr 

c

 trzeba przekazać do procedury przez zmienną. Zmodyfikuj nagłówek procedury do postaci: 

Procedure suma(a, b: Integer; var c: Integer); 

• 

Zmodyfikuj program tak aby wczytywał z klawiatury cztery liczby  

a, b, x, y 

, obliczał sumę 

a + b

  

x + y

, sprawdzał, która suma jest większa i wyświetlał stosowny komunikat. 

• 

Napisz  funkcję,  która  oblicza  sumę  dwóch  liczb  podanych  jako  parametry  (robi  dokładnie  to  samo  co 
procedura 

suma

), wykonaj punkt poprzedni wykorzystując napisaną funkcję. 

 
Ćwiczenie 2 

Napisz następujące procedury i funkcje: 

• 

Procedurę  wypełniającą  tablicę  jednowymiarową  liczbami  losowymi  z  zakresu  (0,  50)  z  dwoma 
parametrami  n  –  rozmiar  tablicy,  naz  –  nazwa  tablicy  (zastanów  się  jak  przekazać  parametry  do 
procedury). 

• 

Funkcję, która oblicza sumę wszystkich elementów tablicy. 

• 

Funkcję  logiczną,  która  przyjmie  wartość  True,  gdy  w  tablicy  wystąpi  liczba  podana  jako  parametr 
funkcji. 

 W programie zadeklaruj dwie tablice: 

 

A

 o rozmiarze 

l

 

 

B

 o rozmiarze 

m

 

 Zadeklaruj zmienną 

k.

 

 Zmienne 

lm

 i 

k

 wprowadź z klawiatury.  

 Wypełnij i wyświetl obie tablice.  
 Sprawdź czy liczba 

k

 występuje w tablicach i wyświetl stosowne komunikaty. 

 

background image

PODST AWY PROGRAM OWANIA

 

 

Procedury i funkcje – przekazywanie parametrów przez zmienną

 

 

Program tablica; 
uses crt; 
const n = 30; 
type t = array[1..n] of integer; 
var l, m, k: Integer; 

  A,B: t; 

procedure wypelnij(n: Integer; var naz: t); 
var i: Integer; 
begin 

for i := 1 to n do naz[i] := random(100); 

end;  

procedure wyswietl(n: Integer; naz: t); 
var i:integer; 
begin 

for i := 1 to n do write(naz[i]:3); 
writeln; 

end;  

function suma(n: Integer; naz: t): Integer; 
var i: Integer; 
begin 

s := 0; 
for i := 1 to n do s := s + naz[i]; 
suma := s; 

end; 

function szukaj(n, k: Integer; naz: t): Boolean; 
var i: Integer; 
begin 

szukaj := False; 
for i := 1 to n  do 

if naz[i] = k then begin 

szukaj := true; 
exit; 

end; 

end; 

begin 

clrscr; 
randomize; 
writeln(‘W

prowadź rozmiar tablicy A

: ’); 

readln(l); 
writeln(‘W

prowadź rozmiar tablicy B

: ’); 

readln (m); 
writeln(‘W

prowadź liczbę k

: ’); 

readln(k); 
wypelnij(l, A); 
wypelnij(m, B); 
writeln(‘Tablica A: ’); 
wyswietl(l, A); 
writeln(‘Tablica B: ’); 
wyswietl(m, B); 
writeln(‘Suma elementów tablicy A wynosi: ‘, suma(l, A)); 
writeln(‘Suma elementów tablicy B wynosi: ‘, suma(m, B)); 
if szukaj(l, k, A) then writeln(‘Liczba ‘, k, ’ wyst

ę

puje w tablicy 

A’) 

else writeln(‘Liczba ‘, k, ‘ nie wyst

ę

puje w tablicy A’); 

if szukaj(m, k, B) then writeln(‘Liczba ‘, k, ’ wyst

ę

puje w tablicy 

B’) 

else writeln(‘Liczba ‘, k, ‘ nie wyst

ę

puje w tablicy B’); 

end;

 

background image

PODST AWY PROGRAM OWANIA

 

 

Procedury i funkcje – przekazywanie parametrów przez zmienną

 

 

Uwagi 

 Parametry  formalne  deklarowane  w  procedurze  muszą  mieć  określony  typ,  dlatego  typ 

t

  musi  być 

zdefiniowany przed definicją procedury. 

 Procedura 

wypelnij

  przypisuje  wartości  elementom  tablicy  i  wypełnioną  tablicę  przekazuje  do 

programu głównego, dlatego parametr 

naz

 musi być przekazany przez zmienną.  

 W  funkcji 

szukaj

  została  wykorzystana  procedura  standardowa 

exit

,  która  powoduje 

zakończenie  wykonywania  funkcji  lub  procedury  i  przekazanie  sterowania  do  programu  głównego. 
Zastosowanie w tym miejscu procedury 

break

 (przerwanie pętli) przyniosłoby taki sam efekt.  

• 

Napisz funkcję 

szukaj1

, która odpowiada na pytanie ile razy w tablicy wystąpiła podana jako parametr 

liczba 

k

• 

Napisz  procedurę  (lub  funkcję) 

spr

,  która  wprowadza  z  klawiatury  liczbę  całkowitą,  która  jest  

z zadanego w parametrach zakresu. Wykorzystaj tę procedurę lub funkcję do wprowadzenia liczby 

l

 i 

m

 

(rozmiar  macierzy  musi  być  zgodny  z  typem 

t

)  oraz  liczby 

k

  (musi  być  z  zakresu  podanego  w funkcji 

random

, którą wykorzystujemy do wypełnienia tablicy). 

 
 
Zadania 

1. Napisz następujące procedury i funkcje: 

• 

Procedurę  wypełniającą  liczbami  losowymi  tablicę  dwuwymiarową  o  rozmiarze 

N

  na 

M

  

z  parametrami 

n

  –  rozmiar, 

m

  –  rozmiar  tablicy, 

naz

  –  nazwa  tablicy, 

l

  –  zakres  wprowadzanych 

liczb). 

• 

Procedurę wyświetlającą tablicę (sam dobierz parametry). 

• 

Funkcję obliczającą sumę elementów w dowolnej (parametr funkcji) kolumnie tablicy. 

2. W programie zadeklaruj dwie tablice: 

• 

A

 o rozmiarze 5 na 10. 

• 

B

 o rozmiarze 7 na 7. 

• 

Wypełnij i wyświetl obie tablice. 

• 

Wprowadź z klawiatury liczbę 

k

 i wylicz sumę elementów w kolumnie 

k

 obu tablic. 

3. Napisz program, który będzie obliczał sumę elementów na głównej przekątnej (funkcja), a następnie zerował 

główną przekątną macierzy kwadratowej (procedura). Wykorzystaj procedury z zadania poprzedniego.