Энциклопедия Turbo Pascal. Главы 9-11 - Забывание о параметрах var в процедурах и функциях
ОГЛАВЛЕНИЕ
Забывание о параметрах var в процедурах и функциях
Иногда в пылу программирования легко забыть, что, если процедура или функция изменяет свои аргументы, они должны быть определены, как параметры типа var. Забывание этого может вызвать причудливые результаты и потребовать часов на отладку. Например, обсудим неправильную программу:
program Error;{ данная программа не верна }
var
t: integer;
procedure F1(x: integer);
begin
Write('Введите значение: ');
ReadLn(x);
end;
begin
F1(t); {получить значение t}
writeLn('t имеет значение: ', t);
end.
Данная программа не работает, так как значение назначается только локальной переменной х, а затем F1 возвращает управление и t не модифицируется. Чтобы сделать эту программу работающей, вы должны объявить х внутри F1, как параметр var. Это будет означать, что переменная t будет модифицирована. Правильная программа выглядит следующим образом:
program Fixed; {данная программа верна}
var
t: integer;
procedure F1(var x: integer);
begin
Write('Введите значение: ');
ReadLn(x);
end;
begin
F1(t); {получить значение t}
writeLn('t имеет значение: ', t);
end.
Хотя эту простую программу легко исправить, когда такая ошибка произойдет в большой программе, она может оказаться одной из наиболее трудных для нахождения.