ชุดท5่ี ตัวแปรชดุ (Array) บัตรเนอ้ื หาท่ี 1 ตัวแปรชุด สำหรบั เนอ้ื หำในบทนี้ จะได้เรยี นรเู้ ก่ยี วกบั ตัวแปรอกี ชนดิ หน่งึ น่นั คอื ตัวแปรชดุ (arrays) และเนือ้ หำ เกย่ี วกบั สตรงิ (string) ซ่งึ เปน็ พนื้ ฐำนทส่ี ำคญั ในกำรจัดเก็บขอ้ มูลและโครงสรำ้ งของข้อมูลโดยเฉพำะอยำ่ งย่งิ ตวั แปรชุดมปี ระโยชนห์ ลำยประกำรดงั น้ี 1) ชว่ ยลดกำรตัง้ ชือ่ ซ้ำ ๆ กัน เชน่ ต้องกำรเก็บค่ำตัวเลขจำนวนเตม็ 100 ตัว ถำ้ ไมม่ ีกำรใช้ตวั แปรชดุ เรำจะต้องประกำศตัวแปรถึง 100 ตัว ดังน้ี int k1, k2, k3, …, k100; /* ประกำศตวั แปร k1, k2, k3, …, k100 จำนวน 100 ตวั */ แตถ่ ำ้ เรำใช้ตัวแปร ชุดมำชว่ ยในกำรเก็บขอ้ มูลตัวเลขชดุ น้ี เรำสำมำรถเก็บตัวเลข 100 ตัวนไี้ วใ้ นช่ือเดียวกนั แต่มี ตวั เลข subscript คอยกำกบั เพื่อบง่ บอกถึงลำดับทข่ี องข้อมูลในตัวแปรได้ int k[100]; /* ประกำศตัวแปรชุด 1 ตัว คอื ชื่อตัวแปร k */ 2) ช่วยในกำรจดั เก็บข้อมูลแบบตำรำง (table) โดยสำมำรถใช้ตวั แปรชุด 2 มติ ิ มำเก็บขอ้ มลู ได้ 3) ชว่ ยในกำรเขยี นโปรแกรมมีประสิทธภิ ำพมำกขึ้น เนื่องจำกในโปรแกรมที่มกี ำรใชต้ วั แปรชุดจะมีตัว แปรน้อยลง ชว่ ยในกำรจัดเรยี งข้อมลู และคน้ หำข้อมลู ไดส้ ะดวกและรวดเร็ว ตัวแปรชุด (arrays variables) ตัวแปรชดุ คอื ตวั แปรชนิดหนึง่ ที่ใช้ชอื่ เพียงชอ่ื เดียวแต่มีตวั เลขแสดงตำแหนง่ กำกบั ไว้ (subscript) 1 เพ่ือเป็นกำรบอกวำ่ เป็นสมำชิกของตัวแปรชดุ ตวั ที่เท่ำไหร่ ประเภทของตัวแปรชดุ มดี งั น้ี 1. ตัวแปรชุด 1 มิติ (one dimension arrays หรือ single dimension arrays) ตัวแปร ชุด 1 มิติ คือ ตัวแปรชุดที่มีตัวเลข กำกับ (subscript) เพียง 1 ตัวเช่น a[20], b[100], name[30] และ salary[20] เป็นต้น 2. ตัวแปรชุดหลายมิติ (multi-dimension arrays) ตัวแปรชุดหลำยมิติ คือ ตัวแปรชุดที่มี ตัวเลขก ำกับ (subscript) ตั้งแต่ 2 ตัวขึ้นไป โดยมำกจะสนใจศึกษำตัวแปรชุดที่มีตัวเลขก ำกับ 2 ตัว และ 3 ตวั ดังน้ี ชดุ กิจกรรมการเรยี นรกู้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ รายวชิ าภาษาซี ง30243 ช้ันมธั ยมศึกษาปีที่ 5
ชุดท5่ี ตัวแปรชดุ (Array) ตัวแปรชุด 2 มิติ (two dimension arrays) คือ ตัวแปรชุดที่มีตัวเลข ก ำกับ (subscript) เพียง 2 ตัว เชน่ a[2][4], b[3][4], name[5][30] เป็นตน้ ตัวแปรชุด 3 มิติ (three dimension arrays) คือ ตัวแปรชุดที่มีตัวเลขก ำกับ (subscript) เพยี ง 3 ตัว เช่น a[2][3][4], b[3][4][5] เป็นต้น การประกาศตัวแปรชุด (declaration of arrays) การประกาศตัวแปรชุด (declaration of arrays) สำมำรถทำได้ดงั นี้ 1. กำรประกำศตวั แปรชุด 1 มติ ิ (declaration of one dimension arrays) type arrayname [size]; โดยท่ี type คอื ชนดิ ของตัวแปรชุด เชน่ int, float, char, double เปน็ ต้น arrayname คอื ชอ่ื ตวั แปรชุด ต้งั ขนึ้ ตำมหลักกำรตั้งชื่อตวั แปร size คอื ขนำดของตัวแปรชุดเปน็ ตวั เลขจำนวนเต็ม ตวั อยา่ งการประกาศตัวแปรชดุ 1 มิติ ตัวอย่างท่ี 5.1 int s[20]; ภำยในหนว่ ยควำมจำจะมีกำรจองเนอ้ื ทไี่ ว้ดังน้ี กำรจองเนอ้ื ทีใ่ ช้ชอ่ งละ 2 bytes 20 ชอ่ ง รวมกนั ทั้งหมดใช้เน้ือท่ี 40 bytes ชดุ กิจกรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 2 รายวชิ าภาษาซี ง30243 ช้นั มัธยมศกึ ษาปที ่ี 5
ชุดท5่ี ตวั แปรชุด (Array) ตวั อยา่ งท่ี 5.2 char p[20]; ภำยในหน่วยควำมจำจะมีกำรจองเนือ้ ทไี่ ว้ดงั นี้ กำรจองเนือ้ ท่ใี ช้ช่องละ 1 bytes 20 ช่อง รวมกนั ท้งั หมดใช้เนือ้ ท่ี 20 bytes ตวั อย่างที่ 5.3 float t[20]; ภำยในหน่วยควำมจำจะมีกำรจองเน้อื ทีไ่ ว้ดังนี้ กำรจองเนอ้ื ที่ใชช้ อ่ งละ 4 bytes 20 ชอ่ ง รวมกนั ทงั้ หมดใชเ้ นื้อที่ 80 bytes 3 ขอ้ ควรจา กำรจองเน้ือทใี่ นหนว่ ยควำมจำของตวั แปรชดุ จะใช้เนอ้ื ที่เทำ่ ไร ขึ้นอยกู่ บั ชนดิ ของตวั แปรชดุ และสมำชกิ ของตวั แปรชดุ 2. กำรประกำศตัวแปรชดุ 2 มติ ิ (declaration of two dimension arrays) type arrayname [n][m]; โดยท่ี type คอื ชนิดของตัวแปรชดุ เชน่ int, float, char, double เป็นต้น arrayname คอื ช่ือตัวแปรชดุ ตัง้ ข้ึนตำมหลกั กำรตัง้ ช่ือตัวแปร n คือ ตวั เลขทใ่ี ช้แสดงตำแหนง่ แถว (row) มีคำ่ ต้ังแต่ 0, 1, 2, …, n-1 m คือ ตัวเลขที่ใชแ้ สดงตำแหน่งคอลมั น์ (column) มคี ำ่ ตั้งแต่ 0, 1, 2, …, m-1 ชดุ กจิ กรรมการเรยี นรกู้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ รายวชิ าภาษาซี ง30243 ชน้ั มธั ยมศกึ ษาปีที่ 5
ชดุ ท5ี่ ตวั แปรชดุ (Array) ตัวอยา่ งการประกาศตัวแปรชุด 2 มติ ิ ตัวอย่างที่ 5.4 int r[3][2]; ภำยในหนว่ ยควำมจำจะมกี ำรจองเนือ้ ที่ไว้ดงั นี้ กำรจองเนื้อที่ของตัวแปรชุด 2 มิติ จะมีลักษณะเป็นตำรำง (table) มีจำนวนแถว n = 0, 1, 2 และมจี ำนวนคอลัมน์ m = 0, 1 โดยทใี่ นตำรำงจะมีลักษณะเป็นช่อง ๆ ซ่ึงแตล่ ะช่องกค็ อื พน้ื ท่ีของสมำชิก แตล่ ะตวั โดยใชเ้ นอ้ื ท่ชี อ่ งละ 2 bytes มีสมำชิกท้ังหมด 6 ตวั ดงั นั้นใช้เนือ้ ทที่ ั้งหมด 12 bytes วิธกี ารหาจานวนสมาชกิ ทง้ั หมดของตวั แปรชุด 1 มติ ิ และ 2 มิติ กำรหำจำนวนสมำชกิ ท้ังหมดของตัวแปรชุด สำมำรถคำนวณได้จำกสูตรดังน้ี กรณีตวั แปรชุด 1 มิติ จำนวนสมำชิกท้ังหมดของตวั แปรชุด = ขนำดของตวั แปรชุด (size) กรณีตวั แปรชุด 2 มติ ิ จำนวนสมำชกิ ทัง้ หมดของตวั แปรชุด = n*m จำกตัวอยำ่ ง int r[3] [2]; จะได้ว่ำ n = 3, m = 2 ดงั นั้น จำนวนสมำชกิ ของตวั แปร ชุด = 3*2 = 6 แสดงวำ่ ตัวแปรชุดนมี้ ีสมำชกิ ดงั น้ี r[0][0], r[0][1], r[n-1][m-1] รวมทงั้ หมด 6 สมำชิก ตวั อย่างที่ 5.5 float X[5] [4]; ภำยในหนว่ ยควำมจำจะมกี ำรจองเนื้อท่ไี ว้ดังน้ี ชดุ กิจกรรมการเรยี นร้กู ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 4 รายวชิ าภาษาซี ง30243 ช้ันมัธยมศกึ ษาปที ี่ 5
ชดุ ท5ี่ ตัวแปรชดุ (Array) กำรจองเนื้อท่ีจะมีลักษณะเป็นตำรำง (table) มีจำนวนแถว n = 0, 1, 2, 3, 4 และมีจำนวนคอลัมน์ m = 0, 1, 2, 3 โดยที่ในตำรำงใช้เนื้อที่ช่องละ 4 bytes มีจำนวนทั้งหมด 20 ตัว ดังนั้นใช้เนื้อ ท้งั หมด 80 bytes ข้อควรจา กำรจองเนอ้ื ทีใ่ นหนว่ ยควำมจำของตัวแปร 2 มติ ิ จะมีลกั ษณะเปน็ ตำรำง ขนำด n*m โดยท่ี n = จำนวนแถว และ m = จำนวนคอลมั น์ 3. กำรประกำศตัวแปรชดุ 3 มิติ (declaration of three dimension arrays) type arrayname [n][m][p]; โดยท่ี type คอื ชนดิ ของตัวแปรชดุ เชน่ int, float, char, double เปน็ ต้น arrayname คือ ชื่อตวั แปรชุดตัง้ ขนึ้ ตำมหลกั กำรตงั้ ช่ือตวั แปร n คือ ตวั เลขกำกับตัวที่ 1 มีค่ำตั้งแต่ 0, 1, 2, …., n-1 m คือ ตัวเลขกำกับตวั ท่ี 2 มีค่ำต้ังแต่ 0, 1, 2, …., m-1 p คือ ตัวเลขกำกับตัวที่ 3 มคี ่ำต้ังแต่ 0, 1, 2, …., p-1 วธิ ีการหาจานวนสมาชิกท้งั หมดในตัวแปรชดุ 3 มิติ วธิ ีการหาจานวนสมาชิกท้งั หมดในตัวแปรชุด 3 มติ ิ หำได้จำกสตู รดังนี้ จำนวนสมำชิกทง้ั หมดของตัวแปรชุด = n*m*p ตัวอยำ่ งกำรประกำศตัวแปรชุด 3 มติ ิ float a[2][2][3]; ดังนน้ั n = 2 , m = 2, p = 3 จะได้ว่ำจำนวน สมำชกิ ท้งั หมดของตัวแปรชุด = 2*2*3 = 12 ตวั ดงั นน้ั เรำสำมำรถเขยี นสมำชิกทง้ั หมดของตัวแปรชดุ นีไ้ ด้ดงั ตำรำง ชุดกจิ กรรมการเรยี นร้กู ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 5 รายวชิ าภาษาซี ง30243 ชั้นมัธยมศึกษาปีที่ 5
ชุดท5ี่ ตัวแปรชดุ (Array) Column 0 Column 1 ตวั ที่ 1 ตวั ที่ 2 ตัวที่ 3 ตัวที่ 1 ตัวท่ี 2 ตัวที่ 3 Row 0 a[0][0][0] a[0][0][1] a[0][0][2] a[0][1][0] a[0][1][1] a[0][1][2] Row 1 a[1][0][0] a[1][0][1] a[1][0][2] a[1][1][0] a[1][1][1] a[1][1][2] โดยทีส่ มำชิกแต่ละตัวใชเ้ นอื้ ทต่ี ัวละ 4 bytes จำนวนสมำชิกทัง้ หมดมี 12 ตัว ดงั นน้ั ใชเ้ น้ือที่ ทง้ั หมดคอื 4*12 = 48 bytes การกาหนดค่าเร่ิมต้นใหก้ บั ตัวแปรชุด (initializing arrays) 1. กำรกำหนดค่ำตัวเลขให้กับตวั แปรชดุ รูปแบบท่ี 1 (กรณีตวั แปรชดุ 1 มติ ิ) type arrayname[size] = { value list }; รูปแบบท่ี 2 (กรณตี ัวแปรชดุ 2 มิต)ิ type arrayname[n][m] = { value list }; โดยที่ value list คือ ค่ำคงที่ชนิดตัวเลขที่ต้องกำรก ำหนดให้ตัวแปรชุด ถ้ำมีหลำยค่ำให้ใช้ เคร่อื งหมำย , (comma) คนั่ ระหว่ำงคำ่ คงที่แตล่ ะค่ำโดยค่ำคงทที่ ้งั หมดจะต้องอย่ภู ำยใตเ้ ครอ่ื งหมำย { } ตวั อย่าง 5.6 int a[10] = {10, 20, 30, 40,50, 60, 70, 80, 90, 100}; ภำยในหนว่ ยควำมจำจะเก็บตัวแปรชุดดงั นี้ ชดุ กจิ กรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 6 รายวชิ าภาษาซี ง30243 ช้นั มธั ยมศึกษาปีที่ 5
ชดุ ท5ี่ ตัวแปรชุด (Array) ตัวอยา่ งท่ี 5.7 float p[5][3] = { 3.0, 4.5, 5.5, 4.6, 5.5, 6.5, 5.0, 6.2, 7.0, 6.3, 6.8, 7.4, 7.5, 8.0, 9.0 }; ภำยในหนว่ ยควำมจำจะเก็บตัวแปรชุดเป็นลกั ษณะตำรำง (table) ดังน้ี โดยท่สี มำชกิ แต่ละตัวใชเ้ นอ้ื ท่ี 4 bytes ดังน้นั ใชเ้ นื้อทท่ี งั้ หมด = 4*15 = 60 bytes การกาหนดคา่ คงที่ชนดิ สตริงให้กับตัวแปรสตริง รูปแบบท่ี 1 (กรณีตัวแปรชดุ 1 มิติ) char arrayname[size] = “string constant” รปู แบบท่ี 2 (กรณีตวั แปรชุด 2 มิติ) char arrayname[n][m] = {“string constant”}; โดยท่ี string constants คือ ค่ำคงที่ชนิดสตริงที่ต้องกำรกำหนดให้ตัวแปรชุด ถ้ำมีหลำยค่ำจะต้องใช้ เครอ่ื งหมำย , (comma) คน่ั ระหว่ำงค่ำคงท่แี ต่ละค่ำ ชดุ กจิ กรรมการเรยี นร้กู ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 7 รายวชิ าภาษาซี ง30243 ช้นั มัธยมศกึ ษาปีที่ 5
ชดุ ท5่ี ตัวแปรชุด (Array) ตวั อย่างที่ 5.8 char s[12] = “ASIAN GAME” ; ภำยในหนว่ ยควำมจำจะเกบ็ ขอ้ มูลตวั แปรชุดมลี กั ษณะดังนี้ null character ตวั อย่างที่ 5.9 char province[3][13] = { “NAKHONPANOM” , “SAKON NAKHON” , “MOOKDAHAN” } ; ภำยในหนว่ ยควำมจำจะเกบ็ ข้อมูลมลี ักษณะดงั นท้ี ั้งหมดใช้เนือ้ ที่ 3 x 13 = 39 bytes การอา้ งถงึ สมาชิกในตวั แปรชุด 2 มิติ เชน่ province [0] คอื สมำชิกแถวท่ี 1 ท้ังแถว น่ันคอื ข้อมูล NAKHONPANOM province [1] คือ สมำชกิ แถวที่ 2 ทั้งแถว น่นั คือขอ้ มูล SAKON NAKHON province [2] คือ สมำชิกแถวท่ี 3 ทง้ั แถว นน่ั คือข้อมูล MOOKDAHAN province [0][0] คอื สมำชิกของ province [0] ตวั ที่ 1 คือตวั อักษร N province [1][2] คือ สมำชิกของ province [1] ตัวที่ 3 คือตวั อักษร K การนาขอ้ มลู เข้าไปเก็บและการแสดงผลลพั ธข์ องขอ้ มลู ในตวั แปร ชดุ โดยปกติเรำจะใช้คำสั่ง for หรือ while หรือ do while คำสั่งใดคำสั่งหนึ่งมำช่วยในกำรนำ ข้อมลู เข้ำเก็บและแสดงผลลัพธ์ขอ้ มลู ในตวั แปรชดุ ส่วนมำกนิยมใช้คำสั่ง for มำกกว่ำคำสงั่ อ่ืนท้งั นี้เนื่องจำก ตวั แปรชดุ นน้ั เรำสำมำรถทรำบขนำดทแ่ี นน่ อนได้ ทำใหก้ ำหนดจำนวนรอบกำรทำงำนได้ ชุดกจิ กรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพิวเตอร์ 8 รายวชิ าภาษาซี ง30243 ชั้นมัธยมศกึ ษาปที ี่ 5
ชุดท5ี่ ตวั แปรชุด (Array) เพื่อควำมเข้ำใจเกี่ยวกับกำรนำข้อมูลเข้ำไปเก็บและกำรแสดงผลลัพธ์ของตัวแปรชุดมำกยิ่งขึ้น ให้ ศึกษำโปรแกรมตัวอยำ่ งที่ 5.1, 5.2, 5.3 และ 5.4 ดงั ตอ่ ไปนี้ โปรแกรมตัวอยา่ งท่ี 5.1 แสดงกำรใช้ตัวแปรชดุ 1 มติ ิ ชอ่ื scores เกบ็ คะแนนนกั เรยี น /* array1.C */ #include<stdio.h> /* บรรทัดท่ี 1 */ #include<conio.h> /* บรรทัดท่ี 2 */ /* Record student's scores. */ /* บรรทัดท่ี 3 */ main() /* บรรทดั ที่ 4 */ { /* บรรทดั ที่ 5 */ int index, scores[5]; /* บรรทัดที่ 6 */ scores[0] = 59; /* บรรทดั ท่ี 7 */ scores[1] = 67; /* บรรทัดท่ี 8 */ scores[2] = 85; /* บรรทัดที่ 9 */ scores[3] = 92; /* บรรทดั ท่ี 10 */ scores[4] = 74; /* บรรทัดท่ี 11 */ clrscr(); /* บรรทดั ที่ 12 */ for (index = 0; index < 5; index++) /* บรรทดั ที่ 13 */ printf(\"Student's score: %d\\n\", scores[index]); /* end for */ /* บรรทดั ท่ี 14 */ getch(); /* บรรทัดที่ 15 */ return(0); /* บรรทดั ท่ี 16 */ } /* บรรทัดที่ 17 */ ผลลัพธท์ ีไ่ ด้จากโปรแกรม Student's score: 59 Student's score: 67 Student's score: 85 Student's score: 92 Student's score: 74 ชดุ กจิ กรรมการเรยี นรู้การเขยี นโปรแกรมภาษาคอมพิวเตอร์ 9 รายวชิ าภาษาซี ง30243 ชน้ั มธั ยมศึกษาปที ี่ 5
ชุดท5่ี ตัวแปรชดุ (Array) คาอธิบายโปรแกรม จำกโปรแกรมตัวอย่ำงท่ี 5.1 สำมำรถอธบิ ำยกำรทำงำนของโปรแกรมท่สี ำคัญ ๆ ไดด้ งั น้ี บรรทัดที่ 6 ประกำศตวั แปร index เป็นชนิดจำนวนเตม็ และ scores เป็นตวั แปร ชดุ 1 มติ ิ ชนิดจำนวนเต็มมีสมำชิก 5 ตัว บรรทดั ที่ 7 ถึง 11 กำหนคำ่ จำนวนเตม็ ใหก้ ับตัวแปรชดุ scores[0] ถงึ scores[4] บรรทดั ท่ี 13 คำส่ัง for ทำหนำ้ ท่วี นรอบทำงำนซำ้ 5 คร้งั เพือ่ ชว่ ยพิมพค์ ะแนนนักเรียนทเ่ี กบ็ ไว้ในตัวแปรชดุ scores[0] ถงึ scores[4] บรรทดั ท่ี 14 และ 15 ฟังกช์ นั printf( ) เพือ่ แสดงคะแนนของนักเรียนแต่ละคนออกทจ่ี อภำพซึง่ เก็บไว้ในตัวแปรชุด scores[0] ถึง scores[4] หลังจำกนน้ั จะหยุดรอรบั คำ่ ใดๆ จำก คยี บ์ อร์ด ซ่ึงถำ้ กด enter ก็จะกลับสู่โปรแกรม บรรทัดที่ 16 ส่งคำ่ 0 (ศูนย)์ กลบั ใหก้ บั ฟังกช์ นั main( ) ขอ้ ควรจา ข้อสังเกต ฟังก์ชนั main( ) ของโปรแกรมตวั อยำ่ งท่ี 5.1 เปน็ ฟังกช์ นั ที่ ตอ้ งกำรให้ส่งคำ่ กลับ ในกำรเขยี นโปรแกรมจะตอ้ งมกี ำรใช้ฟงั กช์ ัน return( ) ซึง่ ถ้ำ ไมใ่ ช้เวลำที่เรำ compile โปรแกรม จะมีคำเตือนให้เรำทรำบทุกครั้ง แต่โปรแกรมก็ สำมำรถ run ได้ ชุดกจิ กรรมการเรยี นรกู้ ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 10 รายวชิ าภาษาซี ง30243 ช้นั มธั ยมศกึ ษาปีท่ี 5
ชุดท5่ี ตัวแปรชดุ (Array) โปรแกรมตัวอยา่ งที่ 5.2 แสดงกำรใชต้ ัวแปรชุด 1 มติ ิ สำหรบั เก็บขอ้ มูลและนำขอ้ มลู ในตัวแปรชดุ มำคำนวณค่ำ พรอ้ มทัง้ แสดงผลลพั ธท์ ่ีได้ออกจอภำพ /* array2.c */ #include<stdio.h> /* บรรทดั ท่ี 1 */ #include<conio.h> /* บรรทดั ที่ 2 */ #include<stdlib.h> /* บรรทดั ท่ี 3 */ void main(void) /* บรรทัดท่ี 4 */ { float num[100] ; /* บรรทัดที่ 5 */ float sum= 0 , average ; /* บรรทัดที่ 6 */ int i, n ; char numstr[20]; /* บรรทัดที่ 7 */ clrscr(); /* บรรทดั ท่ี 8 */ printf(\"Enter Total of number(n<100) : \"); /* บรรทัดที่ 9 */ n = atoi(gets(numstr)); /* บรรทัดท่ี 10 */ /* ===== Input Data ===== */ /* บรรทดั ท่ี 11*/ for( i=0; i<n; i++) { /* บรรทดั ที่ 12 */ printf(\"\\nEnter NUMBER #%d : \",i+1); /* บรรทดั ที่ 13 */ num[i] = atof(gets(numstr)); /* บรรทดั ที่ 14 */ sum=sum+num[i]; /* บรรทดั ท่ี 15 */ printf(\"\\n\"); /* บรรทัดที่ 16 */ } /* end for */ /* บรรทัดท่ี 17 */ /* ===== Calulate MEAN ===== */ /* บรรทดั ที่ 18 */ average = sum/n ; /* บรรทัดท่ี 19 */ printf(\"N =%d\\t Sum =%10.2f\\n\",n,sum); /* บรรทดั ที่ 20 */ printf(\"Average = %10.2f\\n\",average); /* บรรทดั ที่ 21 */ getch(); /* บรรทัดที่ 22 */ } /* end main */ /* บรรทัดท่ี 23 */ ชดุ กิจกรรมการเรยี นรกู้ ารเขยี นโปรแกรมภาษาคอมพวิ เตอร์ 11 รายวชิ าภาษาซี ง30243 ช้ันมัธยมศึกษาปที ี่ 5
ชุดท5ี่ ตวั แปรชดุ (Array) 12 ผลลพั ธ์ทไี่ ดจ้ ากโปรแกรม Enter Total of number(n<100) : 5 Enter NUMBER #1 : 4 Enter NUMBER #2 : 5 Enter NUMBER #3 : 8 Enter NUMBER #4 : 90 Enter NUMBER #5 : 75 N = 5 Sum = 182 Average = 36.40 คาอธบิ ายโปรแกรม จำกโปรแกรมตัวอยำ่ งท่ี 5.2 สำมำรถอธบิ ำยกำรทำงำนของโปรแกรมทส่ี ำคญั ๆ ไดด้ งั น้ี บรรทัดที่ 3 คำสงั่ #include <stdlib.h> ใหก้ ำรสนับสนนุ ฟังก์ชัน atoi( ) และฟงั ก์ชนั atof( ) สำหรบั โปรแกรมนี้ ในบรรทัดท่ี 10 และ 14 ตำมลำดับ บรรทดั ที่ 5 ประกำศตวั แปร num เป็นตวั แปรชุด 1 มติ ิ ชนิด float มีสมำชิก 100 ตวั บรรทัดท่ี 7 ประกำศตัวแปร numstr เป็นตัวแปรชดุ 1 ติ ชนดิ char มสี มำชกิ 20 ตวั บรรทัดท่ี 10 ฟังกช์ นั atoi( ) ใช้เปลยี่ น string เป็นตวั เลขจำนวนเต็ม จำกฟังก์ชัน gets( ) รับ ตัวอักขระมำเกบ็ ไวใ้ นตัวแปร numstr แลว้ เปล่ียนค่ำ string ของตวั แปร numstr ไปเก็บไว้ในตัวแปร n โดยใชฟ้ งั ก์ชัน atoi( ) บรรทดั ที่ 12 คำส่งั for ช่วยในกำรเกบ็ ขอ้ มลู ไว้ในตัวแปรชุด num ซ่ึงมจี ำนวนรอบของกำร ทำงำนเทำ่ กบั จำนวนสมำชกิ ของตัวแปรชุด คอื n รอบ บรรทดั ที่ 14 ฟงั ก์ชัน atof( ) ใช้เปล่ียน string เปน็ ตวั เลขทศนยิ ม ซง่ึ มกี ำรทำงำนคลำ้ ยกบั ฟังก์ชัน atoi( ) ในบรรทัดที่ 10 บรรทัดท่ี 15 คำสั่ง sum = sum + num[i]; เป็นกำรบวกสะสมค่ำตัวแปรชุด บรรทัดที่ 18 ถึง 21 คำสง่ั average = sum/n; เปน็ กำรคำนวณค่ำเฉล่ยี ของตัวแปรชดุ แลว้ แสดงผลค่ำตวั แปร n ตัวแปร sum และตัวแปร average ออกจอภำพ บรรทัดท่ี 22 หยุดรอรบั คำ่ ใด ๆ จำกคยี ์บอร์ด ซ่ึงถำ้ เรำกด enter กจ็ ะกลับสโู่ ปรแกรม ชุดกจิ กรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพวิ เตอร์ รายวชิ าภาษาซี ง30243 ช้นั มธั ยมศกึ ษาปีท่ี 5
ชุดท5่ี ตัวแปรชุด (Array) โปรแกรมตัวอย่างท่ี 5.3 แสดงกำรใชต้ วั แปรชุด 2 มติ ิ สำหรบั เก็บคะแนนและคำนวณคำ่ เฉลยี่ ของ คะแนนในแต่ละชดุ แสดงผลออกจอภำพ /* array3.C */ /* บรรทัดท่ี 1 */ #include<stdio.h> /* บรรทัดที่ 2 */ #include<conio.h> /* บรรทดั ที่ 3 */ /* Record student's score */ /* บรรทดั ท่ี 4 */ main() /* บรรทัดที่ 5 */ { /* บรรทัดท่ี 6 */ int i, j, sum, scores[3][5] = { /* บรรทดั ท่ี 7 */ { 84 , 71 , 96 , 65 , 79 }, /* บรรทดั ที่ 8 */ { 90 , 55 , 83 , 68 , 96 }, /* บรรทดั ที่ 9 */ { 61 , 77 , 82 , 94 , 59 } /* บรรทดั ที่ 10 */ }; /* บรรทัดที่ 11 */ clrscr(); /* บรรทัดที่ 12 */ for (i = 0; i < 3; i++){ /* loop over tests. */ /* บรรทดั ท่ี 13 */ for (j = 0, sum = 0; j < 5; j++) /* บรรทดั ท่ี 14 */ /* บรรทดั ที่ 15 */ sum = sum + scores[i][j]; /* บรรทดั ที่ 16 */ printf(\"Average for test %d is %f.\\n\", i, (float) sum / 5); /* บรรทัดท่ี 17 */ } /* end for */ /* บรรทัดที่ 18 */ getch(); return(0); } ชุดกิจกรรมการเรียนรูก้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 13 รายวชิ าภาษาซี ง30243 ชั้นมัธยมศึกษาปที ี่ 5
ชุดท5่ี ตวั แปรชุด (Array) ผลลัพธท์ ไ่ี ด้จากโปรแกรม Average for test 0 is 79.000000 Average for test 1 is 78.400000 Average for test 2 is 74.600000 คาอธิบายโปรแกรม จำกโปรแกรมตัวอย่ำงท่ี 5.3 สำมำรถอธิบำยกำรทำงำนของโปรแกรมทส่ี ำคญั ๆ ได้ดงั นี้ บรรทัดท่ี 5 ถงึ 9 ประกำศตัวแปรชุด 2 มิติ ชนดิ จำนวนเต็มของตัวแปรชือ่ scores มจี ำนวน สมำชิกทั้งหมด 15 ตวั บรรทดั ท่ี 11 คำสง่ั for เพอ่ื ตรวจสอบว่ำ loop เกินจำนวนรอบ คือ แถวของตวั แปรชุดหรอื ไม่ บรรทดั ท่ี 12 คำสั่ง for เพอื่ นำคะแนนท่เี ก็บในตัวแปรชุดทั้ง 15 ตัวมำรวมกนั ในคำสัง่ บรรทดั ท่ี 13 บรรทดั ท่ี 14 พมิ พ์คะแนนเฉลยี่ ของนักเรยี นทัง้ 5 คน ในกำรสอบแต่ละคร้ัง โดยท่ี (float) sum/5 เป็นกำรทำใหต้ ัวแปร sum เปน็ จำนวนทศนิยมช่วั ครำวเพรำะปกติเรำประกำศ ตวั แปร sum เปน็ ชนิดจำนวนเตม็ บรรทัดที่ 15 หยดุ รอรับคำ่ ใด ๆ จำกคยี บ์ อรด์ ซึง่ ถำ้ เรำกด enter ก็จะกลับส่โู ปรแกรม ชุดกิจกรรมการเรียนรูก้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 14 รายวชิ าภาษาซี ง30243 ชน้ั มธั ยมศึกษาปที ี่ 5
ชดุ ท5ี่ ตวั แปรชุด (Array) โปรแกรมตวั อยา่ งที่ 5.4 แสดงกำรใชต้ วั แปรชุด 2 มติ ิ สำหรบั เกบ็ ชอ่ื จงั หวดั แล้วนำข้อมลู มำ แสดงออกที่จอภำพ /* array4.c */ #include<stdio.h> /* บรรทัดท่ี 1 */ #include<conio.h> /* บรรทดั ท่ี 2 */ #include<stdlib.h> /* บรรทดั ที่ 3 */ void main(void) /* บรรทดั ท่ี 4 */ { /* บรรทัดท่ี 5 */ char province[100][40]; /* บรรทัดที่ 6 */ int i, n; char numstr[20]; /* บรรทัดท่ี 7 */ clrscr( ); /* บรรทดั ท่ี 8 */ printf(\"Enter Total of Province (n<100) : \" ); /* บรรทดั ที่ 9 */ n = atoi(gets(numstr)); /* บรรทัดท่ี 10 */ for( i=0; i<n; i++) { /* บรรทัดที่ 11 */ /* บรรทดั ที่ 12 */ printf(\"\\nEnter your Province : \"); /* บรรทดั ที่ 13 */ gets( province[i] ) ; /* บรรทัดท่ี 14 */ } /* บรรทัดที่ 15 */ for( i=0; i<n; i++) /* บรรทดั ที่ 16 */ printf(\"\\nYour Province is %s\", province[i]); /* บรรทัดท่ี 17 */ getch(); /* บรรทัดที่ 18 */ } /* end main */ ชุดกิจกรรมการเรียนรู้การเขยี นโปรแกรมภาษาคอมพิวเตอร์ 15 รายวชิ าภาษาซี ง30243 ช้ันมธั ยมศึกษาปที ี่ 5
ชดุ ท5ี่ ตวั แปรชุด (Array) ผลลพั ธท์ ไี่ ดจ้ ากโปรแกรม Enter Total of Province (n<100) : 3 Enter your Province : Suphanburi Enter your Province : Ratchaburi Enter your Province : Kanchanaburi Your Province is Suphanburi Your Province is Ratchaburi Your Province is Kanchanaburi คาอธบิ ายโปรแกรม จำกโปรแกรมตวั อยำ่ งที่ 5.4 สำมำรถอธบิ ำยกำรทำงำนของโปรแกรมที่สำคัญ ๆ ได้ดงั นี้ บรรทัดท่ี 3 คำสง่ั #include <stdlib.h> ให้กำรสนบั สนุนฟังก์ชัน atoi( ) เพ่ือเปล่ยี นขอ้ มูล สตรงิ เป็นชนิดจำนวนเตม็ ซ่ึงเรียกใชฟ้ งั กช์ ันน้ี ในบรรทัดที่ 10 บรรทัดที่ 11 คำสง่ั for เพอ่ื นำคำ่ สตรงิ ท่รี ับเขำ้ มำไปเก็บไวใ้ นตวั แปรชดุ province[i] ในคำส่ัง บรรทัดท่ี 13 บรรทัดที่ 15 คำส่งั for เพ่อื นำค่ำสตริงท่เี กบ็ ไวใ้ นตัวแปร province[i] ออกแสดงทจ่ี อภำพ ตำม คำสัง่ บรรทดั ท่ี 16 บรรทดั ที่ 17 หยุดรอรับค่ำใด ๆ จำกคยี บ์ อรด์ ซึง่ ถ้ำเรำกด enter ก็จะกลับส่โู ปรแกรม ชุดกิจกรรมการเรยี นรูก้ ารเขยี นโปรแกรมภาษาคอมพิวเตอร์ 16 รายวชิ าภาษาซี ง30243 ชน้ั มัธยมศกึ ษาปที ่ี 5
Search
Read the Text Version
- 1 - 18
Pages: