
- •2.2. Основные элементы и конструкции языка
- •2.2.2. Алфавит, слова, комментарии
- •Данные
- •Целочисленные типы
- •Логические типы
- •Вещественные типы
- •Массивы
- •Совместимость типов
- •Выражения и операции
- •Арифметические выражения и операции
- •Поразрядные операции
- •Логические операции и выражения
- •Операции со строками
- •Приоритеты операций
- •Операторы
- •Простые операторы
- •Операторы ввода и вывода.
- •Структурные операторы
- •Условные операторы
- •Операторы цикла
- •Структура Паскаль программы
- •Функции и процедуры
- •Процедуры
- •Функции
- •Параметры процедур и функций
- •Модули
- •Общая структура модуля
- •Компиляция и использование модулей
- •Стандартные модули
- •Работа с файлами
- •Общие правила работы с файлами.
- •Текстовые файлы
- •Примеры задач

точкой, что эквивалентно обычной записи m*(10 в степени Р). Разрешенный диапазон задания вещественных констант от 1Е-38 до 1Е+38 (положительные и отрицательные) с мантиссой, содержащей не более 11 десятичных цифр. Везде, где есть необходимость в задании вещественных констант, разрешено использовать также целые константы, например, в выражениях, вычисляющих вещественные значения. Примеры вещественных констант:
123.456 -0.345 0.002 1E7 4Е-3 -12.345678901E+12.
Строковые типы (string)
Строковые типы предназначены для хранения строк текста. Значением константы или переменной строкового типа является последовательность символов. Количество символов в переменной строкового типа можно получить с помощью стандартной функции Length. В общем случае переменная строкового типа описывается в следующем формате:
имя_переменной : string[целое_без_знака];
где целое_без_знака показывает допустимую длину строки. Это поле не является
обязательным. Например: type
FName = string[18]; var
Path : string[64]; TypeName : string;
К символам в строках можно обращаться как к элементам массива (см. раздел "Массивы "). Причем элемент с нулевым номером показывает длину строки.
Константы строкового типа. Строковой константой называется последовательность символов, заключенная в одиночные кавычки. Символ ' (апостроф или одиночная кавычка), когда он внутри строковой константы является элементом текста, удваивается. Строковая константа может содержать только те символы, которые допустимы в качестве значений типа Сhar. Строковые константы могут быть значениями данных типа аrray of Char (тип array рассматривается далее), имеющих такую же длину, что и строковая константа. Длиной строковой константы называется число входящих в нее символов (включая символ пробел). Все строковые константы могут выступать в качестве значений любых объектов типа String. Примеры :
'Турбо-Паскаль' 'Oб''явление' ';'
'' {строка из двух пробелов} ''
Во втором примере одиночная кавычка используется внутри строковой константы как элемент текста и потому удваивается. В последнем примере строковая константа не содержит ни одного символа. Такая строковая константа называется пустой и может быть значением только объекта типа String.
Описание типизированной константы строкового типа содержит максимальную длину строки и ее начальное значение:
const
Heading : string[7] = 'Section';
NewLine : string[2] = #13#10; {символы набора ASCII} TrueStr : string[5] = 'Yes';
FalseStr : string[5] = 'No';
Массивы
Массив - это набор объектов одного типа имеющих общее имя и упорядоченных относительно начала этого набора. Упорядочивание элементов массива осуществляется
39

