|
Новости |
Забывание о параметрах 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. Хотя эту простую программу легко исправить, когда такая ошибка произойдет в большой программе, она может оказаться одной из наиболее трудных для нахождения. |
(с)Все права защищеныПо всем интересующим вопросампрошу писать на электронный адрес |