The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

หน่วยที่ 4 ชนิดข้อมูล

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by นายประจักษ์ ปะทะดี, 2022-05-06 02:59:42

หน่วยที่ 4 ชนิดข้อมูล

หน่วยที่ 4 ชนิดข้อมูล

หลักการเขียนโปรแกรม

PROGRAMMING PRINCIPLES

PROGRAMMER

หน่วยที่ 4 ชนิดข้อมูล

ประจักษ์ ปะทะดี LEARN NOW

ตำแหน่ง ครู วิทยฐานะ ครูชำนาญการ



4.1 การประกาศตัวแปร

ก่อนจะนำข้อมูลมาใช้งาน หรือเก็บเขา้ หน่วยความจำจะต้องทำการประกาศตัวแปร ขึ้นมาใช้ก่อน ซ่ึง
การใช้งานข้อมูลจะกระทำผ่านตัวแปรที่ได้ประกาศไว้โดยจะต้องกำหนดชนิดของข้อมูลด้วย ซึ่งเราจะเรียกว่า
ประโยคคำสัง่ ประกาศตัวแปร (Declaration Statement) หลักการประกาศตัวแปร คือ การกำหนดชนิดข้อมูลท่ี
จะใช้เป็นคีย์เวิร์ด ตามด้วยชื่อตัวแปรและท้ายด้วยเครื่องหมายอฒั ภาค ( ; ) และถ้าหากประกาศตัวแปรหลายตัว
พร้อมกนั และมีชนดิ ข้อมูลแบบเดียวกนั โดยมตี ัวคน่ั เป็นเครือ่ งหมายจลุ ภาค ( , ) ซึง่ มีรปู แบบดังน้ี

datatype varName1, varName2 , … ;
datatype varName3 = value;

flat weight ;
int result ;
int price, sum ;
float salary = 9800.00 ;
int sum = 0 ;
int width = 120 , height = 350 ;

ครูผสู้ อน ประจกั ษ์ ปะทะดี วท.ม. เทคโนโลยีอนิ เทอรเ์ น็ตและสารสนเทศ 1

รปู ที่ 4.1 แสดงคา่ ที่เกบ็ ในหน่วยความจำ และตัวแปรที่อ้างถึงในการใช้งานจากโคด้ ตวั อย่าง

4.2 ชนิดข้อมูลและพืน้ ที่จดั เกบ็

ในภาษา C หรือ C++ (และโปรแกรมในภาษาอื่นๆ) ตัวแปรทุกตัวที่จะมีการเรียกใช้ ในโปรแกรม
จําเป็นต้องมกี ารกาํ หนดชนิดของตวั แปรนนั้ ๆ ก่อนท่ีจะทําการเรยี กใชต้ วั แปร ชนดิ ขอ้ มูลมดี ังน้ี

 ข้อมูลชนิดตัวอักษร (Character) คือ ข้อมูลที่เป็นรหัสแทนตัวอักษรหรือค่า จํานวนเต็ม ได้แก่
ตวั อักษร ตวั เลข และกลมุ่ ตวั อกั ขระพเิ ศษใช้พื้นท่ใี นการเก็บขอ้ มลู 1 ไบต์

 ข้อมูลชนดิ จํานวนเต็ม (Integer) คือ ข้อมูลท่ีเปน็ เลขจํานวนเต็ม ได้แก่ จํานวนเต็ม บวก จํานวน
เต็มลบ ศูนย์ ใชพ้ น้ื ทใี่ นการเก็บ 2 ไบต์

 ข้อมูลชนิดจาํ นวนเต็มท่มี ีขนาด 2 เท่า (Long Integer) คือ ข้อมูลท่ีมเี ลขเปน็ จํานวนเตม็ ใช้พื้นท่ี
4 ไบต์

 ข้อมลู ชนดิ เลขทศนยิ ม (Float) คอื ขอ้ มูลท่ีเป็นเลขทศนิยม ขนาด 4 ไบต์
 ข้อมูลชนิดเลขทศนยิ มอย่างละเอียด (Double) คือ ข้อมูลที่เปน็ เลขทศนิยม ใช้พื้นที่ ในการเกบ็
8 ไบต์

2 หลกั การเขียนโปรแกรม (Programming Principles)

ตาราง 4.1 แสดงขนิดและพื้นทีจ่ ัดเก็บ

ชนดิ ข้อมลู ขนาดความกวา้ ง ชว่ งของค่า

