วันจันทร์ที่ 20 สิงหาคม พ.ศ. 2555

รหัสเทียม (Psuedocode)

รหัสเทียม (Psuedocode)

การเขียนขั้นตอนวิธีโดยการใช้ภาษาธรรมชาติอาจมีความกำกวมหรือยืดยาวเกินไป ทำให้เกิดการผิดพลาดได้ง่าย ส่วนการใช้โปรแกรมภาษาอาจมีความเฉพาะจนเกินไป ผู้ที่ไม่เข้าใจโปรแกรมภาษาที่ใช้เขียนอาจไม่สามารถเข้าใจได้ รหัสเทียมเป็นส่วนผสมของการใช้ภาษาธรรมชาติและโปรแกรมภาษา เพื่อใช้ในการสื่อสารระหว่างผู้ใช้หลายกลุ่มที่มีความต้องการใช้ขั้นตอนวิธีต่างกันออกไป
รหัสเทียมไม่มีกฎในการเขียนตายตัว โดยมากขึ้นอยู่กับความถนัดของผู้ใช้ แต่มีข้อตกลงบางอย่างร่วมกันเป็นสากล ส่วนประกอบที่สำคัญของรหัสเทียม ได้แก่ ชื่อ คำสั่งกำหนดงาน คำสั่งควบคุม กลุ่มของคำสั่ง และข้อบันทึกหรือคำอธิบาย

ชื่อ (Name)

มักขึ้นต้นด้วยคำว่า procedure ตามด้วยชื่อของขั้นตอนวิธี และลำดับและชนิดของตัวแปรที่ใช้รับข้อมูลนำเข้า เช่น
Procedure FindMax(a1, a2, …, an : integers)

คำสั่งกำหนดงาน (Assignment Statements)

ใช้เครื่องหมาย := (หรือบางครั้งใช้ ¬) สำหรับกำหนดค่าจากนิพจน์ทางขวาให้แก่ตัวแปรทางด้านซ้าย
เช่น
Variable := expression
b := 5
a := n + 10
d := sqrt(4)
z ¬ จำนวนที่มากที่สุดในลำดับ L
a ¬ สลับค่าของตัวแปร a กับ b

กลุ่มของคำสั่ง (Blocks of Statements)

คำสั่งอาจมีการรวมกลุ่มเพื่อให้ง่ายต่อการเข้าใจโดยขึ้นต้นกลุ่ม(Block) ด้วยคำว่า begin และสิ้นสุดด้วยคำว่า end ทั้งนี้แต่ละบรรทัดของคำสั่งจะมีการย่อหน้าที่เท่ากันด้วย
เช่น
begin
b:=i
n:=sqrt(b)
q:=b/n
end
ข้อบันทึกหรือคำอธิบาย
บันทึกในเครื่องหมาย {} เพื่อช่วยเตือนความจำหรืออธิบายขั้นตอนที่อาจเข้าใจยาก
เช่น
n := floor(x)
{floor function floor(1.5) = 1 and floor(-1.5) = -2}

คำสั่งควบคุม (control Statements)

แบ่งได้เป็น 2 ชนิด คือ
1. คำสั่งเงื่อนไข การทำงานเริ่มจากเงื่อนไขจะถูกตรวจสอบก่อน ถ้าเป็นจริงแล้วคำสั่ง(หรือกลุ่มของคำสั่ง) ที่กำหนดไว้จะถูกปฏิบัติต่อไป โดยอาจมีทางเลือกด้วยว่าถ้าเงื่อนไขไม่เป็นจริง จะปฏิบัติคำสั่ง(หรือกลุ่มของคำสั่ง) อื่นแทน คำสั่งเงื่อนไขมีรูปแบบคือ
IF(เงื่อนไข)then
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติเมื่อเงื่อนไขเป็นจริง
หรือ
IF(เงื่อนไข)then
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติเมื่อเงื่อนไขเป็นจริง
else
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติเมื่อเงื่อนไขไม่เป็นจริง
เงื่อนไขคือนิพจน์ที่เมื่อถูกตรวจสอบหรือคำนวณแล้วจะมีค่าความจริงเป็นจริงหรือเท็จเท่านั้น
เช่น
If (n<0) then
n := -n
ans := sqrt (n)
หรือ
If (a < b) then
smaller := a
else
smaller := b
บางครั้งเงื่อนไขที่ต้องการตรวจสอบอาจมีมากกว่าหนึ่งเงื่อนไข คำสั่งเงื่อนไขสามารถเขียนได้เป็นระบบ
เช่น
If (n > 80) then
Point := 4
Else If (n > 70) then
Point := 3
Else If (n > 60) then
Point := 2
Else If (n > 50) then
Point := 1
Else
Point := 0
2. คำสั่งทำซ้ำ แบ่งได้เป็น 2 แบบ คือ
a. คำสั่งทำซ้ำตามดัชนี(for loop) เริ่มต้นด้วยการกำหนดค่าของดัชนีให้มีค่าเท่ากับ ค่าเริ่มต้น แล้วจึงปฏิบัติคำสั่ง(หรือกลุ่มของคำสั่ง)จนสิ้นสุด จากนั้นค่าของดัชนีจะถูกเพิ่มขึ้นอีกครั้งละ 1 สลับกับการปฏิบัติคำสั่ง(หรือกลุ่มของคำสั่ง) 1 ครั้ง
คำสั่งทำซ้ำตามดัชนีจะสิ้นสุดก็ต่อเมื่อตัวแปรที่เป็นดัชนีมีค่ามากกว่าค่าสุดท้าย
คำสั่งทำซ้ำตามดัชนีมีรูปแบบคือ
For ตัวแปรที่เป็นดัชนี := ค่าเริ่มต้น to ค่าสุดท้าย do
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติ
เช่น
Power := n
For i:= 1 to 5 do
Power := power*n
หรือ
Sum := 0
For j := 1 to 10 do
Sum := sum + j
b. คำสั่งทำซ้ำในขณะที่เงื่อนไขเป็นจริง (While loop) - เริ่มต้นด้วยการตรวจสอบเงื่อนไขก่อนถ้าเป็นจริง คำสั่ง(หรือกลุ่มของคำสั่ง)ที่กำหนดไว้จะถูกปฏิบัติต่อไปจนสุด จากนั้นเงื่อนไขจะถูกตรวจสอบอีก ถ้าเป็นจริงแล้ว คำสั่ง(หรือกลุ่มของคำสั่ง)ที่กำหนดไว้จะถูกปฏิบัติต่อไปจนสิ้นสุดอีกครั้งหนึ่ง
คำสั่งทำซ้ำในขณะที่เงื่อนไขเป็นจริงนี้ จะสิ้นสุดก็ต่อเมื่อตรวจสอบเงื่อนไขแล้วพบว่าไม่จริง
คำสั่งทำซ้ำในขณะที่เงื่อนไขเป็นจริงมีรูปแบบคือ
While(เงื่อนไข)do
คำสั่ง(หรือกลุ่มของคำสั่ง)ที่ต้องปฏิบัติ
เช่น
N := 10000
While (n>1) do
Begin
N := n/10
end

ไม่มีความคิดเห็น:

แสดงความคิดเห็น