หลักการเขียนโปรแกรม

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

วัตถุประสงค์การเรียนรู้

  1. เข้าใจความหมายและความสำคัญ
    ของรหัสเทียม (Pseudo Code)

  2. สามารถเขียนรหัสเทียมเพื่อวางแผนโปรแกรมได้

  3. เรียนรู้วิธีแปลงรหัสเทียมเป็น Flowchart และโค้ดจริง

รหัสเทียมคือการเขียนลำดับคำสั่งหรือขั้นตอนการทำงานของโปรแกรมในรูปแบบกึ่งภาษาโปรแกรมที่อ่านง่าย

การวิเคราะห์ปัญหาคืออะไร?

ประโยชน์ของรหัสเทียม (Pseudo Code)

  1. ช่วยให้การออกแบบโปรแกรมมีความชัดเจน

  2. ง่ายต่อการแปลงเป็นโค้ดจริงในภาษาโปรแกรม

  3. ช่วยให้ทีมพัฒนาสื่อสารกันได้ง่ายขึ้น

ลักษณะของรหัสเทียม (Pseudo Code) ที่ดี

  1. กระชับ อ่านง่าย

  2. ใช้ภาษาที่เป็นมาตรฐาน
    เช่น If, Else, While, For

  3. มีลำดับขั้นตอนที่ชัดเจน

  4. ครอบคลุมทุกกรณีของปัญหา

ขั้นตอนในการเขียน Pseudo Code

  1. ระบุเป้าหมายของโปรแกรม

    • กำหนดว่าต้องการให้โปรแกรมทำอะไร เช่น การคำนวณค่าเฉลี่ย, ค้นหาค่าสูงสุด, หรือแสดงผลข้อมูล

    • เข้าใจปัญหาที่ต้องการแก้ไขให้ชัดเจน

  2. กำหนดลำดับการทำงาน (Algorithm)

    • เขียนขั้นตอนที่ต้องดำเนินการเป็นลำดับ
      ใช้คำง่าย ๆ ที่อธิบายการทำงานของแต่ละขั้นตอน

  3. ใช้คำสั่งแบบโครงสร้าง

    • ใช้คำเช่น IF, ELSE, WHILE, FOR เพื่อบอกลำดับการทำงานหรือการตัดสินใจ

  4. ทำให้อ่านง่าย

    • ใช้ภาษาเรียบง่ายและเว้นวรรคเพื่อความชัดเจน

    • หากมีหลายขั้นตอนในโครงสร้าง ให้ใช้การย่อหน้าเพื่อแบ่งลำดับชั้น

โครงสร้าง (คำสั่ง) พื้นฐานของรหัสเทียม

  1. ลำดับการทำงาน (Sequence)
    ใช้เพื่อกำกับกระบวนการตามขั้นตอนเรียงตามลำดับ

  2. การตัดสินใจ (Decision)
    ใช้เมื่อมีการตัดสินใจ เช่น ถ้าจริง ให้ทำ ... มิฉะนั้นให้ทำ ...

  3. การทำ (วน) ซ้ำ (Iteration)
    ใช้เมื่อมีคำสั่งที่ต้องทำซ้ำหลายครั้ง
    เช่น การแสดงรายการสินค้าในหมวดสินค้าต่าง ๆ

Pseudo: ลำดับการทำงาน (Sequence)

ขึ้นต้นด้วย START
และสิ้นสุดด้วย END

ทำงานจากบนลงล่าง

START
   คำสั่งที่ 1
   คำสั่งที่ 2
   Statement 3
   Statement 4
   ...
   คำสั่งสุดท้าย
END

Pseudo: ลำดับการทำงาน (Sequence)

INPUT ตัวแปร[, ตัวแปรอื่น]

  • การรับข้อมูลเข้ามาใช้งานจากอุปกรณ์ภายนอก เช่น ผู้ใช้งาน พิมพ์ข้อมูลทางคีย์บอร์ด หรือกดรีโมทควบคุม

PRINT ตัวแปร

  • แสดงข้อมูลตัวแปรออกสู่อุปกรณ์ภายนอกเช่น จอภาพ หรือแสดงผลข้อมูลต่อผู้ใช้งาน

Pseudo: ลำดับการทำงาน (Sequence)

ตัวแปร = ตัวแปร-1 (ตัวดำเนินการคณิตศาสตร์) ตัวแปร-2

  • สามารถใช้ตัวแปรเพื่อดำเนินการทางคณิตศาสตร์ โดยใช้เครื่องหมายเท่ากับ (=) ในการกำหนดค่าให้กับตัวแปรดังกล่าว ตัวดำเนินการทางคณิตศาสตร์ที่สำคัญได้แก่

