Оператор цикла с параметром
служит для повторения последовательности операторов, когда известно количество повторений. Имеются два формата: for<параметр>:=<выражение1>to<выражение2>do<тело цикла>; for<параметр>:=<выражение1>downto<выражение2>do<тело цикла>; гдеfor, to , downto, do - служебныеслова, <параметр> - любая переменная порядкового типа; <выражение1> - любое выражение порядкового типа, задающее в первом формате начальное значение параметра цикла, а во втором формате - конечное значение; <выражение2> - любое выражение порядкового типа, задающее в первом формате конечное значение параметра цикла, а во втором формате - начальное значение; <тело цикла> - последовательность повторяющихся операторов.
ИСПОЛНЕНИЕ ОПЕРАТОРА ЦИКЛА С ПАРАМЕТРОМ For … to ПО ШАГАМ: Параметру присваивается начальное значение (результат выражения1); Параметр сравнивается с результатом выражения2. Если больше, то выполнение оператора цикла заканчивается и выполняется оставшаяся часть программы. Если нет, то переходим к 3 шагу. Выполняется тело цикла, стоящее после do; Работает счетчик цикла, т.е. значение параметра увеличивается на 1, и переходим к шагу 2. БЛОК-СХЕМА ОПЕРАТОРА ЦИКЛА С ПАРАМЕТРОМ For … to: Примечания. 1. Выполнение оператора цикла с параметром For … downto почти такое же, как и оператора For … to, но есть два существенных отличия: 1) условие выполнения цикла другое: параметр должен быть больше или равен выражения2. 2) счетчик цикла другой: значение параметра уменьшается на 1 (параметр=параметр-1). 2. В этом операторе цикла главную роль играет параметр и неявно работает счетчик (т.е. к параметру прибавляется или отнимается единица), поэтому этот оператор цикла называют оператор цикла с параметром или со счетчиком. 3. Параметр можно описать непосредственно в заголовке цикла: for<параметр>:<тип>:=<выр.1>to<выр.2>do<тело цикла>; или for<параметр>:<тип>:=<выр.1>downto<выр.2>do<тело цикла>; или forvar<параметр>:=<выр.1>to<выр.2>do<тело цикла>; или forvar<параметр>:=<выр.1>downto<выр.2>do<тело цикла>; Область действия объявленного параметра распространяется до конца тела цикла. В двух последних случаях используется авто определениетипа параметра по типу выр.1. Оператор цикла с параметром часто использует при работе с массивами. ОПЕРАТОР ЦИКЛА С ПРЕДУСЛОВИЕМ служит для повторения последовательности операторов, пока истинно некоторое условие. При этом проверка условия производится перед выполнением последовательности операторов. Формат: while<условие>do<тело цикла>; где while, do - служебные слова (пока, делать), <условие> - любое логическое выражение, <тело цикла> - последовательность операторов. ИСПОЛНЕНИЕ ОПЕРАТОРА ЦИКЛА С ПРЕДУСЛОВИЕМ ПО ШАГАМ: Проверяется условие; Если логическое выражение истинно, то выполняется тело цикла, стоящее после do, и переходим к шагу 1. Если оно ложно, то выполнение оператора повторения заканчивается и выполняется следующий оператор в программе. БЛОК-СХЕМА ОПЕРАТОРА ЦИКЛА С ПРЕДУСЛОВИЕМ: Рассмотрим задачу, для решения которой нельзя применить оператор цикла с параметром (таких задач довольно много): Вычислить сумму ряда: члены которого больше числа 10-3.Здесь нам неизвестно количество членов суммы, поэтому нельзя применить оператор цикла с параметром. Зато известно условие, по которому прекращается суммирование. Пример программы, которая вычисляет данную сумму: programpr10; vari, s : integer; begin s:=0; i:=1; while 1/i> 0.001 do begin s:=s+1/i; i:=i+1 end; write(‘Сумма членов ряда 1/n , которые больше 0.001, равна ’, s); end. ОПЕРАТОР ЦИКЛА С ПОСТУСЛОВИЕМслужит дляповторения заданной последовательности операторов до тех пор, пока значение некоторого условия не станет истинным. Проверка условия производится после выполнения последовательности операторов. Формат: repeat<тело цикла>until<условие>; где repeat, until - служебные слова (повторять, пока), <тело цикла> - последовательность операторов. <условие> - любое логическое выражение, ИСПОЛНЕНИЕ ОПЕРАТОРА ЦИКЛА С ПОСТУСЛОВИЕМ ПО ШАГАМ: Выполняется тело цикла, стоящее после repeat; Проверяется условие. Если оно истинно, то выполнение оператора цикла заканчивается и выполняется оставшаяся часть программы. Если ложно, то переходим к шагу 1. БЛОК-СХЕМА ОПЕРАТОРА ЦИКЛА С ПОСТУСЛОВИЕМ: В качестве примера возьмем программу pr10 и заменим в ней оператор цикла с предусловием на оператор цикла с постусловием: program pr11; vari, s : integer; begin s:=0; i:=1; repeat s:=s+1/i; i:=i+1 until 1/i <= 0.001; write(‘Сумма членов ряда 1/n , которые больше 0.001, равна ’, s); end. Примечания. Из циклов можно досрочно выйти с помощью оператора BREAK. Оператор CONTINUE передает управление в конец цикла. В операторе цикла с постусловием заданная последовательность выполнится хотя бы ОДИН РАЗ! А в случае оператора цикла с предусловием этого может и не быть. Отличие операторов цикла с предусловием и с постусловием от оператора с параметром еще в том, что в них нет <встроенного> счетчика. Вложенные циклы Основная идея использования вложенных циклов состоит в том, что даже когда некий процесс, требует цикла -- повтора действий (т.н. "внешний цикл"), то даже внутри отдельного действия можно запустить свой цикл (т.н. "внутренний" или "вложенный цикл") для решения какой-то "местной" задачи. То есть: внутри витка внешнего цикла, можно запустить цикл внутренний, тогда на один виток внешнего цикла, внутренний цикл будет каждый раз выполнять все свои витки. Работу циклов также можно сравнить с вращением связанных шестерёнок разного размера: Внешний цикл - это как бы большая шестерёнка, за один свой оборот (виток цикла), внешний цикл заставляет вращаться вложенный цикл (меньшую шестерёнку) несколько раз. Такая иллюстрация точна в случае, если число повторов вложенного цикла не зависит от того какой именно (1-ый, n-ый или иной) виток делает внешний цикл, а так бывает не всегда. Пример №1.1: Repeat/until + For: работа с пользователем до его указания на завершение программы.Пользователь вводит целые положительные числа, большие 5. Пока он не введёт число 22 в ответ на каждое введённое число выводите все целые числа от 1 до этого числа, если же пользователь ввёл ноль, то объявите о завершении работы программы. Program dd; var a,i:integer; begin repeat // внешнийцикл writeln('vveditechislo>5:'); readln(a); for i:=1 to a do // (вложенныйцикл) выводимвсечисладо a write(i, ' '); writeln(); // переносстроки until (a = 22); // конец тела внешнего цикла writeln('zaversheno!'); readln(); end. Прокомментируем это решение: 1)В качестве внешнего цикла мы выбрали repeat/until, чтобы проверять условие уже после ввода значения пользователем. 2)В качестве внутреннего цикла мы выбрали for -- ведь каждый раз будет известно число, до которого надо выводить меньшие числа. Можно было бы использовать и любой другой цикл, но for в таких случаях использовать грамотнее и красивее. 3)минусом выбора repeat/until внешним циклом является то, что эта программа, в случае если пользователь введёт число 22, все равно выведет ряд чисел, а только потом завершится. Пример2. Вывести на экран таблицу умножения чисел от 1 до 9. Program dd; vari, j: integer; begin fori := 1 to 9 do // цикл по строкам таблицы, счетчик как левый множитель begin forj := 1 to 9 do // выводим равенства очередной строки, счётчик как правый множитель write(i, '*', j, '=', i*j, ' '); writeln(); // переносимстроку end; readln(); end.
Популярное: Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (569)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |