Рассмотрим еще один вариант организации циклического процесса.
Ниже приведена блок-схема вычисления функции
Y = X*LN(X) при X = 0.1; 0.4; 0.7 с указанием основных действий:
Словесный алгоритм:
1. Присвоить значение X=0,1 (задание начального значения параметра цикла)
2. Вычислить значение Y=XLn(X) (рабочий участок цикла – тело цикла)
3. Напечатать значение функции Y(рабочий участок цикла – тело цикла)
4. Х=Х+0,3 (изменение параметра цикла)
5. Проверить на окончание цикла. Если X<=0,7, перейти к п.2, иначе окончание счета
Блоки 2,3 - тело цикла образуют линейный участок вычислительного процесса. Параметр X - простая переменная вещественного типа.
Для Х известно начальное ( 0.1 ), конечное ( 0.7 )значения и шаг изменения ( 0.3 ).
Выход из цикла произойдет при X>0.7 ( 1 )
Эту задачу называют еще задачей табулирования функции на заданном диапазоне изменения аргумента. В инженерных расчетах такая задача встречается, когда необходимо получить таблицу значений некоторой величины, определяемой формулой, если известно, что один из параметров, входящих в эту формулу, может принимать любые значения в диапазоне [a;b].
Шаг h изменения параметра выбирается в зависимости от того, сколько значений табулируемой величины нужно получить.
Графическая блок-схема алгоритма будет такой:
X=0,1
Ввод
Х=0,1
X=X+0,3
Вывод результата Y
X<=0,7
Конец счета
Y=XLn(x)
да
нет
Действия над массивами
Как правило, в задачах необходимо обрабатывать массивы - последовательности чисел разных размеров и типов. В этом случае используется доступ к каждому элементу описанного массива по его номеру (индексу), определяющему местоположение конкретного элемента в массиве. Это можно сделать, указав идентификатор ( имя ) массива и индекс элемента в квадратных скобках.
< Пример >:
Массив А[1..15] вещественный (это значит, что массив А-последовательность вещественных
чисел)
. . .
А[1]:=1,3; А[2]:=2,1; А[3]:= -1,5 . . . – элементы массива А
< Пример >:
Массив А [1..10] целый; (это значит, что массив А - последовательность из 10 целых чисел)
Понятно, что при работе с двумерным массивом указываются два индекса.
< Пример >:
массив А [1..10,1..5] целый; (матрица из 10 строк и 5 столбцов)
. . .
А[1,1]:=1; (Элемент равен 1, стоит в 1 строке, 1 столбце матрицы)
А[2,1]:=4; (Элемент равен 4, стоит во 2 строке, 1 столбце матрицы)
А[1,2]:=А[1,1]+А[2,1]; (Элемент равен 1+4=5, стоит в 1 строке, 2 столбце матрицы)
Индексированные элементы массивов могут использоваться, как простые переменные соответствующего типа: использоваться в условных и циклических конструкциях, входить в качестве параметров операторов ввода/вывода, им можно присваивать любые значения, соответствующие их типу.
ПОИСК ЭЛЕМЕНТОВ - реализуется сочетанием операторов цикла и условных, задающих условие поиска. Иногда вводятся дополнительные переменные для подсчета или суммирования нужных элементов или их значений. В некоторых задачах такие дополнительные переменные могут понадобиться для запоминания местоположения нужных элементов, т.е. значений их индексов.
Рассмотрим пример 7.
Найти сумму отрицательных элементов массива А=A1;A2;A3…AN и их местоположение.. (здесь 1,2,3,… - индексы, указывающие местоположение элемента в массиве А. N – количество элементов в массиве)
Нам нужна дополнительная переменная, в которой будем накапливать сумму отрицательных элементов массива – назовем ее S. Еще нужна переменная – назовем ее В- это будет массив, состоящий из порядковых номеров отрицательных элементов массива А. Количество элементов в массиве В считаем с помощью переменной J. Просмотром элементов массиваА управляет переменная I.
Рассмотрим пример на произвольном массиве А=2; -3,4; 1; 2; -2; 1,5; 4,4; -3; 10,8; 6, т.е. 10 произвольных чисел (N=10). Если массив будет состоять из 100 или 1000 чисел, алгоритм решения будет такой же, как и для 10 чисел, поэтому для простоты и визуального просмотра исходного массива мы ограничимся 10 элементами массива.
Для ввода и вывода произвольной последовательности чисел необходимо организовывать цикл.