6. изброен и ограничен тип данни дефиниране на нестандартни типове данни



Дата18.01.2017
Размер37.46 Kb.

6.ИЗБРОЕН И ОГРАНИЧЕН ТИП ДАННИ

6.1.Дефиниране на нестандартни типове данни


Когато се създава една програма, стремежът е тя да бъде максимално близка до обектите или явленията, които описва. Тъй като обектите, които моделираме (описваме) са безкрайно разнообразни, не е възможно съответстващите им типове да бъдат предвидени и предварително заложени в един език за програмиране. Ето защо в езика Паскал е предвидена възможност програмистът да създава свои нестандартни типове данни. Това става в раздела Type по следния начин

Type Име на типа: Описание на типа;

Името на типа се избира от програмиста, като се спазват изискванията към имена на обекти в Паскал. Oписание на типа за нестандартните типове е специфично за всеки конкретен нестандартен тип и ще бъде обяснено, когато той се разглежда.

В редица случаи (но не навсякъде) е допустимо използването на анонимни нестандартни типове данни. Това става в раздела Var по следния начин:



Var Списък от променливи : Oписание на типа;

Отначало ще разгледаме дефинирането и използването на двата скаларни (прости) нестандартни типове данни - изброен тип и ограничен тип.


6.2.Изброен тип

6.2.1.Дефиниране на изброен тип


Понякога се налага в програмата да се използват променливи, които могат да имат неголям брой точно определени нестандартни стойности. Тогава в програмата се дефинира нестандартен тип данни, наречен изброен тип. Описанието на този тип има следния общ вид:

( Списък стойности )

В списъка от стойности се изброяват всички стойности, които могат да имат променливите от този тип, и те са допустимите стойности за този тип. Самите стойности не са нито числови, нито символни. Те се образуват по правилата за образуване на имена на променливи приличат и на имена на променливи, например Pon, Vtr, Srd и т.н.



Примери:

Type

Den= (Pon,Vtr,Srd,Cеt,Pet,Sаb,Ned);

Mesec= (Jan,Fev,Mrt,Apr,Maj,Jun,Jul,Aug,Spt,Oct,Noe,Dec);

Cviat= (Bjal,Zelen,Cerven,Rozov,Kafiav,Ceren);

Auto= (Opel, Lada, FIAT,Ford, BMW);

Изброените стойности се считат подредени и номерирани в реда на изброяването им в списъка, като номерирането им започва от 0.


6.2.2.Променливи от изброен тип


В раздел Var могат да се декларират променливи от вече описани изброени типове. Например

Var

D: den;


M1, M2: mesec;

Cv: Cviat;

Auto1,Auto2: auto;

Могат да се дефинират и променливи от анонимен изброен тип, например:



Var Zoo:(lion, dog, cat, mouse);

6.2.3.Операции с данни от изброен тип


Стойности от изброен тип не могат да се въвеждат от клавиатурата, да се извеждат на екрана и да участват в аритметични операции. Когато все пак се наложи да се въвеждат или извеждат, това се прави косвено. Например стойността на променливата D от изброен тип можем да въведем както е показано в следния пример:

Type

Den = (Pon,Vtr,Srd,Cet,Pet,Sab,Ned);



Var D : Den;

n : integer;



Begin

. . . . . . . . . . . . . . . .

Write(‘Задайте поредния номер на деня: ‘); Readln(n);

Case n of

1: D:=Pon;

2: D:=Vtr;

3: D:=Srd;

4: D:=Cet;

5: D:=Pet;

6: D:=Sab:

7: D:=Ned



end;

. . . . . . . . . . . . . . . .

Променливите от изброен тип, подобно на променливите от другите дискретни типове, могат да бъдат аргументи на стандартните функции pred, succ и ord. За тях са допустими операциите за сравняване (сравняват се номерата на стойностите в описанието на типа) и операцията присвояване. Те могат да бъдат управляващи променливи в цикъл с параметър или селектори в оператори за избор.

Програма 6.1. Програма, която извежда имената на дните от седмицата.

Type

Den = (Pon,Vtr,Srd,Cet,Pet,Sab,Ned);



Var D : Den;

N : integer;



Begin

For D := Pon to Ned do

begin

N := ord (D);

Write (N+1,' - ');

Case D of

Pon : Writeln ('Понеделник');

Vtr : Writeln ('Вторник');

Srd : Writeln ('Сряда');

Cet : Writeln ('Четвъртък');

Pet : Writeln ('Петък');

Sab : Writeln ('Събота');

Ned : Writeln ('Неделя')



еnd

еnd

End.

6.3.Ограничен тип

6.3.1.Дефиниране на ограничен тип


При много задачи се използва само определена подобласт от областта на допустимите стойности на даден дискретен тип данни. В такива случаи е целесъобразно да се дефинира нов тип данни, който включва само стойностите от тази подобласт. Такъв тип данни се нарича ограничен и е производен от някакъв изходен (базисен) дискретен тип данни. Изходният (базисният) тип може да е стандартен дискретен тип или вече дефиниран изброен тип.

Общият вид на описанието на ограничен тип данни е:



Начална стойност .. крайна стойност

Примери:

Type

NomerMesec = 1..12;

GlavnaBukva = 'A'..'Z';

Den= (Pon,Vtr,Srd,Cеt,Pet,Sаb,Ned);

RabotenDen = Pon..Pet;

Mesec = (Jan,Fev,Mrt,Apr,Maj,Jun,Jul,Aug,Spt,Oct,Noe,Dec);

Liato = Jun..Aug;

Тук първите два ограничени типа са производни на стандартни типове данни, а последните два ограничени типа - на дефинирани изброени типове.


6.3.2.Променливи от ограничен тип


В раздел Var могат да се декларират променливи от вече описани ограничени типове. Например

Var

NomMes : NomerMesec;

GlavBuk : GlavnaBukva;

RabDen = RabotenDen;

LetMes :Liato;

Могат да се дефинират и променливи от анонимен ограничен тип, например



Var

Ind :1..25;



KodOp :1..10;

6.3.3.Операции с данни от ограничен тип


С данните от ограничен тип са допустими всички операции, които са допустими за данни от техния базисен тип. Допустимо е и присвояването на стойности от ограничен тип на променливи от базисния и обратно. Във втория случай е необходимо стойностите да не излизат извън зададения диапазон.





База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница