วันพุธที่ 9 กรกฎาคม พ.ศ. 2557

2.5 ข้อมูลของภาษา C

2.5 ข้อมูลของภาษา  C 
            สำหรับเรื่องข้อมูลของภาษา  C  จะกล่าวถึงเรื่องตัวอักขระ  ค่าคงที่  และตัวแปร  ดังรายละเอียดต่อไปนี้
            2.5.1 ตัวอักขระ  (charactors)
                        ตัวอักขระในภาษา  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)  ซึ่งได้แก่

!               *              +             “              <
#              (               =             |               >
%            )               ~             ;               /              
^             -               [               :               ,(comma)
?              &             _              ]               ‘
.(dot)                      b (blank  หรือ  space)
  
ที่มา : สมชาย  รัตนเลิศนุสรณ์, 2545 : 47.
            ยกเว้นเครื่องหมาย _ (underscore)  เพียงตัวเดียวที่ภาษา  C  จัดเป็นตัวอักษรตัวหนึ่ง
            โดยที่ตัวอักขระชนิดต่าง ๆ  นี้จะถูกนำไปใช้เป็นค่าคงที่  ตัวแปร  ตัวดำเนินการ  หรือนิพจน์    ที่ใช้ในภาษา  C  ต่อไป
            2.5.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”  ภายในหน่วยความจำ  จะมีลักษณะดังนี้

d
รูปที่  2.2  แสดงการเก็บข้อมูลชนิดข้อความคำว่า  “COMPUTER”  ภายในหน่วยความจำ
ที่มา : สมชาย  รัตนเลิศนุสรณ์, 2545 : 49.
            2.5.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)  หรือชื่อฟังก์ชัน  หรือชื่อคำสั่งในภาษานั้น ๆ
            คำสงวนในภาษา  C  ตามมาตรฐาน  ANSI  (American  National  Standards  Institute)  มี  33  keywords  ดังนี้

asm, auto          double                int                   struct
break                 else                    long                switch
case                  enum                  register           typedef
char                   extern                 return             union
const                 float                     short              unsigned
continue            for                       signed           void
default              goto                     sizeof            volatile
do                     if                          static              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)
จำนวน  bytes  ที่ใช้
พิสัยในการเก็บข้อมูล
(range)
char
1
-128  to  127
int
2
-32,768  to  32,767
short
2
-32,768  to  32,767
long
4
-2,147,483,648  to  2,147,483,647
unsigned  char
1
0  to  255
unsigned  int
2
0  to  65,535
unsigned short
2
0  to  65,535
unsigned long
4
0  to  4,294,967,295
enum
2
0  to  65,535
float
4
1.2E-38  to  3.4E+38
double
8
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. char  d=’D’,e=’E’;
    2. char  c[6]=”Hello”;
    3. int  a=9, b=25;
    4. float  k=5.9;
    5. 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)  */

ไม่มีความคิดเห็น:

แสดงความคิดเห็น