Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore วิชาวิทยาการคำนวณ ม.2

วิชาวิทยาการคำนวณ ม.2

Description: บทที่ 2 การแก้ปัญหาด้วยไพทอน

Search

Read the Text Version

สือ่ ประกอบการเรยี นรู้ วิทยาการคานวณ ม.2 บทท่ี 2 การแกป้ ัญหาด้วยไพทอน คลกิ เพ่ือเข้าส่บู ทเรยี น โรงเรยี นทงุ่ สงั พทิ ยาคม จังหวดั นครศรธี รรมราช วา่ ท่ี ร.ต.หญิงชยานันท์ แท่นแสง ตาแหนง่ ครู วิทยฐานะ ครู คศ.1

กรุ ณากรอกชือ่ เขา้ สูร่ ะบบ

ยนิ ดีต้อนรบั กชวรรณ เข้าส่บู ทเรยี น!

เมนหู ลกั คาช้แี จง ตวั อยา่ งระบบคานวณ แบบทดสอบ ค่าโดยสารรถประจาทาง ผู้จัดทา ตัวดาเนินการบลู ีน การวนซา้ด้วยคาสั่ง while เงอื่ นไขทางเลอื ก ฟังกช์ ัน

คาช้ีแจง 1. ให้นักเรยี นศึ กษาบทเรยี น 2. ให้ นั กเรียนทาแบบทดสอบหลังเรียน ทัง้ หมด 15 ข้อ 15 คะแนน

1 ตัวอย่างระบบคานวณ ค่าโดยสารรถประจาทาง

2 จดุ ประสงค์การเรยี นรู้ 1. นั กเรียนสามารถเขียนโปรแกรมไพทอนท่ีมีการ ใชง้ านฟังกช์ นั ท่ีสรา้ งข้ึนเอง 2. นั กเรียนสามารถเขียนโปรแกรมไพทอนท่ีมีการ ใช้ตวั ดาเนิ นการบูลีนได้

3 ทบทวนความรูก้ อ่ นเรยี น อลั กอรทิ ึมเป็นองค์ประกอบ ของแนวคิดเชิงคานวณ ถูกต้อง หรอื ไม่ ?

4 ทบทวนความรูก้ อ่ นเรยี น ก า ร แ ต ก ปั ญ ห า เ ป็ น ส่ ว น ย่ อ ย เ ป็ น ก า ร ล ด ค ว า ม ซั บ ซ้ อ น ข อ ง ปั ญ ห า ใหญ่ ทาให้ออกแบบวธิ กี ารแก้ปัญหาได้ งา่ ยย่ิงข้ึนถูกต้องหรอื ไม่ ?

5 ทบทวนความรูก้ อ่ นเรยี น วิ ธีก า ร แ ก้ ปั ญ ห า ห น่ึ ง อ า จ นามาใช้ในการแก้ปัญหาย่อยของ อกี ปัญหาหน่ึงได้ ถูกตอ้ งหรอื ไม่ ?

6 ทบทวนความรูก้ อ่ นเรยี น ใ น ก า ร ท า ค ว า ม ส ะ อ า ด ห้ อ ง นั ก เ รี ย น ส า ม า ร ถ แ บ่ ง ก า ร ท า ง า น ออกเป็นงานย่อยให้เพื่อนแต่ละคนช่วย ทาได้ ถูกตอ้ งหรอื ไม่ ?

7 ตวั อยา่ งระบบคานวณ ค่าโดยสารรถประจาทาง หากผู้ปกครองพานั กเรียนอนุบาลข้ึนรถโดยสาร ประจาทางไปโรงเรยี น คนเกบ็ ค่าโดยสารต้องคานวณว่า ผู้ปกครองและนั กเรียนจะต้องเสี ยค่าโดยสารคนละ เท่าใด โดยข้ึนอยู่กับเง่ือนไขอายุหรือส่ วนสูง เป็นต้น หากต้องการระบบเก็บค่าโดยสารอัตโนมัติ ระบบน้ี จะตอ้ งคานวณค่าโดยสารไดเ้ อง จากเงอ่ื นไขทีถ่ ูกกาหนด ไว้ล่วงหน้ าแลว้

8 ตัวอยา่ งที่ 2.1 ค่ารถโดยสาร รถโดยสารสาธารณะในอาเภอหน่ึ ง ประกาศอตั ราค่าโดยสารไวด้ งั นี้ • ผโู้ ดยสารทวั่ ไป คิดอตั ราคนละ 10 บาทตลอดเส้นทาง • ผโู้ ดยสารทเี่ ป็นเดก็ อายตุ าก่ วา่ 3 ขวบ โดยสารฟรี • ผโู้ ดยสารสงู อายทุ ม่ี ีอายตุ ัง้ แต่ 60 ปีข้ึนไป คิดค่าโดยสารคร่งึ ราคา • ราคาค่าโดยสารสาหรับหมู่คณะที่ประกอบด้วยผู้โดยสารไม่เกิน 30 คน ถ้าค่าโดยสารรวมเป็นจานวนตั้งแต่ 200 บาทข้ึนไปจะมีส่ วนลด เพ่ิมอีก 10%

9 ตวั อยา่ งที่ 2.1 ค่ารถโดยสาร ถ้านั กเรียนต้องการนาคน ใ น ห มู่ บ้ า น ไ ป ทั ศ น ศึ ก ษ า แ ล ะ ต้องการคานวณค่ารถโดยสารจะ ออกแบบอัลกอริทึมอย่างไร เพ่ือ แก้ปัญหาข้างตนั

10 ตวั อยา่ งที่ 2.1 ค่ารถโดยสาร นั กเรยี นควรพิจารณาการแกป้ ัญหายอ่ ยต่อไปน้ี 1. ทราบได้อย่างไรว่ามีผู้โดยสารท่ีเป็นเด็กอายุตา่กว่า 3 ขวบก่ีคน เป็นผู้ใหญ่อายมุ ากกว่า 60 ปีก่ีคนและท่ีเหลือก่ีคน ตอบ นั บจานวนผู้โดยสารว่ามีท้ังหมดก่ีคน เป็นเด็กท่ีมีอายุตา่กว่า 3 ขวบก่ี คน เป็นผู้สูงอายุก่ีคน จานวนผู้โดยสารท่ีต้องชาระค่าโดยสารเต็มราคาก่ีคน ซ่งึ คานวณได้จากจานวนผู้โดยสารทัง้ หมด ลบด้วยจานวนเด็กท่อี ายตุ าก่ วา่ 3 ขวบ และลบดว้ ยจานวนผู้สูงอายุ

11 ตวั อยา่ งท่ี 2.1 ค่ารถโดยสาร 2. ค่าโดยสารรวมของผู้สูงอายเุ ป็นเท่าไร ตอบ ค่าโดยสารรวมของผู้สูงอายุ คานวณได้จาก จานวน ผู้สูงอายคุ ูณกับค่าโดยสาร 5 บาท (คร่งึ หน่ึ งของ 10 บาท)

12 ตัวอยา่ งที่ 2.1 ค่ารถโดยสาร 3. ค่าโดยสารรวมของผู้โดยสารท่จี ่ายเตม็ ราคาเป็นเท่าไร ตอบ ค่าโดยสารรวมของผู้โดยสารท่ีจ่ายเต็มราคา คานวณได้จาก จานวนผู้โดยสารท่เี หลือ (ผลลัพธจ์ าก ข้อ 1) คูณกับ 10 บาท

13 ตวั อยา่ งที่ 2.1 ค่ารถโดยสาร 4. ค่าโดยสารรวมทง้ั หมดเป็นเทา่ ไรก่อนลดราคา ตอบ ค่าโดยสารรวมท้ังหมด คานวณได้จาก ค่าโดยสารรวม ของผู้สูงอายุ (ผลลัพธ์จากข้อ 2) บวกกับค่าโดยสารรวมของ ผู้โดยสารท่ีจ่ายเตม็ ราคา (ผลลพั ธจ์ ากข้อ 3)

14 ตวั อยา่ งที่ 2.1 ค่ารถโดยสาร 5. ได้รบั ส่วนลด 10% หรอื ไม่ ตอบ ได้รับส่ วนลดเม่ือมีจานวนผู้โดยสารไม่เกิน 30 คน และมีค่าโดยสารรวมตง้ั แต่ 200 บาทข้ึนไป

