Циклические алгоритмы Цикл с предусловием Цикл с предусловием в графике
Определение цикла Цикл – это последовательность операторов, которая может выполняться более одного раза. Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.
Найти сумму некоторого количества чисел, задаваемых пользователем N - количество чисел (N>0); X – вводимые числа; S – сумма этих чисел. Задание Сначала нужно запросить, сколько чисел нужно будет сложить и считать это число в переменную N. Затем нужно так организовать операторы, чтобы программа запрашивала очередное число и каждый раз складывала его с предыдущими; и повторяла эту группу операторов N раз.
Способы организации циклов цикл с предусловием; цикл с постусловием; цикл со счетчиком. Познакомимся с первым из них
Цикл с предусловием while Циклы с предусловием используются тогда, когда выполнение цикла связано с некоторым логическим условием. Оператор цикла с предусловием имеет две части: условие выполнения цикла и тело цикла. При выполнении оператора while определенная группа операторов выполняется до тех пор, пока определенное в операторе while булево условие истинно. Если условие сразу ложно, то оператор не выполнится ни разу. Общая форма записи: while do begin группа операторов end; На русском языке: пока выполняется это условие делай от начала группа операторов до конца;
Правила использования while значение условия выполнения цикла должно быть определено до начала цикла; если значение условия истинно, то выполняется тело цикла, после чего повторяется проверка условия. Если условие ложно, то происходит выход из цикла; хотя бы один из операторов, входящих в тело цикла, должен влиять на значение условия выполнения цикла, иначе цикл будет повторяться бесконечное число раз.
Вернёмся к предыдущей задаче: При вычислении суммы используем следующий прием: вначале, когда еще не задано ни одно слагаемое, сумму полагают равной нулю (S:=0), а затем, получая очередное слагаемое, прибавляют его к сумме (S:=S+x). Очень важное значение в операторе цикла имеет так называемая переменная цикла. В нашей программе она называется i. С ее помощью мы обращаемся к пользователю за очередным числом (write (Введите,i,-ое число )) и считаем количество уже введенных чисел (i:=i+1), чтобы не запросить лишнее. Одновременно переменная цикла участвует в булевом выражении (i<=N).
Разберём используемые переменные: Program Summa; Uses Crt; Var i, N : integer; x, S : real;
Основной текст программы: Begin ClrScr; write (Сколько чисел для сложения? ); readln (N); S:=0; i:=1; while i<=N do begin write (Введите,i,-е число ); readln (x); S:=S+x; i:=i+1; end; write (Сумма введенных чисел равна,s:5:2); readln; End.
Шутливые примеры циклов: Репка. Дед тянет-потянет, вытянуть не может. Позвал бабку. Бабка за дедку, дедка за репку, тянут потянут, вытянуть не могут. Позвала бабка внучку... И вытянули репку. Курочка ряба. Снесла курочка яичко. Дед бил, бил, не разбил. Баба била, била, не разбила. Мышка бежала, хвостиком задела, яичко упало и разбилось. Колобок.... Катится колобок по лесу. От зайца ушел, от медведя ушел, от волка ушел. Встретил лису, она его и съела.
Решение задач Вывести все чётные числа начиная с числа N и до числа M. Числа N и M задает пользователь. Составить программу, проверяющую, является ли последовательность из 10 целых чисел, вводимых с клавиатуры, возрастающей. Составить программу, печатающую все делители целого числа в порядке возрастания.
Цикл с предусловием в графике: Задача. Построить множество концентрических окружностей (с общим центром), удовлетворяющих следующим условиям: радиус следующей окружности на m меньше предыдущей; процесс построения должен завершиться, когда радиус меньшей окружности станет меньше или равным данному числу а.
Разберём используемые переменные: Program Krugi; Uses Crt, Graph; Var i,m,R,a,DV,DM : integer; Begin ClrScr; Randomize; write (Введите шаг изменения радиуса окружностей ); readln (m); write (Введите радиус большей окружности ); readln (R); write (Введите радиус меньшей окружности ); readln (а); write (Введите координаты центра ); readln (X, Y);
Основной текст программы: DV:=detect; InitGraph (DV, DM,..\BGI); SetBkColor (7); while R>=a do begin SetColor (Random(15)); Circle (X, Y, R); R:=R-m; end; readln; CloseGraph; End.
Решение задач Нарисовать веер, состоящий из секторов круга, раскрашенных разным цветом. Составить программу, перемещающую отрезок заданной длины слева направо. Имитация движения осуществляется закраской цветом фона линии на предыдущем шаге и построением ее по новой координате Х на следующем шаге.
Домашнее задание Вывести на экран числа, кратные К из промежутка [А,В]. Числа А, В, К задает пользователь. Запросите у пользователя положительное число А и найдите сумму всех натуральных чисел из промежутка [1, А]. Изобразить движущуюся окружность заданного радиуса и цвета.