ชนิดของข้อมูล

ชนิดของข้อมูล

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

               ชนิดข้อมูลพื้นฐานในภาษาซีเป็นข้อมูลชนิดสเกลาร์ โดยที่ตัวแปรที่มีชนิดสเกลาร์ในขณะใดขณะหนึ่งจะเก็บข้อมูลได้เพียงค่าเดียวเท่านั้น ข้อมูลชนิดสเกลาร์ แบ่งออกเป็น
1. ข้อมูลชนิดตัวเลข (arithmetic data type) ซึ่งประกอบด้วย ข้อมูลชนิดจำนวนเต็ม และข้อมูลชนิดจำนวนจริง
2. ข้อมูลชนิดตัวชี้ (pointer data type)
3. ข้อมูลชนิดแจงนับ (enumerated data type)
           ในเอกสารนี้จะกล่าวถึงเฉพาะการใช้งานข้อมูลชนิดจำนวนเต็มและข้อมูลชนิดจำนวนจริงเท่านั้น
ข้อมูลชนิดจำนวนเต็ม

           การประกาศข้อมูลชนิดจำนวนเต็มสามารถทำได้ ดังนี้



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


เช่น age = 15;
           เครื่องหมาย = เป็นตัวดำเนินการกำหนดค่า และมีผลให้ตัวแปร age มีค่าข้อมูลเท่ากับ 15



บรรทัดที่ 4 ตัวแปร age ถูกประกาศให้มีชนิดจำนวนเต็ม และถูกกำหนดให้มีค่าเป็น 15ในบรรทัดที่ 5 
บรรทัดที่ 6 ค่าตัวแปร age ซึ่งเป็นอาร์กิวเมนต์ที่สองของคำสั่ง printf() จะถูกจัดรูปแบบให้อยู่ในรูปของจำนวนเต็มฐานสิบก่อนแสดงผล
           สังเกตว่าอาร์กิวเมนต์แรกของคำสั่ง printf() จะต้องมีชนิดเป็นสายอักขระเสมอ และคำสั่ง printf() จะมีจำนวนอาร์กิวเมนต์นอกเหนือจากอาร์กิวเมนต์แรกอีกเท่าใดขึ้นอยู่กับจำนวนชุดอักขระจัดรูปแบบในอาร์กิวเมนต์แรก โดยที่อาร์กิวเมนต์ในลำดับถัดไปอาจอยู่ในรูปของค่าคงตัว นิพจน์ หรือตัวแปรก็ได้
  


        บรรทัดที่ 4 เป็นการประกาศให้ x1 และ y1 เป็นตัวแปรชนิดจำนวนเต็มทั้งสองตัว และบรรทัดที่ 5 เป็นการประกาศให้ x2 และ y2 เป็นตัวแปรชนิดจำนวนเต็ม พร้อมกับกำหนดให่มีค่าเริ่มต้นเป็น 5 และ 0 ตามลำดับ

           อาร์กิวเมนต์แรกของคำสั่ง printf() ในบรรทัดที่ 8 เป็นสายอักขระที่ประกอบด้วยชุดอักขระจัดรูปแบบ %d จำนวน 2 ชุด โดย %d แรกใช้จัดรูปแบบการแสดงผลค่าของตัวแปร x1 และ %d ที่สองใช้จัดรูปแบบการแสดงผลค่าของตัวแปร y1
           นอกจากชุดอักขระจัดรูปแบบ %d แล้วยังมีชุดอักขระจัดรูปแบบสำหรับจำนวนเต็มในฐานอื่นอีก คือ %o และ %x ซึ่งเป็นชุดอักขระที่ใช้จัดรูปแบบข้อมูลให้อยู่ในรูปจำนวนเต็มฐานแปด (octal) และจำนวนเต็มฐานสิบหก (hexadecimal) ตามลำดับ ดังแสดงในตัวอย่างที่ 3.2.3