с помощью индексов (номеров). Массивы содержат фиксированное число элементов одного типа, так называемого типа элемента, который следует за служебным словом of. Описание массива имеет вид:
type
имя_типа_массива = array[начало..конец] of тип_элемента; var
имя_массива : имя_типа_массива;
Очевидно, что возможность объявлять в программах необходимые пользователю объекты в рассмотренной выше форме удобна в тех случаях, когда объекты с одинаковой структурой встречаются в программе многократно. Часто в программах нет необходимости определять новый тип данных (например, когда массив встречается в программе один раз) и тогда объявление объекта типа "массив" можно осуществить в разделе переменных.
var
имя_массива : array[начало..конец] of тип_элемента;
Допустимыми индексными типами являются: Byte, Word, Integer и ShortInt.
Тип элемента массива может также является массивом. Такой массив называется многомерным. Число размерностей не ограничено.
Массивы, элементы которого имеют целый или вещественный тип, в математике имеют специальные названия: одномерный – вектор, двумерный – матрица. Для матрицы первый индекс – номер строки, второй – номер столбца.
Приведем пример типа массив:
var
Vector : array[1..100] of Real; Matrix : array[1..10,5..15] of Word;
const
N = 20;
M = 10; var
Matrix : array[1..N,1..M] of Real;
Поскольку типизированная константа фактически представляет собой переменную со значением константы, она не является взаимозаменяемой для обычных констант. Она не может использоваться в описании других констант или типов.
const
Min : integer = 0; Max : integer = 99;
type
Vector = array[Min..Max] of integer;{НЕДОПУСТИМО}
Описание Vector является недопустимым, поскольку Min и Max являются типизированными константами.
Для доступа к элементам массива необходимо указать идентификатор массива с одним или несколькими индексами в квадратных скобках. Например:
Vector[4]; |
{четвертый элемент массива |
Vector } |
Matrix[1,3]; |
{элемент двумерного массива |
Matrix находящийся в первой |
|
строке и третьем столбце} |
|
Заключенный в квадратные скобки индекс не обязательно целое число - в качестве индекса можно использовать и выражения целого типа (т.е. вырабатывающие результат типа integer). Очевидно, что переменные вида Vector[i], Vector[2*i], Vector[2*i-1], Martix[I,j] удобно использовать для описа-
ния необходимого порядка выборки и обработки в цикле элементов массива (например, при поиске элементов, стоящих на четных и нечетных местах).
40

Следует помнить, что указание идентификатора массива без указания порядкового номера элемента приведет к ошибке.
Константы типа массив записываются в следующем формате:
имя_константы:array[N..M]of тип_элемента=(элемент, элемент, …);
Приведем пример константы типа массив: const
Digits: array[0..9] of byte = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
type
Status = (Active,Passive,Waiting); StatusMap = array[Status] of string[7];
const
StatStr: StatusMap = ('Active','Passive','Waiting');
В этом примере определяется константа-массив StarStr, которая может использоваться для преобразования значений типа Status в соответствующие им строковые представления. Элементами массива StarStr являются:
StatStr[Active] = 'Active'
StatStr[Passive] = 'Passive'
StatStr[Waiting] = 'Waiting'
Тип элемента константы-массива может быть любым, кроме файлового типа. При описании константы типа "многомерный массив" константы каждой размер-
ности заключаются в отдельные скобки и разделяются запятыми. При описании констант типа многомерный массив следует помнить, что индексы размерностей стоящих справа, изменяются в первую очередь. Описание:
type
Cube = array[0..1,0..1,0..1] of integer; const
Maze: Cube = (((0,1),(2,3)),((4,5),(6,7)));
задает следующие начальные значения массива Maze:
Maze[0, 0, 0] = 0; Maze[0, 0, 1] = 1;
Maze[0, 1, 0] = 2; Maze[0, 1, 1] = 3;
Maze[1, 0, 0] = 4; Maze[1, 0, 1] = 5;
Maze[1, 1, 0] = 6; Maze[1, 1, 1] = 7;
То есть, в массиве Maze[I,J,K] сначала изменяется индекс K затем J потом I.
Совместимость типов
В выражениях и операциях сравнения, для переменных требуется совместимость их типов.
Совместимость типов имеет место, если выполняется, по крайней мере, одно из следующих условий:
оба типа являются одинаковыми;
оба типа являются вещественными типами;
оба типа являются целочисленными;
Совместимость по присваиванию необходима, когда присваивается значение выражения переменной в операторе присваивания или при передаче значений параметров в процедуры и функции.
Тип Tип1 является совместимым по присваиванию с типом Tип2, если выполняется одно из следующих условий:
Tип1 и Tип2 одинаковы, и не является файловыми типами;
Tип1 и Tип2 являются вещественными типами, и значения типа Tип2 попадают в диапазон возможных значений Tип1;
41