Глава7 

                                          ТИПИЗИРОВАННЫЕ КОНСТАНТЫ


  7.1 Константы простых типов и типа STRING
  7.2 Константы- Массивы
  7.3 Константы- Записи 
  7.4 Константы- Множества
  7.5 Константы- Указатели

оглавление


   В Турбо Паскале допускается использование типизированных констант. Они задаются в разделе объявления констант следующим образом: <идешпификатор>: <тип> - <значение>
Здесь <идентификатор> - идентификатор константы;
<тип> - тип константы;
<значение> - значение константы.
Типизированным константам можно переприсваивать другое значения в ходе выполнения программы, поэтому фактически они представляют собой переменные с начальными значениями. Типизированная константа приобретает указанное в ее объявлении значение, т.е. инициируется, лишь один раз: к моменту начала работы программы. При повторном входе в блок (процедуру или функцию), в котором она объявлена, переинициация типизированной константы не производится и она сохраняет то значение, которое имела к моменту выхода из блока.
Типизированные константы могут быть любого типа, кроме файлов. Нельзя также объявить типизированную константу-запись, если хота бы одно из ее полей является полем файлового типа.
Поскольку типизированная константа фактически не отличается от переменной, ее нельзя использовать в качестве значения при объявлении других констант или границ типа-диапазона.

            Вверх


             7.1. КОНСТАНТЫ ПРОСТЫХ ТИПОВ И  ТИПA STRING

   Объявление таких констант обычно не вызывает трудностей, так как в качестве их значения используются нетипизированные константы или их идентификаторы.
Примеры объявлений:
            type
           colors = (white, red, black);
        { ----- Правильные объявления: ----- }
            const
              CurrCol:colors=red;
           name: string='Вирт Н.';
             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;      {нельзя использовать список идентификаторов}
                  x:  real= pl;            {нельзя использовать в качестве значения вызова функцию (pi- функция!)}
                 var
              name F: string[22]= 'prog.pas' ;    {нельзя объявлять типизированные константы в разделе переменных}
               
                        Вверх

                                     7.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); 
При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Турбо Паскале хранятся в упакованном формате, поэтому в качестве значения массива-константы типа 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'; 
При объявлении многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятыми. В результате образуются вложенные структуры множеств, причем глубина вложения должна соответствовать количеству измерений (размерности) массива. Самые внутренние множества констант связываются с изменением самого правого индекса массива.
Следующая программа выведет на экран три строки с монотонно увеличивающимися целыми числами:
var
i, j, k, I : byte; 
const
matr : array [1..3, 1..5] of byte = ((0, l, 2, 3, 4), 5, 6, 7, 8, 9 . (10.11,12,13.14));
cube : array [0..1, 0..1, 0..2 of integer -(((0 ,1 ,2 ).(3 ,4 ,5 ), ((6 ,7 ,8 ),(9 ,10.11 ));
mas4 : array [0..1, 0..1, 0..1, 0..1] of word (( 0 ,1, 2 ,3,
4 ,5 6 .7 ). ( 8 ,9 10,11 ,
12,13,14,15 )); 
BEGIN
for I := 1 to 3 do

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

              7.3. КОНСТАНТЫ-ЗАПИСИ

   Определение константы-записи имеет следующий вид:
<идентификатор> : <тип> - (<сп.знач.полей>)
Здесь <идентификатор> - идентификатор константы;
<тип> - тип записи;
<сп.знач.полей> - список значений полей.
Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг от друга двоеточиями, например:
      type
                       point = record
                     x, y ; real;
                          end;
     vect = array [0..1] of point;
               month = (Jan, Feb, Mar, Apr, May, Jun, Jul, 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 : Mar; y : 1989);
 
Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы одно поле файлового типа, такую запись нельзя объявить типизированной константой. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например:
type
forma = record
case Boolean of
true: (BirthPlase: string[40]);
False :Country string[20];
EntryPort:string[20];
EntryData:array[1..3] of word;
Count:word)
   end;
const : form = (Country  : 'Польша'; EntryPort: 'Ленинград': EntryDate :(16, 3, 89): count   : 12);
 Percon2: forma= (BirtPlace : 'Ìîñêâà');
 
          Вверх

                                       7.4. Константы-множества.

Значение типизированной константы-множества задается в виде правильного конструктора множества, например:
Type
Days=set of 1..31;
Digc=set of ‘0’..’9’;
Error=set of 1..24;
Const
WorkDays:days=[1..5, 8..12, 15..19, 22..26, 29, 30];
EvenDigits: digc=[‘0’, ‘2’, ‘4’, ‘6’, ‘8’];
ErrorFlag:error=[];
                 Вверх



                                         7.5. Константы-указатели

Единственным значением типизированной константы-указателя может быть только NIL, например:
Const
Pr:^real=NIL;
 
                        Вверх          оглавление

Хостинг от uCoz