- •1. Постановка задачи:
- •Структура программы на Паскале
- •Классификация типов
- •Стандартные типы данных Логические типы Внутреннее представление
- •Операции
- •Целые типы Внутреннее представление
- •Операции
- •Стандартные функции и процедуры
- •Вещественные типы Внутреннее представление
- •Операции
- •Стандартные функции
- •Символьный тип
- •Порядковые типы
- •Алфавит языка
- •6.2. Идентификаторы
- •6.3. Константы
- •6.4. Выражения
- •6.5. Операции
- •Составной оператор
- •Оператор if выполняется так:
- •Оператор if может иметь сокращенную форму. Её синтаксис:
- •10.1. Процедура
- •10.2. Функция
- •10.3. Формальные и фактические параметры
- •10.3.1. Параметры-значения
- •Динамическая память
- •1. Объявление указателей
- •2. Выделение и освобождение динамической памяти
- •3. Процедуры и функции для работы с динамической памятью
- •Работа с файлами на языке программирования pascal. Типы файлов, команды для работы с файлами, типизированные, нетипизированные и текстовые файлы
- •Работа с файлами в языке Pascal. Файлы прямого доступа.
- •16. Графические возможности языка. Модуль Graph.
- •6.1. Массив
- •6.2. Строка типа string
- •6.3. Asciiz-строка
- •6.4. Запись
- •6.5. Множество
- •6.6. Файл
- •3.1. Алгоритмы обработки массивов
- •3.2. Ввод-вывод элементов одномерного массива
- •3.3. Вычисление суммы элементов массива
- •3.4. Вычисление произведения элементов массива
- •3.5. Поиска максимального элемента в массиве и его номера
- •3.6. Сортировка элементов в массиве
- •3.6.1. Сортировка методом "пузырька"
- •3.6.2. Сортировка выбором
- •3.6.3. Сортировка вставкой
- •3.7. Удаление элемента из массива
- •3.8. Примеры алгоритмов обработки массивов
- •20.Алгоритмы обработки массивов: алгоритмы на двумерных массивах.
- •21.Динамические структуры данных: очередь.
- •Занесение элемента в очередь
- •Извлечение элемента из очереди
- •Занесение элемента в стек
- •Извлечение элемента из стека
- •Абстрактные типы данных
- •Объекты и классы
- •Базовые принципы ооп
- •Пакетирование (инкапсуляция)
- •Наследование
- •Полиморфизм
- •Описание объектного типа
- •Иерархия типов (наследование)
- •Полиморфизм и виртуальные методы
- •Статические методы
- •Виртуальные методы
6.1. Массив
Тип-массив представляет собой фиксированное количество упорядоченных однотипных
компонент, снабженных индексами. Он может быть одномерным и многомерным. Чтобы задать
тип-массив, используется зарезервированное слово array, после которого следует указать тип
индекса (индексов) компонент (в квадратных скобках) и далее после слова of - тип самих
компонент:
type
<имя типа> = array[<тип индекса(индексов)>] of <тип компонент>;
Пример.
type
Arr = array[1..3] of Real; {тип—массив из 3 вещественных чисел}
Matrix = array[1..3, 1..2] of Integer; {тип - двумерный массив целых чисел, состоящий
из 3 строк и 2 столбцов}
Введя тип-массив, можно затем задать переменные или типизированные константы этого типа.
Размерность массива может быть любой, компоненты массива могут быть любого, в том числе
и структурированного, типа, индекс (индексы) может быть любого порядкового типа,
кроме типа Longint.
При задании значений константе-массиву компоненты указываются в круглых скобках и
разделяются запятыми, причем, если массив многомерный, внешние круглые скобки
соответствуют левому индексу, вложенные в них круглые скобки - следующему индексу
и т. д.
Так, для введенных выше типов можно задать, например, следующие переменные и константы:
var
Ml, М2: Arr;
Matr: Matrix;
const
M3: Arr =(1, 2, 3);
Mat: Matrix = ((1, 2), (3, 4), (5, 6));
Последняя константа соответствует следующей структуре:
1 2
3 4
5 6
Примечание.
Тип-массив можно вводить непосредственно и при определении соответствующих переменных
или типизированных констант.
Например:
var
Ml, M2: array [1..3] of Real;
Matr: array[1..3, 1..2] of Integer;
Здесь определены те же массивы, что и в предыдущем примере.
При таком объявлении массивов следует помнить, что их типы не будут идентичными никаким
другим типам, даже если они имеют одинаковую структуру. Поэтому передавать их как
параметры в подпрограмму нельзя (см. п. 10.3), нельзя также присваивать им значения
других массивов (и наоборот), даже если их структуры совпадают.
Доступ к компонентам массива осуществляется указанием имени массива, за которым в
квадратных скобках помещается значение индекса (индексов) компоненты. В общем случае
каждый индекс компоненты может быть задан выражением соответствующего типа, например:
M1[2], Matrix[X, Y], M2[Succ(I)] и т. д.
Одному массиву можно присвоить значение другого массива, но только идентичного типа.
Так, если заданы следующие массивы:
var А, В: array[l..5] of Integer;
С: array [1. .5] of Integer;
то допустим следующий оператор:
A := В;
С другой стороны, оператор
С := А;
недопустим, т. к. массивы А и С - не идентичных типов.
Имеются некоторые отличия в работе с одномерными массивами символов (не путать с
величинами типа string - см. п. 6.2). Так, типизированным константам
этого вида можно присвоить значение как обычным строковым константам, указав строку
символов в апострофах, например
const
A: array[1..5] of Char='ааааа';
В: array[1..3] of Char='bbb';
Для таких массивов, как и для строк, можно использовать операции сравнения (даже если
они не идентичных типов и даже если имеют различный размер) и конкатенации (объединения)
- см. п. 6.2. Их можно использовать в операторах вывода Write и WriteLn. Например,
для введенных выше массивов можно написать
if A > В then
WriteLn(A) else
WriteLn(B);