1.ข้อมูลชนิดจำนวนจริง

           ชนิดข้อมูลจำนวนจริงในภาษาซีประกอบด้วย float double และ long double โดยชนิด float จะมีจำนวนตำแหน่งทศนิยมน้อยกว่าชนิด double และชนิด long double ตามลำดับ
           ชุดอักขระจัดรูปแบบที่ใช้สำหรับข้อมูลชนิดจำนวนจริงในคำสั่ง printf() ประกอบด้วย %f ใช้เพื่อจัดรูปแบบข้อมูลชนิด float ให้อยู่ในรูปแบบจำนวนจริงฐานสิบ %e และ %E ใช้เพื่อจัดรูปแบบข้อมูลให้อยู่ในรูปของสัญลักษณ์เชิงวิทยาศาสตรสำหรับข้อมูลชนิด double และ long double จะใช้อักขระ lf และ Lf เป็นอักขระที่เพิ่มเข้าไปใช้ชุดอักขระจัดรูปแบบ ตามลำดับ



  
                 การแสดงผลข้อมูลชนิดจำนวนจริงในคำสั่ง printf() โดยใช้ %f %e หรือ %E จะแสดงค่าทศนิยม 6 ตำแหน่ง อย่างไรก็ตามในชุออักขระจัดรูปแบบจำนวนจริง ยังสามารถกำหนดจำนวนตำแหน่งในการแสดงผลข้อมูลให้กับข้อมูลแต่ละจำนวน เพื่อจัดรูปแบบผลลัพธ์ให้สวยงาม ดังแสดงในตัวอย่างที่ 3.2.5




                  จากตัวอย่างที่ 5 ในบรรทัดที่ 8 %7.2f มีความหมายว่าจำนวนตำแหน่งที่ใช้แสดงข้อมูลชนิดจำนวนจริงจะมีค่าอย่างน้อยเท่ากับ 7 โดย 1 ตำแหน่งเป็นทศนิยม 2 ตำแหน่งเป็นค่าทศนิยม และ 4 ตำแหน่งที่เหลือเป็นจำนวนเต็มด้านหน้าจุดทศนิยม ดังรูป

2.ข้อมูลชนิดอาร์เรย์

ความรู้เกี่ยวกับอาร์เรย์   Array ในภาษา C

      1. อาร์เรย์ 1 มิติ
                Array คือตัวแปรในภาษา C ที่ใช้ในกรณีที่ต้องการตัวแปรเยอะ ๆ ซึ่งมีรูปแบบในการประกาศตัวแปรชนิดอาร์เรย์คล้ายกับตัวแปรทั่วไป คือ   ชนิดข้อมูล ชื่อตัวแปร [ ];
เช่น   int num[10]; นั่นคือมีตัวแปรของจำนวนจริง 10 ตัว คือ num[0] , num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8], num[9] char name [10]

 เป็นตัวแปรอาร์เรย์แบบสตริงมีความหมายสองแบบ คือ

        1. แบบตัวอักษร  นั่นคือ เป็นตัวแปรของตัวอักษร 10 ตัว คือ name [0], name [1], name [2], name [3], name [4], name [5], name [6], name [7], name [8], name [9]
        2. แบบข้อความ  นั่นคือ  เป็นตัวแปรของสตริง 1 ตัว ใช้เก็บตัวอักษรได้ 9 ตัว เนื่องจาก index สุดท้ายของตัวแปรเก็บอักขระ  null character หรือ 0  เพื่อบ่งบอกการสิ้นสุดข้อความ

เทคนิคการจัดการตัวแปรชนิดอาร์เรย์

               num [i]   ลองคิดซิว่า ถ้า i เปลี่ยนแปลงจาก 0 ไปเรื่อย ๆ จนถึง n เราจะมีตัวแปรไว้ใช้กี่ตัว?
        

    2.อาร์เรย์ 2 มิติ
                มีรูปแบบในการประกาศตัวแปร  ชนิดข้อมูล ชื่อตัวแปร [ ][ ];   มีลักษณะคล้ายกับอาร์เรย์ในหนึ่งมิติ  เช่น
                int num[3][3];  นั่นคือ มีตัวแปรของจำนวนจริง 9 ตัว คือ  num[0][0], num[0][1], num[0][2],num[1][0], num1][1], num[1][2],num[2][0], num[2][1], num[2][2]
 char name[3][10]; 
มีความหมาย 2 กรณีเช่นเคย นั่นคือ

     1.มีตัวแปรแบบตัวอักษร ทั้งหมด 30 ตัวอักษร
     2.มีตัวแปรแบบสตริง 3 ตัว  ตัวละ 9 ตัวอักษร
     3.เทคนิคการวนรับค่าของตัวแปรอาร์เรย์ 1 มิติ   

  num[n]
                for (i=0; i<n; i++)
                                {   do {  printf(“Input num [i] : ”,i);
                                             scanf(“%d”,&num[i]);
                                          } while(num[i]<10|| num[i]>99);
                                }


     4.เทคนิคการวนรับค่าของตัวแปรอาร์เรย์ 2 มิติ      num[m][n]
                for (i=0; i< m; i++)
                                for ( j = 0 ; j < n ; j++) 
{              do {  printf(“Input num [i] : ”,i,j);
                                                                          scanf(“%d”,&num[i][j]);
                                                                 } while(num[i][j]<10|| num[i][j]>99);
                                                }

     5. เทคนิคการวิเคราะห์ตัวแปรอาร์เรย์ชนิดสตริง 
             กำหนดให้   char str[20]  หมายถึง    มี sizeof  เท่ากับ 20  มีความสามารถในการเก็บตัวอักษรได้ 19  ตัวอักษร
                กำหนดให้   char str[ ]  = “Suranaree University of Technology” ;
     หมายถึง    มี sizeof มากกว่าจำนวนอักษรอยู่ 1 นั่นคือ 35  และ str[0]  เก็บตัวอักษร  S   str[18]  เก็บตัวอักษร  t
