ตัวแปรชุด

และตัวแปรกลุ่มอักขระ
ตัวแปรชุด
ตัวแปรชุ ด (array) เป็ นกลุ่มของข้อมูลชนิดเดียวกันที่กาหนดให้จดเก็บเรี ยง
ั
กันเป็ นลาดับตามจานวนที่ตองการ มี ชื่อตัวแปรเหมือนกันต่างกันที่ดชนี(index)ระบุ
้
ั
ตาแหน่งของตัวแปรในชุดนั้น การเก็บข้อมูลเป็ นตัวแปรชุด ทาให้ง่ายในการตั้งชื่อตัวแปร
จานวนมาก เข้าถึงข้อมูลได้เร็ว แต่ถาเก็บข้อมูลไม่ครบจะทาให้เสี ยเนื้อที่หน่วยความจา
้
โดยไม่จาเป็ น
ประเภทของตัวแปรชุ ด อาจแบ่ งตามลักษณะของจานวนตัวเลขของดัชนี คือ
1. ตัวแปรชุด 1 มิติ (one dimension arrays หรื อ single dimension arrays) เป็ นตัวแปรชุดที่มี
ตัวเลขแสดงขนาดเป็ นเลขตัวเดียว เช่น word[20] ,num[25] , x[15]
2. ตัวแปรชุดหลายมิติ (multi-dimension arrays) เป็ นตัวแปรชุดที่ชื่อมีตวเลขแสดงขนาดเป็ น
ั
ั
ตัวเลขหลายตัว ที่นิยมใช้กนมี 2 มิติ กับ 3 มิติ
2.1 ตัวแปรชุด 2 มิติ มีเลขแสดงขนาด 2 ตัว เช่น a[3][5] , name[5][6]
2.2 ตัวแปรชุด 3 มิติ มีเลขแสดงขนาด 3 ตัว เช่น a[3][5][6] , name[5][6][8]
การประกาศและการกาหนดค่ าตัวแปรชุ ด 1 มิติ
การประกาศตัวแปรชุด 1 มิติ ใช้คาสัง ดังนี้
่
Type arrayname[size];
type คือ ชนิดของตัวแปร เช่น int char float
arrayname คือชื่อของตัวแปรarray
size คือ ขนาดของตัวแปร
เช่น
int a[12]; เป็ นการประกาศตัวแปร array ชื่อ a เป็ น array ของข้อมูลประเภท
integer มีสมาชิกได้ จานวน 12 ตัว คือ a[0] a[1] a[2] a[3] … a[11] โดยมีการจองเนื้อที่
ในหน่วยความจาเปรี ยบเทียบได้ดงรู ป
ั
่
โดยสมาชิกแต่ละตัวจะใช้เนื้อที่เท่ากับตัวแปรประเภท integer ที่ไม่ได้อยูใน array คือ 2 ไบต์
ต่อ ตัวแปร 1 ตัวดังนั้นเนื้อที่หน่วยความจาที่ใช้ท้ งหมดจึงเท่ากับจานวนสมาชิก คูณ ด้วย 2
ั
ไบต์ การกาหนดค่าให้แก่ตวแปร array อาจกาหนดพร้อมกับการประกาศ เช่น
ั
int num1[3] ={56,25,89}; เป็ นการประกาศว่าตัว
แปร num1 เป็ น array ประเภท integer มีสมาชิก 3 ตัวโดย num1[0] =
56; ส่ วน num1[1]=25; และ num1[2]=89;
แต่ไม่สามารถประกาศว่า int value[ ] ; โดยถ้าจะไม่ระบุจานวนสมาชิก ต้องระบุ
ค่าของแต่ละสมาชิกที่ถูกล้อมรอบด้วย { }โดยระหว่างสมาชิกคันด้วยเครื่ องหมาย , (คอมม่า)
่
ดังตัวอย่าง inta[]={200,230};
หรื อ ประกาศตัวแปร โดยยังไม่กาหนดค่า เช่น int money[5]; แล้วไป
กาหนดค่าให้สมาชิกแต่ละตัวในภายหลัง เช่น money[0] =
250;
money[4] = 500;
float num[5]; เป็ นการประกาศตัวแปร array ของ ตัวแปร จานวนที่
มีทศนิยมได้ คือ float ในชื่อ num ซึ่งมีสมาชิกได้ 5 ตัว คือ num[0] num[1]…
num[4] มีการจองเนื้อที่ในหน่วยความจาเปรี ยบเทียบได้ ดังรู ป
โดยสมาชิกแต่ละตัวใช้หน่วยความจา 4 ไบต์ ดังนั้นทั้งหมดจะใช้หน่วยความจา 4 คูณ 5 คือ 20
ไบต์ โดยสมาชิก คือ num[0] มีค่าเป็ น 2.00 และ num[3] มีค่าเป็ น 55.52 ส่ วน num[1] ,
num[2] และ num[4] ยังไม่มีค่า ส่ วนการกาหนดค่าของตัวแปร array ประเภท float เป็ นไปใน
ลักษณะเดียวกับarray ประเภท integer ประกาศพร้อมกับกาหนดค่าให้เลยโดยล้อมรอบ
ด้วย { } และค่าของสมาชิกแต่ละตัวคันดัวย , (คอมม่า) เช่น
่
Float num[5] = {2.00,1.25,5.36,6.32,246.10}; โดยค่าของ num[0] = 2.00 ส่ วน
ของ num[1] = 1.25 ค่าของ num[2] = 5.36 ค่าของ num[3] = 6.32 และ num[4] =
246.10 ตามลาดับ หรื อประกาศตัวแปรก่อนแล้วไปกาหนด ค่าภายหลัง เช่น
float salary[10];
salary[0] = 25000.00;
salary[9] = 55600.00;
char a[12]; เป็ นการประกาศตัวแปร array ชื่อ a เป็ น array ของ ตัวแปร
อักขระ char มีสมาชิกได้ 12 ตัว คือ a[0] a[1] … a[11] โดยการใช้เนื้อที่ในหน่วยความจา
เปรี ยบเทียบได้ ดังรู ป
โดยที่สมาชิกแต่ละตัวใช้เนื้อที่ 1 ไบต์ ดังนั้น array ประเภท char ชุดนี้ ใช้เนื้อที่เป็ น12 x
ั
1 คือ 12 bytes ส่ วนการกาหนดค่าให้กบ array ประเภทนี้ จะพิจารณา ในหัวข้อต่างหาก
เพราะเป็ นตัวแปรประเภท ข้อความ (string variable) ซึ่ งมีลกษณะแตกต่างไปจาก
ั
พวก integer และ float
การประกาศและการกาหนดค่ าตัวแปรชุ ด 2 มิติ (two dimension arrays)
array 2 มิติ มีการจัดการจัดเก็บเปรี ยบเทียบคล้ายกับ ตาราง 2 มิติ มิติที่ 1 เปรี ยบเหมือนแถว(row) ของตาราง มิติที่ 2
เปรี ยบคล้ายกับสดมภ์(column)ของตาราง ดังรู ป

