More Related Content More from Noom Sataporn (7) งาน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. ในรู ปมี 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;
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. ตัวอย่ างที่ 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’
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