Цикл с постусловием Повторение 1. 2. Запишите конструкцию цикла с предусловием. В каких случаях применяется цикл с предусловием? Ниже представлен фрагмент программы вычисления количества цифр в заданном натуральном числе. a := n; ck := 0 While a>=0; Do Begin ck := ck + 1; a := a Div 10 End; Найдите и исправьте в нём ошибки. 3. Каким условиям должны удовлетворять значения переменной k, чтобы следующие циклы были бесконечны: While c<0 Do c:=c+k; While k<>0 Do k:=k+1; While k<>0 Do k:=k-2. Примечание. Перед занятием можно подготовить таблицу с конструкцией цикла с постусловием. Для программной реализации циклических процессов с неизвестным числом повторений существует ещё один оператор оператор цикла с постусловием, который имеет следующий вид: Оператор цикла с постусловием Repeat <оператор 1>; <оператор 2>; ... <оператор n>; Until <условие>; где Repeat(повторять), Until (до тех пор, пока). Этот оператор аналогичен оператору цикла с предусловием, но отличается от него тем, что проверка условия производится после очередного выполнения тела цикла. Это обеспечивает его выполнение хотя бы один раз. Обратите внимание на то, что данный оператор цикла предполагает наличие нескольких операторов в теле цикла, поэтому служебные слова Begin и End не нужны. Последовательность операторов, входящих в тело цикла выполняется один раз, после чего проверяется соблюдение условия, записанного следом за служебным словом Until. Если условие не соблюдается, цикл завершается. В противном случае - тело цикла повторяется ещё раз, после чего снова проверяется соблюдение условия. Задание Придумать примеры из жизни, иллюстрирующие данную конструкцию. Пример Составить программу планирования закупки товара в магазине на сумму, не превышающую заданную величину. Решение Обозначим через x, k - соответствующую цену и количество товара, через p - заданную предельную сумму, через s общую стоимость покупки. Начальное значение общей стоимости покупки (S) равно нулю. Значение предельной суммы считывается с клавиатуры. необходимо повторять запрос цены и количества выбранного товара, вычислять его стоимость, суммировать ее с общей стоимостью и выводить результат на экран до тех пор, пока она не превысит предельную сумму р. В этом случае на экран нужно вывести сообщение о превышении. Program Example_10; Var x, k, p, s : Integer; Begin WriteLn('Введите цену товара и его количество'); ReadLn(x,k); s:=s+x*k; WriteLn('Стоимость покупки равна ',s); Until s>p; WriteLn('Суммарная стоимость покупки превысила предельную сумму'); End. При описании циклов с постусловием необходимо принимать во внимание следующее: перед первым выполнением цикла условие его окончания (или продолжения) должно быть определено; тело цикла должно содержать хотя бы один оператор, влияющий на условие окончания (продолжения), иначе цикл будет бесконечным; условие окончания цикла должно быть в результате выполнено. Решение задач 1. Определить значение переменной s после выполнения следующих операторов: s := 0; i := 1; Repeat s := s + 5 Div i; i := 1 - 1; Until i<=1; 2. 3. Произведение N первых нечетных чисел равно p. Сколько сомножителей взято? Числа Фибоначчи (fn) определяется формулами: f0 = f1 = 1; fn = fn = fn-1 + fn-2 при n=2, 3,... Составить программу: определения f - 40-е число Фибоначчи; поиска f - первого числа Фибоначчи, большего m (m>1); вычисления s - суммы всех чисел Фибоначчи, которые не превосходят 1000. 4. 5. 6. 7. Составить программу, проверяющую, является ли заданное натуральное число совершенным, то есть равным сумме своих положительных делителей, кроме самого этого числа. Показать, что любой оператор цикла с предусловием можно записать с помощью условного оператора и оператора цикла с постусловием. Показать, что любой оператор цикла с постусловием можно записать с помощью условного оператора и оператора цикла с предусловием. Дана непустая последовательность натуральных чисел, за которой следует 0. Вычислить сумму положительных элементов последовательности, порядковые номера которых нечетны