670 likes | 1.75k Views
บทที่4 การเขียนซูโดโคด หรือ รหัสจำลอง (Pseudo Code). รูปแบบการเขียนอัลกอริทึม (ต่อ). การเขียนซูโดโคด (Pseudo Code)
E N D
บทที่4การเขียนซูโดโคด หรือรหัสจำลอง (Pseudo Code)
รูปแบบการเขียนอัลกอริทึม (ต่อ) การเขียนซูโดโคด (Pseudo Code) หมายถึง การนำคำในภาษาอังกฤษ มาแสดงการทำงานของคอมพิวเตอร์ โดยเรียบเรียงเป็นประโยคให้สามารถสื่อความหมายให้ผู้อ่านเข้าใจได้ว่าแต่ละขั้นตอนของการแก้ปัญหานั้นทำได้อย่างไร ซูโดโคดที่ดีต้องมีความชัดเจน สั้น กระชับ ได้ใจความก่อนทำการเขียนอัลกอริทึม ต้องกำหนดตัวแปรก่อนที่จะใช้ก่อนเสมอ
วิธีการเขียนรหัสจำลอง (Pseudo Code) Pseudo code สามารถกำหนดการทำงานได้เป็น 6 ข้อ ดังนี้ • การรับข้อมูลของคอมพิวเตอร์ • การแสดงผลข้อมูลของคอมพิวเตอร์ • การคำนวณหรือการทำงานทางคณิตศาสตร์ของคอมพิวเตอร์ • การกำหนดค่าข้อมูลของคอมพิวเตอร์ • การเปรียบเทียบข้อมูล 2 อย่าง และมีการเลือกทางเดียวหรือสองทางเลือกในการทำงานหรือหลายทาง • การทำงานซ้ำของคอมพิวเตอร์
1. การรับข้อมูลของคอมพิวเตอร์ การรับข้อมูล นิยมใช้คำว่า read หรือ inputตามด้วยชื่อตัวแปรที่ต้องการรับค่า ถ้าต้องการรับค่าหลายตัวแปรให้ใช้เครื่องหมายcommaคั่น inputตัวแปร1, ตัวแปร2, … readตัวแปร1, ตัวแปร2, …
1. การรับข้อมูลของคอมพิวเตอร์ Read : การอ่านข้อมูลจากที่มีเก็บอยู่ในไฟล์แล้ว Get หรือ Input : การรับข้อมูลมาจากคีย์บอร์ด Read student name Get system date Read number1, number2 Get tax_code
2. การแสดงผลข้อมูลของคอมพิวเตอร์ Print : การส่งผลลัพธ์ไปยังเครื่องพิมพ์ (Printer) Writeหรือ Put : การเก็บข้อมูลลงสู่ไฟล์ (File) Outputหรือ Display : การแสดงผลข้อมูลบนจอภาพ (Screen) Print ‘Program Completed’ Write customer record to master file Put name, address and postcode Output total_tax Display ‘End of data’
3. การคำนวณหรือการทำงานทางคณิตศาสตร์ของคอมพิวเตอร์ Add: การบวก Subtract : การลบ Multiply : การคูณ Divide : การหาร Add number to total total = total + number Divide total_marks by student_count sale_tax = cost_price * 0.10 Compute C = (F-32) * 5/9
4. การกำหนดค่าข้อมูลของคอมพิวเตอร์ Setหรือ Initialise: การกำหนดค่าเริ่มต้นให้กับข้อมูล ตาม to = : การกำหนดค่าผลลัพธ์ที่ได้จากการประมวลผล Saveหรือ Store : การเก็บค่าข้อมูลไว้ใช้งานในครั้งต่อไป Initialise total accumulators to zero Set student_count to 0 total_price = cost_price + sale_tax Store customer_num in last_customer_num
5. การเปรียบเทียบข้อมูล 2 อย่าง และมีการเลือกทางเดียวหรือสองทางเลือกในการทำงานหรือหลายทาง 5.1 การเปรียบเทียบระหว่าง 2 ค่า เป็นการเปรียบเทียบเงื่อนไข ถ้าเงื่อนไขเป็นจริงจะให้ทำคำสั่งกลุ่มหนึ่ง แต่ถ้าเงื่อนไขเป็นเท็จให้ทำคำสั่งอีกกลุ่มหนึ่ง ใช้คำว่า if..then..else..endif if (เงื่อนไข) thenกลุ่มคำสั่งกรณีเงื่อนไขเป็นจริง else กลุ่มคำสั่งกรณีเงื่อนไขเป็นเท็จ endif ตัวอย่าง if (x > 0) then read x else compute sum = x + y endif
5. การเปรียบเทียบข้อมูล 2 อย่าง และมีการเลือกทางเดียวหรือสองทางเลือกในการทำงานหรือหลายทาง 5.2 การเปรียบเทียบทางเลือกหลายทาง เป็นการเปรียบเทียบค่าของข้อมูล โดยจะไปทำกลุ่มคำสั่งตามค่าของตัวแปรที่ใช้เปรียบเทียบ ใช้คำว่า case case ตัวแปรที่ใช้เปรียบเทียบ of ค่าตัวแปร1 : กลุ่มคำสั่งกรณีตัวแปรมีค่าเท่ากับค่าตัวแปร1 ค่าตัวแปร2 : กลุ่มคำสั่งกรณีตัวแปรมีค่าเท่ากับค่าตัวแปร2 ... endcase
5.2 ตัวอย่างการทำงานหลายทางเลือก Case grade of 4 : write ‘A’ 3 : write ‘B’ 2 : write ‘C’ 1 : write ‘D’ 0 : write ‘F’ endcase
6. การทำงานซ้ำของคอมพิวเตอร์ การทำงานแบบวนซ้ำ มี 3 รูปแบบ คือ 6.1 do-whileมีการเปรียบเทียบเงื่อนไขก่อนที่จะทำคำสั่งภายใน แล้วจึงทำการเปรียบเทียบเงื่อนไขอีกครั้ง แต่ถ้าเงื่อนไขเป็นเท็จจะไม่ทำคำสั่งภายในแต่จะข้ามไปทำคำสั่งถัดไปจาก do-while do (เงื่อนไขที่ใช้เปรียบเทียบ) while กลุ่มคำสั่งกรณีเงื่อนไขเป็นจริง enddo end-of = ‘N’ do (end-of = ‘N’) while write ‘A’ compute x = y + 1 read end-of enddo
6. การทำงานซ้ำของคอมพิวเตอร์ 6.2 repeat-untilทำคำสั่งภายในก่อน แล้วจึงทำการเปรียบเทียบเงื่อนไข ถ้าเงื่อนไขเป็นเท็จจะทำคำสั่งภายใน แต่ ถ้าเงื่อนไขเป็นจริงจะข้ามไปทำคำสั่งถัดไปจาก repeat-until repeat กลุ่มคำสั่งกรณีเงื่อนไขเป็นเท็จ until (เงื่อนไขที่ใช้เปรียบเทียบ) end-of = ‘N’ repeat write ‘A’ compute x = y + 1 read end-of until(end-of = ‘Y’)
6. การทำงานซ้ำของคอมพิวเตอร์ 6.3 for-endforทำคำสั่งภายในตามจำนวนครั้งที่กำหนด ซึ่งต้องมีตัวแปรนับมาช่วย เพื่อกำหนดจำนวนครั้งในการทำซ้ำ for ตัวแปรนับ = ค่าเริ่มต้น to ค่าสุดท้าย กลุ่มคำสั่ง endfor For counter = 1 to 3 write ‘A’ endfor
1 ตัวอย่าง (Nature language) ตัวอย่างที่1. จงเขียนอัลกอริทึมเพื่อคำนวณหาความยาวของที่ดินแปลงหนึ่ง โดยทราบค่าพื้นที่และความกว้าง แล้วแสดงผลทางหน้าจอ วิธีทำ (1). กำหนดค่าเริ่มต้นของความยาวที่ดิน เป็น 0 (2). รับค่าของข้อมูลพื้นที่และความกว้างของที่ดิน (3). คำนวณค่า ความยาวที่ดิน= พื้นที่ / ความกว้าง (4). แสดงผลค่าความยาวที่ดินที่ได้จากการคำนวณ
ตัวอย่างที่2.จงเขียนอัลกอริทึมเพื่อรับข้อมูลราคาสินค้าต่อหน่วย และจำนวนที่ซื้อสินค้านั้น เพื่อคำนวณหาราคาสินค้ารวม ภายใต้เงื่อนไขต่อไปนี้ถ้าซื้อเป็นจำนวนน้อยกว่า 6 ชิ้น ลดราคา 10 % ถ้าซื้อเป็นจำนวนมากกว่าหรือเท่ากับ 6 ชิ้น ลดราคา 15 % วิธีทำ (1). กำหนดค่าเริ่มต้นของราคาสินค้ารวม เป็น 0 (2). รับข้อมูล ราคาสินค้าต่อหน่วย และจำนวนสินค้าที่ซื้อ (3). เปรียบเทียบจำนวนสินค้า ถ้าสินค้ามีน้อยกว่า 6 ชิ้น ให้คำนวณ ราคาสินค้ารวม = (ราคาสินค้าต่อหน่วยxจำนวนชิ้น) x 90/100 ถ้าสินค้ามีมากกว่าหรือเท่ากับ 6 ชิ้น ให้คำนวณ ราคาสินค้ารวม = (ราคาสินค้าต่อหน่วย xจำนวนชิ้น) x 85/100 (4). แสดงผลราคาสินค้ารวมที่คำนวณได้
จากตัวอย่างที่ 2 ทำในรูปแบบของซูโดโคด คือ วิธีทำ กำหนดตัวแปร grandtotal = ราคาสินค้ารวม price = ราคาสินค้าต่อหน่วย , numbers= จำนวนสินค้า Start grandtotal = 0 read price, numbers if (numbers < 6) then compute grandtotal = (price * numbers) * 90/100 else compute grandtotal = (price * numbers) * 85/100 endif write grandtotal Stop
ตัวอย่างที่ 3.จงเขียนอัลกอริทึมเพื่อรับข้อมูลราคาสินค้าต่อหน่วย และจำนวนที่ซื้อสินค้ามากกว่า 1 รายการสินค้า เพื่อคำนวณหาราคาสินค้ารวม ภายใต้เงื่อนไขคือ ให้หยุดเมื่อรายการสินค้ามากกว่า 10 รายการ วิธีทำ(1). กำหนดค่าเริ่มต้นของ ราคาสินค้า และราคาสินค้ารวม เป็น 0 และจำนวนรายการเป็น 0 (2). รับข้อมูลราคาสินค้าต่อหน่วย และจำนวนสินค้าที่ซื้อ (3). คำนวณ เพิ่มจำนวนรายการสินค้า นั่นคือ จำนวนรายการ = จำนวนรายการ + 1 (4). คำนวณ ราคาสินค้า = ราคาสินค้าต่อหน่วย x จำนวนสินค้า คำนวณสะสม ราคาสินค้ารวม = ราคาสินค้ารวม +ราคาสินค้า (5). เปรียบเทียบจำนวนรายการว่ามากกว่า 10 รายการหรือไม่ ถ้าไม่ ให้ทำวน ข้อ (2)ใหม่ ถ้ามากกว่าก็ให้ทำข้อ (6) (6). แสดงผลค่าราคาสินค้ารวม
จากตัวอย่างที่ 3 ทำในรูปแบบของซูโดโคด คือ วิธีทำ กำหนดตัวแปร grandtotal = ราคาสินค้ารวม price = ราคาสินค้าต่อหน่วย numbers= จำนวนสินค้า grandprice = ราคาสินค้า counter = จำนวนรายการ เนื่องจากมีการวนซ้ำเกิดขึ้นเพราะโจทย์บอกให้ทำมากกว่า 1 รายการ ซึ่งการที่จะใช้ do-while , repeat-until และ for ให้ผลไม่เหมือนกัน เราต้องพิจารณาให้ดีว่าโจทย์ ต้องการอะไรและให้ทำกี่รอบกันแน่ รวมถึงการตั้งค่าเริ่มต้นให้กับตัวแปรนับที่จะใช้เป็น เงื่อนไขด้วย
จากตัวอย่างที่ 3 ทำในรูปแบบของซูโดโคด คือ Start grandtotal = 0, grandprice = 0, counter = 0 repeat read price, numbers compute counter = counter + 1 compute grandprice = price * numbers compute grandtotal = grandtotal + grandprice until (counter > 10) write grandtotal Stop
การเขียนซูโดโคด (Pseudo Code)เปรียบเทียบระหว่างการเขียนเป็นผังงาน
จากตัวอย่างที่ 1 ทำในรูปแบบของflowchart คือ Start Lplace = 0 read surface, wplace compute lplace = surface / wplace write lplace Stop
จากตัวอย่างที่ 2 ทำในรูปแบบของflowchart คือ Start grandtotal = 0 read price, numbers (numbers < 6) yes grandtotal = (price * numbers) * 90/100 no write grandtotal grandtotal = (price * numbers) * 85/100 Stop
สรุปโครงสร้างพื้นฐานสำหรับการเขียนโปรแกรมแบบการเขียนซูโดโคด รหัสจำลอง (Pseudo Code) 1. โครงสร้างตามลำดับ (Sequence Structure) statement a statement b statement c Add 1 to page_count Print heading line Set linecount to zero Read customer record
2. โครงสร้างการเลือก (Selection Structure) IF condition p is true THEN IF student is part_time THEN statement(s) in true case add 1 to part_time_count ELSE ELSE statement(s) in false case add 1 to full_time_count ENDIF ENDIF
3. โครงสร้างการทำงานซ้ำ (Repetition Structure) DOWHILE condition p is true WHILE condition p is true DO statement block statement block ENDDO ENDWHILE
ตัวอย่าง โปรแกรมมีการรับค่าตัวเลข 3 จำนวน แล้วนำมาบวกกัน จากนั้นพิมพ์ค่าผลบวกที่ได้ Input Processing Output number_1 Read three numbers total number_2 Add numbers together number_3 Print total number ตัวแปรที่ใช้สำหรับเก็บค่าตัวเลข 3 จำนวน คือ Number_1,Number_2,Number_3 ตามลำดับ ตัวแปรที่เก็บค่าผลบวก คือ Total
รูปแบบการเขียนอัลกอริทึม (ต่อ) 4. การเขียนโครงสร้างการทำงาน (Structure Chart) เป็นการออกแบบอัลกอริทึมหรือออกแบบผังงานที่ไม่ซับซ้อนมากนัก โดยแบ่งงานเป็นงานย่อย (subtask) หรือ function หรือ module ซึ่งทำงานเฉพาะอย่าง โดยกำหนดชื่อของแต่ละโมดูลไว้ ทำให้สามารถทำความเข้าใจ งานใหญ่ๆและซับซ้อนได้ ผู้ออกแบบสามารถพัฒนาอัลกอริทึมของแต่ละโมดูลได้