Задача этой книги дать краткое и четкое изложение языка С++ в соответствии со стандар том iso/iec 14882. Она предназначена для студентов, изучающих язык «с нуля»


Типы данных, определяемые пользователем



Download 2 Mb.
bet42/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   38   39   40   41   42   43   44   45   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Типы данных, определяемые пользователем


 ðåaëüíûõ çaäa÷aõ èíôîðìaöèя, êîòîðóþ òðåáóåòñя îáðaáaòûâaòü, ìîæåò èìåòü äîñòaòî÷íî ñëîæíóþ ñòðóêòóðó. Äëя åå aäåêâaòíîãî ïðåäñòaâëåíèя èñïîëüçóþò- ñя òèïû äaííûõ, ïîñòðîåííûå ía îñíîâå ïðîñòûõ òèïîâ äaííûõ, ìaññèâîâ è óêa- çaòåëåé. ßçûê C++ ïîçâîëяåò ïðîãðaììèñòó îïðåäåëяòü ñâîè òèïû äaííûõ è ïða- âèëa ðaáîòû ñ íèìè. Èñòîðè÷åñêè äëя òaêèõ òèïîâ ñëîæèëîñü íaèìåíîâaíèå, âûíåñåííîå â íaçâaíèå ãëaâû, õîòя ïðaâèëüíåå áûëî áû íaçâaòü èõ òèïaìè, îïðå- äåëяåìûìè ïðîãðaììèñòîì.


Переименование типов (typedef)


Äëя òîãî ÷òîáû ñäåëaòü ïðîãðaììó áîëåå яñíîé, ìîæíî çaäaòü òèïó íîâîå èìя ñ ïîìîùüþ êëþ÷åâîãî ñëîâa typedef:
typedef òèï íîâîå_èìя [ ðaçìåðíîñòü ];

 äaííîì ñëó÷aå êâaäðaòíûå ñêîáêè яâëяþòñя ýëåìåíòîì ñèíòaêñèña. Ðaçìåð- íîñòü ìîæåò îòñóòñòâîâaòü. Ïðèìåðû:


typedef unsigned int UINT; typedef Char Msg[100]; typedef struCt{
Char fiO[30]; int date, COde;
dOuble salary;} WOrker;
Ââåäåííîå òaêèì îáðaçîì èìя ìîæíî èñïîëüçîâaòü òaêèì æå îáðaçîì, êaê è èìå- ía ñòaíäaðòíûõ òèïîâ:
UINT i, j; // äâå ïåðåìåííûõ òèïa unsigned int Msg str[10]; // ìaññèâ èç 10 ñòðîê ïî 100 ñèìâîëîâ WOrker stuff[100]; // ìaññèâ èç 100 ñòðóêòóð
Êðîìå çaäaíèя òèïaì ñ äëèííûìè îïèñaíèяìè áîëåå êîðîòêèõ ïñåâäîíèìîâ, typedef èñïîëüçóåòñя äëя îáëåã÷åíèя ïåðåíîñèìîñòè ïðîãðaìì: åñëè ìaøèí- íî-çaâèñèìûå òèïû îáúяâèòü ñ ïîìîùüþ îïåðaòîðîâ typedef, ïðè ïåðåíîñå ïðî- ãðaììû ïîòðåáóåòñя âíåñòè èçìåíåíèя òîëüêî â ýòè îïåðaòîðû.


Перечисления (enum)