str[1]  เก็บตัวอักษร  u                          str[19]  เก็บตัวอักษร  y
str[2]  เก็บตัวอักษร  r                           str[20]  เก็บตัวอักษร 
str[3]  เก็บตัวอักษร  a                          str[21]  เก็บตัวอักษร  o
str[4]  เก็บตัวอักษร  n                          str[22]  เก็บตัวอักษร  f
str[5]  เก็บตัวอักษร  a                          str[23]  เก็บตัวอักษร 
str[6]  เก็บตัวอักษร  r                           str[24]  เก็บตัวอักษร  T
str[7]  เก็บตัวอักษร  e                          str[25]  เก็บตัวอักษร  e
str[8]  เก็บตัวอักษร  e                          str[26]  เก็บตัวอักษร  c
str[9]  เก็บตัวอักษร                              str[27]  เก็บตัวอักษร  h
str[10]  เก็บตัวอักษร  U                       str[28]  เก็บตัวอักษร  n
str[11]  เก็บตัวอักษร  n                        str[29]  เก็บตัวอักษร  o
str[12]  เก็บตัวอักษร  i                         str[30]  เก็บตัวอักษร  l
str[13]  เก็บตัวอักษร  v                        str[31]  เก็บตัวอักษร  o
str[14]  เก็บตัวอักษร  e                        str[32]  เก็บตัวอักษร  g
str[15]  เก็บตัวอักษร  r                         str[33]  เก็บตัวอักษร  y
str[16]  เก็บตัวอักษร  s                        str[34]  เก็บตัวอักษร  null character
str[17]  เก็บตัวอักษร  i                
        
Pointer ในภาษา C
                Pointer หมายถึงตัวชี้ ซึ่งในภาษา C หมายถึงตัวแปรที่เก็บ address หรือที่อยู่ของข้อมูล หรือเรียกว่าวิธีการที่เข้าถึงข้อมูลแบบทางอ้อม

  1.การประกาศตัวแปร pointer    รูปแบบ   ชนิดข้อมูล  *ชื่อ pointer;
เช่น   int num, *p;   
หมายถึง  ประกาศตัวแปรชนิด pointer  ชื่อ p สำหรับใช้กับจำนวนจริง
char ch, *pc;   
หมายถึง  ประกาศตัวแปรชนิด pointer  ชื่อ p สำหรับใช้กับตัวอักษร

2. การใช้งาน   pointer    รูปแบบ  ชื่อ pointer =&ตัวแปร;         
   เช่น   p=&num;    pc=&ch;