15 ตวั อยา่ งที่ 2.1 ค่ารถโดยสาร 6. หากไดร้ บั ส่วนลด ค่าโดยสารสุทธเิ ป็นเท่าไร ตอบ ค่าโดยสารสุทธิคานวณได้จาก ค่าโดยสารรวมท้ังหมด (ผลลัพธจ์ ากข้อ 4) ลบดว้ ย 10% ของค่าโดยสารรวมท้ังหมด

16 ตัวอยา่ งท่ี 2.1 ค่ารถโดยสาร 7. แสดงผลอะไรบ้าง ตอบ แสดงจานวนผู้โดยสารท้ังหมด จานวนผู้โดยสารท่ี จ่ายเต็มราคา จานวนผู้โดยสารท่ีเป็นเด็กอายุตา่กว่า 3 ขวบ จานวนผู้โดยสารท่ีเป็นผู้สูงอายุ ค่าโดยสารรวมก่อนลดราคา และค่าโดยสารสุทธหิ ลงั หักส่วนลด

17 ตวั อยา่ งท่ี 2.1 ค่ารถโดยสาร นาแนวทางการ 1. all <-- รบั จานวนผโู้ ดยสารท้ังหมด แก้ปัญหาย่อยที่ได้ 2. children <-- รบั จานวนผโู้ ดยสารท่มี อี ายตุ า่กวา่ 3 ขวบ ม า เ รี ย บ เ รี ย ง 3. elders <-- รบั จานวนผสู้ งู อายุ (มีอายตุ ้งั แต่ 60 ปีข้ึนไป) เ ป็ น อั ล ก อ ทึ ม ใ น 4. regular <-- (all - children - elders) รู ป แ บ บ ร หั ส 5. fare_elders <-- elders*(10/2) ลาลองไดด้ งั นี้ 6. fare_regular <-- regular*10 7. total <-- fare _elders + fare_regular 8. แสดงค่า all, children, elders, regular 9. แสดงค่า total 10. ถ้า all <= 30 และ total >= 200 10.1 total_discounted <-- total -(total*0.1) 10.2 แสดงค่า total_discounted

1 ตวั ดาเนินการบลู นี

2 ตัวดาเนินการบลู นี ในชั้นมัธยมศึ กษาปีท่ี 1 นั กเรียน สามารถเขียนโปรแกรมไพทอนให้มีการ ตัดสิ นใจทางานแบบมีทางเลือกโดยใช้ คาสั่ง if และ if-else ในเบอื้ งต้นมาแลว้ ใ น บ ท น้ี นั ก เ รี ย น จ ะ ไ ด้เ รี ย น รู้ นิ พ จ น์ เ ป รี ย บ เ ที ย บ แ ล ะ ตั ว ดาเนิ นการบลู ีน เพื่อทจี่ ะสามารถกาหนดเงอ่ื นไขสาหรบั การทางานแบบมี ทางเลือกของคาสั่ง if ไดอ้ ยา่ งมีประสิทธภิ าพมากข้ึน

3 ตวั ดาเนินการบลู นี นิ พจน์ เปรียบเทียบท่ีได้กล่าวมาแล้ว เป็นนิ พจน์ เปรียบเทียบอย่างง่าย โดยเป็น กา ร เ ป รีย บเ ทีย บค่ า ช นิ ด เ ดีย ว กัน ด้ว ย ตั ว ด า เ นิ น ก า ร เ ป รี ย บ เ ที ย บ เ ท่ า นั้ น แ ต่ ห า ก ต้ อ ง ก า ร ก า ห น ด เ งื่ อ น ไ ข ท่ี ชั บ ซ้ อ น ข้ึ น สามารถใช้ตัวดาเนิ นการบูลีนได้แก่ and or หรอื n๐t ในการเชื่อมต่อนิ พจน์ เปรียบเทียบ อยา่ งงา่ ยเข้าดว้ ยกนั ได้

4 เชื่อมนิ พจน์ 2 นิพจน์ด้วย and height <= 115 and age <= 3 ผลลัพธ์ที่ได้จากการเช่ือมนิ พจน์ เทจ็ จรงิ 2 นิ พจน์ ด้วย and จะเป็นจรงิ (True) ถ้า เท็จ ทั้งสองนิ พจน์ เป็นจริงทั้งคู่ ส่ วนกรณี อื่นๆจะเป็นเท็จ (False) เช่น ถ้าตัวแปร height เกบ็ ค่า 120 และตัวแปร age เก็บ ค่า 3 แล้วมีเงื่อนไข height <=115 and age <= 3 ผลลพั ธท์ ไี่ ดจ้ ะเป็นเทจ็