Ïðè íaïèñaíèè ïðîãðaìì ÷añòî âîçíèêaåò ïîòðåáíîñòü îïðåäåëèòü íåñêîëüêî èìåíîâaííûõ êîíñòaíò, äëя êîòîðûõ òðåáóåòñя, ÷òîáû âñå îíè èìåëè ðaçëè÷íûå çía÷åíèя (ïðè ýòîì êîíêðåòíûå çía÷åíèя ìîãóò áûòü íå âaæíû). Äëя ýòîãî óäîá- íî âîñïîëüçîâaòüñя ïåðå÷èñëяåìûì òèïîì äaííûõ, âñå âîçìîæíûå çía÷åíèя êî- òîðîãî çaäaþòñя ñïèñêîì öåëî÷èñëåííûõ êîíñòaíò. Ôîðìaò:
enum [ èìя_òèïa ] { ñïèñîê_êîíñòaíò };
Èìя òèïa çaäaåòñя â òîì ñëó÷aå, åñëè â ïðîãðaììå òðåáóåòñя îïðåäåëяòü ïåðå- ìåííûå ýòîãî òèïa. Êîìïèëяòîð îáåñïå÷èâaåò, ÷òîáû ýòè ïåðåìåííûå ïðèíèìaëè çía÷åíèя òîëüêî èç ñïèñêa êîíñòaíò. Êîíñòaíòû äîëæíû áûòü öåëî÷èñëåííûìè è ìîãóò èíèöèaëèçèðîâaòüñя îáû÷íûì îáðaçîì. Ïðè îòñóòñòâèè èíèöèaëèçaòîða ïåðâaя êîíñòaíòa îáíóëяåòñя, a êaæäîé ñëåäóþùåé ïðèñâaèâaåòñя ía åäèíèöó áîëüøåå çía÷åíèå, ÷åì ïðåäûäóùåé:
enum Err {ERR_READ, ERR_WRITE, ERR_CONVERT};
Err errOr;

switCh (errOr){
Case ERR_READ: /* îïåðaòîðû */ break; Case ERR_WRITE: /* îïåðaòîðû */ break; Case ERR_CONVERT: /* îïåðaòîðû */ break;
}
Êîíñòaíòaì ERR_READ, ERR_WRITE, ERR_CONVERT ïðèñâaèâaþòñя çía÷åíèя 0, 1 è 2 ñîîò- âåòñòâåííî.
Äðóãîé ïðèìåð:
enum {twO = 2, three, fOur, ten = 10, eleven, fifty = ten + 40};

Êîíñòaíòaì three è fOur ïðèñâaèâaþòñя çía÷åíèя 3 è 4, êîíñòaíòå eleven — 11.


Èìåía ïåðå÷èñëяåìûõ êîíñòaíò äîëæíû áûòü óíèêaëüíûìè, a çía÷åíèя ìîãóò ñîâïaäaòü. Ïðåèìóùåñòâî ïðèìåíåíèя ïåðå÷èñëåíèя ïåðåä îïèñaíèåì èìåíî- âaííûõ êîíñòaíò è äèðåêòèâîé define (ñì. ðaçäåë «Äèðåêòèâa #define», ñ. 94) ñî- ñòîèò â òîì, ÷òî ñâяçaííûå êîíñòaíòû íaãëяäíåå; êðîìå òîãî, êîìïèëяòîð ïðè èíèöèaëèçaöèè êîíñòaíò ìîæåò âûïîëíяòü ïðîâåðêó òèïîâ.
Ïðè âûïîëíåíèè aðèôìåòè÷åñêèõ îïåðaöèé ïåðå÷èñëåíèя ïðåîáðaçóþòñя â öå- ëûå. Ïîñêîëüêó ïåðå÷èñëåíèя яâëяþòñя òèïaìè, îïðåäåëяåìûìè ïîëüçîâaòåëåì, äëя íèõ ìîæíî ââîäèòü ñîáñòâåííûå îïåðaöèè (ñì. «Ïåðåãðóçêa îïåðaöèé», ñ. 189).


ПРИМЕЧАНИЕ
Äèaïaçîí çía÷åíèé ïåðå÷èñëåíèя îïðåäåëяåòñя êîëè÷åñòâîì áèò, íåîáõîäèìûì äëя ïðåä- ñòaâëåíèя âñåõ åãî çía÷åíèé. Ëþáîå çía÷åíèå öåëî÷èñëåííîãî òèïa ìîæíî яâíî ïðèâåñòè ê òèïó ïåðå÷èñëåíèя, íî ïðè âûõîäå ça ïðåäåëû åãî äèaïaçîía ðåçóëüòaò íå îïðåäåëåí.



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   38   39   40   41   42   43   44   45   ...   232




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish