Циклический алгоритм с постусловием примеры

Циклический алгоритм с постусловием примеры

Все, что необходимо начинающему и опытному программисту


Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс — подробно
Линукс — новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей

Цикл с постусловием

Вторая разновидность цикла проверяет условие после выполнения тела цикла. Поэтому правильно будет назвать это условие условием окончания цикла. Цикл такого вида называется циклом с постусловием.

Цикл будет повторяться до тех пор, пока проверка этого условия будет давать результат «ложь» (false), то есть пока условие не выполнено. Даже если условие сразу окажется истинным, цикл выполнится хотя бы один раз.

Описание цикла с постусловием

Блок-схема в общем виде выглядит так (рис. 7.8):

Рис. 7.8. Блок-схема цикла с постусловием

Выполнение цикла продолжается, если проверка логического условия дает результат «ложь». Если логическое условие выполняется, то происходит выход из цикла. Иными словами, если в цикле while проверялось условие продолжения цикла, то в цикле repeat. until — условие окончания.

На языке Паскаль этот тип цикла реализуется так:

Использование циклов repeat и while

Рассмотрим задачу, в которой требуется вводить с клавиатуры числа и подсчитывать их сумму. Сумму необходимо подсчитывать до первого введенного отрицательного числа. Блок-схема алгоритма приведена на рис. 7,9.

Рис. 7.9. Блок-схема алгоритма подсчета суммы вводимых элементов до первого отрицательного числа на базе цикла с постусловием

Пример 7.3. Использование цикла repeat для подсчета суммы вводимых чисел до первого отрицательного числа

Необходимость задать начальное значение переменной А вынуждает нас повторить операторы ввода переменной А дважды — до цикла и внутри него. С этой точки зрения использование while оказывается менее удобным.

Презентация к уроку

Загрузить презентацию (329,2 кБ)

Внимание! Предварительный просмотр слайдов используется исключительно в ознакомительных целях и может не давать представления о всех возможностях презентации. Если вас заинтересовала данная работа, пожалуйста, загрузите полную версию.

Цель: изучение алгоритмической структуры циклы, создание моделей и алгоритмов для решения практических задач.

Ход урока

I. Актуализация знаний

  • Повторить понятие алгоритма, основные конструкции алгоритмического языка.
  • Уметь разрабатывать математическую модель, алгоритм и блок схему решения задачи.
  • Иметь понятие о языках программирования и их назначении.
  • Уметь работать в среде программирования.
  • Знать структуры программы.
  • Уметь записывать выражения, содержащие числовые и символьные величины.
  • Знать структуры операторов и особенности их работы.
  • Уметь применять операторы при написании программ с линейными и ветвящимися структурами.
  • Уметь на компьютере создавать и запускать программы на отладку.
Читайте также:  Последние новости в мире технологий

II. Теоретический материал урока

Большинство практических задач требует многократного повторения одних и тех же действий, т. е. повторного использования одного или нескольких операторов. (Презентация)

Пусть требуется ввести и обработать последовательность чисел. Если чисел всего пять, можно составить линейный алгоритм. Если их тысяча, записать линейный алгоритм можно, но очень утомительно и нерационально. Если количество чисел к моменту разработки алгоритма неизвестно, то линейный алгоритм принципиально невозможен.

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

Циклом называется многократно исполняемый участок алгоритма (программы). Соответственно циклический алгоритм — это алгоритм, содержащий циклы.

Различают два типа циклов: с известным числом повторений и с неизвестным числом повторений. При этом в обоих случаях имеется в виду число повторений на стадии разработки алгоритма.

Существует 3 типа циклических структур:

  • Цикл с предусловием;
  • Цикл с послеусловием;
  • Цикл с параметром;

Иначе данные структуры называют циклами типа «Пока», «До», «Для».

Графическая форма записи данных алгоритмических структур:

Цикл с предусловием (иначе цикл пока) имеет вид:

Форматы записи операторов алгоритма Блок-схема Форматы записи операторов на Паскале
Пока (условие)
нц
серия команд
кц
while условие do
begin
серия команд;
end;

условие – выражение логического типа.

Цикл может не выполняться ни разу, если значение логического выражения сразу же оказывается ложь.

Серия команд, находящихся между begin и end, выполняются до тех пор, пока условие истинно.

Для того чтобы цикл завершился, необходимо, чтобы последовательность инструкций между BEGIN и END изменяла значение переменных, входящих в условие.

Цикл с постусловием (иначе цикл до) имеет вид:

Форматы записи операторов алгоритма Блок-схема Форматы записи операторов на Паскале
В алгоритмическом языке нет команды которая могла бы описать данную структуру, но ее можно выразить с помощью других команд (Например, ветвления). repeat серия команд
until
условие

условие – выражение логического типа.

Последовательность инструкций между repeat и until всегда будет выполнено хотя бы один раз;

Для того чтобы цикл завершился, необходимо, чтобы последовательность операторов между repeat и until изменяла значения переменных, входящих в выражение условие.

Инструкция repeat, как и инструкция while, используется в программе, если надо провести некоторые повторяющиеся вычисления (цикл), однако число повторов заранее не известно и определяется самим ходом вычисления.

Цикл с параметром (иначе цикл для) имеет вид:

Читайте также:  Самсунг или лджи телевизор что лучше 2018
Форматы записи операторов алгоритма Блок-схема Форматы записи операторов на Паскале
Для i от а до b шаг h
делай
Нц
Серия команд
кц
h = +1
for
i:= a to b do
begin
серия команд
end;
h = -1