5 นิพจน์ที่เชอ่ื มด้วย or height <= 115 or age <= 3 นิ พจน์ ทีเ่ ช่ือมด้วย or ถ้าอยา่ ง เทจ็ จรงิ น้ อยหน่ึ งนิ พจน์ เป็นจริง ตัวอย่างเช่น จรงิ ตัวแปร height เก็บค่า 120 และตัว แ ปร age เ ก็บค่ า 3 แ ล้ ว มี เ ง่ือ น ไ ข height <=115 or age <= 3 ผลลัพธท์ ่ี ไดจ้ ะเป็นจรงิ

6 นิ พจน์ ท่มี ี not not height <= 115 นิ พจน์ ที่มี not นาหน้ า จะมีค่า เท็จ ความจริงเป็นตรงกันข้าม ตัวอย่างเช่น ถ้าตัวแปร height เก็บค่า 120 แล้วมี จรงิ เงอ่ื นไข not height <= 115 ผลลัพธท์ ี่ ไดจ้ ะเป็นจรงิ

7 ตัวอยา่ งท่ี 2.2 การหาผลลัพธค์ ่าความจรงิ จากนิ พจน์ เปรยี บเทยี บทมี่ ีการใช้ตวั ดาเนินการบลู ีน ทดลองพิมพ์คาสั่งนี้ ในคอนโซล age = 12 age>13 and age<19 age>13 or age<19 not age>13 จะไดผ้ ลลัพธค์ ือ False True True

8 ชวนคิด จ า ก ตั ว อ ย่ า ง ที่ 2 . 2 ถ้ า เปล่ียนค่าตัวแปร age ไปเป็น ค่ า อ่ื น ๆ ผ ล ลั พ ธ์ ท่ี ไ ด้ จ ะ เปลยี่ นไปอยา่ งไร

9 ตวั อยา่ งท่ี 2.3 เขียนโปรแกรมภาษาไพทอน เพ่ือแก้ปัญหาการคิดค่าโดยสารในตวั อยา่ งท่ี 2.1 ทดลองพิมพ์คาสั่งนี้ ในคอนโซล จะไดผ้ ลลพั ธค์ ือ

10 ตวั อยา่ งท่ี 2.3 เขียนโปรแกรมภาษาไพทอน เพ่ือแกป้ ัญหาการคิดค่าโดยสารในตวั อย่างท่ี 2.1 ตัวอยา่ งท่ี 2.3 อธบิ ายได้ดงั น้ี 1. บรรทัดท่ี 1 ถึง 12 เป็นการใช้คาส่ังไพทอน ตามท่เี คยไดศ้ ึกษามาแลว้ 2. บ ร ร ทั ด ท่ี 1 3 ก า ห น ด เ งื่ อ น ไ ข ส า ห รั บ ต ร ว จ ส อ บ ว่ า ต้ อ ง ล ด ค่ า โ ด ย ส า ร 1 0 % หรือไม่ในกรณี ท่ีจานวนผู้โดยสารรวม(ตัว แปร all) ไม่เกิน 30 คน ค่าโดยสารรวม (ตัวแปร total) มีค่าตั้งแต่ 200 บาทข้ึนไป และถ้าเง่ือนไขเป็นจริงจะคานวณราคาท่ี ลดแลว้ และแสดงผลในบรรทัดท่ี 15

11 ชวนคิด จ า ก ตั ว อ ย่ า ง ท่ี 2 . 3 ถ้ า ค่ า โดยสารเปล่ียนแปลงตามราคานา้มัน ข อ ง ต ล า ด โ ล ก นั ก เ รี ย น จ ะ ป รั บ โปรแกรมท่ีบรรทดั ใด อยา่ งไร

12 ชวนคิด ถ้ามีตัวแปร age และ height เก็บค่าอายุ เป็นปีและส่ วนสูงเป็นเซนติเมตรให้เขียนนิ พจน์ แทนข้อความตอ่ ไปน้ี • อายนุ ้ อยกว่า 12 ปี และสูงไม่เกนิ 120 ซม. • อายไุ มเ่ ทา่ กับ 25 ปี • อายมุ ากกวา่ 60 ปี หรอื น้ อยกวา่ 15 ปี • ความสงู อยใู่ นช่วงตงั้ แต่ 125 ซม. ถึง 180 ซม.

