Механизм передачи параметров

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

Список формальных параметров, указываемых в заголовке подпрограммы, может включать в себя

1. параметры-значения;

2. параметры-переменные

3. параметры-процедуры

4. параметры-функции

5. нетипизированные параметры

В списке должны быть перечислены имена формальных параметров и их типы. Имя параметра отделяется от типа двоеточием, а параметры друг от друга — точ­ной с запятой. Имена параметров одного типа можно объединять в подсписки, в которых имена отделяются друг от друга запятой.

Между формальными и фактическими параметрами должно быть полное ее соответствие:

• формальных и фактических параметров должно быть одинаковое количество.

• порядок следования фактических и формальных параметров должен быть один и тот же;

• тип каждого фактического параметра должен совпадать с типом соответствующего формального параметра.

 

Параметры-значения(передающие).Параметры-значения используются только для передачи исходных данных из основной программы в подпрограмму (процедуру функцию), в списке формальных параметров они перечисляются через запятую с обязательным указанием их типов

procedure Abort(M: byte);

function Step(N : integer; X : real): real;

Если формальный параметр объявлен как параметр-значение, то:

1. фактическим параметром может быть произвольное выражение.

2. перед вызовом процедуры значение фактических параметров вычисляются и используются как начальные значения для формальных параметров, притом, полученный результат помещается во временную память и передается процедуре. Даже если фактический параметр - простейшее выражение в виде константы или переменной, все равно процедуре будет передана лишь копия этой константы (переменной).

3. В процессе выполнения подпрограммы формальные параметры могут изменяться, но это никак не отразится на соответствующих фактических параметрах, которые сохранят те значения, которые имели до вызова подпрограммы, так как в подпрограмме меняются не они, а их копия. Поэтому параметры-значения нельзя использовать для передачи результатов из подпрограммы в основную программу.

 

Параметры-переменные(возвращающие). Параметры-переменные используются для возвращения результатов выполнения процедуры и в списке формальных параметров записываются после зарезервированного слова var с обязательным указанием типа.

Если параметр объявлен как параметр-переменная то:

1. его фактическим параметром может быть только переменная тождественного типа

2. при вызове процедуры ей передается сама переменная, а не ее копия, и изменение переменой приводит к изменению фактического параметра в вызывающей программе.

Зам! Параметры-переменные могут использоваться только в процедурах!


Лекция 28.

Вопросы:

1. Что такое подпрограмма, какие типы подпрограмм вы знаете?

2. Как вызвать подпрограмму, как осуществляется ее работа?

3. Что такое параметры, их виды?

4. Охарактеризовать параметры- значения.

5. Охарактеризовать параметры- переменные.

Основные задачи по теме подпрограммы:

 

 

1. Написать программу ввода одномерного массива целых чисел размера N, нахождения суммы двух массивов и вывода результата на экран, кроме этого написать процедуру- заставку, очищающую экран, выводящую в центре экрана надпись «Это программа нахождения суммы массивов».

Program _;

Uses CRT;

Const n=10;

Type mas= array[1..n] of byte;

Var a, b, c: mas;

 

Procedure zast;

Begin

Clrscr;

Randomize;

textcolor(red);

Gotoxy(10,10);

Writeln(‘это задача находит сумму двух массивов’)

Delay(5000);

Clrscr;

End;

 

Procedure vvod(var x: mas);

Var i: byte;

Begin

For i:=1 to n do x[i]:=random(50);

End;

 

Procedure vivod(x: mas);

Var i: byte;

Begin

For i:=1 to n do write(x[i]:4);

Writeln;

End;

 

Procedure sum(x, y: mas; var z: mas);

Var i: byte;

Begin

For i:=1 to n do z[i]:=x[i]+y[i];

End;

{ОСНОВНАЯ ПРОГРАММА}

BEGIN

ZAST;

VVOD(A);

VVOD(B);

SUM(A,B,C);

VIVOD(A);

VIVOD(B);

VIVOD( C );

READKEY;

END.

 

2. Написать программу, которая вычисляет среднее арифметическое двух чисел, используя функцию пользователя.

Program _;

Uses CRT;

Var a, b, c: real;

Function sr(x,y:real):real;

Begin

Sr:=(x+y)/2;

End;

{ОСНОВНАЯ ПРОГРАММА}

Begin

Clrscr;

Writeln(‘введите два числа’);

Readln(a,b);

C:=sr(a,b);

Writeln(‘среднее арифметическое =’,c:10:5);

Readkey;

End.

 

3. Написать программу, нахождения наибольшего из трех чисел, используя функцию пользователя.

Program _;

Uses CRT;

Var a, b, c: real;

Function max(x,y, z:real):real;

Var m:real;

Begin

M:=x;

If y>m then m:=y;

If z>m then m:=z;

Max:=m

End;

{ОСНОВНАЯ ПРОГРАММА}

Begin

Clrscr;

Writeln(‘введите три числа’);

Readln(a,b, c);

Writeln(‘наибольшее =’,max(a, b, c):10:5);

Readkey;

End.

 


Лекция 29.

Вопросы:

1. Что такое параметр. Виды параметров.

2.Разновидности формальных параметров. Их характеристика.

Задачи:

Определить значение переменных a, b.


Program _;

Var a,b:real;

Procedure vvod(x,y: real);

Begin

X:=5;

Y:=10;

End;

Begin

Vvod(a,b);

End.

Program _;

Var a,b:real;

Procedure vvod(var x,y: real);

Begin

X:=5;

Y:=sqr(5);

End;

Begin

Vvod(a,b);

End.


Определить результат работы данной процедуры:

Procedure unknown (var x,y: real);

Const eps= 0,9;

Begin

X:=0; Y:=0;

Repeat

Writeln(x:7:5,y:7:5);

X:=x+0,01;

Y:=y+0,01;

Until x+y>=eps;

End;

Определить результат работы данной функции:

Program _;

Const r=2;

Var d: real;

Function f(a,b,c:real):real;

Begin

F:=sqrt(abs(a))+sqr(c-b);

End;

Begin

D:=5+r;

Writeln(f(-36,r*2,d-3):10:5);

 

End.

 

Program _;

Const m=25;

Var d: real;

Function f(a,b:real):real;

Begin

F:= abs(5*a)+c;

End;

Begin

D:=4;

D:=sqrt(m)-d;

Writeln(f(d*2,10):10:5);

 

End.

 

Локальные и глобальные переменные.

Область действия идентификаторов.

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

Переменные, расположенные в основной программе, называются глобальными.

Глобальные и локальные переменные могут иметь одинаковые имена, так как им соответствуют разные объекты, но это не рекомендуется из-за возможной путаницы.

Program _;

Var i:byte;

Procedure vivod;

Var i: byte;

Begin

Write(i);

End;

Begin

I:=4;

Vivod;

End.

Найти ошибку: Написать программу, ввода и вывода одномерных массивов, нахождения их суммы.

Program _;

Type m=: array[1..n] of byte

Var a: m;

Procedure vvod (b:m);

Var i: byte;

Begin

For i:=1 to n do

Write (‘введите элемент массива’);

Readln(b[i]);

End;

Procedure vivod;

Begin

For i:=1 to n do

Write(b[i]);

End;

Function sum(b,d:m):m;

Begin

For i:=I to n do

Sum[i]:=b[i]+d[i];

End;

Begin

Vvod(x);

Vvod(y);

Z:=sum(x,y);

Vivod(z);

End.


Лекция 31.








Дата добавления: 2016-05-25; просмотров: 524;


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

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.037 сек.