Начальное значение для суммы равно нулю, для произведения - единице


Пример 2. Цикл с монотонным изменением параметра.

Составить блок-схему вычисления значений функции y= -364*x2/(x5-1) при изменении x от a до b с шагом h.

При решении такого типа задач мы получаем таблицу значений функции y. Поэтому, такие задачи называются задачами табулирования функции. Циклы с монотонным изменением параметра можно организовать двумя способами:

1. проверка выхода из цикла осуществляется по достижении конца интервала изменения аргумента.

Цикл сложный, т.к. внутри цикла есть разветвление, без переадресации, т.к. значения параметра x, шаг изменения параметра h и значения функции y находятся в фиксированных полях памяти.

Телом цикла являются блоки 4 - 9.

Тело цикла выполняется до тех пор, пока значение переменной цикла x не превысит конечное значение b. (Рис.1)

2. выход из цикла осуществляется по заданному числу повторений, т.е. по количеству точек, на которые разбивается интервал, в зависимости от величины шага h. (Рис.2)

Число точек, на которые разбивается интервал, определяется по формуле

N=[(b-a)/h]+1,

где a, b - начальное и конечное значения интервала, h-шаг изменения параметра x, [] обозначают антье (entier) - целую часть числа, не превосходящую данного.

Например, если a=-10,b=10,h=0.1,то N=[(10+10)/0.1]+1 = 201


 
 

 
 

14. Циклы с переадресацией


Цикл, содержащий операторы, изменяющие адреса операндов при каждом его повторении, называется циклом с переадресацией. С помощью таких циклов на ЭВМ реализуется обработка массивов.

Массив - это упорядоченная совокупность элементов, обладающих одинаковыми свойствами.

Операнды - это данные любой природы, над которыми производятся действия в программе.

15. Примеры алгоритмы обработки массивов

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

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


 
 

Схема вывода элементов массива аналогична схеме ввода и отличается от нее только тем, что отсутствует блок ввода n.

В момент выхода из цикла переменная цикла имеет значение, превышающее максимально допустимое (i=n+1).

Пример 1.Составить блок-схему вычисления суммы S и произведения P элементов одномерного массива a1, a2, a3,…, an.

 
 

Пример 2. Найти сумму и количество компонент вектора a (a1, a2, a3,…, an), принадлежащих отрезку [c, d], а все компоненты, меньшие с, заменить на единицу.

 
 

Пример 3.Дан вектор X(x1, x2, x3,…, xn).Если у вектора есть хотя бы одна компонента < D, то все отрицательные компоненты заменить их квадратами, оставив остальные без изменения. В противном случае, т.е., если у вектора нет компонент больших числа D, помножить вектор на число С.

 
 

Пример 4.Дан вектор X(x1, x2, x3,…, xn).Найти максимальный элемент и его номер.

 
 


17. Вложенные циклы

Одним из видов сложных циклов являются вложенные циклы, которые содержат несколько включенных друг в друга циклов. Среди циклов различают внешние и внутренние циклы.

Цикл, который не входит в другие циклы, называется внешним.

Цикл, который включается в другие циклы, называется внутренним.

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

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

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

Это достигается тем, что во внешний цикл вводится специальный блок, который восстанавливает изменяемые параметры внутреннего цикла. Перед каждым обращением к внутреннему циклу должен выполняться блок восстановления параметров.

Типичным примером тройного цикла является умножение матриц: даны две вещественные квадратные матрицы а(n*n) и b(n*n).Получить матрицу с(n*n),равную произведению двух матриц a и b по формуле: сij= ai k*bk j; (i,j=1,n)



Элементы матриц вводятся и располагаются в памяти машины последовательно по строкам.

Ввод элементов матрицы осуществляется двойным циклом

(блоки 2-9).

Блок 2 - ввод размерности матриц,

блок 3 - задает начальное значение переменной i - номера строки,

блок 4 - задает начальное значение переменной j - номера столбца,

блок 5 - ввод значений элементов матриц a, b (поочередно, по одному),

блок 6 - увеличение номера столбца,

блок 7 - проверка условия выхода из внутреннего цикла,

блок 8 - увеличение номера строки,

блок 9 - проверка условия выхода из внешнего цикла - конец цикла ввода по условию "нет".

Внешний цикл по i (блоки 10-19) обеспечивает вычисление всех элементов матрицы c.

Внутренний цикл по j (блоки 11-17) обеспечивает вычисление элементов одной строки матрицы c.

Внутренний цикл по k (блоки 12-15) обеспечивает вычисление одного элемента матрицы c. Элемент на пересечении строки с номером i и столбца с номером j матрицы c получается путем суммирования произведений n элементов i-той строки матрицы a на соответствующие n элементов j-того столбца матрицы b. Это достигается перебором всех элементов i-той строки и j-того столбца с помощью индекса k.

Внешний цикл по i повторяется n раз, внутренний цикл по j повторяется n2 раз, внутренний цикл по k повторяется n3 раз.

Блок 20 - вывод результирующей матрицы c на печать. Осуществляется двойным циклом, аналогично развернутой блок-схеме ввода элементов матриц a и b (блоки 3-9).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: