русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Организация циклов. Операторы повторения


Дата добавления: 2015-07-23; просмотров: 3662; Нарушение авторских прав


 

Оператор цикла задает повторное выполнение определенных операторов. Для реализации циклов в Паскале предусмотрены три различных структурных оператора: WHILE, REPEAT, FOR. Первые два используются, если число повторений (итераций) заранее не определено, но известно условие завершения цикла. Оператор FOR применяется тогда, когда число повторений тела цикла известно заранее.

 

4.3.1. Оператор WHILE

 

Этот оператор является наиболее мощным из всех трех, реализующих циклы. Два других оператора можно выразить с его помощью (см. рис. 23).

Логическое выражение, стоящее после WHILE, называется условием возобновления цикла и должно иметь булевский тип. Оператор, следующий за DO, является телом цикла. Он повторяется до тех пор, пока истинно условие возобновления цикла. Как только условие возобновления цикла становится ложным, управление переходит к оператору, стоящему за WHILE. Если условие возобновления не удовлетворяется до начала выполнения цикла, то тело цикла пропускается.

 

 

Рис. 23. Синтаксическая диаграмма оператора цикла WHILE

Оператор
Из указанного описания видно, что оператор WHILE реализует базовую структуру «цикл-пока», так как здесь проверка условия идет до тела цикла. Поэтому оператор WHILE называют оператором цикла с предусловием. На рис. 24 представлена блок-схема данного оператора.

 


 

 


Рис. 24. Блок-схема оператора WHILE

 

П р и м е р . Даны числа A, B (A > 1). Получить все степени числа A, меньшие числа B.

program STEPENI;

var A, B, C: real;

begin

readln (A, B); C := A;

while C < B do

begin

writeln (C);

C := C*A;

end;

end.

 

Примечание. Грамотное использование оператора WHILE предполагает умение правильно написать условие возобновления цикла. Здесь надо иметь в виду следующие рекомендации:



1. В условии, как в логическом выражении, должны обязательно фигурировать переменные, изменяющие свои значения в теле цикла.

2. Во избежание зацикливания лучше сначала написать условие прекращения цикла и взять потом в операторе его отрицание.

3. Переменные логического выражения должны получить свои исходные значения до входа в оператор WHILE.

 

4.3.2. Оператор REPEAT

 

Оператор REPEAT называют оператором цикла с постусловием, так как здесь выражение, управляющее повторным выполнением последовательности операторов, помещается после тела цикла (см. рис. 25).

 

Рис. 25. Синтаксическая диаграмма оператора цикла REPEAT

 

Из синтаксической диаграммы видно, что в этом операторе не обязательно использовать для тела цикла операторные скобки. Здесь ключевые слова REPEAT и UNTIL сами играют роль этих скобок.

В этом операторе тело цикла выполняется до тех пор, пока ложно условие, стоящее после UNTIL. Условием выхода из цикла является истинность выражения. Мы видим, что это есть форма «цикла-до». Данный оператор представлен на рис. 26.

       
   
 
 

 

 


Рис. 26. Блок-схема оператора REPEAT

 

П р и м е р . Даны числа A, B (A > 1). Получить все степени числа A, меньшие числа B.

program STEPENI;

var A, B, C: real;

begin

readln (A, B); C := A;

repeat

writeln (C);

C := C*A;

until C >= B;

end.

Примечание. Между операторами WHILE и REPEAT существует три основных различия:

1. В операторе REPEAT проверка условия выхода из цикла выполняется в конце, а не в начале цикла, как в операторе WHILE, поэтому в операторе REPEAT тело цикла выполняется хотя бы один раз.

2. В REPEAT выход из цикла осуществляется по истинности условия, а в WHILE – по ложности.

3. В операторе WHILE тело цикла чаще всего имеет форму составного оператора, в операторе REPEAT для организации тела цикла операторные скобки не нужны.

 

4.3.3. Оператор FOR

 