ในกรณี  Pointer   ของอาร์เรย์  เช่น  int  num[5], * p;
ในการใช้งาน Pointer จะถูกชี้ที่ตำแหน่งแรก นั้นคือ   p = num;   หมายถึง   p = &num[0];
ในกรณีที่ต้องการชีตำแหน่งอื่นจะต้องกำหนด index   เช่น   p =&num[2 

3.ตำแหน่งของ Pointer
    เช่น   int  num[5] = { “ 2,4,6,8,10} , *p;
               p=num


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

4. การกระทำของ  Pointer

 4.1 การแสดงทิ่อยู่หลักของ pointer      เช่น   printf(“ %p”,&ptr);
4.2 การแสดงทิ่อยู่ทั่วไปของ pointer     เช่น   printf(“ %p”,&ptr);     
4.3 การแสดงข้อมูลที่ pointer  อยู่         เช่น   printf(“ %p”,*ptr);
4.4 การเข้าถึงข้อมูลผ่าน pointer            เช่น   sum = *ptr + 5 ;

5. การกระทำข้อมูลผ่าน pointer แบบ pointer ชี้ตำแหน่งเดิม

                                int  num[5] = { “ 2,4,6,8,10} , *ptr, i ;
                                ptr = num;
                                for( i =0; i<5; i++)
                                                 printf(“%d   ”,*(ptr+i) );

  

3.ข้อมูลชนิดสตริง

                รูปแบบคำสั่ง printf() แสดงผลข้อความ (String)printf("String");
 "String" คือ ข้อความที่เราต้องการให้แสดงผลออกทางหน้าจอ ตัวอย่างเช่น ถ้าต้องการให้แสดงคำว่า Hello ตัวอย่างการใช้คือ printf("Hello"); โดยข้อความ (String) ที่ต้องการให้แสดงผลนั้น ต้องอยู่ภายใน " " (Double Quote) ดังตัวอย่าง

                                       ตัวอย่างการ แสดงผลข้อความ (String) ด้วย คำสั่ง printf()

1) ทำการสร้าง Source File ขึ้นมาใหม่ แล้วทำการ Save โดยใช้ชื่อว่า c_prinf_basic.c
2) ทำการ Copy Source Code ต่อไปนี้
#include <stdio.h>
int main()
{
    printf("123");
    printf("456");  
    getch();
    return 0;  
}
3) นำ Source Code ที่ Copy มาวางใน Source File
4) ทำการ Save Source File , คอมไพล์ (Complie) และ รัน (Run) โปรแกรม และจะพบกับหน้าต่าง (Window) การแสดงผลตามรูป

              จากการแสดงผลเราจะพบว่าแม้ Source Code printf("123"); และ printf("456"); จะวางอยู่คนละบรรทัดกัน นั่นก็ไม่มีผลกับการเว้นบรรทัดเมื่อทำการแสดงผล นั่นก็เพราะคำสั่ง printf() เมื่อแสดงผล ค่าข้อความ (String) เสร็จแล้ว Cursor (ขีดล่าง กระพริบๆ) จะไปยังตำแหน่งตัวอักษรถัดไป
5) ตัวอย่างการทำงานของคำสั่ง printf()
#include <stdio.h>
int main()
{
    printf("123"); // บรรทัดนี้จะแสดงผล 123_
    printf("456"); // บรรทัดนนี้จะแสดงผลต่อเป็น 123456_
    getch();
    return 0;  
}
รูปแบบคำสั่ง printf() และ \n แสดงผลข้อความ (String) แบบเว้นบรรทัด
 printf("\n");
         หรือ
 printf("String\n");
             "String" คือ ข้อความที่เราต้องการให้แสดงผลออกทางหน้าจอ ตัวอย่างเช่น ถ้าต้องการให้แสดงคำว่า Hello ตัวอย่างการใช้คือ printf("Hello"); โดยข้อความ (String) ที่ต้องการให้แสดงผลนั้น ต้องอยู่ภายใน " " (Double Quote) 

ดังตัวอย่าง

     "\n" คือ ใส่เพื่อบอกกับ printf() ว่าจะทำการเว้นบรรทัด ในจุดนี้

ตัวอย่างการ แสดงผลข้อความ (String) แบบเว้นบรรทัด ด้วย คำสั่ง printf() และ \n

1) ทำการ สร้าง Source File ใหม่ , Copy Source Code นี้ และ Save ชื่อ c_printf_newline.c
#include <stdio.h>
int main()
{
    printf("123\n");
    printf("456");
    printf("78\n9");
    printf("\n");
    printf("ABC");
    getch();
    return 0;
}
2) ทำการ คอมไพล์ (Complie) และ รัน (Run) ก็จะได้ผลลัพธ์ตามรูป

          จากการแสดงผลจะเห็นว่า เมื่อเจอ \n จะทำการเลื่อน Cursor ลงไปบรรทัดใหม่ printf("123\n") ; และ printf("456") จะได้เป็น printf("123ขึ้นบรรทัดใหม่") และ printf("456") ครับ และเราสามารถเขียน \n แทรกในข้อความได้เช่นกันคือ printf("78\n9"); และสามารถเขียนเว้นบรรทัดอย่างเดียวได้คือ printf("\n");

3) อธิบายการทำงานของคำสั่ง printf() และ \n

#include <stdio.h>
int main()
{
    printf("123\n"); // แสดงผล 123 และเว้นบรรทัด
    printf("456"); // แสดงผล 456
    printf("78\n9"); // แสดงผล 78 และ เว้นบรรทัด และ แสดงผล 9
    printf("\n"); // เว้นบรรทัด
    printf("ABC"); // แสดงผล ABC
    getch();
    return 0;
}



ขอบคุณข้อมูลจาก
บทเรียนออนไลน์ การเขียนโปรแกรมภาษา C
นางสาว  กวีณา  รอดคง
ที่อยู่เว็บ http://thecprogrammingproject.weebly.com/




Krubella Wassana Buathong