Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Одномерные и многомерные массивы
Все переменные делятся на простые и индексированные. Простые записываются своими идентификаторами (именами) и могут быть различных типов (integer, real, …), например, PI, Xmin, DELTA, omega и др. Индексированные переменные являются элементами массива, который состоит из набора данных одного типа. Массив элементов имеет общий идентификатор - имя, а каждый его элемент определяется по индексу имени, например, V[i] – i-тый элемент массива с именем V. Массив объединяет фиксированное количество элементов одного типа данных. Более формально массив можно определить как последовательную упорядоченную совокупность элементов некоторого типа, которые адресуются с помощью некоторого индекса (номера элемента в массиве). Наряду с термином «массив» часто используются термины «матрица», «таблица», «вектор». Поскольку все элементы массива должны быть одного типа, определение типа массива имеет следующий вид: type где Tarr – имя массива., array, of – служебные слова, Т1 – означает тип индекса массива, Т2 – тип элементов массива. В качестве типа индекса может быть использованы все порядковые типы, за исключением длинного целого ( longint ) и поддиапазонов длинного целого. Массивы могут быть одномерными и многомерными, например, X[I], A[I, J], D[I, J, K] и др. Число индексов в определении (то есть размерность массива) не ограничивается. Элемент массива также может быть массивом, тогда количество ячеек памяти, отводимое под массив программой, равно общему количеству элементов в массиве. Если тип элемента в типе массив также является массивом, то результат можно рассматривать как массив массивов или как один многомерный массив. Например, array[1..5] of array[1..10] of Real интерпретируется компилятором точно так же, как массив: array[1..5, 1..10] of Real. Таким образом, допускается запись типов индексов, разделенных запятыми, в одних скобках. Примеры описания массивов: Тип массива (его элементов) должен быть описан до объявления самого массива (его имени): Type V1 = array[1..100] of real; V2 = array[char] of boolean; M1 = array[1..10] of array [1..15] of integer; Var Vector: V1; Symb_Table: V2; Matrix1, Matrix2: M1; Однако допускается объявление массива непосредственно в разделе описания переменных: Var B: array[1..5] of byte; S: array[(Red, Yellow, Green)] of Boolean; M: array[1..5, 1..7] of integer; Иногда требуется задать массив с помощью типизированной константы. Пример: Const Marks: array[1..4] of integer = (2, 3, 4, 5); Tmatr: array[1..2, 1..3] of byte = ((3, 1, 5), (7, 2, 4)); Pascal допускает единственное возможное действие над массивом в целом: использование его в операторе присваивания, например: Vect1: =Vect2 причем типы обоих массивов в данном случае должны быть эквивалентны. Доступ к элементам массива строится традиционно: после идентификатора массива в квадратных скобках указывается индекс нужного элемента или список индексов, определяющий элемент многомерного массива. В качестве индексов могут выступать произвольные выражения, тип которых должен соответствовать типу индексов в описании массива. Примеры: Vector[1] Vector[(i+1)*2] M[i, j] M[3][1] M[3, 1] Элемент массива считается переменной; он может получать значения (например, в операторе присваивания), а также участвовать в выражениях. Примеры : M[i, j]: =M[i, j-1]*2 Symb_Table[‘a’]: =true; Vector[i]: =M[i, 1] mod 2; Обработка массивов Задача 2.1 Найти сумму элементов массива Const N = 5; Var A: array[1..N] of Integer; I, Sum: Integer; Begin {ввод элементов} for I: =1 to N do Begin Write(‘Введите ’, I, ’-й элемент массива: ’); ReadLn(A[I]); end; Sum: =0; for I: =1 to N do Sum: =Sum+A[I]; Writeln(‘Сумма равна ’, Sum); End. В программе определяется константа N=5 – наибольший индекс (номер) элемента в массиве А, затем задаётся тип (целый) для массива А размерностью от 1 до N, номера элемента I, и суммы Sum. В основном блоке с помощью оператора for перебираются и вводятся все элементы (оператором read), затем задаётся начальное значение суммы Sum: =0, затем в цикле for от 1 до N все элементы массива прибавляются к начальной сумме Sum: =Sum +A[I]. После вывода суммы на экран программа завершается. Задача 2.2 Вывести номера строк матрицы А, которые содержат нулевой элемент и произведение элементов 4-го столбца, больших 2.. Const P: =1 Var A: array[1..5, 1..7] of Byte; I, J: Byte; Begin {инициализация генератора случайных чисел} Randomize; {заполнение и печать матрицы} for I: =1 to 5 do Begin for J: =1 to 7 do Begin A[I, J]: =Random(15); Write(A[I, J]: 4); end; WriteLn; end; WriteLn; for I: =1 to 5 do for J: =1 to 7 do if A[I, J]=0 then Begin Write('I=', I); Break; end; if A[I, 4]> 2 then Begin P: =P*A[I, 4]; end; Write('P[I, 4] =', P); WriteLn; End.
Описание программы Генератор случайных чисел использован в программе для заполнения элементов двумерного массива A[I, J] случайными числами. Для этого организованы циклы по I и J для перебора всех элементов массива и каждому функция Random(15) присваивает случайное число в диапазоне 0 …15, которое распечатывается на экране четырьмя знаками. Оператор WriteLn выводит пустую строку. Во вложенном цикле for перебираются все сочетания номеров строк I и столбцов J матрицы, а проверка if A[I, J]=0 определяет и выводит через Write('I=', I)номер строки (I) матрицы, в которой имеется нулевой элемент. Во вложенном цикле for перебираются все сочетания номеров строк I и столбцов J матрицы, а проверка if A[I, 4]> 2 определяет элемент 4-го столбца, больший 2, он умножается на Р и по завершении цикла итоговое произведение таких элементов выводится через Write('P[I, 4] =', P). 3 Контрольные вопросы 1 Что такое массив данных? 2 Как описываются одномерные и многомерные массивы? 3 Как описывается тип элемента массива? 4 Объясните организацию циклов, содержащих индексированные переменные. 5 Как задать обработку элементов только 2-го столбца? 6 Как задать обработку элементов, расположенных ниже главной диагонали? 7 Как определить максимальный элемент массива? 8 Как определить нечётные элементы массива? Задания 4.1. Рассчитать значения функции согласно своему варианту (№ компьютера в аудитории). Предусмотреть сохранение в памяти вычисленных значений функции.
Содержание отчета 1 Название, цель, содержание работы 2 Задание для своего варианта. 3 Программа расчёта 4 Результаты расчётов в среде QB. 5 Письменные ответы на контрольные вопросы. 6 Выводы по работе
Лабораторная работа №7 Популярное: |
Последнее изменение этой страницы: 2016-05-03; Просмотров: 662; Нарушение авторского права страницы