แม้ว่าโค้ดหลอกดูเหมือนว่าจะใกล้เคียงกับโค้ดมากกว่าอัลกอริทึม แต่ในทางปฏิบัติโค้ดหลอกจะเป็นทางการน้อยกว่าและเป็นคำอธิบายระดับสูง ตัวอย่างเช่นคุณสามารถอธิบายการเล่นคอมพิวเตอร์หมากรุกเป็นรหัสเทียมเช่นนี้
- วางชิ้นเริ่มต้นในสถานที่ของพวกเขา
- แสดงบอร์ด
- ในขณะที่เกมไม่จบ
- ทำการย้ายและแสดงบอร์ด
- ผู้ใช้ที่พร้อมท์สำหรับการย้าย
- ทำให้ผู้ใช้ย้าย
ใช่นี่เป็นรหัสเทียมมันมีประโยชน์ในฐานะจุดเริ่มต้นที่ดี แต่คัดสรรรายละเอียดมากมาย มันไม่ได้คำนึงถึงความยากลำบากในการใช้งานและรูปแบบต่าง ๆ แต่ประโยชน์ที่ใหญ่ที่สุดคือช่วยให้คุณสามารถกำหนดแนวคิดสถานการณ์ทั้งหมดโดยไม่ต้องแก้ไขรายละเอียดทั้งหมด
คุณสามารถแก้ไขได้โดยเพิ่มระดับอีกหนึ่งระดับดังนี้:
- วางชิ้นเริ่มต้นในสถานที่ของพวกเขา
- แสดงบอร์ด
- ในขณะที่คณะกรรมการไม่ได้รุกฆาตหรือวาด
- ทำรายการการเคลื่อนไหวทางกฎหมายของไวท์
- เลือกที่ดีที่สุดตามเกณฑ์บางอย่าง
- ทำให้การย้ายและการคำนวณบอร์ดที่เกิดขึ้น
- ดูว่ามีการรุกฆาตหรือวาดเกิดขึ้น
- บอร์ดแสดงผล
- ทำรายการการเคลื่อนไหวทางกฎหมายของคนผิวดำ
- ผู้ใช้พรอมต์สำหรับการย้ายตามกฎหมายสำหรับการป้อนข้อมูล
- ทำให้การย้ายและการคำนวณบอร์ดที่เกิดขึ้น
- ดูว่ามีการรุกฆาตหรือวาดเกิดขึ้น
- บอร์ดแสดงผล
ตอนนี้คุณสามารถเขียน pseudocode สำหรับแต่ละขั้นตอนสำคัญเช่น "ทำรายการการเคลื่อนไหวทางกฎหมายของ black" ดังนี้:
- สำหรับแต่ละชิ้นสีดำ
- สำหรับประเภทชิ้นในสถานที่ที่กำหนด
- ทำรายการสถานที่ที่เป็นไปได้ต่อไป
ตอนนี้คุณสามารถเห็นพลังของ pseudocode เป็นจริงในความสามารถในการแสดงสถานการณ์ทั้งหมดในครั้งเดียวแล้วช่วยให้คุณสามารถที่อยู่รายละเอียดทีละชิ้น จุดอ่อนคือขั้นตอนใด ๆ นั้นไม่ได้เป็นขั้นตอนง่ายๆ
อัลกอริทึมมักจะเลือกหนึ่งในขั้นตอนเหล่านี้และรายละเอียดโครงสร้างข้อมูลต่างๆในภาษาสัญลักษณ์เพื่อให้คุณสามารถบรรลุเป้าหมายของขั้นตอนได้อย่างมีประสิทธิภาพ
ตัวอย่างเช่นget_legal_moves(board, color)
มีค่าของการออกแบบอัลกอริทึม:
get_legal_moves(board, color):
for i,j in board_dimensions
if piece_at i,j is of color
if piece type is KNIGHT
add the following to the next moves list:
location i+1 j+2, i-1 j+2... etc
if piece type is rook
add locations:....
คุณจะเห็นว่าอัลกอริทึมจะต้องแม่นยำมากที่จะเป็นประโยชน์
มันช่วยให้มั่นใจได้หลายสิ่ง: เป้าหมายจะบรรลุได้โดยไม่มีข้อผิดพลาดอันดับแรกและสำคัญที่สุด ขั้นตอนนั้นมีรายละเอียดมากและสามารถใช้งานได้ในลักษณะของยานยนต์และขั้นตอนนั้นมีขนาดเล็กพอที่คุณสามารถจัดลำดับใหม่เพื่อเพิ่มประสิทธิภาพ (ความเร็ว) ที่คุณทำงานให้เสร็จ