Char 1 ไบต์ ASCII character (-128 ถงึ 127)
int 4 ไบต์ -2147483648 ถงึ 2147483647
short 2 ไบต์ -32768 ถึง 32767
long 4 ไบต์ -2147483648 ถงึ 2147483647
float 4 ไบต์ 3.4E-37 ถึง 3.4E+38 หรือ ทศนิยม 6 ตำแหนง่
double 8 ไบต์ 1.7E-307 ถึง 1.7E+308 หรือ ทศนยิ ม 12 ตำแหน่ง
unsigned int 4 ไบต์ 0 ถงึ 4294967295
bool 1 ไบต์ true or false หรือ 1 กับ 0

สง่ิ ควรรู้
ชนิดขอ้ มลู ตวั เลขทนี่ ยิ มใชใ้ นการเขยี นโปรแกรมส่วนใหญ่ คอื char, int, float และ bool

4.3 ตวั ดำเนินการกับชนิดข้อมลู เบอื้ งต้น

ในการทำงานของโปรแกรมจะต้องมีสัญลักษณ์เพื่อบอกให้ทราบว่ามีการทำงานอะไร ซึ่งจะต้อง
ประกอบกับตัวถูกดำเนนิ การ เชน่ ตวั ดำเนนิ การสง่ คา่ ทม่ี ีสญั ลักษณ์ = ทำหนา้ ที่ สง่ ค่าที่ได้ทางขวา ไปใหก้ ับตัวถูก
ดำเนนิ การท่ีอยทู่ างซ้าย

 ตวั ดำเนินการคณิตศาสตร์

ในการคํานวณทางคณติ ศาสตร์จะต้องใช้ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operator)
ซึ่งพื้นฐานประกอบด้วยตวั ดำเนินการ 5 ตัว คือ การบวก การลบ การคูณ การหาร และการหารเหลือเศษ โดยใช้
สัญลกั ษณ์ +, -, *,/ และ % ตามลำดับ เช่น

sum = x + y ;
average = max / min ;

เป็นการนําค่าจากตัวแปร x บวกกบั ตัวแปร y แลว้ ส่งผลลพั ธใ์ หก้ ับตวั แปร sum และค่า max หาร
ด้วยคา่ max จากน้นั สง่ ผลลัพธใ์ หก้ บั ตัวแปร average

ครูผสู้ อน ประจักษ์ ปะทะดี วท.ม. เทคโนโลยีอนิ เทอรเ์ น็ตและสารสนเทศ 3

ตาราง 4.1 mathProcess.cpp

#include <iostream>
using namespace std;

int main( ) {

int x = 2;
int y = 3;
int z ;
cout << "Math Process" << endl ;
z = x + (x *y) ;
cout << "The value of z = " << z < endl ;
system ( "pause" ) ;
return 0 ;
}

ผลการรันโปรแกรม

Math Process
The value of z = 8
Press any key to continue . . . _

ตาราง 4.2 mathProcess.cpp

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int x = 10 ;
int y = 12 ;

cout << "---Example of Arithmetic Operator---" << endl ;
cout << "1. x+y=" << (x+y) << endl ;
cout << "2. x-y="<< (x+y) << endl ;
cout << "3. x*y=" << (x+y) << endl ;
cout << "4. x/y=" «< (x+y) << endl ;
cout << "5. x%y=" << (x%y) << endl ;
system( "pause" ) ;
return 0 ;
}

4 หลกั การเขียนโปรแกรม (Programming Principles)

ผลการรันโปรแกรม
---Example of Arithmetic Operator----
1. x+y=22
2. x-y=-2
3. x y=120
4. x/y=0
5. x%y=10
Press any key to continue . . .

 ตวั ดำเนินการสง่ คา่ ร่วมกนั

ในการเขียนโปรแกรม บางครงั้ อาจตอ้ งการให้ตัวแปรสง่ ค่ามาเก็บยงั ตัวแปรเดมิ จึงใช้ ตัวดำเนนิ การ
ส่งค่าร่วมกัน เป็นการลดรูปการเขียน โดยนําตัวดำเนินการส่งค่ามารวมกับ ตัวดำเนินการคณิตศาสตร์ ดังเช่น
ตวั อย่างตอ่ ไปน้ี

sum = Sum + 3 ;
sum += 3 ;

เป็นการใชต้ วั ดำเนนิ การส่งคา่ รว่ มกัน ซึง่ บรรทดั ล่างจะมีความหมายเดียวกบั ด้านบน คือ นาํ ตัวแปร
sum ไปบวก 3 แลว้ นาํ ค่าทไ่ี ดก้ ลบั มาเก็บในตวั แปร sum เช่นเดิม ซง่ึ ตัวดำเนนิ การดงั นี้

