Структурированные типы данных. Массивы.
Паскаль допускает использование массивов произвольной размерности, но занимать они могут не более 65520 байт.Формат описания массива: type <имя__типа> = array [<тип__индекса>]of <тил__элемента>; var <идентификатор, ...>:<имя типа>; Рассмотрим формат описания массивов в разделе var, без предварительного описания типа: var <идентификатор, ...>:array [<тип_индекса>]of <тип_элемента>;Здесь array и of - ключевые слова. Над элементами массива допустимы все действия, определенные для данного типа. Единственным действием, которое возможно произвести с массивом целиком - присваивание и сравнение. Но для этого массивы должны быть описаны через имя типа, либо в одном списке раздела var. Одномерные массивы. Линейный массив является линейной таблицей, в которой для точного указания на элемент данных достаточно знания только одного. В Паскале можно использовать массивы произвольной размерности, Бели речь идет о двумерных (в общем случае - многомерных) массивах, то в описаниях должны быть заданы диапазоны изменения всех индексов.
Разновидности: массивы, множества, записи -структуры, т.к. их разме-ры неизменны в течение вып проги, Может иметь неогран уровни структурир. Индекс –порядк номера эл.
Элем массива – индексирован перемен. Массив - это упорядоч структура однотипн данн, хранящая их последовательно. Доступ к эл мас осущ ч/з его индекс.
Имя типа = ARRAY [ диапазоны индексов ] OF тип элемента массива;
В кач типа для эл масс можн исп люб типы Паскаля кроме файловых. Диапазоны индекс предст один или несколько диапазонов, перечислен через запятую. В кач диапаз индек нельзя исп диапаз с базовым типом Longint.
Строки
Структура строки в ПаскалеСтрока есть последовательность символов языка Паскаль, В выражениях константу-строку заключают в апострофы.Форматописания строки: var <идентификатор1>, .... string[<длина строки>] ;<длина строки> — количество символов в строковой переменной. Число символов не может превышать 255. Фактическая длина строки может быть короче указанной в описании. Длину строки можно не указывать. В этом случае ее длина будет предельной - 255 символов. Для хранения строки в памяти отводится количество байтов на 1 больше длины строки. В нулевом байте хранится реальная длина строки. Доступ к элементам строки - символам - осуществляется так же, как к элементам массива, с помощью индекса, который записывается в квадратных скобках за идентификатором строковой переменной.Примеры описания строк: const slovo = 'massiv';frasa = 'Я пишу программу' ;type subekt - string [30];var В,A: subekt; fio : string[30];text: string;Над строками определена операция соединения (конкатенации) «+». Она соединяет две строки в одну результирующую строку.ФункцииConcat(si, s2, sn) возвращает строку, являющуюся слиянием строк si, s2,.... sn. Ее действие аналогично операции конкатенации.Copy (s, i, n) возвращает подстроку длиной n, начинаюoeюся с позиции i строки s. Параметры n и i должны быть целого типа.Length(s)возвращает фактическую длину строки S,результат имеет тип byte.Pos (s1,s) возврашает номер первого символа подстроки s1 в строке s или нуль, если si не содержится в s.ПроцедурыDelete(s, i, n) удаляет из строки s, начиная с позиции i, подстроку длиной n.Insert (s1, s, i)вставляет в строку sподстроку si, начинаяс позиции I S t г (х, s)преобразует числовое значение х в строку s, при этом для х может быть задан формат, как в процедурах вывода.Val(s, х, code) преобразует строку s, содержащую символьное представление числа, в значение числовой переменной х. В случае успешного преобразования переменная code равна нулю. Если же обнаружена ошибка, то code будет содержать номер позиции первого ошибочного символа, а значение х не определено.
Записи
Структура записи в Паскале.Записи являются структурированным типом данных. Они состоят из компонент, имеющих в общем случае разные типы. Компонент записи называется полем и обозначается идентификатором - именем поля. Описание записей возможно с применением типов или в разделе описания переменных: type<имя типа> = record <идентификатор поля 1>: тип 1; <идентификатор поля 2>: тип 2;.....<идентификатор поля к>: тип к; end; var <идентификатор>:<имя типа>; <идентификатор>:record <идентификатор поля 1>: тип 1; <идентификатор поля 2>: тип 2;<идентификатор поля к>: тип к;end;В секции могут перечисляться несколько имен полей одного типа. Тип поля может быть любым, кроме файлового.К каждому компоненту записи можно обратиться, используя имя переменной типазаписи и имя поля, разделенные точкой: <идентификатор>. <имя поля>. Приобращении к элементу массива записей, индекс указывается после имени массива: <идентификатор массива>[индекс].<имя поля>Введение в Паскале такого типа вызвано необходимостью описания реального объекта в целом. Пример 1. Описание времени и даты.typetime =record hour:l.-12; minute:0..59; end;var tl,t2:time; date :recordday:l..31; month:0..12; year:wordend;К компонентам записи можно обратиться, например; tl.hour, t2.minute, date.month. Над компонентами записи определены операции, допустимые для соответствующего типа. Оператор присоединенияОбращение к элементам записи их полным именем громоздко. Этот недостаток устраняют с помощью оператора присоединения with. Формат оператора:with Rdo SI; где R - имя переменной записи, a S1 -тело оператора присоединения. Внутри него выборка поля переменной R может быть обозначена просто именем этого поля.