www.TPh7.narod.ru |
income06.narod.ru |
Главная | Часть 1. Ядро Турбо Паскаля | Часть 2. Библиотека TURBO VISION | Информация о сайте |
Глава 7. Типизированные константы
- 7.1. Константы простых типов и типа STRING В Турбо Паскале допускается использование типизированных констант. Они задаются в разделе объявления констант следующим образом: <идентификатор> : <тип> = <значение> Здесь <идентификатор> - идентификатор константы; <тип> - тип константы; <значение> - значение константы. Типизированным константам можно присваивать другие значения в ходе выполнения программы, поэтому фактически они представляют собой переменные с начальными значениями. Типизированная константа приобретает указанное в ее объявлении значение, т.е. инициируется, лишь один раз: к моменту начала работы программы. При повторном входе в блок (процедуру или функцию), в котором она объявлена, инициация типизированной константы не производится и она сохраняет то значение, которое имела к моменту выхода из блока. Типизированные константы могут быть любого типа, кроме файлов. Нельзя также объявить типизированную константу-запись, если хотя бы одно из ее полей является полем файлового типа. Поскольку типизированная константа фактически не отличается от переменной, ее нельзя использовать в качестве значения при объявлении других констант или границ типа-диапазона. 7.1. КОНСТАНТЫ ПРОСТЫХ ТИПОВ И ТИПА 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; {Нельзя использовать список идентификаторов} var NameF: String [22] = 'prog.pas'; {Нельзя объявлять типизированную константу в разделе переменных} 7.2. КОНСТАНТЫ-МАССИВЫ В качестве начального значения типизированной константы-массива используется список констант, отделенных друг от друга запятыми; список заключается в круглые скобки, например: type colors '= (white, red, black); const ColStr : array [colors] of String [5] =('white', 'red', 'blaсk'); vector : array [1..5] of Byte = (0,0,0,0,0); . При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Турбо Паскале хранятся в упакованном формате, поэтому в качестве значения массива-константы типа CHAR допускается задание символьной строки соответствующей длины. Два следующих объявления идентичны: const digit : array [0..9] of Char = ('0', Ч','2','3','4','5','6', ' 7 ' , ' 8 ' , ' 9 ') ; digchr: array [0..9] of Char =0123456789'; При объявлении многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятыми. В результате образуются вложенные структуры множеств, причем глубина вложения должна соответствовать количеству изменений (размерности) массива. Самые внутренние множества констант связываются с изменением самого правого индекса массива. Следующая программа выведет на экран три строки с монотонно увеличивающимися целыми числами: var i, j, k, 1 : Byte; const matr : array [1..3, 1..5] of Byte = ((0, 1, 2, 3,4), (5, 6, 7, 8, 2) , (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)))); for i := for j := writeln; for i := for j := for k := writeln; for i := for j := for k := for := WriteLn end. Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению. 7.3. КОНСТАНТЫ-ЗАПИСИ Определение константы-записи имеет следующий вид: <идентификатор> : <тип> = (<сп.знач.полей>) Здесь <идентификатор> - идентификатор константы; <тип> - тип записи; <сп.знач.полей> - список значений полей. Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг от друга двоеточиями, например: type point = record х, у : 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; у : 1900..1999 end; const origon :point = (x :0; у : -1) ; line:vector = ((x:-3.1; у: 1.5) , (x: 5.9; у: 3.0)) ; SomeDay: date = (d : 16; m : Mar; у : 1989); Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы одно поле файлового типа, такую запись нельзя объявить типизированной константой. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например: 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 Perconl : forma = (Country : 'Норвегия'; EntryPort : 'Мурманск'; EntryDate : (16, 3, 89); count : 12) ; Percon2 : forma = (Birthplace : 'Москва'); 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; |
TPh7.narod.ru © 2007 |
---|