1 การวนซา้ ดว้ ยคาสั่ง while

2 การวนซา้ด้วยคาสั่ง while ในการเขี ยนโปรแกรมให้ ทางานวนซา้ ชุดคาสั่ งเดิม นอกจากคาส่ั ง for แล้ว ภาษาไพทอนยังมีคาส่ั ง whileให้เลือกใช้ งาน ซ่ึงคาส่ั ง while จะเหมาะสมกับกรณี การวนซา้ ท่ีไม่ทราบ จานวนรอบหรอื จานวนครง้ั ของการวนซาท้ ่แี น่ นอน มีรูปแบบการ ใชด้ ังน้ี while เงอ่ื นไขทางเลอื ก : ชุดคาสั่ ง

3 การวนซา้ด้วยคาสั่ง while เร่มิ ต้น while การทางานของคาสั่ ง while คือ ถ้าเง่ือนไขทางเลือกเป็นจริง ชุดคาส่ั งจะ เงอื่ นไข ถูกเรียกให้ทางานเป็นจานวนหน่ึ งครั้ง ทางเลอื ก แ ล้ ว จ ะ ว น ก ลั บ ไ ป ต ร ว จ ส อ บ เ ง่ื อ น ไ ข ทางเลือก อีกจนกว่า เงื่อนไขทางเลือกจะ จรงิ เป็นเท็จ แล้วจึงออกจากการวนซา้และไป ชุดคาส่ั ง เท็จ ทางานในคาส่ั งถัดไป

4 ตวั อยา่ งท่ี 2.4 การใช้คาส่ัง while เมอ่ื ไมท่ ราบจานวนรอบการวนซาท้ ่แี น่นอน เขียนโปรแกรมรับจานวนเต็มบวกชุดหน่ึ งท่ีไม่ทราบล่วงหน้ าว่า มีก่ีจานวน แลว้ หาผลรวมและค่ามากท่สี ุด

5 ตัวอย่างท่ี 2.4 การใชค้ าสั่ง while เม่อื ไมท่ ราบจานวนรอบการวนซาท้ ่ีแน่นอน ผลลัพธท์ ่ีได้ คือ

6 ตวั อยา่ งท่ี 2.4 การใชค้ าส่ัง while เมอื่ ไมท่ ราบจานวนรอบการวนซาท้ ่ีแน่นอน ตวั อยา่ งท่ี 2.4 อธบิ ายไดด้ งั นี้ 1. บรรทดั ท่ี 1 รบั ข้อมลู จานวนเตม็ บวก ตวั แรกเก็บไว้ในตัวแปร x โดยผู้ใช้จะป้อน 0 หากไม่มีข้อมลู แล้ว เนื่ องจากข้อมูลท่ี ตอ้ งการให้หาผลลัพธเ์ ป็นจานวนเต็มบวก เทา่ นั้น จึงใชเ้ ลข 0 เป็นเงอื่ นไขในการ ตรวจสอบ ว่าหมดชุดข้อมลู แล้ว 2. บรรทดั ท่ี 2 ถึง 4 กาหนดค่าเร่มิ ต้น ให้กับตัวแปรท่จี ะใชเ้ ก็บค่าผลรวม (sum) ค่ามากท่ีสุด (max) และจานวนข้อมูล (n)

7 ตวั อย่างท่ี 2.4 การใชค้ าสั่ง while เมือ่ ไม่ทราบจานวนรอบการวนซาท้ ่ีแน่นอน 3. บรรทัดท่ี 5 เป็ นคาส่ั ง while และ กาหนดเง่ือนไขตรวจสอบการวนซา้ คือ x ต้องเป็นจานวนเต็มบวก 4 . บ รรทัด ท่ี 6 ถึ ง 1 0 เ ป็ นชุ ด คาสั่ ง ภายใต้บล็อก while โดยบรรทัดท่ี 6 นั บ จานวนข้อมูลเก็บไว้ในตัวแปร n บรรทัด ท่ี 7 เก็บผลรวมข้อมูลไว้ในตัวแปร sum บรรทัดท่ี 8 ถึง 9 หาค่ามากท่ีสุดจาก ข้ อ มู ล ทั้ ง ห ม ด แ ล ะ บ รร ทั ด ท่ี 1 0 รั บ ข้อมลู ตวั ถัดไป

