Энциклопедия Turbo Pascal. Главы 9-11
Страница 38. Забывание о параметрах 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.

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

 
Следующая статья »