Оператор FOR предназначен для организации циклов, когда заранее известно, сколько раз должно повториться тело цикла. Здесь управление числом повторений осуществляется с помощью специальной переменной – параметра цикла (управляющей переменной), которой присваивается возрастающая (убывающая) последовательность значений. Оператор FOR представлен на рис. 27.

 

 

Рис. 27. Синтаксическая диаграмма оператора цикла FOR

 

Здесь «переменная» есть параметр цикла, «выражение 1» – начальное значение параметра, «выражение 2» – его конечное значение. В качестве управляющей переменной должна быть переменная, объявленная локальной в блоке, который содержит данный оператор FOR. Управляющая переменная должна иметь ординальный тип. Начальное и конечное значения имеют тип, совместимый с типом параметра цикла.

Когда начинает выполняться оператор FOR, начальное и конечное значения определяются один раз, и эти значения сохраняются на протяжении всего выполнения оператора.

Оператор, который содержится в теле цикла, выполняется один раз для каждого значения управляющей переменной в диапазоне между начальным и конечным значениями. Управляющая переменная всегда инициализируется начальным значением. Она принимает все свои значения из диапазона с шагом 1, если TO, и с шагом -1, если DOWNTO.

В случае TO, если начальное значение превышает конечное, тело цикла не выполняется.

Для случая DOWNTO это имеет место, когда начальное значение меньше, чем конечное. Отсюда заключаем, что оператор цикла FOR реализует, как и WHILE, схему цикла «пока» – проверка условия повторения цикла идет до тела цикла.

 

Примечание.

1. Если тело цикла в этом операторе состоит из более одного оператора, то они все заключаются в операторные скобки (реализуют конструкцию составного оператора).

2. В отличие от школьного алгоритмического языка, оператор FOR нельзя прервать путем присваивания управляющей переменной ее конечного значения. Изменения переменной цикла не влияют на число повторений тела цикла.

3. После выполнения оператора значение управляющей переменной становится неопределенным, если только выполнение оператора FOR не было прервано с помощью оператора перехода.

 

Рассмотрим примеры использования оператора FOR для организации циклических процессов.

 

П р и м е р 1. Печать отсчета цифр при старте.

 

program START;

var SEC: integer;

begin

writeln ('До старта осталось ...');

for SEC := 10 downto 1 do

writeln (SEC:4);

writeln ('ноль'); writeln ('Старт !!')

end.

 

В данном примере управляющая переменная SEC принимает значения типа INTEGER, однако в Паскале она определена как переменная ординального типа и, следовательно, может принимать значения типа CHAR или принадлежать перечислимому типу, как показано в примере 2.

 

П р и м е р 2 . Подсчет числа часов рабочей недели.

 

program WORKTIME;

type DAYS = (MO, TU, WE, TH, FR, SA, SU);

var DEN: DAYS; WT: integer;

begin

WT := 0;

for DEN := MO to SA do

if DEN <> SA then WT := WT + 8

else WT := WT + 7; writeln (WT);

end.

Контрольные вопросы

 

1. Что такое структурный оператор?

2. Каково назначение составного оператора?

3. Какие операторы используются для организации ветвления (выбора)?

4. Что используется в операторе IF для осуществления выбора одного варианта из двух?

5. Что используется в операторе CASE для осуществления выбора одного варианта из многих?

6. Как осуществляется вложение одного оператора IF в другой?

7. В чем отличие (с функциональной точки зрения) полной и неполной версий оператора CASE?

8. Какие типы циклов (цикл-пока или цикл-до) реализуют операторы WHILE и REPEAT?

9. Что используется в операторах WHILE и REPEAT для проверки окончания работы цикла?

10. Какова роль управляющей переменной в операторе FOR?

11. Какой тип управляющей переменной можно использовать в операторе FOR?

12. Чем отличаются операторы WHILE, REPEAT и FOR с точки зрения числа повторений тела цикла?

13. В каких операторах Паскаля тело цикла может не выполняться ни разу?



<== предыдущая лекция | следующая лекция ==>
Задания для самостоятельной работы | Задания для самостоятельной работы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.095 сек.