8 ตวั อยา่ งท่ี 2.4 การใชค้ าสั่ง while เมื่อไม่ทราบจานวนรอบการวนซา้ท่แี น่นอน 5. บรรทัดท่ี 11 ถึง 12 ถ้ามีข้ อมูล ตั้งแต่ 1 ตัวข้ึนไป ให้พิมพ์ผลลัพธ์ที่ หาได้

9 ชวนคิด ใ น ชี วิ ต ป ร ะ จ า วั น มี สถานการณ์ ใดบ้างท่ีมีการวน ซาค้ ลา้ ยการใชค้ าสั่ง while

1 เงอ่ื นไข ทางเลอื ก

2 เงอื่ นไขทางเลือก คาสั่ ง if-else ช่วยให้โปรแกรมไพทอนสามารถ ตัดสิ นใจเลือกทางานชุดคาสั่ งตามผลลัพธ์ของเงื่อนไข ซ่ึงมีสองทางเลือก และหากมีทางเลือกมากกว่านั้ น ผ้เู ขียนโปรแกรมต้องใช้คาสั่ง if-else ร่วมกันหรือซอ้ น กนั เพื่อให้ไดจ้ านวนทางเลือกตามทต่ี อ้ งการ ไ พ ท อ น ยั ง มี ค า สั่ ง ใ ห้ ใ ช้ ใ น ก ร ณี ที่ มี ห ล า ย ทางเลือกคือคาสั่ ง if-elif-elseซ่ึงจะช่วยให้สะดวกข้ึน โดยมรี ูปแบบการใชด้ งั นี้

3 เงอื่ นไขทางเลอื ก if เงอื่ นไขทางเลอื ก 1: ชุดคาสั่ง 1 elif เงอื่ นไขทางเลอื ก 2: ชุดคาสั่ง 2 elif เงอ่ื นไขทางเลอื ก 3: ชุดคาสั่ง 3 ... else: ชุดคาส่ังสดุ ทา้ ย

4 เงอ่ื นไขทางเลือก if เงอ่ื นไขทางเลอื ก 1: เร่มิ ตน้ if จรงิ ชุดคาส่ัง 1 เงอื่ นไข ชุดคาสั่ง 1 elif เงอื่ นไขทางเลอื ก 2: ทางเลอื ก1 ชุดคาส่ัง 2 จรงิ เท็จ elif เงอ่ื นไขทางเลอื ก 3: ชุดคาสั่ง 2 ชุดคาสั่ง 3 เงอ่ื นไข ทางเลอื ก2 ... else: เทจ็ ชุดคาส่ังสดุ ทา้ ย ชุดคาสั่ ง สดุ ท้าย จบ if

5 เงอ่ื นไขทางเลือก ผู้ เ ขี ย น โ ป ร แ ก ร ม ส า ม า ร ถ เ พ่ิ ม เ ติ ม เง่ือนไขทางเลือก และชุดคาส่ั งท่ีสั มพันธ์กัน ภายใต้บล็อกของ elif ไปได้อีกและสาหรับ เงอ่ื นไข else อาจจะไมจ่ าเป็นตอ้ งมกี ไ็ ด้

6 ตวั อยา่ งท่ี 2.5 การใช้คาสั่ง If-elif-else สาหรบั กรณีท่มี มี ากกว่า 2 ทางเลือก เขียนโปรแกรมไพทอนเพื่อแจ้งราคาค่า โดยสารรถประจาทาง ซ่ึงปกติราคา 6.50 บาท แต่ถ้าเป็นผู้สูงอายุจะเสี ยค่าโดยสารเพียงคร่ึง เดียว และถ้าเป็นเด็กอายุไม่เกิน 3 ขวบ ไม่ต้อง เสียค่าโดยสาร ดังน้ี

7 ตวั อยา่ งท่ี 2.5 การใช้คาสั่ง If-elif-else สาหรบั กรณีท่มี ีมากกวา่ 2 ทางเลอื ก


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook