Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОП Конспект лекций - Паскаль.doc
Скачиваний:
20
Добавлен:
30.11.2018
Размер:
1.46 Mб
Скачать

Тема 27: Типізовані константи

У Турбо Паскалі допускається використання констант, що типізуються. Вони задаються в розділі оголошення констант таким чином:

<ідентифікатор> : <тип> = <значення>

Тут <ідентифікатор> - ідентифікатор константи;

<тип> - тип константи;

<значення> - значення константи.

Константам, що типізуються, можна привласнювати інші значення в ході виконання програми, тому фактично вони є змінними з початковими значеннями.

Константа, що типізується, набуває вказаного в її оголошенні значення, тобто ініціюється, лише один раз: до моменту початку роботи програми. При повторному вході в блок (процедуру або функцію), в якому вона оголошена, ініціація константи, що типізується, не виробляється і вона зберігає те значення, яке мала до моменту виходу з блоку.

Константи, що типізуються, можуть бути будь-якого типа, окрім файлів. Не можна також оголосити константу-запис, що типізується, якщо хоч би одне з її полів є полем файлового типа.

Оскільки константа, що типізується, фактично не відрізняється від змінної, її не можна використовувати як значення при оголошенні інших констант або кордонів типа-діапазону.

Константи простих типів і типа 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; {Не можна використовувати константи, що типізуються, як кордони діапазону}

а,b,c : Byte = 0; {Не можна використовувати список ідентифікаторів}

var NAMEF: String [22] = ''prog.pas''; {Не можна оголошувати константу, що типізується, в розділі змінних}

Константи - масиви

Як початкове значення що типізується константи-масиву використовується список констант, відокремлених один від одного комами; список полягає в круглі дужки, наприклад:

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'';

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

Константи - записи

Визначення константи-запису має наступний вигляд:

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

Тут <ідентифікатор> - ідентифікатор константи;

<тип> - тип запису;

<сп.знач.полей> - список значень полів.

Списком значень полів є список з послідовностей вигляду: ім'я поля, двокрапка і константа. Елементи списку відділяються один від одного двоєточиямі, наприклад:

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

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= [] ;

Константи - покажчики

Єдиним значенням що типізується константи-покажчика може бути лише NIL, наприклад:

const

pr : Real= NIL;

Питання для контролю.

  1. Як задаються типізовані константи?

  2. В чому різниця між типізованою константою та змінною?

  3. В чому різниця між типізованою константою та константою?

  4. Приведіть приклад константи простого типу.

  5. Приведіть приклад константи-масиву.

  6. Приведіть приклад константи-запису.

  7. Приведіть приклад константи-безлічі.

  8. Назвіть особливість константи-покажчика?