Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Untitled(1).doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
942.59 Кб
Скачать

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, а если H1 немного изменить 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 не щелкаем, а в поле тела цикла вводим одно выражение

xip 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 в программный блок ничего не передается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]