ชนิดของข้อมูล
ข้อมูลที่ใช้ในการเขียนโปรแกรมมีหลายชนิด
ซึ่งการเขียนโปรแกรมต้องเลือกใช้ให้เหมาะสมกับการใช้งาน
เพราะข้อมูลมีขนาดแตกต่างกันไปตามชนิดของข้อมูล นอกจากนี้
ข้อมูลยังมีความแตกต่างกันโดยขึ้นกับเครื่องคอมพิวเตอร์
และตัวแปรโปรแกรมที่ใช้ในการประมวลผล แต่โดยทั่วไปแล้วในไมโครคอมพิวเตอร์
ชนิดข้อมูลมีการใช้ในโปรแกรม และขนาดดังนี้ตารางที่ 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=# 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/