+= คือการบวกกบั ส่งคา่ กลับ
-= คอื การลบกบั ส่งคา่ กลับ
*= คือการคณู กับสง่ ค่ากลบั
/= คอื การหารกับสง่ ค่ากลับ
% = คือการหารเหลือเศษกบั สง่ คา่ กลับ

ครูผสู้ อน ประจกั ษ์ ปะทะดี วท.ม. เทคโนโลยีอินเทอร์เน็ตและสารสนเทศ 5

ตัวอย่าง 4.3 Combine.cpp

#include <iostream> =” << lValue << endl ;
using namespace std; =” << lValue << endl ;
int main() { =” << lValue << endl ;
=” << lValue << endl ;
cout << “lValue
lValue += 6 ;
cout << “lValue += 6
lVallue *= 3 ;
cout << “lValue *= 3
lValue %= 7 ;
cout << “lValue %= 7
system( “pause” );
return 0 ;
}

ผลการรนั โปรแกรม

lValue = 2

lValue += 6 =8

lValue *= 3 = 24

lValue %= 7 =3

Press any key to continue . . .

 สิทธิการใชต้ วั ดำเนินการก่อน

ลำดับการทำงานของตัวดำเนินการมีความสำคัญมาก เพื่อไม่ให้เกิดความผดิ พลาด ในการทำงาน
และใหก้ ารทำงานมลี ำดบั ทีถ่ ูกต้อง จงึ ต้องมีการกำหนดสทิ ธ์ใิ หต้ วั ดำเนินการ หากตวั ดำเนินการใดมีสิทธิ์มากกว่าจะ
ถูกทำงานก่อน หากตัวดำเนินการที่มีสิทธิ์เท่ากัน จะใช้กฎการมีส่วนร่วมในการทำงาน ซึ่งปกติจะทำงานกับตัว
ดำเนินการจากซ้ายไปขวา ยกตวั อยา่ งเช่น

a+b-c

6 หลักการเขยี นโปรแกรม (Programming Principles)

เนอ่ื งจากมตี วั ดำเนนิ การท่ีมสี ิทธิ์เท่ากัน จึงใช้กฎการมีส่วนร่วม ดังนน้ั การทำงาน จะเรม่ิ จากตัวดำเนินการ
ทางซ้ายก่อน โดยการบวกค่าของตัวแปร a และ b จากนนั้ นาํ ผลลัพธ์ ทไ่ี ด้ไปลบกับตัวแปร c อกี ทีห่ นึง่ เพราะเหตุ
น้ีจึงต้องมีการกำหนดสทิ ธิ์การใชง้ านใหถ้ ูกตอ้ ง ดังตารางท่ี 4.2

ตาราง 4.2 สิทธก์ิ ารใชง้ านตัวดำเนนิ การกอ่ น

ตวั ดำเนินการ การมสี ว่ นรว่ ม
()
*/% ซา้ ยไปขวา
+- ซ้ายไปขวา
= *= /= %= += -= ซา้ ยไปขวา
ซ้ายไปขวา

เมอื่ มกี ารใชส้ ทิ ธิ์การใหง้ านตวั ดำเนินการกอ่ น แลว้ พิจารณาตัวดำเนินการทาง คณิตศาสตร์ตอ่ ไปนี้

x += (6 / 7) * 4 - 1 ;

ตัวดำเนนิ การหารจะถูกใชก้ ่อน โดย 6 หารดว้ ย 7 จากนั้นตวั ดำเนินการคูณจะถกู ใช้ นาํ ผลลัพธ์มาคูณกบั 4
แลว้ นําผลลัพธ์ทไ่ี ด้ไปลบหนง่ึ จากนน้ั ตัวดำเนินการ += จะถกู ใชง้ านหลังสดุ โดยการนําผลลพั ธ์ทัง้ หมดไปบวกกับ
ตวั แปร x แล้วเก็บค่าไปยังตัวแปรเดมิ

ตวั อยา่ ง 3.4 การใช้สทิ ธ์ิการให้งานตัวดำเนินการก่อน

#include <iostream>
#include <iomanip>
using namespace std ;
int main() {

int x ;
cout << "--Example ---" << endl ;
x=5+6-3*4;
cout << " 5 + 6 - 3 * 4 =" << x << endl ;
x = (5 + 6) - 3 * 4 ;
cout << " 5 + 6) - 3 * 4=" << x << endl ;
x = (5 + 6 - 3) * 4;
cout << “ (5 + 6 - 3) * 4=" << x << endl ;
system( "pause" ) ;
return 0 ;
}

