บทที่ 08 ข้อมูลอินิวเมอเรดเต็ด (enumerated)

4

Click here to load reader

Transcript of บทที่ 08 ข้อมูลอินิวเมอเรดเต็ด (enumerated)

Page 1: บทที่ 08 ข้อมูลอินิวเมอเรดเต็ด (enumerated)

!

ศิริชัย นามบุรี อินิวเมอเรดเต็ด(enumerated)

บทที่ 8ขอมูลอินิวเมอเรดเต็ด (enumerated)

♦ !ความหมายของขอมูลชนิด enumeratedenumerated หมายถึง ประเภทขอมูลที่ประกอบดวยสมาชิก(member) จํ านวนหนึ่งซึ่งมีคาคงที่

และล ําดับที่อยูของรายการขอมูลแนนอนและมีความสัมพันธกัน เชน วันในหนึ่งสัปดาห ประกอบดวยสมาชิก อาทิตย จันทร อังคาร พุธ พฤหัสบดี ศุกร และเสาร

♦ !วิธีก ําหนดขอมูลใหเปนประเภท enumeratedการก ําหนดหรือประกาศใหขอมูลเปนชนิด enumerate มีรูปแบบดังน้ี

โดยที ่ enum เปนคียเวิรด ตองเขียนทุกคร้ังเม่ือกํ าหนด enumeratedtype_name คือ ช่ือประเภท enumerated ที่ผูใชก ําหนดเองmember1,… คือ ชื่อสมาชิกและจ ํานวนสมาชิก กํ าหนดไวในเคร่ืองหมาย

[ ] มีมากกวา 1 ตัวใช , แบงรายการสมาชิก สมาชิกทุกตัวของอินิวเมอเรดเต็ดถือเปน constant จึงเรียกอีกอยางหน่ึงวา enumerated constant

♦ !คาของอินิวเมอเรดเต็ดเม่ือเราก ําหนดขอมูลแบบ enumerated ในโปรแกรม C++ จะก ําหนดใหสมาชิกตัวแรกมีคาเทา

กับจ ํานวนเต็ม(integer) 0 และก ําหนดคา 1,2,3,…ใหแกสมาชิกที่อยูในล ําดับตอไปตามล ําดับ เชนenum DayOfWeek{sun,mon,tue,wen,thu,fri,sat};คาของสมาชิกแตละลํ าดับเปนดังน้ี sum=0, mon=1,tue=2,wen=3,thu=4,fri=5,sat=6ถาตองการก ําหนดใหสมาชิกตัวแรกเร่ิมท่ี 1 สามารถเขียนไดดังนี้enum DayOfWeek{sun=1,mon,tue,wen,thu,fri,sat};คาของ sum=1, mon=2,tue=3,wen=4,thu=5,fri=6,sat=7 enum DayOfWeek{sun=1,mon,tue,wen=50,thu,fri,sat}; คาของ sum=1, mon=2,tue=3,wen=50,thu=51,fri=52,sat=53การก ําหนดคาของสมาชิก enumerated สามารถก ําหนดคาใหเปนอักษรได เชน

! enum type_name{member1,member2,member3,…,member n);

Page 2: บทที่ 08 ข้อมูลอินิวเมอเรดเต็ด (enumerated)

!

ศิริชัย นามบุรี อินิวเมอเรดเต็ด(enumerated)

106

enum FileMenu{FileOpen='O', FileClose='F',FileSave='S',Exit='X'};หมายเหตุ คาของสมาชิก enumerated ปกติจะเปน integer เร่ิมต้ังแต 0,1,2… เวนแตผูใชจะ

กํ าหนดใหเปนอยางอื่นตามที่กลาวมา

♦ !การประกาศตัวแปรประเภท enumerated และการกํ าหนดคาขอมูลประเภท enumerated เม่ือสรางช่ือประเภทขอมูลข้ึนแลว สามารถนํ าไปใชในการประกาศ

