сряда, 9 февруари 2011 г.

Подпрограми. Подпрограми функции


Технически университет – София


Катедра ПКТ, ФКСУ


Изготвил: Георги Минчев
Фак. № 000000000, поток: 0, гр: 0


Приел: гл.ас. Д.Минковска

Протокол № 7
 дата: 13.11.2009

  

Подпрограми. Подпрограми функции


Подпрограми. Същност - именуван, относително самостоятелен, логически завършен програмен модул (група оператори), който може а се извиква за изпълнение неограничен брой пъти на различни места в изискващата програма.


Типове подпрограми:

- подпрограми функции - функциите връщат към изискващата програма само една единствена тойност;

- подпрограми процедури - процедурите могат да връщат произволен брой от стойности, една или нито една към изискващата програма.


Видове подпрограми:
- стандартни - декларирани са в езика на Паскал и са част от него. Те не се описват в декларативната част и са достъпни навсякъде впрограмата;
- дефинирани от потребителя (потребителски програми) - описват се задължително в декларативната част на изискващата програма. Могат да бъдат използвани само в изпълнителната част на тази програма, в която са описани.



Функции
Същност - функцията е подпрограма, която след изпълнението си връща един единствен резултат чрез свое име

Видове функции:
- стандартни функции - декларирани са в езика Паскал и са част от него. Те не се описват в декларативната част и са достъпни навсякъде в програмата;
- функции, дефинирани от потребителя - дефинирана от потрефителя подпрограма, която след изпълнението си връща един единствен резултат, чрез името на самата функция. Стойността на резултата се на името на функцията в изпълнителната част на самата функция, подобно на стойността на променлива.


Синтаксис:

<име>(<фактически параметри>)

където:
- <име> - е името на функцията;
- <фактически параметри> - затворен в кръгли скоби списък от фактически параметри(изрази), разделени един от друг с разделител запетая.

Рекурсия. Рекурсови функции. Същност - възможността на един обект да може да бъде дефиниран чрез самия себе си в математиката се нарича рекурсия. Рекурсията е свойство на определени алгоритми и структури данни. Езикът Паскал предвижда възможност за програмна реализация на рекурсивни алгоритми, проце8си и структури данни, чрез съставянето на рекурсивна програми.



-1-

  Задача 1
Да се състави програма, която да намира периметъра на правоъгален триъгилник чрез зададени чрез от клавиатурата дължини на неговите катети в сантиметри, които са цели числа.

program zadacha1;
var
p : real;
a,b : integer;
function perimeter(k,l : integer) : real;
var
hip : real;
begin
hip := sqrt(sqr(k) + sqr(l));
perimeter := Hip + k + l;
end;
begin
write('vavedete parviq katet: ');
readln(a);
write('vavedete vtoriq katet: ');
readln(b);
p := perimeter(a,b);
writeln('Perimetarat e ',p:4:2,' sm.');
readln;
end.



-2-



Задача 2
Да се състави програма, която да която да повдига на степен трета и четвърта цяло число Q, след което да повдига реално число Z на степен N. Стойностите на числата да се задават чрез въвеждане от клавиатурата. Изчисляването на степените да се осъществи с функция.

program zadacha2;
var
q,n : integer;
z : real;
function findpower(f : real; P: integer) : real;
var
c : integer;
t : real;
begin
if P = 0 then
findpower := 1
else
begin
t := f;
for c := 2 to abs(p) do
t := t*f;
if p < 0 then
findpower := 1/t
else
findpower := t;
end
end;
begin
write('vavedete cqlo chislo: ');
readln(q);
writeln(q,' na treta stepen e = ',findpower(q,3):3:1);
writeln(q,' na chetvarta stepen e = ',findpower(q,4):3:1);
write('vavedete realno chislo: ');
readln(z);
write('vavedete stepen na realnoto chislo: ');
readln(n);
write(z:3:1,' na ',n,'-ta  stepen e = ');
writeln(findpower(z,n):6:5);
readln;
end.


-3-

  

Задача 3

Да се състави програма, която да намира максималните елементи на два едномерни масива А и В. За целта да се състави функция, която връща стойността на максималния елемент на едномерен масив.

program zadacha3;
const
m = 100;
type
red = array[1..m] of real;
var
a,b : red;
nn,pp,i : integer;
amax,bmax : real;
function max(t : red; f : integer) : real;
var
tmax : real;
i : integer;
begin
tmax := t[1];
for i := 2 to f do
if tmax < t[i] then
tmax := t[i];
max := tmax;
end;
begin
write('vavedete razmera na masiv A: ');
readln(nn);
for i := 1 to nn do
begin
write('a[',I,'] = ');
readln(a[i]);
end;
write('vavedete razmera na masiv B: ');
readln(pp);
for i := 1 to pp do
begin
write('b[',I,'] = ');
readln(b[i]);
end;
writeln;
amax := max(a,nn);
bmax := max(b,pp);
writeln('masivat A ima stoinosti: ');
for i := 1 to nn do
write(a[i]:4:1,' ');
writeln;
write('maksimalniqt element na masiv A e: ',amax:4:1);
writeln;
writeln('masivat b ima stoinosti: ');
for i := 1 to pp do
write(b[i]:4:1,' ');
writeln;
write('maksimalniqt element na masiv B e: ',bmax:4:1);
readln;
end.


-4-

0 коментара:

Публикуване на коментар

 

About this blog