Энциклопедия Turbo Pascal. Главы 9-11 Страница 38. Забывание о параметрах var в процедурах и функциях
|
Страница 38 из 39
Забывание о параметрах 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.
Хотя эту простую программу легко исправить, когда такая ошибка произойдет в большой программе, она может оказаться одной из наиболее трудных для нахождения.
|