ครูผสู้ อน ประจกั ษ์ ปะทะดี วท.ม. เทคโนโลยีอนิ เทอร์เน็ตและสารสนเทศ 7

ผลการรนั โปรแกรม

---Example ----
5+6-3*4-1
5+6-3*4-1
(5 + 6 - 3) * 4 - 32
Press any key to continue . . .

4.4 ชนิดขอ้ มลู เลขจำนวนเตม็

ชนดิ ขอ้ มลู เลขจำนวนเต็มสำหรับภาษา C++ จะมหี ลายชนิดใหเ้ ลือกไมเ่ หมอื น บางภาษาท่ีมีเพียงชนิด
เดียว ซึ่งเลขจำนวนเต็มจะเป็นตัวเลขที่ไม่มีเศษส่วนเซ่น 1,2,5, -567 เป็นต้น โดยแต่ละชนิดจะใช้พื้นที่
หน่วยความจําต่างกันในการเก็บค่าตัวเลข ถ้าหากพื้นที่มาก ก็จะเก็บตัวเลขได้ค่ามากๆ เราเรียกพื้นที่ที่ใช้เก็บวา่
ความกวา้ ง และบางชนดิ เกบ็ ได้ทง้ั ค่า บวกลบ

บติ บวกลบ บติ เก็บค่า

เลขจำนวนเตม็ มคี ่าบวกลบ

บิตเก็บคา่

เลขจำนวนเต็มไม่มคี ่าบวกลบ
รปู ท่ี 4.2 พ้ืนท่ีเก็บคา่ ของตวั เลขท่ีมคี า่ บวกลบและไมม่ ี

 ชนดิ ขอ้ มูล short, int, long

ข้อมูลแต่ละชนิดในภาษา C++ จะเก็บตัวเลขในขนาดความกว้างจำนวนบิตที่ต่างกัน เมื่ออยู่บน
ระบบคอมพวิ เตอร์ทต่ี ่างกนั จะมีความตา่ งของความกวา้ ง เราจงึ ตอ้ งตรวจสอบ เพือ่ ทราบว่า ค่าทจี่ ะนำมาใชง้ านอยู่
ในช่วงหรือขอบเขตเทา่ ใด ซ่งึ ทราบได้โดยใชไ้ ฟล์เฮดเดอร์ Climits ดงั ตวั อยา่ ง

8 หลกั การเขียนโปรแกรม (Programming Principles)

ตวั อยา่ ง 4.5 testSigned.cpp

#include <iostream>
#include <climits>
using namespace std;
int main() {

int x;
cout << "Ranges of signed integer" << endl;
cout << "int : " << INT MIN < " to " < INT_MAX << endl;
cout << "short: " «< SHRT MIN «< " to " «< SHRT_MIN << endl;
cout << "long : " << LONG MIN << " to " << LONG MIN << endl;
cout << "Bits per type = " « CHAR_BIT << endl;
system( "pause" );
return 0;
}

ผลการรนั โปรแกรม

Ranges of signed integer
Int : -2147483648 to 2147483647
short : -32768 to 32767
long : -2147483648 to 2147483647
Bits per type = 8
Press any key to continue ...

จากโปรแกรม 4.5 เรียกใชไ้ ฟลเ์ ฮดเดอร์ climits ซ่ึงมคี ่าคงที่สัญลักษณเ์ กบ็ ค่าของ ช่วงสงู ทส่ี ุด และ
นอ้ ยทีส่ ุดของแต่ละชนดิ ขอ้ มูลท่ีอยใู่ นเครอ่ื งคอมพิวเตอรเ์ ครือ่ งน้ัน การ ประกาศตวั แปรสามารถกาํ หนดค่าบวกลบ
ได้ และนําคยี ์เวริ ด์ signed วางไวห้ นา้ คียเ์ วิร์ดชนิด ขอ้ มูลอกี ทหี่ น่งึ

 ชนิดข้อมูลไมม่ คี ่าบวกลบ

ชนิดข้อมูลไม่มีค่าบวกลบ จะมีข้อมูลเป็นจำนวนบวกเท่านั้น และไม่มีเครื่องหมาย นําหน้า โดย
เริ่มต้นค่าเป็น 0 ทำให้มีพื้นทีเ่ ก็บค่าตัวเลขเพิ่มมากข้ึนเป็นสองเทา่ ในการประกาศ ตัวแปรที่มีชนิดข้อมูลไม่มีคา่
บวกลบ ต้องกำหนดคียเ์ วิร์ด unsigned วางไวห้ น้าคียเ์ วิร์ดชนิด ขอ้ มลู เช่น

