ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ И МОДУЛИ


3.1. Подпрограммы

Различают глобальные и локальные параметры. Глобальные параметры являются общими на две или более программных единиц. Локальные параметры изменяют свои значения только внутри данной программной единицы. Как видно из примера, приведенного ниже, писание параметров в блоке VAR означает, что данная группа параметров является глобальными для входных и выходных значений(x1,x2). При отсутствии в заголовке служебного слова VAR значения параметров передаются внутрь процедуры, но не передаются из нее в главную программу(a,b,c).

В тех случаях, когда параметрами процедур и функций являются массивы, необходимо размерность и размер этих массивов задавать через служебное слово TYPE. Ниже приведен пример составления процедуры maxmin для определения максимального и минимального значений двумерного массива.

 

Пример 3.1.1. Составить программу для расчета выражения:

,

оформив определение значений нестандартных функций в виде подпрограмм.

 

VAR k, a, x:real;

FUNCTION lg(x:real):real;

BEGIN

lg:=ln(x)/ln(10)

END;

FUNCTION pow(a,x:real):real;

BEGIN

pow:=exp(x*ln(x))

END;

BEGIN

write(’Введите a,x:’);

readln(a,x);

k:=lg(a*sqr(x)*sqrt(x)/(3+x))+2E3*pow(1+2*x,1-sqrt(a));

writeln(’k=’,k:10)

END.

 


Пример 3.1.2. Составить программу расчета массива Z(10).

.

Расчет функции f(x) оформить в виде подпрограммы – функции.

Расчет суммы – в виде подпрограммы – процедуры.

.

 

TYPE mas=ARRAY[1..10] OFreal;

VAR x, z:mas; c, q, S:real;

FUNCTION F(x:real):real;

BEGIN

IF x>3 THEN f:=1/x ELSE f:=1+2*x*sqr(x);

END;

PROCEDURE Sum(x:mas;VARS:real);

VAR i:integer;

BEGIN

S:=0;

FOR i:=1 TO 10 DO S:=S+sqrt(x[i]);

END;

BEGIN

writeln(’ c q’);

readln(c,q);

FOR i:=1 TO 10 DO

BEGIN

write(’X[’,i,’]=’);

readln(x[i])

END;

Sum(x,S);

FOR i:=1 TO 10 DO

BEGIN

P[i]:=sqr(f(x[i]))/sin(c)+sqrt(x[i])/(sqr(S)*q);

writeln(’P[’,i,’]=’,P[i]:10);

END;

END.

 


Пример 3.1.3. Составить программу для расчета выражения

.

 

TYPE mas=ARRAY [1..20]OF real;

VAR x, y:mas; f:real; i,k:integer;

FUNCTION Sum(a:mas; n1,n2,p:integer):real;

VAR S:real; i:integer;

BEGIN S:=0;

FORi:=n1 TO n2DOS:=S+exp(p*ln(a[i]));

Sum:=S

END;

BEGIN

{Ввод массивов x и y с клавиатуры.}

FOR i:=1 TO 8 DO

BEGIN

write(’x’,i, ’=’); readln(x[i]);

END;

FOR k:=1 TO 10 DO

BEGIN

write(’y’, k, ’=’); readln(y[k]);

END;

F:=Sum(x,3,8,2)+Sum(y,2,10,3);

writeln(’F=’,F:10)

END.

 

Пример 3.1.4.

 

PROGRAM Stepen;

VAR x,y:real;

f1,f2:text;

FUNCTION POWER(a,b:real):real;

BEGIN

IF a > 0 THEN power:=exp(b*ln(a))

ELSE

IF a < 0 THEN power:=exp(b*ln(abs(a)))

ELSE

IF b=0 then power:= 1

ELSE

power:=0;

END;

BEGIN

assign(f2,'agg.rez'); reset(f2);

read(f2,x,y);

assign(f1,'q'); rewrite(f1);

write(power(x,y):4:1);

close(f1);

END.

 

Для обращения к функции Power мы просто указали ее в качестве параметра при выводе данных. Параметры X и Y в момент обращения к функции – это фактические параметры. Они автоматически заменяют формальные параметры A и B по порядку следования. Количество и тип формальных и фактических параметров строго соответствуют друг другу. Рассмотрим пример на составление процедуры вычисления y=x+1 .

 

Пример 3.1.5.

 

PROGRAM Proc;

VARa, d, x, y:real;

f1, f2:text;

PROCEDURE ff( VAR x,y:real);

BEGIN

y:=x+1;

END;

BEGIN

assign(f2,'agg.rez'); reset(f2);

read(f2,a,d);

assign(f1,'q'); rewrite(f1);

write(f1,a:4:1,d:4:1);

ff(a,d);

write(a,d);

close(f1);

END.

 

Пример 3.1.6.

 

PROGRAM Proc1;

PROCEDURE sq(a, b, c:real;VAR x1, x2 : real);

VARd:real;

BEGIN

d:=B*B - 4*A*C;

x1:=(-b+SQRT(D))/(2*a);

x2:=(-b-SQRT(D))/(2*a);

END;

VARy1,y2:real;

BEGIN

sq (5.7,-1.2,-8.3,y1,y2);

write(y1,y2);

END.

 

Пример 3.1.7.

PROGRAM maxmin;

TYPEb1=ARRAY[1..4,1..3] OF real;

VARi, j:integer;

ymax, ymin:real;

y:b1;

r1, r2:text;

PROCEDURE mm(VAR x: b1; VAR xmax, xmin:real);

VARn, k:integer;

BEGIN

xmax:=x[1,1]; xmin:=x[1,1];

FOR n:=1 TO 4 DO

FOR k:=1 TO 3 DO

BEGIN

if x[n,k] <= xmin then xmin:=x[n,k];

if x[n,k] >= xmax then xmax:=x[n,k]

END;

END;

BEGIN

assign(r1,'a.dat'); reset(r1);

FOR i:=1 TO 4 DO

FOR j:=1 TO 3 DO

read(r1,y[i,j]);

assign(r2,'b.res'); rewrite(r2);

mm(y,ymax,ymin);

write(r2,ymax,ymin);

close(r2);

END.

 


3.2. Использование стандартных модулей



Дата добавления: 2016-06-15; просмотров: 1357;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.017 сек.