Циклические вычислительные процессы.
⇐ ПредыдущаяСтр 3 из 3 Процессы, в которых ряд действий повторяются многократно по одним и тем же математическим зависимостям, называются циклическими. Операторы цикла. При организации циклов необходимо: - определить параметр цикла и его начальное значение; - изменять значение параметра цикла на каждом шаге итерации; - проверка на выход из цикла. FOR i: = N TO K DO P (для) (до) (выполнять) где i - параметр цикла; N, K - его начальное и конечное значение; P - простой или составной оператор; I, N, K - переменные или константы целого типа. Шаг изменения i - равен 1. Если K<N, т.е. имеем дело с циклом с отрицательным шагом: (-1) FOR i: =N DOWNTO K DO P Рассмотрим пример. Вычислить S= 1+1/2+1/3+ … +1/50 Выделим переменную для накапливания суммы - Sum. Значение этой переменной необходимо предварительно обнулить. Паскаль не производит предварительной, начальной, инициализации переменных. Поэтому сумма может быть искажена без Sum = 0. Program sum; Var i: integer; sum: real; begin sum: =0; for i: = 1 to 50 do Sum: = sum + 1/i; Writeln (' сумма = ', Sum); end. Оператор for применяют в тех случаях, когда значения параметра цикла целые и меняются с шагом +1, -1. Оператор цикла с постусловием. REPEAT - тело цикла UNTIL <условие>; где P1, P2, …PN - любые операторы. По этому оператору выполняется "тело цикла", а затем проверяется <условие>, если оно не выполнилось, цикл повторяется. И так до тех пор, пока <условие> не будет выполнено. Необходимо помнить: если <условие> сразу выполнилось, цикл будет пройден один раз.
Вычислить: y = a sin (x), x = , =0.2 program fun; var y, a, x: real; begin x: =0; read (a)
repeat y: = a *sin (x); writeln (y, x); x: = x + 0.2; until x>1; end. Действия, которые подчеркнуты, необходимы для организации цикла. Оператор цикла с предусловием. WHILE <условие> DO P; Где P - простой или составной оператор. По этому оператору проверяется <условие> и, если оно выполняется, то выполняется - P, после чего опять проверяется <условие> и т. д. Итак, P - выполняется до тех пор, пока выполняется <условие>. Если условие ни разу не выполнилось, P - игнорируется, управление передается следующему оператору. Вычислить: y = sin x, x , x , - ввести с клавиатуры. Подсчитать среднее положительное и среднее отрицательное значение функции. Program cikl; var y, x, x k, d x: real; n, k: integer; SP, n - среднее и количество положительных значений. SP, S0: real; S0, k - среднее и количество отрицательных значений. begin writeln (' введите x - начальное, x - конечное, d x - шаг'); read (x, x k, d x); SP: =0; S0: = 0; n: =0; k: =0; While x< = k x do. P Составной оператор.
if n=0 then writeln ('Отрицательные отсутствуют') else writeln (' Средние отрицательные = ', SP/n); if k=0 then writeln (' Положительные отсутствуют ') else writeln (' Средние положительные = ', S0/k); end. Массивы
Задача 1: Составить программу подсчета суммы и произведения элементов одномерного массива. Program sum-prois; uses crt; const n = 100; var a: array [1…n] of real; n, k, i: integer; p, s: real; begin clrscr; s: = 0; p: =1; writeln ('введите размер массива'); readln (nk); writeln ('введите элемент массива'); for i:=1 to nk do readln (a[i]); for i:=1 to nk do begin s:= s + a[ i ]; p:= p * a[ i ];
end; writeln ('Сум. = ', s, 'Произ. =', p); end. Необходимо подготовить ячейки: - при накапливании суммы - s=0 - при подсчете произведения - p=1. Задача рассчитана на обработку массива с максимальным размером 100 элементов (n=100). Конкретный размер массива вводится с клавиатуры (nk). При каждом прохождении через цикл с клавиатуры вводится только один элемент массива. Два цикла for можно было объединить в один. Двумерные массивы. Двумерный массив можно представить в виде матрицы. . Описание двумерных массивов: a - имя массива; n, m - количество строк и столбцов в массиве. Размер массива - n m. a[i, j] - элемент стоящий на пересечении i-ой строки и j-го столбца. Каждый элемент определяется двумя индексами. a[i, i] - элементы главной диагонали. a[i, 2] - элементы второго стлбца. Задача 1. Составить программу подсчета суммы элементов над главной диагональю в двумерном массиве. Program matrix; const n=10; m=10; var a: array [1…n, 1…m] of real; i, j: integer; n, m: integer; s: real; begin s:=0; writeln (' введите размер массива m, n); readln (n, m); {Ввод массива:} for i:=1 to n do for j:=1 to m do readln (a[i, j]);
for i:=1 to n do for j:= i to m do s: s+a[i, j]; writeln('s=', s); end. Для ввода элементов массива используются вложенные циклы. i - параметр внешнего цикла; j - параметр внутреннего цикла; i - меняется медленнее j.
Элементы массива необходимо вводить по строкам.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|