Page 1

ใบความรูที่ 6 ขอมูลของภาษาซี ขอมูลของภาษาซี สําหรับเรื่องขอมูลของภาษาซี จะกลาวถึงเรื่องตัวอักขระ คาคงที่ และตัวแปร ดังรายละเอียดตอไปนี้ 1 ตัวอักขระ (characters) ตัวอักขระในภาษา C สามารถจําแนกออกเปน 3 ประเภท คือ 1) ตัวเลข (digits) คือ ตัวเลข 0, 1, 2, …., 9 และตัวเลขฐานสิบหก A, B, C, D, E และ F 2) ตัวอักษร (letters) สามารถใชตัวอักษรพิมพใหญ (uppercase letter) คือ A, B, C, …, Z และตัวอักษรพิมพเล็ก (lowercase letter) คือ a, b, c, …., z รวมทั้งสิ้น 52 ตัวอักษร 3) ตัวอักขระพิเศษ (special character) ซึ่งไดแก ! # % ^ ? . (dot)

* ( ) &

+ = ~ [ _ b (blank

“ < | > ; / : , (comma) ] ‘ หรือ space)

ที่มา : สมชาย รัตนเลิศนุสรณ, 2545 : 47. ยกเวนเครื่องหมาย _ (underscore) เพียงตัวเดียวที่ภาษา C จัดเปนตัวอักษรตัวหนึ่ง โดยที่ตัวอักขระ ชนิดตาง ๆ นี้จะถูกนําไปใชเปนคาคงที่ ตัวแปร ตัวดําเนินการ หรือนิพจน ที่ใชในภาษา C ตอไป 2 คาคงที่ (constants) คาคงที่ คือตัวอักขระที่นํามาประกอบกันตั้งแต 1 ตัวอักขระขึ้นไป เพื่อบอกลักษณะอยาง ใดอยางหนึ่งของขอมูล บางครั้งเราอาจเรียกคาคงที่วา “ขอมูล” (data) ก็ได คาคงที่พื้นฐานที่สําคัญในภาษา C มีดังนี้ 1) คาคงที่ชนิดตัวเลขจํานวนเต็ม (integer constant) คาคงที่ชนิดนี้จะเปนตัวเลขจํานวนเต็มซึ่งอาจมีเครื่องหมายบวกหรือลบก็ได เชน 0, 9, 85, -698, 1832, -2080 เปนตน โดยตัวเลขจํานวนเต็มที่จะสามารถเก็บไดปรกติจะอยูในชวง - 32768 ถึง 32767 เทานั้น บางครั้งเรานิยมเรียกคาคงที่ชนิดนี้วาคาคงที่ int (integer) สําหรับการเก็บคาคงที่ชนิด int นี้ภายในหนวยความจํา จะใชเนื้อที่ 2 bytes นอกจากนี้ยังสามารถเขียน


