บทที่ 7 การประมวลผลอาร์เรย์ BC320 Introduction to Computer Programming
เนื้อหาในการบรรยาย ความหมายของอาร์เรย์ 1 มิติ และ 2 มิติ การประกาศตัวแปรอาร์เรย์ ขึ้นมาใช้งาน การเรียกใช้ข้อมูล และการประมวลผลอาร์เรย์ การค้นหา (Searching) การเรียงลำดับ (Sorting) การเขียนโปรแกรมโดยใช้อาร์เรย์
ใช้ตัวแปรตัวเดียว เปลี่ยนแค่ค่า index อาร์เรย์ 1 มิติ และ 2 มิติ เมื่อต้องการประกาศตัวแปรจำนวน 10 ตัวมาใช้งาน แบบธรรมดา แบบอาร์เรย์ int StdAge1, StdAge2, StdAge3, …, StdAge10 int StdAge[10] ใช้ตัวแปรหลายตัว ใช้ตัวแปรตัวเดียว เปลี่ยนแค่ค่า index
หลังจากประกาศตัวแปรเป็นแบบอาร์เรย์ อาร์เรย์ 1 มิติ และ 2 มิติ หลังจากประกาศตัวแปรเป็นแบบอาร์เรย์ ตัวแปรอาร์เรย์ จะมีโครงสร้างในรูป [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] StdAge หลังจากนั้น ก็สามารถใช้ตัวแปรอาร์เรย์ ทำการเก็บค่าต่างๆ ได้เหมือนกับตัวแปรทั่วไป
ตัวอย่างเช่น ต้องการเก็บค่าอายุนักศึกษา int StdAge[10] StdAge[0] = 15 อาร์เรย์ 1 มิติ และ 2 มิติ ตัวอย่างเช่น ต้องการเก็บค่าอายุนักศึกษา int StdAge[10] StdAge[0] = 15 StdAge[1] = 15 StdAge[2] = 16 StdAge[3] = 17 StdAge[4] = 17 StdAge[5] = 17 StdAge[6] = 18 StdAge[7] = 18 StdAge[8] = 19 StdAge[9] = 19
อาร์เรย์ 1 มิติ และ 2 มิติ [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] 15 16 17 18 19 StdAge StdAge[0] = 15 StdAge[5] = 17 StdAge[1] = 15 StdAge[6] = 18 StdAge[2] = 16 StdAge[7] = 18 StdAge[3] = 17 StdAge[8] = 19 StdAge[4] = 17 StdAge[9] = 19
ตัวอย่างที่ผ่านมาเป็น อาร์เรย์ 1 มิติ อาร์เรย์ 1 มิติ และ 2 มิติ ตัวอย่างที่ผ่านมาเป็น อาร์เรย์ 1 มิติ ส่วนตัวแปรอาร์เรย์ 2 มิติ จะมีลักษณะดังนี้ [0] [1] [2] [3] [3] X[3][0] X[3][1] X[3][2] X[3][3] X[2][0] X[2][1] X[2][2] X[2][3] X[1][0] X[1][1] X[1][2] X[1][3] X[0][0] X[0][1] X[0][2] X[0][3] [2] [x] [1] [0]
price[4] = price[0] + price[2]; int price[5]; price[0] = 10; price[1] = 2*price[0]; price[2] = 20; price[3] = 0; price[4] = price[0] + price[2]; [0] [1] [2] [3] [4] price Slide เพิ่ม
การเขียนโปรแกรมโดยใช้ตัวแปรอาร์เรย์ Ex1 จงเขียนโปรแกรมสำหรับรับค่าอายุของนักศึกษา จำนวน 10 คน มาเก็บไว้ในตัวแปรอาร์เรย์ ที่ชื่อ StdAge ในตัวอย่างนี้จะ ทำการเปรียบเทียบ การเขียนโปรแกรม แบบไม่ใช้ตัวแปรอาร์เรย์ กับใช้ตัวแปรอาร์เรย์
การเขียนโปรแกรมโดยใช้ตัวแปรอาร์เรย์ (ต่อ) ถ้าแบบไม่ใช้ตัวแปรอาร์เรย์ จะสามาถเขียนได้เป็น int StdAge1, …, StdAge10 int StdAge[10], i = 0 Read StdAge1 Read StdAge2 . . . Read StdAge10 while i<10 do Read StdAge[i] i = i+1 End do
เปรียบเทียบการวน loop โดยใช้คำสั่ง while กับ for int StdAge[10], i = 0 int StdAge[10] while i<10 do Read StdAge[i] i = i+1 End do for(i=0;i<10;i++) Read StdAge[i] End for
Ex2 จงสร้างอาร์เรย์ชื่อ Num 15 ช่อง โดยที่แต่ละช่อง ให้เก็บเลขศูนย์ลงไป [0] [1] [2] [3] [4] [5] … [13] [14] Num ... เขียนแบบ while เขียนแบบ for
รับน้ำหนักเพื่อนทั้ง 20 คน แสดงผลน้ำหนักเพื่อน 20 คน Ex3 จงสร้างอาร์เรย์สำหรับน้ำหนักเพื่อน 20 คน โดยเก็บไว้ในตัวแปรอาร์เรย์ StdArr โดยที่ รับน้ำหนักเพื่อนทั้ง 20 คน แสดงผลน้ำหนักเพื่อน 20 คน หาค่าเฉลี่ยน้ำหนัก แยกการวนloop
Ex4 จงเขียนโปรแกรมเพื่อคิดเกรดของนักศึกษา 10 คน โดยที่ รับคะแนนสอบเป็นเลขทศนิยม เก็บในตัวแปรอาร์เรย์ชื่อ Score คิดเกรดแต่ละคนเก็บในอาร์เรย์ชื่อ Grade โดยมีเงื่อนไขดังนี้ ถ้าได้ คะแนน 0-49 คะแนน ได้เกรด U คะแนน 50-100 คะแนน ได้เกรด S แสดงผลลัพธ์ของคะแนนและเกรดนักศึกษาแต่ละคน Slide เพิ่ม
สรุปข้อดีของการใช้ตัวแปรอาร์เรย์ เมื่อต้องการเพิ่มจำนวนตัวแปรรับค่า ก็สามารถเปลี่ยนที่ค่า index ตัวเดียว ทำให้โปรแกรมมีความยืดหยุ่นในการแก้ไข
แบบฝึกหัด ให้นักศึกษาเขียนโปรแกรม เพื่อทำการรับค่าจำนวนเงินบาท 10 ครั้ง โดยในแต่ละครั้งของการรับค่าให้ทำการแปลงค่าเงินบาทเป็นเงินดอลล่าร์สหรัฐ (40 บาท = 1 ดอลล่าร์) และในแต่ละครั้งให้ทำการแสดงค่าเงินบาทและดอลล่าร์ (กำหนดให้ใช้ตัวแปร Bath[10]) เป็นตัวแปรสำหรับใช้เก็บค่าเงินบาท
แบบฝึกหัด(ต่อ) ตัวอย่าง Num ตอบ Min = 25 , Position = 3 2. จงรับค่าตัวเลข 20 ตัว (เลขจำนวนเต็ม) เพื่อคำนวณหาค่าต่ำสุด โดยที่ รับค่าตัวเลข 20 ตัวลงในอาร์เรย์ชื่อ Num คำนวณหาค่าต่ำสุด และตำแหน่งที่เก็บค่าต่ำสุด แสดงผลค่าต่ำสุด และตำแหน่งที่เก็บค่าต่ำสุด ตัวอย่าง [0] [1] [2] [3] [4] . . . [18] [19] 25 Num ตอบ Min = 25 , Position = 3 Slide เพิ่ม
ตัวอย่างโปรแกรมหาค่าต่ำสุดแบบไม่ใช้ Array i=1 Min=999 While i<=20 read Num if Min>Num then Min=Num i=i+1 End do Slide เพิ่ม
การค้นหา (Searching) การค้นหาแบบลำดับ (Sequence search) การค้นหาแบบไบนารี่ (Binary search)
การค้นหา (Searching): แบบลำดับ จากนั้นค่อยๆ เลื่อนไปทางขวามือทีละตำแหน่ง
การค้นหา (Searching): แบบลำดับ [0] [1] [2] [3] [4] [5] [6] [7] 1 6 9 10 12 17 23 24 X X X X X X กำหนดให้ค่า search = 12
การค้นหา (Searching): แบบไบนารี่ หาค่ากึ่งกลางของข้อมูลจาก Mid = (First + Last)/2 เปรียบเทียบค่า search กับค่าในตำแหน่งกึ่งกลาง ถ้าค่า search > ค่าในตำแหน่งกึ่งกลาง (อยู่ครึ่งหลัง) ถ้าค่า search < ค่าในตำแหน่งกึ่งกลาง (อยู่ครึ่งแรก) ถ้าค่า search = ค่าในตำแหน่งกึ่งกลาง (อยู่กึ่งกลาง)
การค้นหา (Searching): แบบไบนารี่ [0] [1] [2] [3] [4] [5] [6] [7] 1 6 9 10 12 17 23 24 X X X X X X กำหนดให้ค่า search = 12
การเรียงลำดับ (Sorting) Bubble sort Selection sort
การเรียงลำดับ (Sorting): Bubble Sort ทำการเปรียบเทียบค่าในตาราง ครั้งละ 2 ค่า ซึ่งมีตำแหน่งติดกัน [I] กับ [I+1] โดยเริ่มต้น จากซ้ายมือสุด นั่นก็คือ I = 0 ใช้เงื่อนไข x[I] > x[I+1] เป็นตัวพิจารณาว่าจะต้องทำการสลับตำแหน่งระหว่าง 2 ตำแหน่งหรือไม่ ทำการเปรียบเทียบจนกระทั่ง ใน 1 รอบไม่มีการสลับตำแหน่งเลย ถึงหยุดการทำงาน
การเรียงลำดับ (Sorting): Bubble Sort [0] [1] [2] [3] [4] 7 4 1 9 2 [X] [X] [X] [X] [X] กำหนดให้ทำการเรียงจากน้อยไปมาก
การเรียงลำดับ (Sorting): Selection Sort การทำงานของการเรียงลำดับแบบนี้ เริ่มต้น จะทำการเปรียบเทียบข้อมูลในตำแหน่ง [0] กับข้อมูลในตำแหน่งที่เหลือ เพื่อหาข้อมูลที่น้อยที่สุดมาใส่แทน เมื่อหาข้อมูลที่น้อยที่สุดมาใส่ในตำแหน่ง [0] เรียบร้อยแล้ว ต่อไปก็ทำการเปรียบเทียบ ข้อมูลในตำแหน่ง [1] กับตำแหน่งที่เหลือ เพื่อหาข้อมูลที่น้อยเป็นลำดับต่อมาใส่ในตำแหน่ง [1] ทำต่อไปเรื่อยๆ จนครบ
การเรียงลำดับ (Sorting): Selection Sort [0] [1] [2] [3] [4] 7 4 1 9 2 [X] [X] [X] [X] [X] กำหนดให้ทำการเรียงจากน้อยไปมาก
การเขียนโปรแกรมโดยใช้อาร์เรย์ โปรแกรมหาค่า max min sum และ average ของตัวเลข 5 จำนวน Enter number1: 1 Enter number2: 12 Enter number3: 31 Enter number4: 40 Enter number5: 29 Max value is 40 Min value is 1 Sum of your number is 113 Average of your number is 22.60
จบการบรรยาย