ห้องเรียนออนไลน์ของครูจตุรภัทร
 หน้าแรก  แนะนำการใช้บทเรียน  แหล่งเรียนรู้เพิ่มเติม  กระดานถามตอบ & สมุดเยี่ยม (Facebook)  ผู้พัฒนาบทเรียน
 
 
 
   บทเรียนหลัก
แนะนำรายวิชา
แบบทดสอบก่อนเรียน แบบทดสอบก่อนเรียน
บทที่ 1 การพัฒนาโปรแกรม
บทที่ 2 แนะนำภาษาซี
บทที่ 3 ตัวแปร และตัวดำเนินการ
บทที่ 4 คำสั่งควบคุม
บทที่ 5 โครงงานคอมพิวเตอร์
แบบทดสอบหลังเรียน
 
 
บทที่ 3
3.2 ชนิดข้อมูล
 

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

ตารางที่ 3.2.1 แสดงชนิดข้อมูลพื้นฐานในภาษาซี

ชนิดข้อมูล การใช้ในโปรแกรม ความหมาย ขนาดข้อมูล (ไบต์) ช่วงข้อมูล
character char ตัวอัขระ 1 -128 ถึง 127
integer int เลขจำนวนเต็ม 2 -32,768 ถึง 32,767
short integer short เลขจำนวนเต็ม แบบสั้น 2 -32,768 ถึง 32,767
long integer long เลขจำนวนเต็ม แบบยาว 4 -2,147,483,648 ถึง 2,147,483,647
unsigned character unsigned char ตัวอัขระ ไม่รวมเครื่องหมาย 1 0 ถึง 255
unsigned integer unsigned int เลขจำนวนเต็ม ไม่รวมเครื่องหมาย 2 0 ถึง 65,535
unsigned short integer unsigned short เลขจำนวนเต็ม แบบสั้น ไม่รวมเครื่องหมาย 2 0 ถึง 65,535
unsigned long integer unsigned long เลขจำนวนเต็ม แบบยาว ไม่รวมเครื่องหมาย 4 0 ถึง 4,294,967,295
single-precision floating-point float เลขจำนวนจริง มีทศนิยม 4 1.2x10-38 ถึง 3.4x1038
double-precision floating-point double เลขจำนวนจริง 2 เท่า 8 2.2x10-308 ถึง 1.8x10308

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

  1. ข้อมูลชนิดตัวเลข (arithmetic data type) ซึ่งประกอบด้วย ข้อมูลชนิดจำนวนเต็ม และข้อมูลชนิดจำนวนจริง
  2. ข้อมูลชนิดตัวชี้ (pointer data type)
  3. ข้อมูลชนิดแจงนับ (enumerated data type)

           ในเอกสารนี้จะกล่าวถึงเฉพาะการใช้งานข้อมูลชนิดจำนวนเต็มและข้อมูลชนิดจำนวนจริงเท่านั้น

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

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

int age;

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

ตัวแปร = ค่าข้อมูล;

           เช่น age = 15;

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

     ตัวอย่างที่ 3.2.1 โปรแกรมพิมพ์อายุ

1 //Program: PrintAge.c
2 #include <stdio.h>
3 int main() {
4   int age;
5   age = 15;
6   printf(“The child age is %d.\n”, age);
7   getch();
8 }

     ผลลัพธ์ คือ

The child age is 15.

           บรรทัดที่ 4 ตัวแปร age ถูกประกาศให้มีชนิดจำนวนเต็ม และถูกกำหนดให้มีค่าเป็น 15 ในบรรทัดที่ 5

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

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

     ตัวอย่างที่ 3.2.2 โปรแกรมพิมพ์พิกัดของจุด

1 //Program: Coord.c
2 #include <stdio.h>
3 int main() {
4   int x1, y1;
5   int x2 = 5, y2 = 0;
6   x1 = 2;
7   y1 = 3;
8   printf(“The first coordinate is (%d, %d).\n”,x1 ,y1);
9   printf(“The second coordinate is (%d, %d).\n”,x2 ,y2);
10   getch();
11 }

     ผลลัพธ์ คือ

The first coordinate is (2, 3).
The second coordinate is (5, 0).

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

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

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

     ตัวอย่างที่ 3.2.3 โปรแกรมพิมพ์ตัวเลขฐานต่างๆ

1 //Program: PrnD-O-X.c
2 #include <stdio.h>
3 int main() {
4   int a = 78;
5   printf(“Value %d in decimal is %d.\n”,a ,a);
6   printf(“Value %d in octal is %o.\n”,a ,a);
7   printf(“Value %d in hexadecimal is ”,a);
8   printf(“%x or %X.\n”,a ,a);
9   getch();
10 }

     ผลลัพธ์ คือ

Value 78 in decimal is 78.
Value 78 in octal is 116.
Value 78 in hexadecimal is 4e or 4E.

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

           ชนิดข้อมูลจำนวนจริงในภาษาซีประกอบด้วย float double และ long double โดยชนิด float จะมีจำนวนตำแหน่งทศนิยมน้อยกว่าชนิด double และชนิด long double ตามลำดับ

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

     ตัวอย่างที่ 3.2.4 โปรแกรมพิมพ์คะแนน

1 //Program: PrnScore.c
2 #include <stdio.h>
3 int main() {
4   float score;
5   int score = 300.545;
6   printf(“Score are %f, %e ”,score ,score);
7   printf(“and %E. ”,score);
8   getch();
9 }

     ผลลัพธ์ คือ

Score are 300.545013, 3.005450e+02 and 3.005450E+02.

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

     ตัวอย่างที่ 3.2.5 โปรแกรมพิมพ์อุณหภุมิรูปแบบต่างๆ

1 //Program: PrnTemps.c
2 //พิมพ์อุณหภูมิรูปแบบต่างๆ
3 #include <stdio.h>
4 int main() {
5   float tempFri;
6   double tempSat;
7   tempFri = 12.345;
8   printf(“Friday temperature: %7.2f, ”,tempFri);
9   printf(“%10.3e, %10.3E. \n”,tempFri, tempFri);
10   tempSat = 1.2465e-5;
11   printf(“Saturday temperature: %7.2lf, ”,tempSat);
12   printf(“%7.5le, %7.5lE.\n”,tempSat, tempSat);
13   getch();
14 }

     ผลลัพธ์ คือ

Friday temperature: 12.35, 1.235e+01, 1.235E+01.
Saturday temperature: 0.000, 1.24650e-05, 1.25650E-05.

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



รูปแสดงผลการกำหนดจำนวนตำแหน่งข้อมูลด้วย

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

โรงเรียนคำนาดีพิทยาคม
ตำบลคำนาดี อำเภอโพนทอง จังหวัดร้อยเอ็ด
สำนักงานเขตพื้นที่การศึกษามัธยมศึกษา เขต 27
สำนักงานคณะกรรมการการศึกษาขั้นพื้นฐาน
กระทรวงศึกษาธิการ