หรือกํ าหนดตัวแปรชนิดน้ันได เชนenum DayOfWeek {sun,mon,tue,wen,thu,fri,sat}; //กํ าหนดชื่อประเภท enumeratedDayOfWeek day,newday; //day และ newday เปนตัวแปรประเภท DayOfWeek ซึ่ง //เปนประเภทขอมูล enumerated ที่ผูใชก ําหนดข้ึนใหม

จากตัวอยาง ตัวแปร day และ newday เปนตัวแปรชนิด DayOfWeek ซ่ึงเปนประเภทenumerated ดังน้ัน ตัวแปร day และ newday สามารถมีคาหรือก ําหนดคาที่เปนไปได คือsun,mon,tue,wen,thu,fri,sat คาใดคาหนึ่งเทานั้น ไมสามารถเก็บคาคงที่ชนิดอื่น ๆ ได เชน

day=sun; //sun = 1newday=sat; //sat = 6คาของ day คือ 0 สวนคาของ newday = 6

• ! ตัวอยางโปรแกรม enum1.cpp แสดงการสรางขอมูลประเภท enumerated และการประกาศตัวแปร รวมถึงการดํ าเนินการกับตัวแปรประเภท enumerated

/*Program : enum1.cpp Process : create and manage enumerated data type*/

#include <iostream.h> #include <conio.h>

void main() { enum DayOfWeek{sun,mon,tue,wen,thu,fri,sat}; DayOfWeek day,newday; //declar var day,newday are DayOfWeek type //defind value of day and newday variable day=mon; newday=fri; //display clrscr(); cout<< "Display value of member of DayOfWeek"<<endl;

Page 3: บทที่ 08 ข้อมูลอินิวเมอเรดเต็ด (enumerated)

!

ศิริชัย นามบุรี อินิวเมอเรดเต็ด(enumerated)

107

cout<< "sun = "<<sun<<endl; cout<< "mon = "<<mon<<endl; cout<< "tue = "<<tue<<endl; cout<< "wen = "<<wen<<endl; cout<< "thu = "<<thu<<endl; cout<< "fri = "<<fri<<endl; cout<< "sat = "<<sat<<endl; cout<< "day = mon is : "<<day<<endl; cout<< "newday =fri is : "<<newday<<endl; cout<< "Value between newday and day is : " <<newday-day<<endl; cout<< "Value between newday+day is : " <<newday+day; getch(); }

• ! ตัวอยางโปรแกรม Boolean.CPP แสดงการกํ าหนดขอมูลชนิด enumeratedกํ าหนดคาของขอมูลไว 2 คาคือ false และ true

/*Program:Boolean.Cpp Process: use enumerated type of data*/#include <iostream.h>#include <ctype.h>#include <conio.h>

void main(){ enum Boolean { False, True}; Boolean Quit=False; char ch; int count=0; do{ clrscr(); ++count; cout<<"\n Count = "<<count; cout<<"\n Continue <y/n> "; ch=getch(); if(toupper(ch)=='N')

Quit=True;

Page 4: บทที่ 08 ข้อมูลอินิวเมอเรดเต็ด (enumerated)

!

ศิริชัย นามบุรี อินิวเมอเรดเต็ด(enumerated)

108

}while(!Quit);cout<<"\n end of program";getch();}

♦ ! แบบฝกหัดทายบท

1. จากขอมูลตอไปนี ้ Biggest, Big, Middle, Small, Smallest ใหเขียนโปรแกรมเพ่ือ กํ าหนดใหเปน ขอมูลชนิด enumerated แลวก ําหนดตัวแปรเพ่ือแสดงคาคงท่ีของสมาชิก enumerated ใหถูกตอง

2. จากขอมูลช่ือเดือนในรอบป January, February , March, April, May, June, July, August, September, October, November, December ใหนักศึกษาเขียนโปรแกรมเพื่อก ําหนดใหขอมูลเหลานี้เปนสมาชิกขอมูลชนิด enumerated โดยกํ าหนดให January มีคาเทากับ 1แลวสรางตัวแปรอารเรยเพ่ือเก็บคาของสมาชิก enumerated ชุดน้ี และแสดงคาของอาเรยที่เก็บคาของ enumerated ออกทางจอภาพ