мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
pascal:iterations [20/10/2010 14:18] ocapascal:iterations [20/10/2010 14:28] (текущий) oca
Строка 56: Строка 56:
  
 Большой цикл, который запрашивает очередное действие пользователя, ожидает ответной команды, реагирует на нее и вновь переходит в состояние ожидания, лежит в основе всех интерактивных программ, т.е. программ, которые постоянно взаимодействуют с пользователем, в отличие от неинтерактивных или пакетных программ, которые раз получив начальные данные, работают дальше автоматически. Подобно интерактивным программам ведёт себя большинство программ, взаимодействующих с тем или иным оборудованием, включая драйвера, которые берут на себя обеспечение взаимодействия отдельных аппаратных компонент со всей остальной системой. Как правило, если предполагается, что программа обрабатывает данные или выполняет команды, что в данном случае фактически одно и тоже, поступающие от какого-то внешнего источника, то для того, чтобы отсеять или переспросить опасные, непонятные или заведомо неверные данные и команды, их обработка тоже должна вестись с помощью цикла, иначе ничего не помешает "недобросовестному" источнику повторить "некачественный" ввод. Большой цикл, который запрашивает очередное действие пользователя, ожидает ответной команды, реагирует на нее и вновь переходит в состояние ожидания, лежит в основе всех интерактивных программ, т.е. программ, которые постоянно взаимодействуют с пользователем, в отличие от неинтерактивных или пакетных программ, которые раз получив начальные данные, работают дальше автоматически. Подобно интерактивным программам ведёт себя большинство программ, взаимодействующих с тем или иным оборудованием, включая драйвера, которые берут на себя обеспечение взаимодействия отдельных аппаратных компонент со всей остальной системой. Как правило, если предполагается, что программа обрабатывает данные или выполняет команды, что в данном случае фактически одно и тоже, поступающие от какого-то внешнего источника, то для того, чтобы отсеять или переспросить опасные, непонятные или заведомо неверные данные и команды, их обработка тоже должна вестись с помощью цикла, иначе ничего не помешает "недобросовестному" источнику повторить "некачественный" ввод.
 +
 +
  
 ==== Цикл с предварительным условием (While-Do) ==== ==== Цикл с предварительным условием (While-Do) ====
Строка 68: Строка 70:
 Действие данного цикла проявляется следующим образом. В начале каждой итерации проверяется логическое условие, которое может быть либо логическим выражением, результатом которого может быть ответ "да" или "нет", либо переменной типа Boolean. Например: Действие данного цикла проявляется следующим образом. В начале каждой итерации проверяется логическое условие, которое может быть либо логическим выражением, результатом которого может быть ответ "да" или "нет", либо переменной типа Boolean. Например:
  
-Многие компиляторы запрещают в заголовке цикла константные выражения, т.е. выражения, значения которых определены до начала работы программы.  Turbo и Free Pascal допускают в качестве условия логические константы TRUE (Истина) и FALSE (Ложь) для реализации бесконечных циклов. Затем тело цикла выполняется только в том случае, если условие выполнено. Если условие выполения изначально ложно, то цикл не исполняется ни разу, но это не считается ошибкой, а нормальным выполнением программы!+
  
 Используя цикл While, следует помнить, что в теле цикла должны либо быть команды, которые изменяют результат проверки условия выполнения, либо явный выход из цикла. Поэтому, тело оператора While обычно содержит несколько исполняемых операторов и нуждается в операторных скобках Begin-End. Используя цикл While, следует помнить, что в теле цикла должны либо быть команды, которые изменяют результат проверки условия выполнения, либо явный выход из цикла. Поэтому, тело оператора While обычно содержит несколько исполняемых операторов и нуждается в операторных скобках Begin-End.
Строка 77: Строка 79:
 <code pascal| Цикл While-Do> <code pascal| Цикл While-Do>
 writeln('Печатаем числа от 1 до 10'); writeln('Печатаем числа от 1 до 10');
-While (i <10) Do +While (i >0) Do 
   { Потеряны Begin и End? }   { Потеряны Begin и End? }
-  writeln(i); +  writeln(10 - i);
  { Судя по коду, значение i - неопределено }  { Судя по коду, значение i - неопределено }
-  i:=i+1;  +  i:=i-1;  
-  { Эта команда никогда не выполнится }+  { Эта команда может никогда не выполнится }
 </code>   </code>  
  
Строка 89: Строка 91:
 <code pascal| Цикл While-Do> <code pascal| Цикл While-Do>
 writeln('Печатаем числа от 1 до 10'); writeln('Печатаем числа от 1 до 10');
-i:=1; +i:=9;
  { Инициализация }  { Инициализация }
-While (i <10) Do +While (i >0) Do 
 Begin Begin
-  writeln(i);  +  writeln(10-i);  
-  i:=i+1; +  i:=i-1;
   { Шаг цикла }   { Шаг цикла }
 End;   End;  
 </code> </code>
  
-|<latex> \frac{q}{3} </latex>|w|e|r|t|| + 
-|1|2|3|4|5|6|+==== Общие замечания ==== 
 + 
 +Многие компиляторы запрещают в заголовке цикла константные выражения, т.е. выражения, значения которых определены до начала работы программы.  Turbo и Free Pascal допускают в качестве условия логические константы TRUE (Истина) и FALSE (Ложь) для реализации бесконечных циклов. Затем тело цикла выполняется только в том случае, если условие выполнено. Если условие выполения изначально ложно, то цикл не исполняется ни разу, но это не считается ошибкой, а нормальным выполнением программы! 
 +