ตัวดำเนินการทางคณิตศาสตร์ ความหมาย
+ บวก
- ลบ
* คูณ
/ หาร
% หรือ MOD หารเอาเฉพาะเศษ
** ยกกำลัง
// หากเอาเฉพาะจำนวนเต็ม

Pseudo: ลำดับการทำงาน (Sequence)

START
   INPUT num1, num2
   SUM = num1 + num2
   PRINT SUM
END

ตัวอย่าง
หาผลบวกของเลข 2 จำนวน

  • กำหนด NUM1 และ NUM2

  • นำ NUM1 บวกกับ NUM2 และเก็บค่าไว้ใน SUM และแสดงผล

Pseudo: การตัดสินใจ (Decision)

IF ... ELSE ... ENDIF

IF เงื่อนไขตรวจสอบ THEN
   ชุดคำสั่งที่นี่ ถ้าเงื่อนไขตรวจสอบเป็นจริง
ELSE
   ชุดคำสั่งที่นี่ ถ้าเงื่อนไขตรวจสอบเป็นเท็จ
ENDIF

เงื่อนไขตรวจสอบ

  • เป็นสมการบูลีน ที่มีคำตอบ จริง หรือ เท็จ เท่านั้น

  • สามารถใช้ตัวดำเนินการทางคณิตศาตร์ ตัวดำเนินการเปรียบเทียบ และตัวดำเนินการเชิงตรรกะมาสร้างเป็นสมการสำหรับ เงื่อนไขตรวจสอบ ได้

ตัวดำเนินการ ที่ใช้กับการตรวจสอบเงื่อนไข

Operator Name Example
== เท่ากับ x == y
!= ไม่เท่ากับ x != y
> มากกว่า x > y
< น้อยกว่า x < y
>= มากกว่าหรือเท่ากับ x >= y
<= น้อยกว่าหรือเท่ากับ x <= y

Comparison

Operators

Operator Description Example
and จริงก็ต่อเมื่อข้อความทั้งสองเป็นจริงทั้งคู่ x < 5 and x < 10
or จริงก็ต่อเมื่อข้อความใดข้อความหนึ่งเป็นจริง x < 5 or x < 4
not กลับค่าจริงเป็นเท็จ หรือ กลับค่าเท็จเป็นจริง not(x < 5 and x < 10)

Logical Operators

ลำดับความสำคัญ สำหรับตัวดำนินการ

  1. P หมายถึง วงเล็บ - ( ... )

  2. E หมายถึง เลขยกกำลัง - ** 

  3. MD หมายถึง การคูณและการหาร - * /

  4. AS หมายถึง การบวกและการลบ - + -

วิธีจำ "PEMDAS"

หากเครื่องหมายดังกล่าวปรากฎในระดับเดียวกัน ให้คำนวณก่อนหลังตามข้อ 1 ถึง 4 และ ซ้ายไปขวา

ตัวอย่าง เงื่อนไขตรวจสอบ

3<4
8 \neq 7
(5 + 3) = 8
!(6 \leq 5)
(4 \times 2) > (3 + 5)
10 / 2 \neq 4
!(9 > 10 \text{ OR } 2 = 2)
(7 - 3) \leq (2 \times 2)
(15 \mod 4) = 3
(2 \times 3) \neq (9 - 3)

3 < 4

8 != 7

(5 + 3) = 8

NOT(6 <= 5)

(4 * 2) > (3 + 5)

10 / 2 != 4

NOT(9 > 10 OR 2 ==2)

(7 - 3) <= (2 * 2)

(15 mod 4) == 3

(2 * 3) != (9 - 3)

PSEUDO CODE

จริง (T)

จริง (T)

จริง (T)

จริง (T)

เท็จ (F)

จริง (T)

เท็จ (F)

จริง (T)

จริง (T)

เท็จ (F)

Pseudo: การตัดสินใจ (Decision)

IF score >= 50 THEN
   PRINT "Pass"
ELSE
   PRINT "Fail"
ENDIF

ตัวอย่าง การตรวจข้อสอบ

ถ้าได้คะแนนมากกว่า 50 ให้สอบผ่าน

Pseudo: การตัดสินใจ (Decision) ตัวอย่าง

การตรวจสอบอุณหภูมิ

  • ถ้ามากกว่า 30 องศา แสดงข้อความ ร้อน

  • ถ้ามากกว่าหรือเท่ากับ 15 แสดง อุ่น

  • นอกเหนือจากนี้แสดงข้อความ เย็น

IF temperature > 30 THEN
   PRINT "Hot"
ELSEIF temperature >= 15 THEN
   PRINT "Warm"
ELSE
   PRINT "Cold"
ENDIF

Pseudo: การทำซ้ำ (Iteration) หรือ การวนรอบ

การวนรอบกรณีทราบจำนวนรอบ

FOR ตัวแปร = เริ่ม TO สิ้นสุด DO
   ชุดคำสั่งในวงรอบ
ENDFOR
FOR i = 1 TO 5 DO
   PRINT i
ENDFOR

วนรอบทั้งหมด 5 รอบ (เริ่ม 1 สิ้นสุด 5)

ในแต่ละรอบแสดงข้อความจากตัวแปร i

ผลลัพธ์:

1

2

3

4

5

Pseudo: การทำซ้ำ (Iteration) หรือ การวนรอบ

การวนรอบกรณีไม่ทราบจำนวนรอบ

WHILE เงื่อนไขตรวจสอบ DO
   ชุดคำสั่งในวงรอบ
ENDWHILE
count = 1
WHILE count < 10 DO
   PRINT count
   count = count + 1
ENDWHILE

วนรอบไปเรื่อย ๆ จนกว่า เงื่อนไข:
count < 10 เป็นเท็จ
จึงจะจบการวนรอบ

ผลลัพธ์:

1

2

3

4

5
6
7
8
9

ตัวอย่างเครื่องใช้ไฟฟ้าที่ใช้แผงวงจรและหลักการวนรอบ

while (switch_is_on):
    rotate_blades()
while (power_on):
    if (temperature > set_point):
        start_cooling()
    else:
        stop_cooling()
while (power_on):
    filter_air()
while (power_on):
    if (room_temperature > target_temperature):
        start_cooling()
    else:
        stop_cooling()

เครื่องซักผ้าแบบอบผ้าแห้งได้

หลักการทำงานเพื่ออบผ้าให้แห้ง

  • ตั้งโปรแกรมอบผ้า กำหนด ความร้อน การหมุนมอเตอร์ และเวลาอบ

  • เครื่องจะหยุดทำงานก็ต่อเมื่อ

    • เวลาที่ตั้งไว้หมดลง หรือ

    • เซนเซอร์วัดความชื้นแสดงค่าว่าไม่มีความชื้นเหลือในตู้อบแล้ว
      ความชื้น < 5% RH

ตัวอย่างรหัสเทียม

การหาค่าผลรวมของตัวเลข 2 ตัว

Start
	Input A, B
	Sum = A + B
	Output Sum
End
Start
	Input N
	If N % 2 == 0 Then
		Output "Even"
	Else
		Output "Odd"
	End If
End

การตรวจสอบว่าตัวเลขเป็นเลขคู่หรือเลขคี่

Workshops

  1. การคำนวณพื้นที่ของรูปสี่เหลี่ยมผืนผ้า

  2. การหาค่าเฉลี่ยของตัวเลข 5 ตัว

  3. การตรวจสอบว่าอุณหภูมิที่ป้อนเข้ามาสูงกว่าหรือต่ำกว่าค่าที่กำหนด

  4. รับค่าตัวเลขจากผู้ใช้งานมา 2 ค่า และหาว่ามีตัวเลขที่อยู่ระหว่างตัวเลขทั้ง 2 ตัวใดบ้างเป็นจำนวนเฉพาะ

เคล็ดลับในการฝึกเขียนรหัสเทียม

  1. ไม่ต้องกังวลเรื่องไวยากรณ์
    Pseudo code ไม่จำเป็นต้องถูกต้องเหมือนภาษาโปรแกรมจริง ๆ แต่ต้องเข้าใจได้ง่าย

  2. โฟกัสที่ลำดับงาน
    ให้เขียนสิ่งที่โปรแกรมต้องทำตามลำดับ อย่าลงรายละเอียดเกินไป

  3. ปรับแก้ตามสถานการณ์
    สามารถแก้ไขและปรับปรุง Pseudo code ได้เมื่อคุณเข้าใจปัญหามากขึ้น

  4. หมั่นทดสอบ
    อ่าน Pseudo code ของคุณและลองทำตามดูว่าได้ผลลัพธ์ตามที่คาดหวังหรือไม่

Final Thoughts

  1. รหัสเทียมเป็นเครื่องมือที่สำคัญสำหรับการวางแผนและออกแบบโปรแกรม

  2. การเขียนรหัสเทียมที่ดีช่วยลดข้อผิดพลาดและทำให้การเขียนโค้ดจริงง่ายขึ้น

  3. ฝึกเขียนรหัสเทียมบ่อย ๆ เพื่อพัฒนาทักษะ

Aj. Krit Th.

https://www.kritth.com