รหัสเทียม หรือซูโดโค้ด
รหัสเทียม หรือซูโดโค้ด
รหัสเทียม หรือซูโดโค้ด (Pseudo Code) คือ รหัสลำลองที่ใช้เป็นตัวแทนของอัลกอริทึม โดยมีถ้อยคำหรือประโยคคำสั่งที่เขียนอยู่ในรูปแบบของภาษาอังกฤษที่ไม่ขึ้นกับภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง [3]p.37
อีกนิยามหนึ่ง รหัสเทียม คือ การแสดงขั้นตอนวิธีการที่ใช้ภาษาเขียนที่เข้าใจได้ง่าย อาจใช้ภาษาไทยหรือภาษาอังกฤษก็ได้ขึ้นอยู่กับความสะดวกของผู้เขียนและกิจกรรมที่จะนำเสนอ มักใช้รูปแบบคล้ายประโยคภาษาอังกฤษเพื่ออธิบายรายละเอียดของอัลกอริทึม

อัลกอริทึม (Algorithm)
คือ กลุ่มของขั้นตอนหรือกฎเกณฑ์ที่จะนำพาไปสู่การแก้ปัญหา [3]p.37
คือ ขั้นตอนวิธีที่ประกอบด้วยชุดคำสั่งเป็นขั้นเป็นตอนที่ชัดเจน และรับประกันว่าเมื่อได้ปฏิบัติถูกต้องตามขั้นตอนจนครบก็จะได้ผลลัพธ์ที่ถูกต้องตามต้องการ [3]p.37
คือ รูปแบบของการกำหนดการทำงานอย่างเป็นขั้นตอน ซึ่งผ่านการวิเคราะห์และแยกแยะ เพื่อการแก้ปัญหาต่าง ๆ ตามลำดับขั้น อาจเลือกใช้ภาษาไทยหรือภาษาอังกฤษตามความถนัด เพื่อนำเสนอขั้นตอนของกิจกรรมก็ได้ [4]p.17
รหัสเทียม หรือซูโดโค้ด (Pseudo Code)
คือ รหัสลำลองที่ใช้เป็นตัวแทนของอัลกอริทึม โดยมีถ้อยคำหรือประโยคคำสั่งที่เขียนอยู่ในรูปแบบของภาษาอังกฤษที่ไม่ขึ้นกับภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง [3]p.37
คือ การแสดงขั้นตอนวิธีการที่ใช้ภาษาเขียนที่เข้าใจได้ง่าย อาจใช้ภาษาไทยหรือภาษาอังกฤษก็ได้ขึ้นอยู่กับความสะดวกของผู้เขียนและกิจกรรมที่จะนำเสนอ มักใช้รูปแบบคล้ายประโยคภาษาอังกฤษเพื่ออธิบายรายละเอียดของอัลกอริทึม
ผังงาน (Flowchart) คือ การแสดงขั้นตอนวิธีการที่ใช้สัญลักษณ์ที่เข้าใจได้ง่าย แต่ให้รายละเอียดได้น้อยกว่า
ความแตกต่างของ Algorithm และ Pseudo Code คือ การแสดงความคิดที่ได้จากการจินตนาการถึงขั้นตอน ซึ่งขั้นตอนที่อยู่ในความคิดก็คือ Algorithm ที่ผ่านการแยก และจัดลำดับแล้ว เมื่อนำเสนอก็อาจใช้ภาษาง่าย ๆ แต่หากนำเสนอด้วยการเขียนเป็นภาษาที่สื่อให้ทุกคนเข้าใจตรงกันได้ง่ายก็คือ Pseudo Code นั้นเอง สำหรับหนังสือหลายเล่มแสดง Algorithm ด้วย Pseudo Code ก็ยังเรียกว่า Algorithm ได้เช่นกัน
    หลักการเขียนซูโดโค้ด [3]p.27
  1. ถ้อยคำที่ใช้เขียน ใช้ภาษาอังกฤษที่เข้าใจง่าย
  2. ในหนึ่งบรรทัด ให้มีเพียงหนึ่งประโยคคำสั่ง
  3. ใช้ย่อหน้าให้เป็นประโยชน์ ในการแสดงการควบคุมอย่างเป็นสัดส่วน
  4. แต่ละประโยคคำสั่งให้เขียนจากบนลงล่าง และมีทางออกทางเดียว
  5. กลุ่มของประโยคคำสั่งอาจรวมเป็นหมวดหมู่แล้วเรียกใช้เป็นโมดูล
