ВНИМАНИЕ! Конкурс по программированию!
Проект Programmers.kz и школа hotPen3D2D предлагает Вам курсы по веб-дизайну, веб-программированию и компьютерной графике. Подробности здесь.
- Просмотров: 1103
- Автор: КазКиберГетик
Особенности реализации For в Borland Pascal
Категория: Программирование » Pascal / Turbo Pascal » Уроки Pascal
Хитрый For
А что будет, если поменять параметр цикла For, и что случится, если менять конечное значение
Практически все учебники по программированию рекомендуют НЕ менять значение переменной-параметра параметрического цикла в теле этого цикла. Связано это с тем, что реализация данного цикла в различных версиях одного и того же языка может варьироваться. (Не объяснять же это нерешительностью программистов или сомнением учителей в умственных способностях учеников!) Избежим этого и рассмотрим, что же случится, если нарушать этот негласный запрет.
Изменим параметр,
и посмотрим, что будет
Напишем элементарную тестовую программку:
Если вы думаете, что на экране появится 3 6 и все, то вы должно быть хорошо представляете, как должен работать данный цикл, но поленились набрать текст.
На самом деле на экране появится последовательность
естественно, выровненная по границам экрана. Появление двойки после значения 255 естественно - произошло переполнение разрядной сетки байтовой переменной I. Интересным является другое: цикл не завершился сразу после того, как параметр превысил конечное значение, но завершился тогда, когда к концу выполнения тела цикла параметр оказался равным конечному значению.
Вывод: при изменинии параметра цикла в его теле необходимо следить за тем, чтобы когда -нибудь этот параметр стал равным конечному значению, а не просто превысил его.
Изменим КЗ,
или продолжим эксперимент
Протестируем еще одну программку (практически полную копию первой за исключением двух символов):
то есть конечное значение цикла "убегает" от параметра, причем с равной скоростью. Вместо ожидаемого бесконечного цикла на экране получим
Вывод: конечное значение параметрического цикла вычисляется только один раз, перед первым сравнением. Это очень важно помнить и не ставить в качестве конечного значения переменные и функции значение которых меняется в результате выполнения тела цикла: сравнение все равно будет производится с начальным значением переменной, а функция повторно не вызовется.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.




