Лекция: Характерные моменты циклического алгоритма

— первоначальный вход в цикл выполняется через блок подготовки;

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

— число повторений цикла должно быть конечным, однако, не всегда число повторений известно или может быть вычислено заранее. Выход из цикла осуществляется при выполнении некоторых условий. Когда число повторений известно или может быть определено заранее, выход из цикла осуществляется при достижении параметром некоторой заранее заданной величины. Для такого рода задач используется оператор цикла «FOR … NEXT». В общем виде этот оператор цикла записывается следующим образом:

FOR I = I0 TO IN STEP DN ' начало цикла

операторы «тела цикла»

NEXT I

Здесь:

I — параметр цикла (переменная),

I0 — начальное значение параметра цикла (переменная или число),

IN — конечное значение параметра цикла (переменная или число),

DN — шаг изменения параметра (переменная или число), если шаг равен единице, то его можно опустить.

Этот оператор многократно выполняет операторы «тела цикла», находящиеся между FOR и NEXT для всех значений параметра I от I0 до IN. Структура самого оператора включает и подготовку цикла, и изменение параметра, и проверку условия выхода из цикла.

ПРИМЕР 11.1(задача типа а) Составить схему алгоритма и программу вычисления всех значений функции F(x) для всех значений аргумента х: F(x) = SIN(x)+COS(x), при -p £ х £p, шаг изменения аргумента Dх=0.
Рисунок 3. Схема алгоритма к примеру 11.1 REM Циклический алгоритм CLS CONST PI=3.14 PRINT " X ", " Y " FOR X= — PI TO PI STEP 0.1 Y= SIN(x)+COS(x) PRINT X ,Y NEXT X END

Результат выполнения программы на экране будет иметь вид:

Х Y -3.14 -1.001591 -3.04 -1.096262 -2.94 -1.179979 -2.84 -1.251906 …………………………………. 2.859999 -.6827266 2.959999 -.8029594 3.059999 -.9151694 Press any key to continue Чтобы продолжить, нажмите любую клавишу

Пояснения к программе:

— в цикле FOR многократно вычисляются значения функции для всех значений аргумента. Значения аргумента и проверка условия выхода из цикла осуществляется самим оператором FOR.

ПРИМЕР 11.2(задача типа б) Вычислить сумму n слагаемых ряда:
  Рисунок 4. Схема алгоритма к примеру 11.2     REM Цикл с известным числом REM повторений INPUT «Число слагаемых:», N S = 1 FOR I=1 TO N S=S+1/(3*I) NEXT I PRINT «Сумма ряда:»; S END Результат выполнения на экране: Сумма ряда: <число>
ПРИМЕР 11.3(задача типа б) Вычислить факториал n чисел: P= n!=1*2*3*….*n
  Рис. 5. Схема алгоритма к примеру 11.3 REM Цикл с известным числом REM повторений INPUT «Число сомножителей:», N P = 1 FOR I=1 TO N P=P*I NEXT I PRINT N; "-факториал:"; P END   Результат выполнения на экране: N-факториал: <число>
     

Пояснения к программам:

— с помощью циклов в этих программах последовательно вычисляется значение суммы и факториала (произведения). При этом каждое следующее значение вычисляется через предыдущее. Результатом многократных вычислений является одна величина — сумма ряда заданного числа слагаемых (11.2) или произведение заданного числа сомножителей (11.3);

— в приведенных примерах 11.1 — 11.3 число повторений легко определяется заранее. В примере 11.1 параметром цикла является переменная «х», а в 11.2 и 11.3 — переменная «I».

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

а)DO WHILE L <операторы «тела цикла»> LOOP б)DO UNTIL L <операторы «тела цикла»> LOOP
в) DO <операторы «тела цикла»> LOOP WHILE L г) DО <операторы «тела цикла»> LOOP UNTIL L

Здесь: L — логическое выражение.

Операторы, находящиеся между DO и LOOP повторяются до тех пор, пока выражение, стоящее после WHILE — истинно или до тех пор, пока выражение, стоящее после UNTIL — ложно.

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

ПРИМЕР 11.4. Вычислить сумму S ряда с заданной точностью е и количество слагаемых N, необходимых для достижения заданной точности:
    Рисунок 6. Схема алгоритма к примеру 11.4     REM Цикл с неизвестным числом REM повторений INPUT «Введите точность», e S = 1: I=1 DO A = 1/( 3*I ) ' слагаемое S = S+A: I=I+1 LOOP WHILE A > e PRINT «Сумма ряда:»; S-A,«N=»; I-1 END   Результат выполнения на экране: Сумма ряда:<число> N=<число>

Пояснения к программе:

— вычислить сумму ряда с точностью е — это значит производить вычисления до тех пор, пока очередной член последовательности не станет меньше или равен заданной точности;

— в примерах 11.2 и в 11.4, в обоих случаях требуется вычислить сумму ряда. В первом случае количество слагаемых определено условием задачи, а во втором — слагаемое последовательно, в цикле, прибавляется к сумме до тех пор, пока оно (слагаемое) не станет меньше или равно некоторого маленького числа (заданной точности). Такая постановка задачи имеет смысл только для сходящихся рядов, т.е. слагаемое должно стремиться к нулю.

Далее приведено еще несколько примеров циклических программ.

ПРИМЕР 11.5. Дано натуральное число n. Определить количество цифр в этом числе.
 
 

 

 


Рисунок 7. Схема алгоритма к примеру 11.5

еще рефераты
Еще работы по информатике