Лекция 3 Массивы Операторы цикла
Даны значения переменных Х 1. . Х 10 Определить xi x 2 Yi = ── ─ ───── 10 ∑xi Π(xi-2) i=1
Тип данных Типы данных Простые стандартные Простые, определяемые программистом Структурные Целочисленные Перечисляемый Массив Вещественные Диапазон Запись Логический Строковый Символьный Файл Множество Ссылочные
Массив Упорядоченная последовательность элементов одного типа, имеющих одно имя. Обращение к элементу массива производится указанием его имени и индекса (номера) в квадратных скобках. Описание массива: Var имя_массива: array [нач. индекс. . кон. индекс] of тип_данных; var v: array[1. . 10] of integer; m: array[1. . 8, 1. . 8] of real; buk: array[1. . 2, 1. . 30, 1. . 40] of char; {текст на двух страницах, по тридцать строк на каждой, по сорок символов в каждой строке} stroka: string[40];
Оператор цикла FOR Цикл – многократно повторяемая группа операторов. for<параметр цикла>: =<список цикла> do <оператор> <параметр цикла>: идентификатор <список цикла>: первое значение to послед. значение или первое значение downto послед. значен. первое значение: выражение последнее значение: выражение <оператор>: оператор, выполняемый в цикле (один или составной).
Оператор цикла FOR Примеры: for i: =1 to 25 do. . for k: =25 downto 1 do. . Параметры цикла, первое и последнее значение должны быть одного и того же типа (кроме типа real) и не должны изменяться внутри оператора for. Если параметр цикла - целое данное, то шаг для to - +1, для downto - -1. Если в случае to (downto) первое значение больше (меньше) последнего значения, то оператор for не выполняется ни разу.
Обозначение оператора for в схемах алгоритма (блок-схемах) i = 1. . 10
Вычисление сумм и произведений Дан массив Х 1. . Х 10 Определить xi x 2 Yi = ── ─ ───── 10 ∑xi Π(xi-2) i=1 program lab 4; var x, y: array [1. . 10] of real; s, p: real; i: integer; begin for i: =1 to 10 do read(x[i]); s: =0; p: =1; for i: =1 to 10 do begin s: =s+x[i]; p: =p*(x[i]-2); end; for i: =1 to 10 do begin y[i]: =x[i]/s-x[2]/p; write(y[i]: 8: 3); end.
Организация циклов с использованием условных операторов program lab 4; var x, y: array [1. . 10] of real; s, p: real; i: integer; label 1, 2; begin s: =0; p: =1; i: =0; 1: i: =i+1; read(x[i]); s: =s+x[i]; p: =p*(x[i]-2); If i<10 then goto 1; i: =0; 2: i: =i+1; y[i]: =x[i]/s-x[2]/p; write(y[i]: 8: 3); If i<10 then goto 2; end.
Пример задачи № 4 Даны массив X 1, . . . , X 10 и число C. Определить: program lab 4; var x, a: array [1. . 10] of real; c, y: real; i: integer; begin for i: =1 to 10 do read(x[i]); y: =0; for i: =1 to 10 do y: =y+(x[i]-c)/sqr(x[i]); writeln(y); for i: =1 to 10 do begin a[i]: =y-x[i]; write(a[i]: 8: 3); end.
Алгоритмы сортировки массивов Дан массив. Сортировать его элементы в порядке возрастания. program sort 1; var x: array[1. . 100] of real; i, j, n: integer; z: real; begin read(n); for i: =1 to n do read(x[i]); writeln; for i: =1 to n do write(x[i]: 4: 0); for i: =1 to n-1 do for j: =i+1 to n do if x[i]>x[j] then begin z: =x[i]; x[i]: =x[j]; x[j]: =z; end; writeln; for i: =1 to n do write(x[i]: 4: 0); end. _______________________ for i: =n-1 downto 1 do for j: =1 to i do if x[j]>x[j+1] then begin z: =x[j]; x[j]: =x[j+1]; x[j+1]: =z; end;
i j 5 6 3 1 2 3 3 6 5 1 2 4 1 6 5 3 2 5 1 6 5 3 2 3 1 5 6 3 2 4 1 3 6 5 2 5 1 2 6 5 3 4 1 2 3 5 6 5 1 2 3 5 6 2 3 4 Элементы массива 1. . 5
Работа с матрицами Задана матрица 4 х4. Определить сумму ее элементов, среднее значение элементов и количество отрицательных чисел в матрице. program matr; var x: array[1. . 4, 1. . 4] of real; sum, sred: real; otr, i, j: integer; begin sum: =0; otr: =0; for i: =1 to 4 do for j: =1 to 4 do begin read (x[i, j]); if x[i, j]<0 then otr: =otr+1; sum: =sum+x[i, j]; end; sred: =sum/16; writeln (sum: 6: 2, sred: 6: 2, otr: 4); end. ________________________ Вывод матрицы на экран: for i: =1 to 4 do begin writeln; for j: =1 to 4 do write (x[i, j]: 6: 2); end
Контрольное задание Дано 200 вещественных чисел. Определить, сколько из них больше своих «соседей» , т. е. предыдущего и последующего чисел.


