Энциклопедия 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.

Хотя эту простую программу легко исправить, когда такая ошибка произойдет в большой программе, она может оказаться одной из наиболее трудных для нахождения.