for i:= b downto a do
begin
Cерия команд;
end;

i – параметр цикла;
a – начальное значение цикла;
b – конечное значение цикла;
h – шаг изменения параметра.

Структура данного цикла иначе называют циклом i раз.

Эта команда выполняется таким образом: параметру i присваивается начальное значение а, сравнивается с конечным значением b и, если оно меньше или равно конечному значению b, выполняется серия команд. Параметру присваивается значение предыдущего, увеличенного на величину h – шага изменения параметра и вновь сравнивается с конечным значением b.

На языке программирования Паскаль шаг изменения параметра может быть равным одному или минус одному.

Если между begin и end находится только один оператор, то операторные скобки можно не писать. Это правило работает для цикла типа «Пока» и «Для».

Рассмотрим пример решения задач с использованием данных структур

Пример.

Вычислить произведение чисел от 1 до 5 используя различные варианты цикла

Составим алгоритм в виде блок-схемы.

Для проверки правильности алгоритма заполним трассировочную таблицу.

Циклический вычислительный процесс (ЦВП) характеризуется повторением одних и тех же вычислений над некоторым набором данных. Числом повторений цикла управляет специальная переменная, называемая его счетчикомилиуправляющей переменной цикла. На счетчик накладывается условие, определяющее, до каких пор следует выполнять цикл.

Повторяемый блок вычислений называют теломцикла. В теле цикла должно быть обеспеченоизменение значения счетчика, чтобы он мог завершиться. Если тело цикла состоит более, чем из одного оператора, онозаключается в операторные скобкиbegin . end;. Однократное выполнение тела цикла называют егошагом.

Таким образом, для программирования цикла достаточно определить условие, управляющее числом его повторений и описать операторы, образующие тело цикла. С этой точки зрения, теоретически возможны всего два вида циклов – проверка условия либо предшествует выполнению тела цикла, либо происходит после него. Изобразим эти циклы в виде блок-схем с соответствующими описаниями:

Цикл с предусловием: сначала проверяется условие, затем, в зависимости от того, истинно оно или ложно, либо выполняется тело цикла, либо следует переход к оператору, следующему за телом цикла. После завершения тела цикла управление вновь передается на проверку условия. Естественно, предполагается, что в теле цикла было обеспечено некоторое изменение входящих в условие переменных – в противном случае произойдетзацикливаниеи программа "зависнет".

Читайте также:  Вас приветствует автоответчик мтс как отключить

Цикл с постусловием: сначала выполняется тело цикла, затем управление передается на проверку условия. В зависимости от истинности или ложности условия, тело цикла выполняется повторно или же происходит переход к оператору, следующему за телом цикла. Всё, сказанное о возможном зацикливании для цикла с предусловием, справедливо и для цикла с постусловием.

Исходя из приведенных блок-схем, очевидно основное различие двух циклов: цикл с постусловием гарантированно выполняется хотя бы раз, а цикл с предусловием может не выполняться ни разу, если условие сразу же окажется ложным.

В языке Паскаль реализованы оба вида циклов. Цикл с предусловием имеет следующий общий вид:

while логическое_выражение do begin

Работу цикла можно описать словами: "пока логическое выражение истинно, повторяется тело цикла".

Логическое выражение строится по правилам, изученным в главе 7. Тело цикла могут образовывать любые операторы Паскаля. Если в теле цикла всего один оператор, операторные скобки можно и не писать.

Общая запись цикла с постусловием следующая:

Работает цикл с постусловием следующим образом: "тело цикла повторяется до тех пор, пока логическое выражение не станет истинным". Обратите внимание, что, в отличие отwhile, циклrepeatв Паскале работает, пока условиеложно. Это отличие подчеркивается использованием ключевого словаuntil("до тех пор, покане") вместоwhile("до тех пор, пока"). Кроме того, в виде исключения, тело циклаrepeat, даже если оно состоит из нескольких операторов, можнонезаключать в операторные скобки.

Довольно часто циклы взаимозаменяемы. Представим, например, что для каждого из значений переменной x=1,2,…,20, нужно выполнить некоторый расчет (математически этот закон измененияxможно записать какили). Покажем общий вид цикловwhileиrepeat:

Как видно из листинга, управляющей переменной xв обоих случаях присвоено начальное значение1, оба цикла изменяют значениеxи, соответственно, условие цикла, операторомx:=x+1;, но для циклаrepeatусловие "перевернуто" ("покаxне станет больше20"), а тело не заключено в операторные скобки.

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

Ссылка на основную публикацию
Фото с листком для вк
Сигна в ВК – это просто фотография человека с листком бумаги, на котором обычно написано чье-то имя. Часто надписи делают...
Установка виндовс зависла на начало установки
Если вы решили переустановить или установить операционную систему, но начало установки Windows 7 зависает, то в этой статье, думаю, вы...
Установка драйвера принтера отказ
Нередки ситуации, когда не устанавливается принтер, хотя система видит, что к компьютеру подсоединилось новое оборудование. Решение такой задачи требует серьезного...
Фото спортивных мужчин 40 лет
17. Джерард Батлер, 48 лет (kinopoisk) «Законопослушный гражданин» Джерард Батлер когда-то работал официантом, демонстратором игрушек и даже юристом. Он также...
Adblock detector