โปรแกรมส่วนใหญ่ประกอบด้วยกิจกรรม 3 ส่วน
1. input
2. process
3. output
เช่น โปรแกรมหาผลรวม หาค่าเฉลี่ย หาค่าสูงสุด ต่ำสุด

ต.ย. อัลกอริทึมที่ 1 : ต้มมาม่า [3]p.25
1. หามาม่าไว้ 1 ซอง
2. ฉีกซองมาม่าและเทลงถ้วยเปล่า
3. ฉีกซองเครื่องปรุง แล้วเทลงถ้วยเดิม
4. ต้มน้ำให้ร้อนได้ที่ แล้วเทลงถ้วย
5. ปิดฝาไว้ 3 นาที
6. เปิดฝา แล้วรับประทาน
คำถาม : ต้มมาม่า
1. มีขั้นตอนใดสลับกันได้
2. ถ้าเปลี่ยนข้อความ จะเปลี่ยนอย่างไร
3. ถ้าทำหลายถ้วยจะทำอย่างไร

? คน 3 คนใครอายุมากที่สุด และเป็นเท่าใด

ต.ย. อัลกอริทึมที่ 2 : หาค่าเฉลี่ย ใช้ Pseudo Code 
1. set variable
2. loop
1. read number into variable
2. add number to total
3. increase counter 3. end loop 4. set average = total / counter 5. print average

1.


2.



3.
4.
5.
ภาษาจาวา
byte x;
int i = 0;
int total = 0;
while (i < 5) {
  x = System.in.read();
  total = total + x;
  i++;
}
double avg = total/i;
System.out.println(avg);
คำถาม : หาค่าเฉลี่ย
1. เขียนเป็นภาษาไทยอย่างไร
2. แต่ละบรรทัดในจาวาคืออะไร
3. สลับบรรทัดใดในจาวาได้บ้าง

ต.ย. อัลกอริทึม 3 : ต้มมาม่า 30 ถ้วย 
1. ซื้อมาม่า 30 ซอง
2. ต้มน้ำ 7.5 ลิตรจนเดือด
3. ทำซ้ำ 30 ครั้ง
1. เตรียมถ้วยและฝาปิดถ้วย
2. ฉีกซองมาม่า แล้วเทลงถ้วยเปล่า
3. ฉีกเครื่องปรุง แล้วเทลงถ้วยเดิม
4. เทน้ำร้อนลงถ้วยแล้วปิดฝา 4. เรียกเพื่อนทั้ง 30 คน 5. เชิญทุกคนเปิด 30 ฝา แล้วรับประทาน

ต.ย. อัลกอริทึม 4 : รับค่า 3 ครั้งแล้วหาผลรวม [6]p.4
1. set sum
2. input value1
3. input value2
4. input value3
5. calculate sum = value1 + value2 + value3
6. write sum

ต.ย. อัลกอริทึม 5 : ใช้เครื่องคิดเลขหาผลรวม [3]p.26 [6]p.4
1. turn on calculator
2. clear calculator
3. repeat the following instructions
1. key in baht amount
2. key in decimal point(.)
3. key in satang amount 4. until all prices have been entered 5. write down total price 6. turn off calculator

ต.ย. อัลกอริทึม 6 : เปรียบเทียบอายุนาย ก กับนาย ข แล้วพิมพ์อายุคนที่มากกว่า 
1. รับอายุนาย ก
2. รับอายุนาย ข
3. เปรียบเทียบ อายุนาย ก มากกว่า อายุนาย ข หรือไม่
1. ถ้ามากกว่า
1. ให้พิมพ์อายุนาย ก
2. ถ้าไม่มากกว่า
1. ให้พิมพ์อายุนาย ข

ต.ย. อัลกอริทึม 7 : เปรียบเทียบอายุนาย ก กับนาย ข กับนาย ค แล้วพิมพ์อายุคนที่มากกว่า #
1. รับอายุนาย ก
2. รับอายุนาย ข
3. รับอายุนาย ค
4. เปรียบเทียบ อายุนาย ก มากกว่า อายุนาย ข และมากกว่า อายุนาย ค หรือไม่
1. ถ้ามากกว่า ให้พิมพ์อายุนาย ก 5. เปรียบเทียบ อายุนาย ข มากกว่า อายุนาย ก และมากกว่า อายุนาย ค หรือไม่
1. ถ้ามากกว่า ให้พิมพ์อายุนาย ข 6. เปรียบเทียบ อายุนาย ค มากกว่า อายุนาย ก และมากกว่า อายุนาย ข หรือไม่
1. ถ้ามากกว่า ให้พิมพ์อายุนาย ค

