- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
Даныя карыстальніцкага тыпу
У мове Pascal уведзена дастатковая колькасць тыпаў даных, але яшчэ ёсць магчымасць для ўвядзення новых тыпаў, якія больш падыходзяць для канкрэтных практычных мэт.
Мы разглядалі тыпы, якія ўводзяцца мовай Pascal. Гэта наперад вызначаныя тыпы. Для іх апісання ў мове існуюць стандартныя ідэнтыфікатары. Акрамя іх існуюць катэгорыі тыпаў даных, якія ўводзяцца праграмістамі. Імя тыпу абазначаецца ідэнтыфікатарам. Да іх у першую чаргу адносяцца пералічальныя і абмежаваныя (тып «дыяпазон») тыпы.
Аб’яўленне новых тыпаў робяць у блоку апісання тыпаў Type па наступнаму прынцыпу:
TYPE
Новы_тып_1 = масіў_цэлых_лікаў;
Новы_тып_2 = мноства_сімвалаў;
...
Новы_тып_101 = цэлы_лік;
Новы_тып_102 = пералічаныя_тут_значэнні;
Апісанне тыпаў:
Вызначэнне тыпу:
Стандартныя тыпы не трэба вызначаць нанава.
Даныя пералічальнага тыпу
Пералічальны тып – гэта тып даных, у якіх колькасць усіх магчымых значэнняў абмежавана. Яго можна распісаць у рад па значэннях, пералічваючы праз коску ў круглых дужках назвы (ідэнтыфікатары) элементаў-значэнняў тыпу (гэтыя назвы павінны быць унікальнымі ў межах праграмы). Пералічальнаму тыпу можна надаць імя, тады ён апісваецца ў секцыі TYPE.
Фармат найменнага пералічальнага тыпу:
TYPE
Імя тыпу = (ідэнтыфікатар_1,..., ідэнтыфікатар_n);
VAR
Ідэнтыфікатар_зм_1, ідэнтыфікатар_зм_2,... : імя тыпу;
Фармат ненайменнага пералічальнага тыпу:
VAR Ідэнтыфікатар_зм_1, ідэнтыфікатар_зм_2,...: (ідэнтыфікатар_1,... ідэнтыфікатар_n);
Пераменная такога тыпу зможа ўтрымліваць тыя значэнні, якія ўказаны ў яго пералічэнні, інакш – памылка. Максімальны лік элементаў у адным пералічэнні роўны 65 535. Захоўваецца значэнне пералічальнага тыпу ў бяззнакавым байце, калі пералічана не больш за 256 значэнняў, і як бяззнакавае слова – у астатніх выпадках.
Прыклад.
TYPE
Personages = (NifNif, NufNuf, NafNaf);
VAR
Q,P : Personages;
Любы пералічальны тып мае ўнутраную нумарацыю значэнняў ад 0 да апошняга. Нумар кожнага значэння можна атрымаць функцыяй Ord(x), якая вяртае цэлы лік у форме Longint: Ord(NufNuf) 1.
Мае месца адваротны запіс: P := Personages(і), дзе 0 і 2, i – цэлае. Напрыклад, пры i=2 пераменная P атрымае значэнне NafNaf. У пераменную P запісваецца значэнне, якое адпавядае зададзенаму парадкаваму нумару элемента пералічэння. Да пераменных пералічальнага тыпу прымянімы функцыі Succ(x) і Pred(x).
Паколькі значэнні пералічальнага тыпу ўпарадкаваны, іх можна параўноўваць: хто мае большы парадкавы нумар, той і большы. Напрыклад, вынік параўнання NufNuf NafNaf ёсць true.
Недахопы пералічальнага тыпу: значэнні даных пералічальнага тыпу не могуць быць выведзены на экран, ці прынтэр, ці ў файл і не могуць быць уведзены з клавіятуры, бо гэта ўнутраныя даныя (але змагацца з гэтым можна, завёўшы, напрыклад, масіў радкоў з такімі назвамі, а індэксы масіву – гэта тыя ж імёны даных пералічальнага тыпу).
Даныя інтэрвальнага тыпу
Мы можам вызначыць тып, які будзе ўтрымліваць значэнні толькі з абмежаванага паддыяпазону некаторага базавага парадкавага тыпу.
Базавым тыпам, з якога вычляняюцца дыяпазоны, можа быць любы цэлалікавы тып, Char і любы з уведзеных праграмістам пералічальных тыпаў.
Для ўвядзення новага тыпу-дыяпазону ў блоку вызначэння тыпаў TYPE трэба ўказаць імя гэтага тыпу і межы дыяпазону праз дзве кропкі:
CONST n=10;
TYPE Radius = 1..90;
CapsLetter = 'А'..'Я';
Diap = 2*n..3*n;
Межы могуць быць і выразамі, але нельга, каб выраз пачынаўся з дужкі, бо дужка – гэта адзнака пачатку пералічэння.
Кампілятар пры кожнай аперацыі з пераменнай інтэрвальнага тыпу можа генерыраваць падпраграмы праверкі, каб устанавіць, застаецца ці не значэнне пераменнай сярод дыяпазону яе значэнняў. Для гэтага трэба ўстанавіць дырэктыву кампілятара {$R+} (па змаўчанні {$R-}). Прыклад аб’яўлення пераменных інтэрвальнага тыпу:
TYPE
Day = (sat, sun, mon, tue, wed, thu, fri);
пералічальны найменны
VAR
WorkDay : Day;
DayOff : mon..fri;
інтэрвальны на базе пералічальнага
Symbol : 'A'..'Z'; інтэрвальны на базе Char
З данымі інтэрвальнага тыпу могуць працаваць функцыі Succ, Pred, Ord.
Да іх можна прымяняць усе стандартныя падпраграмы і аперацыі, якія вызначаны для базавага тыпу. Толькі калі дыяпазон узяты з базавага тыпу, які можа выводзіцца на экран ці ўводзіцца з клавіятуры (або ўвод-вывад у файл), тады і абмежаваныя даныя можна такім чынам уводзіць-выводзіць.