ครูผสู้ อน ประจกั ษ์ ปะทะดี วท.ม. เทคโนโลยีอินเทอรเ์ น็ตและสารสนเทศ 9

unsigned short height ;
unsigned long salary ;
unsigned int price ;

ตวั อยา่ ง 4.6 testUnsigned.cpp

#include <iostream>
#include <climits>
using namespace std;
int main() {

int x; cout << "Ranges of unsigned integer" << endl;
cout << "unsigned int: 0 to " << UINT MAX << endl;
cout << "unsigned short: 0 to " << USHRT_MAX << endl;
cout << "unsigned long : 0 to " << ULONG_MAX << endl;
cout << "Bits per type = " << CHAR BIT << endl;
system( "pause" ) ;
return 0 ;
}

ผลการรันโปรแกรม

Ranges of unsigned integer
unsigned int : 0 to 4294967295
unsigned short : 0 to 65535
unsigned long : 0 to 4294967295
Bits per type = 8
Press any key to continue ...

4.4 ชนดิ ข้อมลู ตัวอกั ษร

ชนิดขอ้ มลู char เป็นชนดิ ขอ้ มลู เลขจำนวนเต็ม ซง่ึ การเกบ็ คา่ เป็นตวั อักษรใน คอมพวิ เตอรน์ น้ั เป็นสิ่งที่
ไม่สะดวก จึงเก็บให้อยู่ในรูปแบบตัวเลขแทน สำหรับตัวอักษรแต่ละตัว จะใช้รหัสตัวเลขแทน โดยใช้พื้นที่เก็บ 1
ไบต์ ดังนั้นการใช้งานชนิดข้อมูล char สามารถจัดการ เป็นตัวอักษรและตัวเลขได้ด้วย ซึ่งมีขนาดเล็กกว่าชนิด
ขอ้ มูล short

10 หลักการเขยี นโปรแกรม (Programming Principles)

รหัสแอสกี (ASCII Code) คือ ชุดสัญลักษณ์ตัวอักษรที่ใช้แทนข้อมูลชนิด char เช่น รหัส 67
หมายถึง ตัวอักษร C และรหัส 97 หมายถึง ตัวอักษร a เป็นต้น ซึ่งการประกาศตัวแปรที่มีข้อมลู ชนิด char จะ
กำหนดคีย์เวิร์ด char วางไว้หน้า ตัวแปร และถ้าหากต้องการกำหนดให้ตัวกแปรเป็นแบบมีค่าบวกลบด้วย ให้
กำหนดคยี เ์ วิร์ด signed หรอื unsigned วางไวห้ น้าคียเ์ วริ ์ด char อกี ทีหน่งึ เช่น

char type ;
signed char name = ‘B’ ;
unsigned char num = -7 ;

ตวั อยา่ ง 4.7 alpha.cpp

#include <iostream>
#include <climits>
using namespace std ;
int main ( ) {

int x ;
cout << “Ranges of character” << endl ;
cout << “signed char : “<< CHAR_MIN << “ to “ << CHAR_MAX << endl ;
cout << “unsigned char : 0 to “ << UCHAR_MAX << endl << endl ;
char alpha ( ‘A’ ) ;
int ascii = alpha ;
cout << “This character is “ << alpha

<< “, ascii code is “ << ascii << endl ;
ascii += 1 ;
cout << “Next character is “ << char (alpha+1)

<< “, ascii code is “ << ascii <<endl ;
system( “pause” ) ;
return 0 ;
}

ผลการรนั โปรแกรม

Ranges of character

signed char : -128 to 127

unsigned char : 0 to 255

This character is A, ascii code is 65

Next character is B, ascii code is 66

Press any key to continue . . .

ครผู สู้ อน ประจักษ์ ปะทะดี วท.ม. เทคโนโลยีอนิ เทอรเ์ น็ตและสารสนเทศ 11

 ฟังกช์ ันตัวอกั ษร