ต.ย. อัลกอริทึม 8 : เปรียบเทียบอายุนาย ก กับนาย ข กับนาย ค แล้วพิมพ์อายุคนที่มากกว่า #
1. รับอายุนาย ก
2. รับอายุนาย ข
3. รับอายุนาย ค
4. เก็บอายุนาย ก ไว้ในใจ
5. เปรียบเทียบ อายุนาย ข มากกว่าที่เก็บในใจ หรือไม่
1. ถ้ามากกว่า ให้เก็บอายุนาย ข ไว้ในใจ 6. เปรียบเทียบ อายุนาย ค มากกว่าที่เก็บในใจ หรือไม่
1. ถ้ามากกว่า ให้เก็บอายุนาย ค ไว้ในใจ 7. พิมพ์ค่าที่เก็บไว้ในใจ

ต.ย. อัลกอริทึม 9 : จัดเรียงข้อมูลน้อยไปมาก แบบ bubble sort [2]p.21
1. ทำซ้ำจาก i = 1 ถึง count - 1
1. ทำซ้ำจาก j = i + 1 ถึง count
1. ถ้าเงินเดือนของคนที่ i มากกว่าคนที่ j
1. สลับตำแหน่งคนที่ i กับ j
2. ถ้า i ไม่เท่ากับ 1 ให้ลด i ลงอีก 1
ประมวลผล i=1
8, 5 ,4 , 6, 8
8, 5 ,4 , 6, 8
8, 5 ,4 , 6, 8
5, 8 ,4 , 6, 8
ประมวลผล i=2
5, 8 ,4 , 6, 8
5, 8 ,4 , 6, 8
5, 8 ,4 , 6, 8
5, 4 ,8 , 6, 8
จากนี้ให้ i=1 อีกครั้ง

ต.ย. อัลกอริทึม 10 : หาภาษี [3]p.29
set total_tax to 0
get tax
dowhile (tax not equal 0)
add tax to total_tax
get tax enddo print total_tax
เอกสารฉบับเต็ม (Full Text)

รศ.ดร.สมชาย ประสิทธิ์จูตระกูล

Bruno R. Preiss

Mark Allen Weiss

William H. Ford

DB: พัฒณืรพี

Michael Mcmillan
เอกสารอ้างอิง (Reference)
[1] นิรุธ อำนวยศิลป์, "โครงสร้างข้อมูล : การเขียนโปรแกรมและการประยุกต์", บริษัท ดวงกมลสมัย จำกัด., กรุงเทพฯ, 2548.
[2] Guy J.Hale, Richard J.Easton, "Applied Daa Structures Using Pascal", D.C.Heath and Company. Canada. 2530.
[3] โอภาส เอี่ยมสิริวงศ์, "โครงสร้างข้อมูล (Data Structures) เพื่อการออกแบบโปรแกรมคอมพิวเตอร์", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2549.
[4] วิวัฒน์ อภิสิทธิ์ภิญโญ, อมร มุสิกสาร, "โครงสร้างข้อมูล (Data Structures)", บริษัท เอ-บุ๊ค ดิสทริบิวชั่น จำกัด., กรุงเทพฯ, 2548.
[5] เนรมิต ชุมสาย ณ อยุธยา, "เรียนรู้โครงสร้างข้อมูลและอัลกอริทึมด้วย Java", บริษัท ซีเอ็ดยูเคชั่น จำกัด., กรุงเทพฯ, 2550.
[6] ขนิษฐา นามี, "โครงสร้างข้อมูลและอัลกอริทึม", บริษัท ไอดีซี อินโฟ ดิสทริบิวเตอร์ เซ็นเตอร์ จำกัด., กรุงเทพฯ, 2548.
[7] ปิยทัสน์ ฉัตรวรวิทย์, "โครงสร้างข้อมูลด้วย Java", บริษัท โปรวิชั่น จำกัด., กรุงเทพฯ, 2552.
[8] Michael McMillan, "Data Structures and Algorithms with JavaScript", O’Reilly Media, Inc., USA., 2014.
[9] รศ.ดร.สมชาย ประสิทธิ์จูตระกูล, "โครงสร้างข้อมูลด้วยภาษาจาวา", ภาควิชาวิศวกรรมคอมพิวเตอร์, จุฬาลงกรณ์มหาวิทยาลัย, 2549.
[10] Loiane Groner, "Learning JavaScript Data Structures and Algorithms", Packt Publishing, 2014.
[11] Robert Sedgewick and Kevin Wayne, "Algorithms (4th Edition)", Addison-Wesley Professional, 2011.