![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Программирование циклических алгоритмов
Существует три типа циклических структур: цикл с предусловием, цикл с постусловием и цикл по параметру. Цикл с предусловием. Рассмотрим синтаксическую диаграмму оператора цикла «Пока», или цикла с предусловием (рис. 4). здесь сначала вычисляется < Логическое выражение>. Пока его значение равно True, выполняется < Оператор> - тело цикла. При этом < Оператор> может быть как простым, так и составным. Для приема приведем фрагмент программы на Паскале, вычисляющий с заданной точностью ɛ сумму гармонического ряда
Суммирование прекращается, когда очередное слагаемое становится меньше ɛ или когда целая переменная I достигает значенияMaxInt, (см. раздел 4. программа Summ_1).
Цикл с постусловием. Синтаксическая диаграмма оператора Цикла «До», или цикла с постусловием, приведена на рис. 5. Исполнение данного цикла повторяется до того момента, когда < логическое выражение> станет равным True.
< Оператор цикла с постусловием> While < Логическое выражение>
Do < Оператор> Рис. 4. Синтаксическая диаграмма цикла с предусловием
< Оператор цикла с постусловием> Repeat < Оператор> Until < Логическое выражение> Рис. 5. Синтаксическая диаграмма цикла с постусловием Предыдущая задача с использованием цикла с постусловием решается следующим образом (см. раздел 4. программа Summ_2).
Цикл по параметру. Рассмотрим задачу вычисления суммы целых чисел от М до N прямым суммированием. Данную задачу можно записать в виде
Summa=
Блок-схема алгоритма решения этой задачи приведена на рис. 2.6, а соответствующую программу с использованием структуры цикла «Пока» можно записать следующим образом (см. раздел 4. программа Adding).
_
+
Рис. 6. Блок-схема алгоритма суммирования целых чисел Теперь введем новый тип циклической структуры, которая называется «цикл по параметру». Блок-схема алгоритма суммирования с использованием этой структуры приведена на рис. 7, а программу на Паскале для решения данной задачи можно записать следующим образом (см. раздел 4. программа Summering_2).
_
+
Рис. 7. Блок-схема алгоритма суммирования с циклом по параметру
Здесь целая переменная I принимает последовательность всех значений в диапазоне от M до N. При каждом значении I выполняется тело цикла. После последнего выполнения цикла при I= N происходит выход из цикла на продолжение алгоритма. Цикл выполнится хотя бы один раз, если M ≤ N, и не выполнится ни разу при M > N. В приведенной программе используется оператор цикла по параметру, синтаксическая диаграмма которого показана на рис. 8, где
< параметр цикла>:: = < имя простой переменной порядкового типа>
Выполнение оператора For (в первом варианте To) происходит по следующей схеме.
1. Вычисляются значения < Выражение 1> и < Выражение 2>, причем только один раз при входе в цикл. 2. Параметру цикла присваивается значение < Выражение 1>. 3. Значение параметра цикла сравнивается с значением < Выражение 2>. Если параметр цикла меньше или равен этому значению, то выполняется тело цикла, в противном случае выполнение цикла заканчивается. 4. Значение параметра цикла изменяется на следующее значение в его типе (для целых чисел – увеличивается на единицу) и происходит возврат к п. 3 данной схемы. Оператор цикла For объединяет в себе действия, которые при использовании цикла While выполняют различные операторы: присваивание параметру начального значения, сравнение с конечным значением, изменение значения на следующее. Как известно, результат суммирования целых чисел не зависит от порядка суммирования. Например, в рассматриваемой задаче числа можно складывать и в обратном порядке, т. е. от N до M (N ≥ M). Для этого можно использовать второй вариант оператора цикла For:
DownTo буквально переводится«вниз до».в данном случае параметр цикла изменяется по убыванию, т. е. при каждом повторении цикла параметр изменяет свое значение на предыдущее (равносильно i: = pred (i)). Следовательно, цикл не выполнится ни разу, если N< M.
Работая с оператором For, следует учитывать следующие правила: · параметр цикла не может иметь тип real; · в теле цикла нельзя изменять переменную – параметр цикла; · при выходе из цикла значение переменной – параметра цикла – является неопределенным.
< Оператор цикла по параметру> For < Параметр цикла>
< Выражение 1> To < Выражение 2 > Do < Оператор > DownTo
В следующем примере в качестве параметра цикла For используем символьную переменную. Пусть требуется получить на экране десятичные коды букв латинского алфавита. Как известно, латинские буквы в таблице кодировки упорядочены по алфавиту. Фрагмент соответствующей программы можно записать следующим образом (см. раздел 4. программа Summering_3).
Здесь переменная С типа char.
Теперь самостоятельно запрограммируйте вывод кодировки латинского алфавита в обратном порядке (от ‘z’ до ‘a’)?
|