Що таке константа актуальні питання в роботі з з
C ++ дає можливість запису значень основних типів: символьних констант, цілих констант і констант з плаваючою точкою. Крім того, нуль (0) може використовуватися як константа будь-якого вказівного типу, і символьні рядки є константами типу char. Можна також задавати символічні константи. Символічна константа - це ім'я, значення якого не може бути змінено в його області видимості. У C ++ є три види символічних констант: (1) будь-якому значенню будь-якого типу можна дати ім'я і використовувати його як константу, додавши до його опису ключове слово const; (2) безліч цілих констант може бути визначено як перерахування; і (3) будь-яке ім'я вектора або функції є константою.
Типізовані константи можна порівняти з Ініціалізувати змінними - змінними, значення яких визначаються на вході в їх блок. На відміну від нетипізований констант в описі типизированной константи вказується як тип, так і значення константи.
опис типизированной константи
L-> |ідентіфікатор + -> |. + -> |тіп + -> | = + -> |тіпізірованная + -> константа |
Таблиця 1 - Константа
Типізовані константи можна використовувати точно так же, як змінні того ж самого типу, і вони вказуються в лівій частині оператора присвоювання. Відзначимо, що типізовані константи инициализируются тільки один раз - на початку виконання програми. Таким чином, при кожному новому вході в процедуру або функцію локально описані типізовані константи наново не инициализируются.
Константи простого типу. Опис типізований константи з простим типом означає вказівку значення константи:
Maximum. integer = 9999;
Factor. real = -0.1;
Breakchar. char = # 3;
Buffer: array [0..1023] of Byte;
BufferOfs: Word = Ofs (Buffer);
BufferSeg: Word = Seg (Buffer);
Оскільки типизированная константа фактично являє собою змінну зі значенням константи, вона не є взаимозаменяемой для звичайних констант. Наприклад, вона не може використовуватися в описі інших констант або типів.
Max. integer = 99;
Vector = array [Min..Max] of integer;
Опис Vector є неприпустимим, оскільки Min і Max є типізований константами.
Константи строкового типу
Опис типізований константи строкового типу містить максимальну довжину рядка і її початкове значення:
Heading. string [7] = 'Section';
NewLine. string [2] = # 13 # 10;
TrueStr. string [5] = 'Yes';
FalseStr. string [5] = 'No';
Константи структурного типу
Опис константи структурного типу визначає значення кожного компонента структури. Підтримує опису констант типу масив, запис, безліч і покажчик. Константи файлового типу і константи типу масив або запис, що містять компоненти файлового типу, не допускаються.
Константи типу масив. Опис константи типу масив містить значення елементів, укладені в дужки і розділені комами.
Наведемо приклад константи типу масив:
StatusMap = array [Status] of string [7];
StatStr: StatusMap = ( 'Active', 'Passive', 'Waiting');
У цьому прикладі визначається константа-масив StarStr, яка може використовуватися для перетворення значень типу Status до відповідних їм строкові уявлення. Елементами масиву StarStr є:
Тип елемента константи-масиву може бути будь-яким, крім файлового типу. Упаковані константи строкового типу (символьні масиви) можуть бути визначені і як поодинокі символи, і як рядки. визначення:
можна представити в більш зручному вигляді:
Digits: array [0..9] of char = '0123456789';
При вирішенні розширеного синтаксису (за допомогою директиви
компілятора) масиви з нульовою базою можуть инициализироваться рядком, яка коротше, ніж описана довжина масиву, наприклад:
FileName = array [0..79] of Char = 'TEXT.PAS';
У таких випадках залишилися символи встановлюються в NULL (# 0), і масив містить рядок із завершальним нулем. При описі константи типу "багатовимірний масив" константи кожної розмірності полягають в окремі дужки і розділяються комами. Розташовані в середині константи відповідають самим правим размерностям. опис:
Cube = array [0..1,0..1,0..1] of integer;
задає такі початкові значення масиву Maze:
Константи типу запис
Опис константи типу запис містить ідентифікатор і значення кожного поля, укладені в дужки і розділені крапкою з комою.
Наведемо кілька прикладів констант-записів:
Vector = array [0..1] of Point;
Origin. Point = (x: 0,0; y: 0.0);
Line. Vector = ((x: -3.1; y: 1.5), (x: 5.8; y: 3.0));
SomeDay. Date = (d: 2; m: Dec; y: 1960);
Поля повинні вказуватися в тому ж порядку, як вони йдуть в описі типу запис. Якщо запис містить поля файлового типу, то для цього типу запис не можна описати константу. Якщо запис містить варіант, то можна вказувати тільки поля обраного варіанту. Якщо варіант містить поле ознаки, то його значення повинно бути визначено.
Константи об'єктного типу
При описі константи об'єктного типу використовується той же синтаксис, що і при описі константи типу запис. Значення для елементів (компонентів) методу задаватися не можуть. З урахуванням наведених раніше описів об'єктних типів, наведемо деякі приклади констант об'єктного типу:
ZeroPoint: Point = (X: 0; Y: 0)
ScreenRect: Rect = (A: (X: 0; Y: 0); B: (X: 80; Y: 25);
CountField: NumField = (X: 5; Y: 20; Len: 4; Name: nil;
Value: 0; Min: -999; Max: 999);
Константи об'єктного типу, які містять віртуальні методи, не потрібно форматувати за допомогою виклику конструктора. Ця ініціалізація автоматично виконується компілятором.
Константи множинного типу
Опис константи множинного типу може містити кілька елементів, вкладених у квадратні дужки і розділених комами. Кожен елемент такої константи є константу або відрізок типу, що складається з двох констант, розділених двома точками.
Наведемо кілька прикладів констант-множин:
Digits = set of 0..9;
Letters = set of 'A' .. 'Z';
EvenDigits: Digits = [0,2,4,6,8];
Vowels. Letters = [ 'A', 'E', 'I', 'O', 'U', 'Y'];
HexDigits. set of '0' .. 'z' =
Константи посилального типу
Опис константи посилального типу може містити тільки значення nil (порожньо). Наведемо кілька прикладів
TDirection = (Left, Right, Up, Down);