ฟงั ก์ชันที่ทำงานกบั ตัวอกั ษร อยา่ งเช่น การตรวจสอบคุณสมบตั ิตัวอักษรวา่ เป็น ตวั ใหญ่ หรือตัว
เล็ก เป็นตัวอกั ขระ หรือเปน็ เคร่ืองหมายวรรคตอน ซงึ่ จะมีชดุ ฟังกช์ ันท่ีใช้ ทำงานที่อยู่ในไฟลเ์ ฮดเดอร์ cctype ซึ่ง
จะยกตัวอย่างการทดสอบวา่ ตวั อกั ษรเป็นตวั เลก็ หรือตวั ใหญ่ ดงั น้ี

char alphp = ‘B’ ;
if ( isupper ( alpha ) )

cout << “Uppercase” ;

ตาราง 4.3 ฟงั ก์ชันตวั อักษรในไลบราร่ี cctype

ฟงั กช์ นั การส่งค่ากลับ

isalpha() ค่าส่งกลับมาเปน็ true ถ้าเปน็ อกั ขระ
isalnum() คา่ ทส่ี ง่ กลบั มาเป็น true ถ้าเปน็ อกั ขระ หรอื ตวั เลข
iscntrl() คา่ ท่สี งกลบั มาเป็น true ถา้ เป็นอกั ษรคอนโทรล
isdigit() คา่ ทส่ี ง่ กลบั มาเปน็ true ถ้าเป็นนอักษรตัวเลข
isblank() ค่าทสี่ ง่ กลับมาเป็น true ถา้ เป็นอกั ษรว่าง หรือแทป็
isgraph() ค่าที่ส่งกลบั มาเปน็ true ถา้ เป็นอกั ษรที่พมิ พ์ได้ ไม่รวมช่องว่าง
islower() ค่าทส่ี ่งกลับมาเปน็ true ถา้ เปน็ อักษรตัวเลก็
isupper() คา่ ท่ีสง่ กลบั มาเป็น true ถา้ เปน็ อักษรตัวใหญ่
isspace() ค่าทส่ี ่งกลับมาเปน็ true ถา้ เปน็ อักษรช่องวา่ ง
isprint() ค่าที่สง่ กลบั มาเปน็ true ถา้ เป็นอกั ษรท่ีพิมพไ์ ดร้ วมช่องว่าง
ispunct() ค่าที่สง่ กลบั มาเป็น true ถ้าเปน็ อกั ษรเคร่อื งหมายวรรคตอน
tolower() แปลงอักษรตวั เล็กเป็นอักษรตวั ใหญ่
toupper() แปลงอักษรตวั เลก็ เป็นอกั ษรตวั ใหญ่
isxdigit() คา่ ทส่ี ่งกลบั มาเปน็ true ถ้าเป็นอกั ษรเลขฐานสิบหก

12 หลักการเขยี นโปรแกรม (Programming Principles)

การใชง้ านฟังก์ชนั ตวั อกั ษร ส่วนมากจะใชร้ ว่ มกับประโยคคำสัง่ แบบเง่ือนไข ซึ่งจะ สง่ คา่ กลบั มาเปน็
จริงหรอื เทจ็ ดงั ตวั อยา่ งตอ่ ไปนี้
ตัวอย่าง 4.8 CharFunction.cpp

#include <iostream>

#include <climits>

using namespace std ;

int main() {

char ch ;

cout << Enter character" ;

cin >> ch ;

cin >> endl ;

cout << "Alphabetic : “ << boolalpha << bool(isalpha(ch)) << endl ;

cout <<Digit 0-9 : “ << bool (isdigit ( ch )) << endl;

cout << “Punctation : “ << bool (ispunct (ch)) << endl;

cout << “Uppercase : “ << bool (isupper (ch)) << endl ;

if ( islower (ch) )

cout << "Changr to upper " « char (toupper (ch)) << endl;

else

cout << "Changr to lower " « char (tolower (ch)) << endl;

system( "pause" );

return 0;

}

ผลการรนั โปรแกรม

Enter character: K

Alphabetic : true

Digit 009 : false

Punctuation : false

Uppercase : true

Chang to lower :k

Press any key to continue . . .

ครูผสู้ อน ประจักษ์ ปะทะดี วท.ม. เทคโนโลยอี นิ เทอร์เน็ตและสารสนเทศ 13

4.6 ชนิดขอ้ มลู บลู ีน

ในการส่งค่าคืนกลับจากการใชฟ้ งั ก์ชันตวั อักษรนน้ั จะเปน็ การส่งค่าที่มชี นดิ ข้อมูลบลู นิ (Boolean) ซ่ึงเป็น
ค่าทางตรรกะ คอื เปน็ จริงหรือเป็นเท็จ โดยมคี ่าคงท่สี ญั ลักษณ์ คือ true และ false การประกาศตัวแปรชนิดนี้จะ
กำหนดคีย์เวริ ด์ bool ไว้หนา้ ตัวแปร เช่น

