Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Программирование циклических алгоритмов






Существует три типа циклических структур: цикл с предусловием, цикл с постусловием и цикл по параметру.

Цикл с предусловием. Рассмотрим синтаксическую диаграмму оператора цикла «Пока», или цикла с предусловием (рис. 4). здесь сначала вычисляется < Логическое выражение>. Пока его значение равно True, выполняется < Оператор> - тело цикла. При этом < Оператор> может быть как простым, так и составным.

Для приема приведем фрагмент программы на Паскале, вычисляющий с заданной точностью ɛ сумму гармонического ряда

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
ПП.01.ПМ01 625. 14  

 

 

 

 

Суммирование прекращается, когда очередное слагаемое становится меньше ɛ или когда целая переменная I достигает значенияMaxInt, (см. раздел 4. программа Summ_1).

 

Цикл с постусловием. Синтаксическая диаграмма оператора Цикла «До», или цикла с постусловием, приведена на рис. 5.

Исполнение данного цикла повторяется до того момента, когда < логическое выражение> станет равным True.

 

< Оператор цикла с постусловием> While < Логическое выражение>

 


Do < Оператор>

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

 

< Оператор цикла с постусловием> Repeat < Оператор>

Until < Логическое выражение>

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

Предыдущая задача с использованием цикла с постусловием решается следующим образом (см. раздел 4. программа Summ_2).

 

Цикл по параметру. Рассмотрим задачу вычисления суммы целых чисел от М до N прямым суммированием. Данную задачу можно записать в виде

 

 

Summa=

 

 

Блок-схема алгоритма решения этой задачи приведена на рис. 2.6, а соответствующую программу с использованием структуры цикла «Пока» можно записать следующим образом (см. раздел 4. программа Adding).

 

 

Начало
Ввод M, N
Summa: = 0
I: = M
I ≤ N
Summa: = Summa + I
I: = I + 1
Ввывод Summa  
Конец

 

 


 

 

_

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
ПП.01.ПМ01 625. 14  

+

 

 

Рис. 6. Блок-схема алгоритма суммирования целых чисел

Теперь введем новый тип циклической структуры, которая называется «цикл по параметру». Блок-схема алгоритма суммирования с использованием этой структуры приведена на рис. 7, а программу на Паскале для решения данной задачи можно записать следующим образом (см. раздел 4. программа Summering_2).

 

 

Начало
Ввод M, N
Summa: = 0
I: = M до N
Summa: = Summa + I
Вывод Summa
Конец


 

_

 

+

 

 

Рис. 7. Блок-схема алгоритма суммирования с циклом по параметру

 

 

Здесь целая переменная I принимает последовательность всех значений в диапазоне от M до N. При каждом значении I выполняется тело цикла. После последнего выполнения цикла при I= N происходит выход из цикла на продолжение алгоритма. Цикл выполнится хотя бы один раз, если M ≤ N, и не выполнится ни разу при M > N.

В приведенной программе используется оператор цикла по параметру, синтаксическая диаграмма которого показана на рис. 8, где

 

< параметр цикла>:: = < имя простой переменной порядкового типа>

 

Выполнение оператора For (в первом варианте To) происходит по следующей схеме.

 

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
ПП.01.ПМ01 625. 14  

 


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.

Изм.
Лист
№ докум.
Подпись
Дата
Лист
 
ПП.01.ПМ01 625. 14  

Теперь самостоятельно запрограммируйте вывод кодировки латинского алфавита в обратном порядке (от ‘z’ до ‘a’)?

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.