Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности

Гостевая книга

От автора

Забывание о параметрах 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.

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

(с)Все права защищены

По всем интересующим вопросампрошу писать на электронный адрес

    Rambler's Top100 PROext: Top 1000
    Rambler's Top100 Яндекс цитирования
Hosted by uCoz