รู ปนี้เป็ น array ของ x[6] ซึ่งมีสมาชิกทั้งหมด 6 ตัว เปรี ยบเหมือนเก็บไว้ในตารางช่องละ 1 ตัว ดังนั้นจานวนสมาชิกจะมี
จานวน เท่ากับ จานวนแถว คูณ จานวนสดมภ์ โดยหน่วยความจาที่ใช้เท่ากับหน่วยความจาที่ใช้โดยตัวแปรแต่ละตัว คูณ
ด้วยจานวนตัวแปรทั้งหมดใน array เช่น ในรู ป ถ้าเป็ น array ของ จานวนเต็ม สมาชิกแต่ละตัวใช้หน่วยความจา 2 ไบต์
หน่วยความจาที่ใช้ท้ง คือ 2 x 6 คือ 12 ไบต์
ั
เราอาจพิจารณา array 2 มิติ ว่าเป็ น array ของ array 1 มิติ ดังรู ป
ในรู ปมี array 1 มิติ 3 ชุด คือ table[0] table[1] และ table[2] ต่างก็เป็ นสมาชิกใน array 2 มิติ ที่
ชื่อ table ดังนั้น array ชื่อ table จะมีสมาชิกทั้งหมด คือ สมาชิกของ array ทั้งสาม คือ table[0][0] , table[0][1]
… ถึง table[2][3] ทั้งหมด 12 ตัว โดยในสมาชิกเหล่านี้ บางตาแหน่งมีขอมูลแล้ว เช่น table[0][0] มีขอมูลเป็ น 10 โดย
้
้
การประกาศตัวแปร array 2 มิติ มีรูปแบบ คือ type arrayname [r] [c];
เมื่อ
type คือ ชนิดของข้อมูล เช่น int , float ,char
arrayname คือ ชื่อของ array เช่น num , word ,x
r , c คือ จานวนแถวและจานวนสดมภ์ ตามลาดับ
โดยตัวเลขกากับตาแหน่ง(ดัชนี ) เป็ น ในแถว r เป็ น 0,1,2 ... , r-1 ในสดมภ์ c เป็ น 0,1,2 ... , c-1
เช่น int num[3][4]; หมายความว่า มี array ของ integer ที่มีจานวน 3 แถว 4 สดมภ์ ดังนั้นมีสมาชิก ทั้งหมด 12 ตัว เริ่ ม
ด้วย num[0][0] , num[0][1] ,num[0][2],num[0][3],num[1][0],…,num[2][3]
การกาหนดค่าอาจกาหนดในขั้นตอนประกาศตัวแปร เช่น
char word[ ][ ] = {‚Bodin‛,‛decha‛,‛Computer‛,‛Pentium‛};
หมายความว่า word เป็ นตัวแปร array 2 มิติ ขนาด 4 x 9 ของสมาชิกที่เป็ นอักขระ โดยแต่ละสมาชิก มีขนาด 1 ไบต์
โดย word[0] = ‚Bodin‛ word[1] = "dehca‛ word[2] = "Computer"
ส่วน word[3] = ‚Pentium"
หรื อ ประกาศ โดยยังไม่กาหนดค่า แล้วกาหนดค่าภายหลังเช่น
int num[2][2];
num[0][1]=3;
ตัวแปร array 3 มิติ มีการประกาศ ดังนี้
type arrayname[p] [r][c];
type คือ ชนิดของตัวแปร เช่น int ,float,char
arrayname คือชื่อของตัวแปร
r,c,p คือตัวเลขแสดงจานวนในมิติที่ 1 มิติที่ 2 และมิติที่ 3 ของ array ตามลาดับ
โดยตัวเลขกากับตาแหน่ง(ดัชนี )เป็ นดังนี้
p เป็ น 0,1,2 .. , p-1
r เป็ น 0,1,2, ... ,r-1
c เป็ น 0,1,2 ... ,c-1
ลักษณะของ array 3 มิติ อาจเปรี ยบเทียบเพื่อ
ทาความเข้าใจ ว่าเป็ น arrays of arrays ดังรู ป
table [3][5][4] (อาจเขียนเป็ น table[5][4][3] หรื อแบบอื่นที่ให้ผลถึงจานวนที่เท่ากันก็ได้ แต่เวลาเขียน
โปรแกรมจะต้องทาเข้าใจให้ตลอดว่าเราเขียนแบบใดจะได้ไม่สบสนในการเขียนโปรแกรม)
ั
หรื อ อาจพิจารณาว่า เป็ น array of arrays ดังรู ป
เช่น table[0][0][0] ถึง table[0][0][0] เป็ นสมาชิกใน table[0][0] โดย table[0][0] ถึง table[0][4] เป็ นสมาชิก
ใน table[0] และ table[0] ถึง table[2] เป็ นสมาชิกใน table (ซึ่งก็คือ table[3[[5][4] ) โดยจานวนสมาชิก
ใน array เท่ากับ r *c *p เช่น array ในรู ป มีสมาชิกทั้งหมด 3 * 5 * 4 คือ 60 สมาชิก ส่วนการกาหนดค่าของ
สมาชิกของ array แต่สมาชิกก็เป็ นทานองเดียวกับ array 1 มิติ และ array 2 มิติ เช่นเดียวกับจานวนหน่วยความจาที่
็
ใช้กคือหน่วยความจาที่สมาชิกแต่ละตัวใช้ คูณด้วยจานวนสมาชิกทั้งหมด ทานองเดียวกัน array ยังสามารถ
มี array 4 มิติ ฯลฯ ได้ แต่ปกติไม่ใคร่ ได้ใช้และเขียนรู ปอธิบายได้ยาก เขียนได้แต่ในรู ปสัญลักษณ์
type arrayname[ ]...[ ]
บางคนอาจอธิบายสมาชิกของ array 3 มิติ ดังรู ป
ตัวอย่ าง ให้นกเรี ยนศึกษาโปรแกรม array5_1.c แล้วพิจารณาว่าโปรแกรมนี้จะทางานอย่างใด และค่าต่าง ๆใน array เป็ น
ั
เท่าใดบ้าง แล้วลอกโปรแกรม แล้วคอมไพล์และให้โปรแกรมทางาน แล้วพิจารณาว่าคาดคะเนถูกต้องหรื อไม่
/* array5_1.c */
# include <stdio.h>
# include <conio.h>
main()
{
clrscr();
float num[50];
float sum;
int i,time;
printf("n Enter the time of input that you want. :");
scanf("%d",&time);
sum = 0;
for (i=0;(i+1)<=time;i++)
{
printf("Please type the floating number for %d round :",i+1);
scanf("%f",&num[i]);
sum = sum + num[i];
}
printf("n Input = %d time sum.of them = %4.2f average of data is %4.2f",time ,sum ,sum/time);
}
ตัวอย่ าง ให้นกเรี ยนศึกษาโปรแกรม array5_2.c แล้วพิจารณาว่าโปรแกรมนี้จะทางานอย่างใด และค่าต่าง ๆใน array เป็ นเท่าใดบ้าง แล้วลอกโปรแกรม
ั
แล้วคอมไพล์และให้โปรแกรมทางาน แล้วพิจารณาว่าคาดคะเนถูกต้องหรื อไม่
/* array5_2.c */
# include <stdio.h>
# include <conio.h>
main()
{
clrscr();
float num[5][4] ;
char name[5][20] ={ "Chattam Sermsub","Sompol Somsuk","Kanokporn Kanok",
"Apinya Sittipa","Wimolsiri Sirimol"};
int time,i,j;
num[0][0] = 1.0; num[0][1] = 1.5; num[0][2] = 2.0; num[0][3] = 2.5;
num[1][0] = 1.5; num[1][1] = 2.0; num[1][2] = 2.5; num[1][3] = 3.0;
num[2][0] = 1.0; num[2][1] = 1.5; num[2][2] = 2.0; num[2][3] = 2.5;
num[3][0] = 1.5; num[3][1] = 2.0; num[3][2] = 2.5; num[3][3] = 3.0;
num[4][0] = 1.5; num[4][1] = 2.0; num[4][2] = 2.5; num[4][3] = 3.0;
printf("Enter number of Student :");
scanf("%d",&time);
for (i=0;(i+1)<=time;i=i+1)
{
printf("n Student no. %d is %s t has num.",i+1,name[i]);
for (j=0;(j+1)<=4;j++)
printf(", %4.2f ",num[i][j]);
}
}
ตัวแปรอักขระ
ตัวแปร หมายถึงชื่อเรี ยกแทนพื้นที่เก็บข้อมูลในหน่วยความจา มีชนิดของข้อมูล หรื อแบบของ
ตัวแปรคือ char, int, long, float, double, unsigned int, unsigned long int,
• การกาหนดตัวแปร ทาได้ 2 แบบ คือ
่
1. กาหนดไว้นอกกลุ่มคาสัง หรื อฟังก์ชน เรี ยกตัวแปรนี้วา Global Variable กาหนด
ั
่
ไว้นอกฟังก์ชน ใช้งานได้ท้งโปรแกรม มีค่าเริ่ มต้นเป็ น 0 (กรณี ไม่ได้กาหนดค่าเริ่ มต้น)
ั
ั
่
2. กาหนดไว้ในกลุ่มคาสัง หรื อฟังก์ชน เรี ยกตัวแปรนี้วา Local Variable กาหนดไว้
ั
่
ภายในฟังก์ชน ใช้งานได้ภายในฟั งก์ชนนั้น และไม่ถูกกาหนดค่าเริ่ มต้นโดยอัตโนมัติ
ั
ั
• การประกาศตัวแปร มีลกษณะดังนี้
ั
ชนิดตัวแปร ชื่อตัวแปร , ชื่อตัวแปร , ชื่อตัวแปร,.....;
• ชนิดของข้ อมูลในภาษาซี
1. ตัวแปรแบบ char เป็ นตัวแปรที่ใช้สาหรับเก็บข้อมูลที่เป็ นตัวอักษรขนาด 1 ตัว โดยใช้
เนื้อที่ในการเก็บ 1 ไบต์ ตัวอย่างตัวแปรชนิดนี้ เช่น ‘A’ , ‘b’ , ‘1’ , ‘?’
2. ตัวแปรแบบ integer เป็ นตัวแปรที่ใช้สาหรับการเก็บค่าตัวเลขที่เป็ นจานวนเต็มที่มีค่าระหว่าง
-32768 ถึง 32767 ใช้เนื้อที่ในการเก็บ 2 ไบต์ ตัวอย่างตัวแปรชนิดนี้ เช่น 5 -10 2534
3. ตัวแปรแบบ long เป็ นตัวแปรที่เก็บค่าเป็ นจานวนเต็มที่มีจานวนไบต์เป็ น 2 เท่าของจานวน
เดิม (มักจะใช้เป็ นคานาหน้าตัวแปร เช่น long int )
่
4. ตัวแปรแบบ float เป็ นตัวแปรที่ใช้เก็บข้อมูลที่เป็ นเลขทศนิยม โดยจะเก็บอยูในรู ป a.b x 10e
ใช้พ้ืนที่ในการเก็บ 4 ไบต์ มีค่าระหว่าง 3.4E-38 ถึง 3.4E+38 หรื อ แสดงเป็ น เลขทศนิยมได้ไม่เกิน
6 ตาแหน่ง ตัวอย่างตัวแปรชนิดนี้ เช่น 10.625 -6.67
5. ตัวแปรแบบ double เป็ นตัวแปรที่เก็บข้อมูลที่เป็ นเลขทศนิยมเหมือนกับ float แต่จะใช้พ้ืนที่
ในการเก็บมากกว่าเดิม 2 เท่า คือมีขนาด 8 ไบต์ มีค่าระหว่าง 1.7E-308 ถึง 1.7E+308
6. ตัวแปรแบบ unsigned แสดงว่าเป็ นตัวแปรที่เก็บค่าเป็ นจานวนเต็มแบบไม่คิดเครื่ องหมาย
(เป็ นบวกเท่านั้น) มักจะใช้เป็ นคานาหน้าตัวแปร ตัวอย่างการใช้งาน เช่น unsigned int
ตัวอย่ างที่ 1
บรรทัดที่ 1. #include<stdio.h>
บรรทัดที่ 2. #define PI 3.14159
บรรทัดที่ 3. int area; /* global variable */
บรรทัดที่ 4. main( )
บรรทัดที่ 5. { float radius; /* local variable */
บรรทัดที่ 6. float process() /* function declaration */
บรรทัดที่ 7. printf (‚Radius = ?‛); scanf (‚%f‛,radius);
บรรทัดที่ 8. process( );
บรรทัดที่ 9. printf(‚Area = %f‛,area);
บรรทัดที่ 10. printf(‚%f‛,radius);
}
บรรทัดที่ 11. float process( )
บรรทัดที่ 12. { float radius; /* local variable */
บรรทัดที่ 13 printf(‚Radius=?‛); scanf (‚%f‛,radius);
บรรทัดที่ 14 area=PI*radius*radius;
บรรทัดที่ 15 printf(‚Area = %f‛,area);
บรรทัดที่ 16 printf(‚%f‛,radius);
}
ตัวอย่ างที่ 2 int a ;
่
หมายความว่า ประกาศตัวแปร a เป็ นตัวแปรที่ใช้สาหรับเก็บค่าที่เป็ นเลขจานวนเต็มที่มีค่าอยูระหว่าง 35768 ถึง 32767
ตัวอย่างที่ 3 int num1=8;
หมายความว่า ประกาศตัวแปร num1 เป็ นตัวแปรที่เก็บค่าตัวเลขจานวนเต็ม โดยให้ค่าเริ่ มต้นเท่ากับ 8

ตัวอย่ างที่ 4 float money,price ;
หมายความว่า money และ price เป็ นตัวแปรที่ใช้สาหรับเก็บค่าที่เป็ นเลขทศนิยม โดยจะให้ตาแหน่ง
ทศนิยมได้ไม่เกิน 6 หลัก

ตัวอย่ างที่ 5 char ch=’A’
หมายความว่า ประกาศตัวแปร ch เป็ นตัวแปรที่เก็บค่าตัวอักษรเพียง 1 ตัว คือ ตัวอักษร ‘A’
ตัวอย่ างเพิมเติม
่
char a,b,c,d; /* ตัวแปร a,b,c,d เป็ นตัวแปรชนิด character */
unsigned e; /* ตัวแปร e เป็ นตัวแปรชนิด unsigned int */
char key = ?A?; /* ตัวแปร key เป็ นตัวแปรชนิด character มีค่า ?A? */
char name = ?SAM? /* ตัวแปร name เป็ นตัวแปรชนิด character มีค่า‛SAM‛ */
่
รายชือสมาชิก
จัดทาโดย
1.นายขรรค์เพชร นาควรรณ เลขที่ 1 ชั้น ม.5/4
2. นายสหพชร เพชรบรม
เลขที่ 2 ชั้น ม.5/4
3. นายจักกฤษ ประทุมนันท์ เลขที่ 4 ชั้น ม.5/4
4. นายสถาพร กาญจนะ
เลขที่ 8 ชั้น ม.5/4
5. นายนิธินนท์ วิมลพันธ์
ั
เลขที่ 10 ชั้น ม.5/4
6. นายเอกพล ปุณการี
เลขที่ 11 ชั้น ม.5/4

งาน

  • 1.
  • 2.
    ตัวแปรชุด ตัวแปรชุ ด (array)เป็ นกลุ่มของข้อมูลชนิดเดียวกันที่กาหนดให้จดเก็บเรี ยง ั กันเป็ นลาดับตามจานวนที่ตองการ มี ชื่อตัวแปรเหมือนกันต่างกันที่ดชนี(index)ระบุ ้ ั ตาแหน่งของตัวแปรในชุดนั้น การเก็บข้อมูลเป็ นตัวแปรชุด ทาให้ง่ายในการตั้งชื่อตัวแปร จานวนมาก เข้าถึงข้อมูลได้เร็ว แต่ถาเก็บข้อมูลไม่ครบจะทาให้เสี ยเนื้อที่หน่วยความจา ้ โดยไม่จาเป็ น
  • 3.
    ประเภทของตัวแปรชุ ด อาจแบ่งตามลักษณะของจานวนตัวเลขของดัชนี คือ 1. ตัวแปรชุด 1 มิติ (one dimension arrays หรื อ single dimension arrays) เป็ นตัวแปรชุดที่มี ตัวเลขแสดงขนาดเป็ นเลขตัวเดียว เช่น word[20] ,num[25] , x[15] 2. ตัวแปรชุดหลายมิติ (multi-dimension arrays) เป็ นตัวแปรชุดที่ชื่อมีตวเลขแสดงขนาดเป็ น ั ั ตัวเลขหลายตัว ที่นิยมใช้กนมี 2 มิติ กับ 3 มิติ 2.1 ตัวแปรชุด 2 มิติ มีเลขแสดงขนาด 2 ตัว เช่น a[3][5] , name[5][6] 2.2 ตัวแปรชุด 3 มิติ มีเลขแสดงขนาด 3 ตัว เช่น a[3][5][6] , name[5][6][8]
  • 4.
    การประกาศและการกาหนดค่ าตัวแปรชุ ด1 มิติ การประกาศตัวแปรชุด 1 มิติ ใช้คาสัง ดังนี้ ่ Type arrayname[size]; type คือ ชนิดของตัวแปร เช่น int char float arrayname คือชื่อของตัวแปรarray size คือ ขนาดของตัวแปร เช่น int a[12]; เป็ นการประกาศตัวแปร array ชื่อ a เป็ น array ของข้อมูลประเภท integer มีสมาชิกได้ จานวน 12 ตัว คือ a[0] a[1] a[2] a[3] … a[11] โดยมีการจองเนื้อที่ ในหน่วยความจาเปรี ยบเทียบได้ดงรู ป ั
  • 5.
    ่ โดยสมาชิกแต่ละตัวจะใช้เนื้อที่เท่ากับตัวแปรประเภท integer ที่ไม่ได้อยูในarray คือ 2 ไบต์ ต่อ ตัวแปร 1 ตัวดังนั้นเนื้อที่หน่วยความจาที่ใช้ท้ งหมดจึงเท่ากับจานวนสมาชิก คูณ ด้วย 2 ั ไบต์ การกาหนดค่าให้แก่ตวแปร array อาจกาหนดพร้อมกับการประกาศ เช่น ั int num1[3] ={56,25,89}; เป็ นการประกาศว่าตัว แปร num1 เป็ น array ประเภท integer มีสมาชิก 3 ตัวโดย num1[0] = 56; ส่ วน num1[1]=25; และ num1[2]=89; แต่ไม่สามารถประกาศว่า int value[ ] ; โดยถ้าจะไม่ระบุจานวนสมาชิก ต้องระบุ ค่าของแต่ละสมาชิกที่ถูกล้อมรอบด้วย { }โดยระหว่างสมาชิกคันด้วยเครื่ องหมาย , (คอมม่า) ่ ดังตัวอย่าง inta[]={200,230};
  • 6.
    หรื อ ประกาศตัวแปรโดยยังไม่กาหนดค่า เช่น int money[5]; แล้วไป กาหนดค่าให้สมาชิกแต่ละตัวในภายหลัง เช่น money[0] = 250; money[4] = 500; float num[5]; เป็ นการประกาศตัวแปร array ของ ตัวแปร จานวนที่ มีทศนิยมได้ คือ float ในชื่อ num ซึ่งมีสมาชิกได้ 5 ตัว คือ num[0] num[1]… num[4] มีการจองเนื้อที่ในหน่วยความจาเปรี ยบเทียบได้ ดังรู ป
  • 7.
    โดยสมาชิกแต่ละตัวใช้หน่วยความจา 4 ไบต์ดังนั้นทั้งหมดจะใช้หน่วยความจา 4 คูณ 5 คือ 20 ไบต์ โดยสมาชิก คือ num[0] มีค่าเป็ น 2.00 และ num[3] มีค่าเป็ น 55.52 ส่ วน num[1] , num[2] และ num[4] ยังไม่มีค่า ส่ วนการกาหนดค่าของตัวแปร array ประเภท float เป็ นไปใน ลักษณะเดียวกับarray ประเภท integer ประกาศพร้อมกับกาหนดค่าให้เลยโดยล้อมรอบ ด้วย { } และค่าของสมาชิกแต่ละตัวคันดัวย , (คอมม่า) เช่น ่ Float num[5] = {2.00,1.25,5.36,6.32,246.10}; โดยค่าของ num[0] = 2.00 ส่ วน ของ num[1] = 1.25 ค่าของ num[2] = 5.36 ค่าของ num[3] = 6.32 และ num[4] = 246.10 ตามลาดับ หรื อประกาศตัวแปรก่อนแล้วไปกาหนด ค่าภายหลัง เช่น float salary[10]; salary[0] = 25000.00; salary[9] = 55600.00; char a[12]; เป็ นการประกาศตัวแปร array ชื่อ a เป็ น array ของ ตัวแปร อักขระ char มีสมาชิกได้ 12 ตัว คือ a[0] a[1] … a[11] โดยการใช้เนื้อที่ในหน่วยความจา เปรี ยบเทียบได้ ดังรู ป
  • 8.
    โดยที่สมาชิกแต่ละตัวใช้เนื้อที่ 1 ไบต์ดังนั้น array ประเภท char ชุดนี้ ใช้เนื้อที่เป็ น12 x ั 1 คือ 12 bytes ส่ วนการกาหนดค่าให้กบ array ประเภทนี้ จะพิจารณา ในหัวข้อต่างหาก เพราะเป็ นตัวแปรประเภท ข้อความ (string variable) ซึ่ งมีลกษณะแตกต่างไปจาก ั พวก integer และ float
  • 9.
    การประกาศและการกาหนดค่ าตัวแปรชุ ด2 มิติ (two dimension arrays) array 2 มิติ มีการจัดการจัดเก็บเปรี ยบเทียบคล้ายกับ ตาราง 2 มิติ มิติที่ 1 เปรี ยบเหมือนแถว(row) ของตาราง มิติที่ 2 เปรี ยบคล้ายกับสดมภ์(column)ของตาราง ดังรู ป รู ปนี้เป็ น array ของ x[6] ซึ่งมีสมาชิกทั้งหมด 6 ตัว เปรี ยบเหมือนเก็บไว้ในตารางช่องละ 1 ตัว ดังนั้นจานวนสมาชิกจะมี จานวน เท่ากับ จานวนแถว คูณ จานวนสดมภ์ โดยหน่วยความจาที่ใช้เท่ากับหน่วยความจาที่ใช้โดยตัวแปรแต่ละตัว คูณ ด้วยจานวนตัวแปรทั้งหมดใน array เช่น ในรู ป ถ้าเป็ น array ของ จานวนเต็ม สมาชิกแต่ละตัวใช้หน่วยความจา 2 ไบต์ หน่วยความจาที่ใช้ท้ง คือ 2 x 6 คือ 12 ไบต์ ั เราอาจพิจารณา array 2 มิติ ว่าเป็ น array ของ array 1 มิติ ดังรู ป
  • 10.
    ในรู ปมี array1 มิติ 3 ชุด คือ table[0] table[1] และ table[2] ต่างก็เป็ นสมาชิกใน array 2 มิติ ที่ ชื่อ table ดังนั้น array ชื่อ table จะมีสมาชิกทั้งหมด คือ สมาชิกของ array ทั้งสาม คือ table[0][0] , table[0][1] … ถึง table[2][3] ทั้งหมด 12 ตัว โดยในสมาชิกเหล่านี้ บางตาแหน่งมีขอมูลแล้ว เช่น table[0][0] มีขอมูลเป็ น 10 โดย ้ ้ การประกาศตัวแปร array 2 มิติ มีรูปแบบ คือ type arrayname [r] [c]; เมื่อ type คือ ชนิดของข้อมูล เช่น int , float ,char arrayname คือ ชื่อของ array เช่น num , word ,x r , c คือ จานวนแถวและจานวนสดมภ์ ตามลาดับ โดยตัวเลขกากับตาแหน่ง(ดัชนี ) เป็ น ในแถว r เป็ น 0,1,2 ... , r-1 ในสดมภ์ c เป็ น 0,1,2 ... , c-1 เช่น int num[3][4]; หมายความว่า มี array ของ integer ที่มีจานวน 3 แถว 4 สดมภ์ ดังนั้นมีสมาชิก ทั้งหมด 12 ตัว เริ่ ม ด้วย num[0][0] , num[0][1] ,num[0][2],num[0][3],num[1][0],…,num[2][3] การกาหนดค่าอาจกาหนดในขั้นตอนประกาศตัวแปร เช่น char word[ ][ ] = {‚Bodin‛,‛decha‛,‛Computer‛,‛Pentium‛}; หมายความว่า word เป็ นตัวแปร array 2 มิติ ขนาด 4 x 9 ของสมาชิกที่เป็ นอักขระ โดยแต่ละสมาชิก มีขนาด 1 ไบต์ โดย word[0] = ‚Bodin‛ word[1] = "dehca‛ word[2] = "Computer" ส่วน word[3] = ‚Pentium" หรื อ ประกาศ โดยยังไม่กาหนดค่า แล้วกาหนดค่าภายหลังเช่น int num[2][2]; num[0][1]=3;
  • 11.
    ตัวแปร array 3มิติ มีการประกาศ ดังนี้ type arrayname[p] [r][c]; type คือ ชนิดของตัวแปร เช่น int ,float,char arrayname คือชื่อของตัวแปร r,c,p คือตัวเลขแสดงจานวนในมิติที่ 1 มิติที่ 2 และมิติที่ 3 ของ array ตามลาดับ โดยตัวเลขกากับตาแหน่ง(ดัชนี )เป็ นดังนี้ p เป็ น 0,1,2 .. , p-1 r เป็ น 0,1,2, ... ,r-1 c เป็ น 0,1,2 ... ,c-1 ลักษณะของ array 3 มิติ อาจเปรี ยบเทียบเพื่อ ทาความเข้าใจ ว่าเป็ น arrays of arrays ดังรู ป
  • 12.
    table [3][5][4] (อาจเขียนเป็น table[5][4][3] หรื อแบบอื่นที่ให้ผลถึงจานวนที่เท่ากันก็ได้ แต่เวลาเขียน โปรแกรมจะต้องทาเข้าใจให้ตลอดว่าเราเขียนแบบใดจะได้ไม่สบสนในการเขียนโปรแกรม) ั หรื อ อาจพิจารณาว่า เป็ น array of arrays ดังรู ป
  • 13.
    เช่น table[0][0][0] ถึงtable[0][0][0] เป็ นสมาชิกใน table[0][0] โดย table[0][0] ถึง table[0][4] เป็ นสมาชิก ใน table[0] และ table[0] ถึง table[2] เป็ นสมาชิกใน table (ซึ่งก็คือ table[3[[5][4] ) โดยจานวนสมาชิก ใน array เท่ากับ r *c *p เช่น array ในรู ป มีสมาชิกทั้งหมด 3 * 5 * 4 คือ 60 สมาชิก ส่วนการกาหนดค่าของ สมาชิกของ array แต่สมาชิกก็เป็ นทานองเดียวกับ array 1 มิติ และ array 2 มิติ เช่นเดียวกับจานวนหน่วยความจาที่ ็ ใช้กคือหน่วยความจาที่สมาชิกแต่ละตัวใช้ คูณด้วยจานวนสมาชิกทั้งหมด ทานองเดียวกัน array ยังสามารถ มี array 4 มิติ ฯลฯ ได้ แต่ปกติไม่ใคร่ ได้ใช้และเขียนรู ปอธิบายได้ยาก เขียนได้แต่ในรู ปสัญลักษณ์ type arrayname[ ]...[ ] บางคนอาจอธิบายสมาชิกของ array 3 มิติ ดังรู ป
  • 14.
    ตัวอย่ าง ให้นกเรียนศึกษาโปรแกรม array5_1.c แล้วพิจารณาว่าโปรแกรมนี้จะทางานอย่างใด และค่าต่าง ๆใน array เป็ น ั เท่าใดบ้าง แล้วลอกโปรแกรม แล้วคอมไพล์และให้โปรแกรมทางาน แล้วพิจารณาว่าคาดคะเนถูกต้องหรื อไม่ /* array5_1.c */ # include <stdio.h> # include <conio.h> main() { clrscr(); float num[50]; float sum; int i,time; printf("n Enter the time of input that you want. :"); scanf("%d",&time); sum = 0; for (i=0;(i+1)<=time;i++) { printf("Please type the floating number for %d round :",i+1); scanf("%f",&num[i]); sum = sum + num[i]; } printf("n Input = %d time sum.of them = %4.2f average of data is %4.2f",time ,sum ,sum/time); }
  • 15.
    ตัวอย่ าง ให้นกเรียนศึกษาโปรแกรม array5_2.c แล้วพิจารณาว่าโปรแกรมนี้จะทางานอย่างใด และค่าต่าง ๆใน array เป็ นเท่าใดบ้าง แล้วลอกโปรแกรม ั แล้วคอมไพล์และให้โปรแกรมทางาน แล้วพิจารณาว่าคาดคะเนถูกต้องหรื อไม่ /* array5_2.c */ # include <stdio.h> # include <conio.h> main() { clrscr(); float num[5][4] ; char name[5][20] ={ "Chattam Sermsub","Sompol Somsuk","Kanokporn Kanok", "Apinya Sittipa","Wimolsiri Sirimol"}; int time,i,j; num[0][0] = 1.0; num[0][1] = 1.5; num[0][2] = 2.0; num[0][3] = 2.5; num[1][0] = 1.5; num[1][1] = 2.0; num[1][2] = 2.5; num[1][3] = 3.0; num[2][0] = 1.0; num[2][1] = 1.5; num[2][2] = 2.0; num[2][3] = 2.5; num[3][0] = 1.5; num[3][1] = 2.0; num[3][2] = 2.5; num[3][3] = 3.0; num[4][0] = 1.5; num[4][1] = 2.0; num[4][2] = 2.5; num[4][3] = 3.0; printf("Enter number of Student :"); scanf("%d",&time); for (i=0;(i+1)<=time;i=i+1) { printf("n Student no. %d is %s t has num.",i+1,name[i]); for (j=0;(j+1)<=4;j++) printf(", %4.2f ",num[i][j]); } }
  • 16.
    ตัวแปรอักขระ ตัวแปร หมายถึงชื่อเรี ยกแทนพื้นที่เก็บข้อมูลในหน่วยความจามีชนิดของข้อมูล หรื อแบบของ ตัวแปรคือ char, int, long, float, double, unsigned int, unsigned long int, • การกาหนดตัวแปร ทาได้ 2 แบบ คือ ่ 1. กาหนดไว้นอกกลุ่มคาสัง หรื อฟังก์ชน เรี ยกตัวแปรนี้วา Global Variable กาหนด ั ่ ไว้นอกฟังก์ชน ใช้งานได้ท้งโปรแกรม มีค่าเริ่ มต้นเป็ น 0 (กรณี ไม่ได้กาหนดค่าเริ่ มต้น) ั ั ่ 2. กาหนดไว้ในกลุ่มคาสัง หรื อฟังก์ชน เรี ยกตัวแปรนี้วา Local Variable กาหนดไว้ ั ่ ภายในฟังก์ชน ใช้งานได้ภายในฟั งก์ชนนั้น และไม่ถูกกาหนดค่าเริ่ มต้นโดยอัตโนมัติ ั ั • การประกาศตัวแปร มีลกษณะดังนี้ ั ชนิดตัวแปร ชื่อตัวแปร , ชื่อตัวแปร , ชื่อตัวแปร,.....;
  • 17.
    • ชนิดของข้ อมูลในภาษาซี 1.ตัวแปรแบบ char เป็ นตัวแปรที่ใช้สาหรับเก็บข้อมูลที่เป็ นตัวอักษรขนาด 1 ตัว โดยใช้ เนื้อที่ในการเก็บ 1 ไบต์ ตัวอย่างตัวแปรชนิดนี้ เช่น ‘A’ , ‘b’ , ‘1’ , ‘?’ 2. ตัวแปรแบบ integer เป็ นตัวแปรที่ใช้สาหรับการเก็บค่าตัวเลขที่เป็ นจานวนเต็มที่มีค่าระหว่าง -32768 ถึง 32767 ใช้เนื้อที่ในการเก็บ 2 ไบต์ ตัวอย่างตัวแปรชนิดนี้ เช่น 5 -10 2534 3. ตัวแปรแบบ long เป็ นตัวแปรที่เก็บค่าเป็ นจานวนเต็มที่มีจานวนไบต์เป็ น 2 เท่าของจานวน เดิม (มักจะใช้เป็ นคานาหน้าตัวแปร เช่น long int ) ่ 4. ตัวแปรแบบ float เป็ นตัวแปรที่ใช้เก็บข้อมูลที่เป็ นเลขทศนิยม โดยจะเก็บอยูในรู ป a.b x 10e ใช้พ้ืนที่ในการเก็บ 4 ไบต์ มีค่าระหว่าง 3.4E-38 ถึง 3.4E+38 หรื อ แสดงเป็ น เลขทศนิยมได้ไม่เกิน 6 ตาแหน่ง ตัวอย่างตัวแปรชนิดนี้ เช่น 10.625 -6.67 5. ตัวแปรแบบ double เป็ นตัวแปรที่เก็บข้อมูลที่เป็ นเลขทศนิยมเหมือนกับ float แต่จะใช้พ้ืนที่ ในการเก็บมากกว่าเดิม 2 เท่า คือมีขนาด 8 ไบต์ มีค่าระหว่าง 1.7E-308 ถึง 1.7E+308 6. ตัวแปรแบบ unsigned แสดงว่าเป็ นตัวแปรที่เก็บค่าเป็ นจานวนเต็มแบบไม่คิดเครื่ องหมาย (เป็ นบวกเท่านั้น) มักจะใช้เป็ นคานาหน้าตัวแปร ตัวอย่างการใช้งาน เช่น unsigned int
  • 19.
    ตัวอย่ างที่ 1 บรรทัดที่1. #include<stdio.h> บรรทัดที่ 2. #define PI 3.14159 บรรทัดที่ 3. int area; /* global variable */ บรรทัดที่ 4. main( ) บรรทัดที่ 5. { float radius; /* local variable */ บรรทัดที่ 6. float process() /* function declaration */ บรรทัดที่ 7. printf (‚Radius = ?‛); scanf (‚%f‛,radius); บรรทัดที่ 8. process( ); บรรทัดที่ 9. printf(‚Area = %f‛,area); บรรทัดที่ 10. printf(‚%f‛,radius); } บรรทัดที่ 11. float process( ) บรรทัดที่ 12. { float radius; /* local variable */ บรรทัดที่ 13 printf(‚Radius=?‛); scanf (‚%f‛,radius); บรรทัดที่ 14 area=PI*radius*radius; บรรทัดที่ 15 printf(‚Area = %f‛,area); บรรทัดที่ 16 printf(‚%f‛,radius); }
  • 20.
    ตัวอย่ างที่ 2int a ; ่ หมายความว่า ประกาศตัวแปร a เป็ นตัวแปรที่ใช้สาหรับเก็บค่าที่เป็ นเลขจานวนเต็มที่มีค่าอยูระหว่าง 35768 ถึง 32767 ตัวอย่างที่ 3 int num1=8; หมายความว่า ประกาศตัวแปร num1 เป็ นตัวแปรที่เก็บค่าตัวเลขจานวนเต็ม โดยให้ค่าเริ่ มต้นเท่ากับ 8 ตัวอย่ างที่ 4 float money,price ; หมายความว่า money และ price เป็ นตัวแปรที่ใช้สาหรับเก็บค่าที่เป็ นเลขทศนิยม โดยจะให้ตาแหน่ง ทศนิยมได้ไม่เกิน 6 หลัก ตัวอย่ างที่ 5 char ch=’A’ หมายความว่า ประกาศตัวแปร ch เป็ นตัวแปรที่เก็บค่าตัวอักษรเพียง 1 ตัว คือ ตัวอักษร ‘A’
  • 21.
    ตัวอย่ างเพิมเติม ่ char a,b,c,d;/* ตัวแปร a,b,c,d เป็ นตัวแปรชนิด character */ unsigned e; /* ตัวแปร e เป็ นตัวแปรชนิด unsigned int */ char key = ?A?; /* ตัวแปร key เป็ นตัวแปรชนิด character มีค่า ?A? */ char name = ?SAM? /* ตัวแปร name เป็ นตัวแปรชนิด character มีค่า‛SAM‛ */
  • 22.
    ่ รายชือสมาชิก จัดทาโดย 1.นายขรรค์เพชร นาควรรณ เลขที่1 ชั้น ม.5/4 2. นายสหพชร เพชรบรม เลขที่ 2 ชั้น ม.5/4 3. นายจักกฤษ ประทุมนันท์ เลขที่ 4 ชั้น ม.5/4 4. นายสถาพร กาญจนะ เลขที่ 8 ชั้น ม.5/4 5. นายนิธินนท์ วิมลพันธ์ ั เลขที่ 10 ชั้น ม.5/4 6. นายเอกพล ปุณการี เลขที่ 11 ชั้น ม.5/4