Массивы_1_лекция.ppt
- Количество слайдов: 25
Стандартные алгоритмы обработки массивов
План лекции 1. Массивы в языке Турбо-Паскаль и способы их описания. 2. Заполнение массива данными и вывод элементов массива на экран. 3. Вычисление суммы и произведения элементов массива. 4. Поиск элемента с заданными свойствами.
Структурированные типы данных Структурированный тип данных – характеризуется множественностью образующих этот тип элементов, т. е. переменная или константа структурированного типа данных всегда имеет несколько компонентов. Вложенность ограничена: суммарная длина любого типа во внутреннем представлении не должна превышать 65520 Байт.
Массивы в языке Турбо-Паскаль и способы их описания. Массив - это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Можно использовать и любой другой ранее описанный тип. Тип элементов массива называется базовым. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется.
Формат: 1. Туре <имя типа> = аrrау [список индексных типов] of <тип>; Var <идентификатор> : <имя типа>; 2. Var <идентификатор> : аrrау [список индек. типов] of <тип>;
Формат: Где аrrау, of – зарезервированные слова (массив из); список индексных типов – список их одного или нескольких индексных типов, разделенных запятыми (обычно – тип-диапазон); <тип> – любой тип ТР.
Массивы Если в качестве базового типа взят другой массив, образуется структура, которую принято называть многомерным массивом. Если задан один индекс, то массив называется одномерным, если два – двумерным, если n – n -мерным. Одномерные массивы используются для представления векторов, двумерные – для представления матриц.
Пример: Type mas 1 = array [1. . 10] of real; mas 2 =array [1. . 5, 1. . 10] of integer; Var a, b : mas 1; c : mas 2; Var a, b : array [1. . 10] of integer; {одномерные массивы c : array [1. . 5, 1. . 10] of real; {двумерный массив}
Массивы Доступ к элементу массива реализуется указателем имени массива и в квадратных скобках индекса. Индексы элементов массива это выражения любого порядкового типа. a[2] b [ i+5 ] c[i, j]
Пример: a [ 2] , b [i+5], c [i , j] Индексы не должны выходить за пределы, определенные тип-диапазоном. Контроль правильности значений индексов массива может проводиться с помощью директивы компилятора R. По умолчанию директива R находится в пассивном состоянии {$R-}. Перевод в активное состояние {$R+} вызывает проверку всех индексных выражений на соответствие их значений диапазону типа индекса.
Массивы Диапазоны индексов можно задать конcтантами, которые описаны в разделе описания констант: Const n=5; m=10; Var c: array [1. . n, 1. . m] of integer;
Массивы Массив можно описать и с помощью типизированных констант: Const Vect : array [1. . 5] of byte = (1, 6, 3, 8, 5); Matr : array[1. . 4, 1. . 6] of integer = ((1, 6, 3, 5, 2, 4), (7, 2, 5, 4, 3, 2), (3, 1, 6, 3, 8, 5), (5, 2, 8, 5, 5, 4));
Массивы Элементы массива располагаются в памяти последовательно. Многомерные массивы располагаются таким образом, что самый правый индекс возрастает самым первым. Например, массив A(3 Х 3) будет располагаться следующим образом: A[1, 1], A[1, 2], A[1, 3], A[2, 1], A[2, 2], A[2, 3], A[3, 1], A[3, 2], A[3, 3].
Действия над массивами Для работы с массивом как единым целым, используется идентификатор массива без указания индекса в квадратных скобках. Массивы, участвующие в этих действиях, должны иметь одинаковые типы индексов и одинаковые типы компонент.
Действия над массивами В ТР массивы можно использовать только в операторе присваивания. Var a, b : array [1. . 10] of real; Begin …. . a : = b; …… End.
Действия над массивами a = b – нельзя!!! a >= b – нельзя!!! a < > b – нельзя!!! ТОЛЬКО ПО ЭЛЕМЕНТНО!!!
Действия над элементами массива Инициализация массива (заключается в присвоении каждому элементу массива одного и того же значения) одномерного for i : = 1 to n do a [ i ]: =0; двумерного for i : =1 to n do for j : = 1 to m do b [ i, j ] : = 0;
Ввод элементов массива (одномерного) Write (‘Введите размерность массива n=’); Readln (n); Writeln (‘Введите элементы массива’); For i: = 1 to n do Begin Write (‘a [‘ , i , ’]= ’); Readln (a [ i ]); End;
двумерного Write (‘Введите размерность массива n, m’); Readln ( n, m ); Writeln (‘Введите элементы массива’); For i : = 1 to n do For j : = 1 to m do Begin Write (‘c [‘, i, ’, ’, j, ’] = ’); Readln ( c [ i, j ] ); End;
двумерного Write (‘Введите размерность массива n, m’); Readln ( n, m ); Writeln (‘Введите элементы массива’); For i : = 1 to n do For j : = 1 to m do c [ i, j ] : = random *100 - 50;
Вывод элементов массива Одномерного Writeln (‘Вектор a: ’); For i: =1 to n do Write (a [ i ] : 5); Writeln;
Двумерного Writeln (‘Матрица b: ’); For i : = 1 to n do Begin For j : = 1 to m do Write (b [ i, j ] : 5); Writeln; End;
Var a : array [1. . 10, 1. . 20] of integer; i, j, n, m : integer; Begin Write (‘Введите n <= 10, m<= 20’); Readln ( n, m ); For i : = 1 to n do For j : = 1 to m do c [ i, j ] : = random(51); Writeln (‘Матрица c: ’); For i : = 1 to n do Begin For j : = 1 to m do Write (c [ i, j ] : 5); Writeln End.
Подсчет количества нулевых элементов в массиве Ø одномерном k : = 0; for i : = 1 to n do if a [ i ] = 0 then k : = k + 1; Ø двумерном k : = 0; for i : = 1 to n do for j : = 1 to m do if b[ i, j ] = 0 then k : = k + 1;
Массивы_1_лекция.ppt