bool result = false ;
bool upcase = true ;

อยา่ งไรกต็ าม สามารถแปลงค่าระหว่างค่าคงท่ีสัญลกั ษณ์ true และ false ไปเปน็ ค่าตัวเลข 1 และ 0 ได้
ตามลำดับ ซึ่งการใช้ค่าคงที่สัญลักษณ์แทนการใช้ตัวเลข เป็นการช่วย ให้อ่านโปรแกรม และท ำความเข้าใจ
โปรแกรมได้งา่ ยขึน้ โดยชนดิ ข้อมูลบลู ิน สามารถใช้ ส่อื ความหมายที่เปน็ ไปไดส้ องทาง เช่น ซา้ ย หรอื ขวา เพศชาย
หรอื เพศหญงิ เป็นตน้ ซงึ่ เปน็ การเก็บคา่ ตัวเลขแทนข้อความ ทำให้ไมส่ น้ิ เปลอื งพื้นท่หี น่วยความจํา และส่วนมาก
มกั ใชก้ บั ตัวดำเนนิ การทางตรรกะ ดังตัวอยา่ งต่อไปน้ี

ตัวอย่าง 4.9 Boolean.cpp

#include <iostream> using namespace std;
int main() {

bool Result = false;
int number(Result);
cout << ""Result is " «< Result << endl ;
cout << "number is " << number << endl << endl ;
Result = -14 ;
cout << "Result is " « Result << endl ;
cout << "number with boolalpha is " << boolalpha « Result << endl ;
system( "pause" ) ;
return 0;
}

ผลการรันโปรแกรม

Result is 0
Number is 0
Result is 1
number with boolalpha is ture
Press any key to continue . . .

14 หลักการเขยี นโปรแกรม (Programming Principles)

4.7 ชนดิ ข้อมูลเลขทศนิยม

ในภาษา C++ จะแบ่งชนิดข้อมูลเลขทศนิยมออกเป็น 3 แบบ คือ ชนิดข้อมูล float, double และ
long double ซึ่งชนิดข้อมูลเลขทศนิยมเป็นข้อมูลเลขจํานวนจรงิ มีลักษณะเปน็ เศษสว่ น เช่น 5.3 และ 4.3534
เป็นตน้ โดยคอมพวิ เตอรจ์ ะเก็บค่าออกเป็นสองส่วน คอื สว่ นแรก เรยี กวา่ แมนทสิ สา (mantissa) ใชเ้ ก็บค่าท่ีเป็น
ตัวเลขทั้งหมด และส่วนที่สองเรียกว่า เอกซ์โพเนนต์ (Exponent) ใช้เก็บจํานวนหลักที่อยู่หลังจุดทศนิยม
ยกตัวอยา่ งเชน่ 456789 แมนทิสสาจะเก็บค่า 456 ส่วนเอกซ์โพเนนต์จะเกบ็ ค่า 10 ยกกาํ ลัง -3

ตวั อย่าง 4.10 Float.cpp

#include <iostream>
#include <cfloat>
using namespace std :
int main() {

cout << "Ranges of floating-point number" << endl ;
cout << "float : " << FLT MIN << " to " << FLT MAX << endl ;
cout << "double : "« DBL_MIN <<" to " << DBL MAX << endl ;
cout << "long double : "« LDBL_MIN < " to " << LDBL MAX << endl ;
system( "pause" ) ;
return 0 ;
}

ผลการรนั โปรแกรม

Range of floating-point number

float : 1.17549e-038 to 3.40282e+038
to 3.40282e+038
double : 2.22507e-3088

long double : 0 to 1.#INF

Press any key to continue . . .

ครผู สู้ อน ประจกั ษ์ ปะทะดี วท.ม. เทคโนโลยอี นิ เทอร์เน็ตและสารสนเทศ 15

4.8 การแปลงชนดิ ข้อมลู

ในการเขียนโปรแกรมซงึ่ มีชนิดขอ้ มูลอยหู่ ลายชนิด หากนำมาใช้รว่ มกนั อาจเกต็ ปญั หาข้นึ ได้ทำให้การ
เกบ็ ขอ้ มูลสูญหาย ยกตวั อย่างเช่น การส่งคา่ ระหวา่ งตัวแปรสองตัวท่มี ี ชนิดข้อมูลต่างกัน ทำให้ช่วงกว้างข้อมูลไม่
เทา่ กันดงั ต่อไปน้ี

thisValue = anotherValue;
หากตัวแปร thisValue เป็นชนิดข้อมูลที่มีช่วงคา่ กว้างกว่าตัวแปร anotherValue ก็จะไมเ่ กิดปญั หา
เพราะสามารถเก็บค่าที่ส่งมาไดห้ มด แต่ถ้าหาก thisValue มีช่วงค่าที่นอ้ ยกว่า เมื่อ anotherValue ส่งค่าทีเ่ ป็น
พืน้ ที่จดั เก็บของตัวแปร thisValue ก็จะทำให้ขอ้ มลู สญู หาย ดงั นน้ั เพ่ือไม่ให้เกดิ ขอ้ ผดิ พลาด ภาษา C++ จะแปลง
คา่ ของชนิดขอ้ มลู ทมี่ ีช่วงของค่าน้อยกว่า ไปเป็นชนิดข้อมลู ที่มชี ว่ งของคา่ มากกว่ากอ่ นจากนั้นจะแปลงไปเป็นชนิด
ขอ้ มูลของตวั แปร ที่ทำหนา้ ที่รบั คา่ หากตวั แปรนนั้ เปน็ ชนดิ ข้อมูลมชี ่วงของค่ามากกว่า กเ็ ก็บคา่ ได้หมด แต่หาก ตัว
แปรนนั้ เป็นชนิดข้อมลู มชี ่วงของคา่ น้อยกว่า จะเก็บค่าโดยการตดั สว่ นที่เกินออกไป เช่น ชนดิ ข้อมลู int ใช้ 32 บิต
เก็บค่า เม่อื ส่งค่าให้ชนิดข้อมลู short ทใี่ ช้ 16 บิตเก็บค่า ทำให้เก็บคา่ ไดเ้ ฉพาะ 16 บิตแรกเท่านั้น ส่วนท่ีเหลือก็
จะตัดทง้ิ ไป
ภาษา C++ ใชว้ ิธกี ารดงั กล่าว เปน็ แบบปิดบงั ซึ่งผูเ้ ขยี นสามารถกาํ หนดให้เปน็ แบบ เปิดเผยได้เรียกว่า
การแปลงชนิดข้อมูล (Type Casting) ซง่ึ มี 2 รูปแบบ คือ

(typename)value ;
typename(value);
นอกจากนี้ภาษา C++ ยังได้เพิ่มตัวดำเนินการแปลงชนิดข้อมูล คือ static_cast, dynamic_cast,
const_cast และ reinterpret_cast ซึ่งมีประสิทธิภาพมากขึ้น และสามารถ ใช้กับชนิดข้อมูลพอยน์เตอร์และ
คลาสได้

16 หลกั การเขียนโปรแกรม (Programming Principles)

ตวั อย่าง 4.11 TypeCasting.cpp

#include <iostream>
using namespace std ;
int main() {

int myInt = 15 ;
float myFloat (17.49) ;
char myChar = 'H' ;
cout << "Integer value is " << myint << endl ;
cout << "Float value is " << myFloat << endl ;
cout << "Char value is " << myChar << endl ;
cout << "\nImplicit casting" << endl ;
cout << "Integer + Float" << myInt+myFloat << endl ;
cout < "Integer + Char" << myInt+myChar << endl ;
cout << "Char value is " << myChar << endl ;
cout << "\nImplicit casting" << endl ;
cout << "Integer + Float" << myInt+ (int) myFloat << endl ;
cout << "Integer + Char" << char (myInt) +myChar << endl ;
cout << "Char + Float" << char (myChar+myFloat) << endl ;
system( "pause" ) ;
return 0 ;

}

ผลการรนั โปรแกรม

Integer value is 15
Float value is 17.49
Char value is H
Implicit casting
Integer + Float32.49
Integer + Char87
Char + Float89.49
Explicit casting
Integer + Float32
Integer + Char87
Char + FloatY
Press any key to continue ...

ครผู สู้ อน ประจกั ษ์ ปะทะดี วท.ม. เทคโนโลยีอินเทอร์เน็ตและสารสนเทศ 17

Note
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................

18 หลักการเขียนโปรแกรม (Programming Principles)

Note
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................

ครผู สู้ อน ประจกั ษ์ ปะทะดี วท.ม. เทคโนโลยอี นิ เทอรเ์ น็ตและสารสนเทศ 19

Note
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................

20 หลักการเขียนโปรแกรม (Programming Principles)




Click to View FlipBook Version