Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 3_2.pdf
Скачиваний:
26
Добавлен:
11.02.2016
Размер:
1.22 Mб
Скачать

точкой, что эквивалентно обычной записи 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]