Pseudocode ควรอธิบายตรรกะทั้งหมดของอัลกอริทึม เพื่อให้การเขียนโปรแกรมกลายเป็นงานในการแปลบรรทัดของ pseudocode ให้เป็นโค้ดจริง
สำหรับแต่ละข้อต่อไปนี้ เราจะมาอภิปรายว่าทำไมแต่ละรหัสเทียมจึงถือเป็นตัวอย่างของรหัสเทียมที่ "ดี" หรือ "ไม่ดี":
ตัวอย่าง 1.1:
PROGRAM IsEvenOrOdd:
var num = number;
IF (num % 2 === 0)
THEN Print "even";
ELSE Print "odd";
ENDIF;
END.
ถามเราคิดอย่างไร?
ก. นี่ไม่ใช่ตัวอย่างที่ดีนัก ที่นี่เราใช้ "var" ในรหัสเทียมของเราเมื่อควรอ่านภาษาอังกฤษธรรมดา! นอกจากนี้ เราไม่ควรใช้ไวยากรณ์จาวาสคริปต์ "===" ในเงื่อนไขของเรา ผู้ที่ไม่ใช่โปรแกรมเมอร์จะรู้หรือไม่ว่า
num % 2 === 0
หมายถึงเลขคู่
ตัวอย่าง 1.2:
PROGRAM IsEvenOrOdd:
Read number;
IF (number divided by two has no remainder)
THEN Print the number is even;
ELSE Print the number is odd;
ENDIF;
END.
ถามเราคิดอย่างไร?
ก. นี่จะดีกว่า. มันใกล้เคียงกับภาษาอังกฤษมากขึ้น มันระบุอย่างชัดเจนถึงสิ่งที่เราพยายามทำให้สำเร็จและทำอย่างไร โดยไม่จมอยู่กับโค้ดที่ยุ่งยาก แม้แต่คนที่ไม่ใช้โค้ดก็สามารถช่วยให้เราตรวจสอบตรรกะได้ เป็นจำนวนใดๆ ที่สามารถหารด้วยสองได้อย่างหมดจด -- โดยไม่เหลือเศษ -- เลขคู่หรือไม่? มีอะไรแปลกอีกไหม?
จาก รับความคิดสร้างสรรค์วันนี้
ตัวอย่าง 2.1:
Make PB&J Sandwich:
Gather bread, peanut butter and jelly.
Apply peanut butter to slice of bread.
Apply jelly to another slice of bread.
Bring the two slices of bread together.
Eat and enjoy.
ถามเราคิดอย่างไร?
A. นี่เป็นจุดเริ่มต้นที่ดี เป็นชุดคำสั่งที่ดีและใช้งานง่ายสำหรับเราในการปฏิบัติตาม อย่างไรก็ตาม เรายังไม่รู้ว่าจำเป็นต้องมีขั้นตอนทางกายภาพอะไรบ้าง
ใช้เวลาสักครู่เพื่อจินตนาการ ลองนึกภาพถ้าคุณไม่เคยทำแซนด์วิชมาก่อน เคย. ลองนึกถึงคำแนะนำที่คุณต้องการสำหรับแซนวิชชิ้นแรก คอมพิวเตอร์ไม่มีหน่วยความจำจริง ทุกครั้งที่เริ่มงาน จะไม่มีความทรงจำที่ได้ทำมาก่อน เราต้องบอกมันทุกขั้นตอนทุกครั้ง เราจำเป็นต้องแบ่งสิ่งเหล่านี้ออกเป็นขั้นตอนเล็กๆ เพื่อให้คอมพิวเตอร์เข้าใจ
ตัวอย่าง 2.2:
PROGRAM MakePB&JSandwich:
Grab a paper plate;
Open bread container;
Grab bread package;
Untwist bread package;
Open bread bag and remove two slices;
Place slices on paper plate;
Grab a plastic knife;
Open peanut butter jar;
Use knife to scoop out peanut butter;
Apply peanut butter to one slice of bread;
Spread peanut butter on slice;
Place knife on plate;
Close peanut butter jar;
Open jelly bottle;
Squeeze jelly onto second bread slice;
Close jelly bottle;
Place down jelly;
Pick up knife;
Spread jelly on slice;
Bring two slices of bread together;
Cut slices in half down the middle;
Throw knife in the trash;
Pick up one half of sandwich;
Enjoy;
END.
ถามเราคิดอย่างไร?
A. ลำดับของตัวอย่างนี้ละเอียดมาก! อย่างไรก็ตาม เรายังคงสันนิษฐานว่ามีเงื่อนไขบางประการว่ามีเครื่องใช้หรือส่วนผสมของเราอยู่แล้ว จะเกิดอะไรขึ้นถ้าเราไม่มีจาน? เราจะหยิบผ้าเช็ดปากมาวางแซนด์วิชแทนไหม? จะเป็นอย่างไรถ้าเราเจลลี่หมด? คุณจะทิ้งแซนด์วิชทิ้งหรือกินกับเนยถั่วเท่านั้น?
คอมพิวเตอร์ไม่ฉลาด เราจำเป็นต้องให้คำแนะนำทีละขั้นตอนเพื่อพิจารณาเงื่อนไขต่างๆ พวกเขาไม่สามารถปรับตัวเพื่อทำการเปลี่ยนแปลงโดยไม่ได้รับการบอกกล่าวอย่างชัดเจน การเขียนโปรแกรมเป็นชุดของงานซึ่งสามารถดำเนินการให้เสร็จสิ้นได้ก็ต่อเมื่อตรงตามเงื่อนไขจำนวนหนึ่งเท่านั้น
คอมพิวเตอร์ปรับตัวไม่ได้ แต่เราทำได้ การผ่านครั้งแรกของคุณที่รหัสเทียมอาจจะไม่ครอบคลุมทุกอย่าง เมื่อคุณรู้มากขึ้นแล้ว คุณสามารถกลับมาอัปเดตและปรับโครงสร้างรหัสเทียมของคุณใหม่ได้
Pseudocode ไม่ใช่แค่การเขียนขั้นตอนที่คุณทราบอยู่แล้วเท่านั้น เป็นเครื่องมือที่จะช่วยให้คุณแก้ไขปัญหาได้ ก่อนที่เราจะสามารถเขียน pseudocode เพื่อแก้ปัญหาได้ เราต้องรู้ปัญหาเสียก่อน
ต่อไปนี้เป็นขั้นตอนบางส่วนที่สามารถช่วยแก้ไขปัญหาได้:
ในที่สุดเราก็ดำเนินการบางอย่าง นี่คือตอนที่เราเริ่มเขียนโค้ดในที่สุด เราต่อสู้อย่างหนักเพื่อก้าวเล็กๆ ตรวจสอบว่าแต่ละขั้นตอนบรรลุสิ่งที่เราต้องการ สิ่งที่เราคาดหวัง ก่อนที่จะดำเนินการต่อ หากเราทำมากเกินไปในคราวเดียวและสิ่งต่างๆ พัง ซึ่งมักจะทำอยู่เสมอ เราจะไม่รู้ว่าอะไรเป็นสาเหตุของปัญหา เราจะไม่รู้ว่าจะเชื่อส่วนไหน มนุษย์เจริญเติบโตได้ด้วยการชนะอย่างง่ายดาย เราจำเป็นต้องเห็นความก้าวหน้าไปข้างหน้า จำไว้นะ. ใช้สิ่งนั้น เฉลิมฉลองชัยชนะของคุณ
ถาม pseudocode เหมาะกับขั้นตอนเหล่านี้ตรงไหน?
ก. ทำลายมันลงหรือเริ่มทีละน้อย
กระบวนการนี้เป็นการทำซ้ำ เราวนเวียนไปรอบๆ และทำซ้ำขั้นตอนก่อนหน้านี้ ในระดับที่แตกต่างกัน
เมื่อเราแก้ไขปัญหาเป็นครั้งแรก เราจะมองเห็นภาพใหญ่ "ทำลายมันลง" ทำให้เราก้าวสำคัญ จากนั้นเราดำเนินการขั้นตอนใดขั้นตอนหนึ่งและ "ทำลายมันลง" ตอนนี้ เริ่มจากเล็กๆ น้อยๆ เราเขียน pseudocode เพื่อช่วยอธิบายปัญหา
การเข้ารหัสเทียมพิสูจน์ให้เห็นว่าเราได้ ระบุ ปัญหาแล้ว เข้าใจ ตามแนวคิด และได้ แยกย่อยออก เป็น ขั้นตอนเล็กๆ ที่เราสามารถปฏิบัติตามได้
ไม่มีใครแก้ไขไวยากรณ์สำหรับรหัสเทียม เพียงแค่ต้องมีความชัดเจน เรียบง่าย และรัดกุม
หากคุณรู้สึกติดขัด โปรดใช้ไวยากรณ์นี้:
การอ้างอิง: รู้เบื้องต้นเกี่ยวกับ Pseudocode
โครงสร้างทั่วไปของรหัสเทียม
PROGRAM <ProgramName>:
<Do Stuff>
END.
การเลือก: คำสั่ง IF/ELSE
IF (<Condition>)
THEN <Statements>;
ELSE <Statements>;
ENDIF;
การวนซ้ำ: LOOP
WHILE (<Condition>)
ENDWHILE;
ทำตามคำแนะนำใน Starter_code/pseudo_code_practice.md