คาคงที่ชนิดนี้ใหอยูในรูปแบบตัวเลขฐานแปดและฐาน สิบหกได โดยใชตัวเลขศูนย (0) นําหนาแลวตามดวยเลข ฐานแปดที่ตองการหรือจะใชตัวเลขศูนยเอ็กซ (0x หรือ 0X) นําหนาแลวตามดวยเลขฐานสิบหกที่ ตองการ เชน 046, 027, 0xBD, 0X1BCF เปนตน 2) คาคงที่ชนิดตัวเลขทศนิยม (floating point constant) คาคงที่ชนิดนี้จะเปนตัวเลขจํานวนทศนิยม ซึ่งอาจจะมีเครื่องหมายบวก หรือลบก็ได หรือ เปนตัวเลขที่สามารถเขียนอยูในรูป E ยกกําลังได เชน 3.0, 0.234, -0.54, 4E-06, 1.675E+10 เปน ตน โดยตัวเลขทศนิยมนี้จะสามารถเก็บไดปรกติจะอยูในชวง 1.2E-38 ถึง 3.4E+38 เทานั้น สําหรับการเก็บคาคงที่ชนิด float นี้จะใชเนื้อที่ภายในหนวยความจํา 4 bytes โดยที่ 3 bytes แรกจะเก็บ คาตัวเลขทศนิยม สวนอีก 1 bytes สุดทายจะเก็บคายกกําลังเอาไว 3) คาคงที่ตัวเลขทศนิยมที่มีความละเอียดสองเทา (double floating point) คาคงที่ชนิดนี้นิยมเรียกวา คาคงที่แบบ double ซึ่งจะสามารถเก็บตัวเลขทศนิยมที่มีคาอยู ในชวง 2.2E-308 ถึง 1.8E+308 เทานั้น สําหรับการเก็บคาคงที่ชนิด double นี้ จะใชเนื้อที่ภายในหนวยความจํา 8 bytes โดยใช 7 bytes แรก เก็บคาตัวเลขทศนิยม สวนอีก 1 bytes สุดทายจะเก็บคายกกําลังเอาไว เชนเดียวกับคาคงที่ชนิด float 4) คาคงที่ชนิดตัวอักขระตัวเดียว (single character constant) คาคงที่ชนิดนี้จะสามารถเก็บตัวอักขระไดเพียง 1 ตัวอักขระ โดยอยูภายในเครื่องหมาย ‘ ’ (single quotation) เชน ‘5’, ‘X’, ‘c’ เปนตน สําหรับการเก็บคาคงที่ชนิด single character constant จะใชเนื้อที่ภายในหนวยความจํา 1 bytes 5) คาคงที่ชนิดขอความ (strings constant) คาคงที่ชนิดนี้จะเก็บตัวอักขระที่มีความยาวตั้งแต 1 ตัวขึ้นไป โดยจะเก็บอยูในรูปของขอมูล อะเรย (arrays) ซึ่งในแตละตัวอักขระจะใชเนื้อที่ในการเก็บ 1 bytes เรียงติดตอกันไปจนกระทั้งจบ ขอความ และใน byte สุดทายจะเก็บ \0 (null character) เอาไวเพื่อเปนการบอกวา จบขอความ แลว การเขียนคาคงที่ชนิดขอความจะตองเขียนอยูภายใน เครื่องหมาย “……” (double quotation) เชน “X”, ”computer”, “4567”, “c” เปนตน

ตัวอยางที่ 2.1 แสดงการเก็บขอมูลชนิดขอความ คําวา “COMPUTER” ภายในหนวยความจํา จะ มีลักษณะดังนี้


รูปที่ 2.2 แสดงการเก็บขอมูลชนิดขอความคําวา “COMPUTER” ภายในหนวยความจํา ที่มา : สมชาย รัตนเลิศนุสรณ, 2545 : 49. 3 ตัวแปร (variables) ตัวแปร คือ ชื่อที่ผูเขียนโปรแกรมตั้งขึ้นเพื่อใชเปนขอมูล หรือใชเก็บขอมูล ดังนั้นเราตอง กําหนดตัวแปรใหสอดคลองกับชนิดขอมูลเสมอ เพื่อใหระบบเตรียมเนื้อที่ในหนวยความจําใหสอดคลองกับตัวแปร ชนิดนั้น ๆ ซึ่งเนื้อหาที่กลาวถึงเกี่ยวกับตัวแปรประกอบดวย หลักเกณฑการตั้งชื่อตัวแปร การประกาศตัว แปร และการกําหนดคาเริ่มตนใหกับตัวแปร 2.5.3.1 หลักเกณฑการตั้งชื่อตัวแปร ในภาษา C มีหลักเกณฑการตั้งชื่อตัวแปรดังนี้ 1) ชื่อตัวแปรจะตองขึ้นตนดวยตัวอักษรเทานั้น ตัวถัดมาเปนไดทั้ง ตัวอักษร ตัวเลข แตตองไมมีเครื่องหมายคํานวณ บวก (+), ลบ (-), คูณ (*), หาร (/), หารเอาเศษ (%) และ เครื่องหมายเวนวรรค (blank) คั่นระหวางชื่อตัวแปร แตถาตองการตั้งชื่อตัวแปรเวนวรรคใหใช เครื่องหมาย _ (underscore) คั่นแทนการเวนวรรค เชน sum_1, sum_2 เปนตน 2) ความยาวของชื่อตัวแปร ขึ้นอยูกับคอมไพเลอรและระบบเครื่อง คอมพิวเตอร ซึ่งภาษา C สามารถตั้งชื่อตัวแปรไดยาวถึง 32 ตัว แตโดยปกติเราไมนิยมตั้งชื่อตัวแปรยาว ๆ 3) ชื่อตัวแปรตัวอักษรพิมพใหญและตัวอักษรพิมพเล็ก แมจะเขียนคําเดียวกัน หรือ ตัวอักษรพิมพใหญปนตัวอักษรพิมพเล็กที่สลับตําแหนงกัน ระบบถือวาเปนคนละตัวแปรกัน เชน ตัว แปร MAX, max, Max, mAx, maX จะถือวาตัวแปรทั้ง 5 ตัวนี้เปนคนละตัวกัน 4) หามตั้งชื่อตัวแปรซ้ํากับคําสงวน (reserved word) หรือชื่อฟงกชัน หรือชื่อ คําสั่งในภาษานั้น ๆ คําสงวนในภาษาซีตามมาตรฐาน ANSI (American National Standards Institute) มี 33 keywords ดังนี้ asm, auto break case char const continue

double else enum extern float for

int long register return short signed

struct switch typedef union unsigned void


default do

goto if

sizeof static

volatile while

ที่มา : Aitken, P. and B. Jones, 1994 : 600 – 601. 5) ชื่อตัวแปรควรตั้งใหสัมพันธกับขอมูลที่ตองการเก็บ เพื่อปองกันความ สับสน เนื่องจากโปรแกรมที่มีขนาดใหญจะมีตัวแปรจํานวนมาก ถาเราตั้งชื่อตัวแปรโดยไมมรี ะบบระเบียบที่ดี พอจะทําใหผูอานโปรแกรมเกิด ความสับสนและในกรณีที่โปรแกรมเกิดขอผิดพลาดขึ้นจะเสียเวลาในการแกไข โปรแกรมมากขึ้น เชน ตัวแปร ตัวแปร ตัวแปร ตัวแปร

name age salary vat

ใชเก็บชื่อ ใชเก็บอายุ ใชเก็บเงินเดือน ใชเก็บภาษี

2.5.3.2 การประกาศตัวแปร (declaration of variables) ตัวแปรทุกตัวตองมีการประกาศชื่อตัวแปร (variable name) และชนิดของตัวแปร (variable type) เอาไวกอน จึงจะสามารถนําตัวแปรที่ประกาศไวมาใชงานได รูปแบบการประกาศตัวแปร vtype vname ;

โดยที่ vtype คือ ชนิของตัวแปรพื้นฐานที่นิยมใชกันมีอยู 4 ชนิด คือ char, int, float, และ double ซึ่งในความเปนจริงแลว การประกาศชนิดของตัวแปรจะตองใหความสัมพันธกับ คาขอมูลที่ตองการเก็บ ดวย ดังแสดงในตารางที่ 2.1 vname คือ ชื่อของตัวแปร ถามีตัวแปรหลายตัวที่ตองการใหมีชนิดตัวแปร เหมือนกัน สามารถใชเครื่องหมาย , (comma) คั่นระหวางชื่อตัวแปรได ตัวอยางที่ 2.2 แสดงการประกาศตัวแปร 1. char d, c[30];


