ชดุ ท5ี่ ตัวแปรชดุ (Array) เฉลยบัตรกิจกรรมกำรเรยี นรูท้ ่ี 1 10 เรื่อง ตวั แปรชุด 1. ถา้ มีการประกาศตัวแปร n เป็นแถวลาดับดงั น้ี int n[5]; 1.1 เราสามารถอ้างถงึ สมาชิกแต่ละตัวของ n ไดโ้ ดยวิธใี ด สามารถอ้างถึงสมาชิกแต่ละตัวของ n ได้โดย n[0], n[1], n[2], n[3], n[4] 1.2 เราสามารถอ้างถึงสมาชกิ n[5] ได้หรอื ไม่ เพราะเหตใุ ด และมีข้อควรระวงั หรอื ขอ้ จากัดอยา่ งไร เราสามารถอ้างองิ สมาชกิ n[5] ได้ เนอื่ งจากภาษาซีไม่มีการตรวจสอบขอบเขตของการอา้ งอิง ดัชนใี นตัวแปรแถวลาดบั แต่อาจกอ่ ให้เกดิ ความผิดพลาดในขณะรันโปรแกรม 1.3 ถา้ ต้องการกาหนดคา่ เริม่ ต้นใหก้ ับสมาชกิ ทุกตัวในแถวลาดับ n มคี ่าเปน็ 0 (ศูนย์) ต้อง ใชค้ าสัง่ ใด Int n[5] = {0}; 2. แถวลาดับตอ่ ไปน้ี มีขนาดเปน็ เท่าใด ถา้ กาหนด #define SIZE 5 ขนาด แถวลาดบั 5 5 2.1 int n[ ] = {1, 2, 3, 4, 5}; 5 2.2 int s[SIZE]; 6 2.3 Int n[SIZE] = {0, 2, 4} 15 2.4 char str1[ ] = ‘H’ , ’E’ , ‘l’ , ‘l’ , ‘o’ , ‘\\0’}; 2.5 char str2[ ] = “Hello everyone”; ชดุ กิจกรรมการเรยี นรกู้ ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 50 รายวชิ าภาษาซี ง30243 ชน้ั มัธยมศึกษาปที ี่ 5
ชุดท5่ี ตัวแปรชุด (Array) เฉลยบัตรกิจกรรมกำรเรยี นร้ทู ี่ 1 เร่ือง ตวั แปรชดุ 3. ใหพ้ ิจารณาว่าคาส่ังหรือชุดคาสั่งตอ่ ไปน้ีผดิ หรือไม่ เพราะเหตใุ ด 3.1 char str[6] = {‘w’ , ‘I’ , ‘n’ , ‘d’ , ‘o’ , ‘w’ , ‘s’}; ไม่ผดิ พราะ str จะมสี มาชกิ เปน็ ‘w’, ‘I’ , ‘n’ , ‘d’ , ‘o’ , ‘w’ , ‘s’ เท่านน้ั และไม่มี ‘\\0’ ปดิ ท้ายแต่ไม่ควรใชง้ านในลกั ษณะแบบน้เี พราะเมื่อมีการอา้ งถงึ str ในแบบสายอกั ขระจะถอื วา่ สาย อกั ขระจบเมอ่ื พบอักขระ ‘\\0’ ซึง่ ในทน่ี ไี้ มส่ ามารถบอกไดว้ า่ สายอักขระนีม้ คี วามยาวทแ่ี น่นอนเป็น เท่าใด และอาจจะทาให้เกดิ ความผดิ พลาดในขณะรันโปรแกรมไดด้ ้วย 3.2 float weight[4] = {35, 45, 42, 60, 46, 62}; ไม่ผิด แต่ weight จะมีสมาชิกเพยี ง 4 ตัวคอื 35, 45, 42 และ 60 3.3 char str[6] = “windows”; ไมผ่ ิด แต่ str จะมสี มาชกิ เพียง 6 ตัวคอื w, i, n, d, o และ w 3.4 char str[9] = “windows”; ไมผ่ ิด 3.5 int b[10] = {0}, I; for (i=0; I <=10; i++) b[i] = I; โปรแกรมสามสรถรันได้ แตผ่ ิด เพราะมกี ารอ้างองิ ตัวแปร b[10] ซ่งึ ไม่ไดป้ ระกาศไว้ ชดุ กจิ กรรมการเรยี นรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 51 รายวชิ าภาษาซี ง30243 ชน้ั มธั ยมศกึ ษาปีที่ 5
ชดุ ท5่ี ตัวแปรชดุ (Array) เฉลยบัตรกจิ กรรมกำรเรยี นร้ทู ี่ 1 เร่อื ง ตวั แปรชดุ 4. ผลลัพธ์ทีไ่ ดจ้ ากการรันสว่ นของโปรแกรมตอ่ ไปนค้ี ืออะไร int I; ”, a[i]; int a[10]; for (i=0; i<10; i++) a[i] = 2*I; for (i=0; i<10; i++) printf(“%d printf(“\\n”); 0 2 4 6 8 10 12 14 16 18 5. ใหเ้ ขียนคาสง่ั หรือชุดของคาสัง่ เพือ่ ดาเนนิ การในแตล่ ะข้อต่อไปน้ี 5.1 ประกาศตวั แปรแถวลาดับ height ท่มี ขี นาด 10 โดยใช้ค่าคงท่ี SIZE #define SIZE 10 Int height [SIZE]; 5.2 บวก 1 เข้ากับสมาชิกทุกตวั ของ height for (i = 1; I < SIZE; i++); height [i]++; 5.3 แสดงค่าของสมาชิกตัวสุดทา้ ยของ height printf (“%d\\n”, height [SIZE-1]); 5.4 แสดงคา่ ของสมาชกิ ตัวที่ 7 ของ height printf (“%d\\n”, height [6]); ชุดกิจกรรมการเรยี นรู้การเขยี นโปรแกรมภาษาคอมพิวเตอร์ 52 รายวชิ าภาษาซี ง30243 ชน้ั มธั ยมศกึ ษาปีที่ 5
ชดุ ท5่ี ตัวแปรชดุ (Array) เฉลยบัตรกจิ กรรมกำรเรยี นรู้ที่ 2 20 เร่ือง ค่ำคงทสี่ ตรงิ ตัวแปรสตรงิ และฟังกช์ ัน กาหนดให้ table เป็นแถวลาดับสองมิตชิ นิด int ที่มี 3 แถว 3 คอลัมนใ์ หน้ กั เรียนตอบคาถามตอ่ ไปน้ี 1. ให้เขยี นคาสง่ั ประกาศตวั แปรแถวลาดับ table ถา้ สมมตวิ ่ามีการกาหนดคา่ คงที่ SIZE เปน็ 3 ไว้ เรียบร้อยแลว้ int table [SIZE, SIZE] 2. แถวลาดับ table มีสมาชกิ ทั้งหมด 9 ตัว ได้แก่ table[0,0], table[0,1], table[0,2], table[1,0], table[1,1], table[0,2], table[2,0], table[2,1], table[2,2] 3. เขียนคาสง่ั โดยใช้คาส่งั วนซ้า for กาหนดคา่ เริ่มตน้ ให้กับสมาชกิ ของแถวลาดับ table ในขอ้ 1 ใหม้ ี ค่าเท่ากบั ผลบวกของดัชนขี องแถว และดัชนีของคอลัมน์ int I, j; for (j=0; i<SIZE; j++); for (i-0; j<SIZE; i++); table[I,j] = i+j; 4. เขียนคาสงั่ เพือ่ หาผลบวกของสมาชกิ บนแนวเส้นทะแยงมมุ หลักทกุ ตัวของ table int I,j,sum=0; for (j=0; i<SIZE; j++) for (i=0; j<SIZE; i++) if (i == j) sum += table[I,j]; printf (“diagonal sum = %d\\n”, sum) 5. เขยี นคาสง่ั พมิ พค์ ่าสมาชกิ ทกุ ตวั ของแถวลาดบั table ถ้ากาหนดค่าเรมิ่ ตน้ ให้ดังนี้ int table [SIZE] [SIZE] = { {1,8}, {2,4,6}, {5} }; int I,j; for (j=0; i<SIZE; j++) for (i=0; j<SIZE; i++) printf (“table [%d, %d] = %d\\n”, i, j, table[i,j]); ชดุ กจิ กรรมการเรียนรกู้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 53 รายวชิ าภาษาซี ง30243 ช้ันมธั ยมศกึ ษาปที ่ี 5
ชุดท5่ี ตวั แปรชุด (Array) เฉลยแบบทดสอบหลงั เรียน เรือ่ ง ตวั แปรชุด (Array) ชอ่ื .................................................................................... ชน้ั ................ เลขท่ี .............. ข้อท่ี ก ข ค ง 1. × 2. × 3. × 4. × 5. × 6. × 7. × 8. × 9. × 10. × ชดุ กิจกรรมการเรยี นรกู้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 54 รายวชิ าภาษาซี ง30243 ช้ันมัธยมศกึ ษาปีที่ 5
Search