Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРЕДСТВА ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ.doc
Скачиваний:
13
Добавлен:
02.05.2019
Размер:
2.13 Mб
Скачать

15.1. Константы простых типов и типа string

Объявление таких констант обычно не вызывает трудностей, так как в качестве их значения используются нетипизированные константы или их идентификаторы.

Примеры объявлений:

type

colors = (white, red, black);

{ ----- Правильные объявления: ----- } const

CurrCol colors = red;

Name String = 'Вирт H.' ;

Year Word = 1989;

X Real = 0.1;

Min Integer =0;

Max Integer = 10;

Days 1..31 = 1;

Answer Char = 'Y';

{----- Неправильные объявления: ----- }

Mass : array [Min..Max] of Real;

{Нельзя использовать типизированные константы в качестве границ диапазона} a,b,c : Byte =0;

{Нельзя использовать список идентификаторов}

15.2. Константы-массивы

В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки, например:

type

colors = (white, red, black) ;

const

ColStr : array [colors] of String [5] =('white', 'red', 'blak');

Vector : array [1..5] of Byte = (0,0,0,0,0);

При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Object Pascal хранятся в упакованном формате, поэтому в качестве значения массива-константы типа char допускается задание символьной строки соответствующей длины. Два следующих объявления идентичны:

const

Digit : array [0..9] of Char =

('0', '1', '2', ' 3 ', ' 4'•, '5', '6', '7', '8', '9');

DigChr: array [0..9] of Char = '0123456789';

При объявлении многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятыми. В результате образуются вложенные структуры множеств, причем глубина вложения должна соответствовать количеству измерений (размерности) массива. Самые внутренние множества констант связываются с изменением самого правого индекса массива.

Следующая программа выведет в компонент mmoutput три строки с монотонно увеличивающимися целыми числами:

Procedure TfmExample.bbRunClick(Sender: TObject);

var

i, j, k, 1 : Byte;

S: String;

const

Matr : array [1..3, 1..5] of Byte =

((0, 1, 2, 3, 4), (5, 6, 7, 8, 9), (10,11,12,13,14));

Cube : array [0..1, 0..1, 0..2] of Integer =

(((О ,1 ,2 ),(3 ,4 ,5 )), ((6 ,7 ,8 ),(9 ,10,11)));

Mas4 : array [0..1, 0..1, 0..1, 0..1] of Word =

((((О ,1 ),(2 ,3 )),

((4 ,5 ), (6 ,7 ))), (((8 ,9 ), (10,11)), ((12,13), (14,15))));

begin

S:=' ';

for i := I to 3 do for j := 1 to 5 do

S := S + IntToStr(Matr[i,j])+' ';

mmOutput.Lines.Add(S);

S: = '';

for i := 0 to 1 do for j := 0 to 1 do

for k := 0 to 2 do

S := S + IntToStr(Matr[i,j,k]) +' ';

mmOutput.Lines.Add(S);

S:=''; for i := 0 to 1 do

for j := 0 to 1 do

for k := 0 to 1 do

for l := 0 to 1 do

S := S + IntToStr(mas4[i,j,k,l]:3);

mmOutput.Lines.Add(S) ;

end;

Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению.

15.3. Константы-записи

Определение константы-записи имеет следующий вид:

<идентификатор> : <тип> = (<сп.знач.полей>)

Здесь <идентификатор> - идентификатор константы; <тип> - тип записи; <сп. знач. полей> - список значений полей.

Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг от друга двоеточиями, например:

type

Point = record

X, Y : Real end;

Vect = array [0..1] of Point;

Month = (Jan, Feb, Mar, Apr, May, Jun, Jly, Aug, Sep, Oct, Nov, Dec) ;

Date = record

D : 1..31;

M : month;

Y : 1900..1999 end;

const

Origon : Point = (X : 0; Y : -1) ;

Line : Vector =

((X : -3.1; Y : 1.5), (X : 5.9; Y : 3.0));

SomeDay : Date = (D : 16; M : May; Y : 1997);

Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы

одно поле файлового типа, такую запись нельзя объявить типизированной константой. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например:

type

Forma = record

case Boolean of

True : (Birthplace : String [40]);

False : (Country : String [20];

EntryPort : String [20];

EntryDate : array [1..3] of Word;

Count : Word) end;

const

Percon1 : Forma = (Country : 'Норвегия';

EntryPort : 'Мурманск';

EntryDate : (16, 3, 89);

Count : 12);

Percon2 : Forma = (Birthplace : 'Москва');