จะไดตัวแปร d มีชนิดเปน single character และตัวแปรสตริง c มีขนาด 30 bytes 2. int a, b; จะไดตัวแปร a และ b มีชนิดเปน int คือใชเนื้อที่ในหนวยความจํา 2 bytes สามารถเก็บ ตัวเลขจํานวนเต็มที่มีคาอยูในชวง -32768 ถึง 32767 3. float k, m, n, จะไดตัวแปร k, m และ n มีชนิดเปน float คือใชเนื้อที่ในหนวยความจํา 4 bytes สามารถเก็บ จํานวนทศนิยม และตัวเลขที่อยูในรูป E ยกกําลังได 4 .double w, x, y, z จะไดตัวแปร w, x, y และ z มีชนิดเปน double คือใชเนื้อที่ในหนวยความจํา 8 bytes สามารถ เก็บจํานวนทศนิยม หรือตัวเลขที่อยูในรูป E ยกกําลังที่มีความละเอียดสูงกวาชนิด float ตารางที่ 2.1 แสดงชนิดของตัวแปร จํานวน bytes และพิสัยของคาขอมูลในภาษา C ชนิดของตัวแปร (variable types) char int short long

จํานวน bytes ที่ใช

unsigned char unsigned int unsigned short unsigned long enum float double

1 2 2 4 2 4 8

1 2 2 4

พิสัยในการเก็บขอมูล (range) -128 to 127 -32,768 to 32,767 -32,768 to 32,767 2,147,483,648 to 2,147,483,647 0 to 255 0 to 65,535 0 to 65,535 0 to 4,294,967,295 0 to 65,535 1.2E-38 to 3.4E+38 2.2E-308 to 1.8E+308

ที่มา : Aitken, P. and B. Jones, 1994 : 40.

กรณีที่ตองการประกาศตัวแปรและกําหนดคาเริ่มตนใหกับตัวแปรดวยสามารถทําไดดังนี้ รูปแบบการประกาศตัวแปรและกําหนดคาใหกับตัวแปร กรณีที่มีตัวแปร 1 ตัว


vtype vname = value; กรณีที่มีตัวแปรมากกวา 1 ตัว vtype vname1 = value1, vname2 = value2 ,….., vnameN = valueN; กรณีที่มีตัวแปรมากกวา 1 ตัว ใหใชเครื่องหมาย , (comma) คั่นระหวางชื่อตัวแปรแตละตัว ตัวอยางการประกาศตัวแปรและกําหนดคาใหกับตัวแปร 2.5.3.3 การกําหนดคาเริ่มตนใหกับตัวแปร (initializing variables) ตัวอยางที่ 2.3 แสดงการประกาศตัวแปรและกําหนดคาใหตัวแปร 1. 2. 3. 4. 5.

char d=’D’,e=’E’; char c[6]=”Hello”; int a=9, b=25; float k=5.9; double y=3.543006089; 2.5.3.3 การกําหนดคาเริ่มตนใหกับตัวแปร (initializing variables) หลังจากที่เราไดประกาศตัวแปรไว ถาเราตองการกําหนดคาเริ่มตนใหกับตัวแปรใด

เราสามารถทําไดดังนี้ รูปแบบกําหนดคาเริ่มตนใหกับตัวแปร vname = value;

โดยที่ vname คือ ชื่อตัวแปรที่ไดประกาศแลว value คือ คาขอมูลที่จะนําไปเก็บไวในตัวแปร ซึ่งอาจเปนคาตัวเลขหรือขอความก็ได ถาเปนขอความจะตอง เขียนอยูในเครื่องหมาย “……”


ตัวอยางที่ 2.4 แสดงการประกาศคาตัวแปรและกําหนดคาเริ่มตนใหกับตัวแปร int a, b, c=7; /* เปนการประกาศตัวแปร a, b, และ c, เปน int และกําหนด คาตัวแปร c มีคา 7 */ a=b=c; /* เปนการกําหนดคาตัวแปร a และ b ใหมีคาเทากับตัวแปร c (คือมีคา เทากับ 7) */

Ch6  
Read more
Read more
Similar to
Popular now
Just for you