- •3.Алгоритмизация и программирование
- •1. Понятие алгоритма, его свойства и способы описания
- •Графический способ описания алгоритма
- •3.1. Структуры алгоритмов
- •3.2. Базовая структура следования
- •3.3. Управляющая структура повторения (цикл)
- •3.4. Управляющая структура разветвления
- •Управляющие структуры разветвления с одним
3.3. Управляющая структура повторения (цикл)
Управляющая структура повторения (цикл) предусматривает повторное выполнение действия S (тела цикла) до тех пор, пока некоторое условие имеет значение "истинно". Как только значение условия становится "ложно", прекращается выполнение действия S и управление передается следующей структуре. Различают две разновидности структуры повторения: цикл с предусловием или цикл "ПОКА" и цикл с постусловием "ДО".
Рис. 6
Рис. 7
Алгоритм цикла с предусловием «Пока» в виде блок-схемы и в виде программы на алгоритмическом показан на рис. 6. Алгоритм цикла с постусловием «До» в виде блок-схемы и в виде программы на алгоритмическом языке показан на рис. 7. Цикл "ДО" в отличие от структуры цикла "ПОКА" выполняет действие S хотя бы один раз даже при начальном значении условия "ложно". Если число повторений заранее известно, то такой цикл называется арифметическим. В противном случае — итерационным.
Арифметические циклы
В арифметических циклах используется специальная переменная, которая называется параметром цикла. Поэтому в литературе арифметические циклы называют циклами с параметром.
Определение Параметром цикла называется переменная, значение которой изменяется после каждого повторения тела цикла на одно и то же число – шаг цикла. Текущее значение параметра цикла определяется по формуле:
Ik = Ik - 1 + H ,
где k – сколько раз осуществлено повторений тела цикла;
Ik – значение параметра цикла после окончания k-го раза вычислений тела цикла;
Ik – 1 – значение параметра цикла после (k – 1)-го вычисления тела цикла;
H – шаг цикла.
Текущее значение параметра цикла можно определить также и по другой формуле:
Ik = Iнач + k H
где Iнач – начальное значение параметра цикла.
Повторение тела цикла прекращается, если значение параметра цикла превзойдет некоторое наперед заданное значение Iкон – конечное значение параметра цикла.
Выполнение неравенства:
Iк > Iкон
является условием выхода из арифметического цикла, т.е. прекращения повторений тела цикла и началу вычислений следующих операций алгоритма.
Алгоритм арифметического цикла является циклом с постусловием «ДО» и показан в виде блок–схемы на рис. 8 слева.
Рис. 8
На рис. 8 справа изображен этот же алгоритм в виде блок-схемы с применением символа заголовка арифметического цикла, а также в виде программы на алгоритмическом языке. Если шаг H = 1, то его обозначение в символе заголовка цикла отсутствует. В этом случае параметр цикла иногда называют счетчиком.
Если Ik = Iкон произойдет последнее выполнение тела цикла. Однако из-за ошибок округления оценка этого равенства может быть ненадежной. При обнаружении такой ошибки следует: объявлять I — целочисленного типа, если H = 1, а если H 1 немного изменить Iкон или Iнач.
Ч
исло
N повторений тела арифметического цикла
определяется по следующей формуле (INT
— это обозначение целого числа):
Величины Iнач , Iкон , H задаются перед началом циклического участка программы и в соответствии с последней формулой однозначно определяют число повторений до их начала, поэтому циклический алгоритм, описанный выше будет арифметическим.
Пример 2. Создание вектора.
Задана зависимость
координат вектора
от
значений его индекса i
в виде следующего выражения
,
где i [1, 2, …n] — индекс;
n — число элементов вектора;
p и q — параметры.
На рис. 9. показан алгоритм ввода вектора в виде блок-схемы и в виде программы на алгоритмическом языке. Из блок-схемы видно, что для ввода элементов вектора используется алгоритм арифметического цикла.
Рис. 9
В заголовке этого цикла задается параметр цикла i, который одновременно является индексом (номером) элемента вектора. В теле цикла располагается заданная формула, в состав которой входит параметр цикла i.
На рис. 10 показана реализация алгоритма ввода вектора в среде MathCAD с применением панели Programming.
Порядок решения:
1
.
В основном документе вводим присваивания
значений исходным данным.
2. Набираем на клавиатуре x, знак присваивания, а затем на панели Programming несколько раз нажимаем кнопку Add Line. Появляется структура «следование» (вертикальная черта) с пустыми полями.
Рис. 10
3
.
В верхнее поле щелчком мыши устанавливаем
курсор и нажимаем кнопку for
на панели Programming.
Появится следующая структура
арифметического цикла с тремя пустыми
полями.
Два поля сверху являются заголовком арифметического цикла. В левом поле этого заголовка записывается имя параметра цикла, а в правое поле можно ввести дискретный аргумент, список значений разделенных запятыми или вектор. Из рис. 10 видно, что в заголовок цикла введен дискретный аргумент:
for i 1 .. n
Пустое поле ниже заголовка цикла служит для ввода тела цикла. Можно щелчком мыши установить курсор на этом поле и кнопкой Add Line ввести в тело цикла структуру «следование» состоящую из сколько угодно полей. В нашем примере в тело цикла входит всего одно выражение, поэтому кнопку Add Line не щелкаем, а в поле тела цикла вводим одно выражение
xi p sin(q i).
3. В пустое поле ниже структуры арифметического цикла водим имя х той же переменной, что и в левом верхнем углу программного блока (для вывода в среду документа MathCAD).
Пример 3. Создание матрицы. Задана зависимость значений элементов квадратной матрицы от значений ее индексов.
где i 1, 2, … n — индекс-номер строки;
j 1, 2, … n — индекс-номер столбца;
n — число строк и столбцов матрицы;
p — параметр;
q — параметр.
Блок-схема алгоритма приведена на рис. 11 слева. Основа структуры этого алгоритма — вложенные арифметические циклы. В тело внешнего цикла по индексу i вложен внутренний цикл по индексу j. Так как в обозначении матицы Ai,j индекс i расположен на первом месте, а индекс j на втором, то внешний цикл по i является циклом по строкам, а внутренний цикл по j — по столбцам. В заголовке внешнего цикла задается параметр цикла i, который одновременно является индексом (номером) строк матрицы А. В заголовке внутреннего цикла задается параметр цикла j, который одновременно является индексом (номером) столбцов матрицы А. В теле цикла располагается заданная формула.
Рис. 11
На рис. 12 показана реализация алгоритма ввода матрицы с применением панели Programming. Видно, что в тело внешнего цикла помещается заголовок внутреннего цикла, а формула располагается в теле внутреннего цикла.
Рис. 12
Следует обратить внимание, что, несмотря на вложенность циклов, алгоритм ввода матрицы имеет одноуровневую иерархическую структуру. Это объясняется тем, что тело цикла — одно выражение, в нем нет структуры следования.
Иногда требуется создать массив со случайными значениями элементов. В этих случаях могут применяться соответствующие встроенные функции MathCAD, а также генератор случайных чисел — встроенная функция rnd(x). Эта функция при каждом обращении к ней возвращает случайное число x [0, x], с равномерным законом распределения. Функция rnd или выражение ее содержащее, помещается вместо формулы в теле цикла, определяющей значение элемента массива. Тогда при каждом заходе в тело цикла будет генерироваться новое случайное число — элемент массива.
Пример
4. Протабулировать функцию
на интервале от 0 до 6.5 с шагом 0.5.
Р
ешение
задачи приведено на рис. 13.
Рис 13.
Показано, что из программного блока выводится не одиночные числа, а векторы.
В теле цикла появилась структура «следование». Блок-схему алгоритма предлагаем начертить самостоятельно.
Пример 5. Получить вектор V, элементы которого равны элементам второго столбца данной матрицы A
На рис. 14. приведен алгоритм решения задачи в виде блок-схемы и в виде программы на алгоритмическом языке.
Рис.
14
В алгоритме имеется только один заголовок цикла (по номерам строк), так как номер столбца фиксирован, а осуществляется только циклическое изменение номеров строк.
Решение задачи показано на рис . 15.
Рис. 15
Из рис. 15 видно, что в программном блоке сначала осуществляется ввод матрицы А, а затем из этой матрицы выделяются элементы вектора V, которого равны элементам второго столбца данной матрицы А. Из документа Mathcad в программный блок ничего не передается.
