Реферат: Синтаксис описания и вызова процедуры
end;
……..
begin
……..
{теперь рассмотрим вызов процедуры}
FL(5,a);
FL(2,b);
FL(2+5,c);
..........
end.
В данном случае l, zформальные параметры. К слову, их не надо описывать в разделе глобальных переменных.
Фактические параметры: 5, а, 2, b, 2+5, c. В “основном” разделе VARдолжны быть описаны а, b, c
При первом вызове процедуры фактический параметр 5 заменит формальный L, фактический a заменит формальный z, во втором 2 заменит L, b заменит z.
В третьем соответственно 2+5 заменит L, cзаменит z. Для того, чтобы окончательно разобраться в программе, необходимо пояснить, какими бывают виды формальных и фактических параметров, их назначение.
Виды параметров.
По способу передачи данных параметры можно разделить на несколько категорий.
Любой из формальных параметров подпрограммы может быть либо параметром-значением, либо параметром-переменной, либо параметром-константой. Если параметры определяются как параметры-переменные, перед ними необходимо ставить зарезервированное слово VAR, например:
Proceduretide (vara : real) Здесь параметр А - параметр-переменная. Заголовок процедуры может быть устроен так, что некоторые группы формальных параметров не содержат слова VAR. Например:
Procedure qwerty(a,b,c:real; var s:real);
Формальные параметры, которые входят в группы, не содержащие слова VAR, называются формальными параметрами-значениями.
Определение формального параметра тем или иным способом существенно только для вызывающей программы: если формальный параметр объявлен как параметр-переменная, то при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной определенного типа; если формальный параметр объявлен как параметр-значение, то при вызове ему может соответствовать произвольное выражение. Контроль за неукоснительным соблюдением этого правила осуществляет компилятором Турбо Паскаля.
Для того чтобы понять, в каких случаях использовать параметры значения, а в каких - параметры-переменные, рассмотрим, как осуществляется замена формальных параметров на фактические в момент обращения к подпрограмме.
Если параметр определен как параметр-значение, то перед вызовом подпрограммы это значение вычисляется, полученный результат копируется во временную память и передается подпрограмме. Важно учесть, что даже если в качестве фактического параметра указано простейшее выражение в виде переменной или константы, все равно подпрограмме будет передана лишь копия переменной (константы). Таким образом, назначение параметра-значения – передача данных из программы в подпрограмму. Если же параметр определен как параметр-переменная, то при вызове подпрограммы передается сама переменная, а не ее копия. Любые возможные изменения в подпрограмме параметра-значения никак не воспринимаются вызывающей программой, так как в этом случае изменяется копия фактического параметра, в то время как изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе. Параметр-константа схож с параметром-переменной: в подпрограмму передается сама константа, но изменение её невозможно. Назначение такого параметра совпадает с назначением параметра-значения . Формальные параметры-константы указываются в заголовке программы после служебного слова const. Его действие распространяется до ближайшей точки с запятой.
Поясним изложенное.
.....
var
a, b: integer;
......
procedure squar(a: integer; var b: integer);