วันพุธที่ 20 พฤษภาคม พ.ศ. 2558

การวิเคราะห์โจทย์ปัญหา การออกแบบอัลกอรีทึม และการเขียนรหัสเทียม

การวิเคราะห์โจทย์ปัญหา การออกแบบอัลกอริทึม และการเขียนรหัสเทียม (Pseudo Code)

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



ขั้นตอนการพัฒนาโปรแกรมมีขั้นตอนดังนี้

1. การก าหนดปัญหา

ผู้เขียนโปรแกรมจะต้องทราบรายละเอียดของปัญหาที่ต้องการแก้ปัญหา และต้องทราบความต้องการ

เช่น ข้อมูลเข้าคืออะไร การประมวลผลคืออะไร ข้อมูลที่ผ่านการประมวลผลแล้วคืออะไร

2. ออกแบบอัลกอริทึม

การออกแบบอัลกอริทึม หมายถึง การออกแบบกระบวนการแก้ปัญหา ในการออกแบบนั้นจะต้องอยู่ใน

รูปแบบของล าดับการท างานที่ชัดเจน เข้าใจง่าย ซึ่งการออกแบบอัลกอริทึมอาจอยู่ในรูปแบบของค าสั่งเทียม

(Pseudo code) หรือผังงาน (Flowchart)

3. เขียนโปรแกรม

เมื่อได้ออกแบบอัลกอริทึมเพื่อใช้แก้ปัญหาแล้ว จะน าอัลกอริทึมมาเขียนโปรแกรมด้วยภาษา คอมพิวเตอร์

ภาษาใดภาษาหนึ่งตามหลักการของภาษานั้นๆ เพื่อสั่งงานให้คอมพิวเตอร์ท างานตามที่ได้ออกแบบไว้

4. ทดสอบและแก้ไขโปรแกรม

เมื่อผู้เขียนโปรแกรมเขียนโปรแกรมเสร็จเรียบร้อยแล้วจะต้องท าการทดสอบการท างานของโปรแกรมด้วย

ชุดข้อมูลต่างๆ เพื่อให้แน่ใจว่าโปแรแกรมที่เขียนขึ้นมานั้นท างานได้ถูกต้องหรือไม่ ถ้าไม่ถูกต้องก็น าโปรแกรมนั้นไป

แก้ไขใหม่

5. การเขียนเอกสารประกอบ

เอกสารอาจประกอบไปด้วยเอกสารซึ่งเป็นรายละเอียดการพัฒนาโปรแกรม เอกสารนี้จะท าให้ผู้ที่น า

โปรแกรมนี้ไปพัฒนาต่อหรือผู้ที่ต้องการศึกษาการพัฒนาโปรแกรมสามารถเข้าใจถึงกระบวนการการออกแบบและ

พัฒนาและสามารถน าไปพัฒนาต่อได้เอกสารอีกอย่างหนึ่งคือเอกสารประกอบการใช้งานโปรแกรมเป็นสิ่งจ าเป็น

ส าหรับผู้ใช้งานโปแกรม เพราะจะเป็นแนวทางในการปฏิบัติงานกับโปรแกรมที่เขียนขึ้นมาได้อย่างถูกต้อง

6. การติดตั้งโปรแกรม

เมื่อโปรแกรมถูกทดสอบเป็นที่เรียบร้อยแล้ว จะต้องน าโปรแกรมไปติดตั้งกับเครื่องคอมพิวเตอร์ที่ต้องการใช้งาน

การออกแบบโปรแกรมและอัลกอริทึม

 ความหมายของอัลกอริทึม

อัลกอริทึม (Algorithm) ราชบัณฑิตยสถานได้ให้ความหมายไว้คือ ขั้นตอนวิธีเป็นขั้นตอนเชิงค านวณโดย

จะท าการเปลี่ยนข้อมูลเข้า (Input) ของปัญหาไปเป็นผลลัพธ์ (Output) ตามที่ต้องการ และขั้นตอนเหล่านั้น

สามารถน าไปเขียนเป็นค าสั่งที่ท างานด้วยเครื่องคอมพิวเตอร์ได้ การแก้ปัญหาโดยการโปรแกรมคอมพิวเตอร์

จะต้องเกี่ยวข้องกับการกระท าค าสั่งชุดหนึ่งๆ ไปตามล าดับที่ก าหนดไว้ซึ่งกระบวนการในการแก้ปัญหาที่เรียกว่า

Algorithm นั้นจะประกอบด้วย

1. การกระท า คือ สิ่งต่างๆ ที่เกิดขึ้นภายในอัลกอริทึมเพื่อให้ได้มาซึ่งผลลัพธ์

2. ล าดับของการกระท า คือ ล าดับก่อนและหลังของการกระท าภายในอัลกอริทึม ซึ่งจะต้องท างาน

ตามล าดับนี้เพื่อให้ได้ผลลัพธ์ตามต้องการ

 การเขียนแสดงอัลกอริทึม สามารถเขียนแสดงได้หลายวิธีดังนี้

1. การเขียนบรรยาย (Narrative Description)

เป็นวิธีการเขียนบรรยายอัลกอริทึมด้วยตัวอักษรเป็นภาษามนุษย์ง่ายส าหรับผู้ที่เริ่มเขียนโปรแกรมแต่ถ้า

น าอัลกอริทึมไปเขียนโปรแกรมจะสามารถปฏิบัติได้ยากเพราะแต่ละคนอาจเขียนไม่เหมือนกันเนื่องจากไม่มี

รูปแบบที่แน่นอน และภาษาที่เขียนบรรยายไม่มีความคล้ายคลึงกับภาษาคอมพิวเตอร์

ตัวอย่าง การเขียนบรรยาย (Narrative Description)

โจทย์ ค านวณหาปริมาตรทรงกระบอกโดยรับข้อมูลที่เป็นความสูงกับรัศมีของวงกลมที่เป็นฐานของ

ทรงกระบอก และแสดงค่าของปริมาตรทรงกระบอก


อธิบายขั้นตอนการท างาน

1. เริ่มต้น

2. รับค่าความสูงและรัศมีของฐานทรงกระบอก

3. ค านวณค่าปริมาตรทรงกระบอก 

4. แสดงค่าของปริมาตรทรงกระบอก

5. จบการท างาน

2. การเขียนรหัสเทียม (Pseudo code)

การเขียนรหัสจ าลองเป็นการน าเสนออัลกอริทึมด้วยรหัสค าสั่งที่ไม่ใช่ภาษาคอมพิวเตอร์ภาษารหัสค าสั่งนี้

เรียกว่า ซูโดโค้ด (Pseudo code) แต่รหัสนี้จะมีลักษณะคลายกับภาษาคอมพิวเตอร์เพื่อให้สามารถน าไปเขียน

โปรแกรมด้วยภาษาคอมพิวเตอร์ได้อย่างสะดวก

ตัวอย่าง การเขียนรหัสเทียม (Pseudo code) เพื่อหาปริมาตรทรงกระบอก

COMPUTE_AREA

INIT area, radius ,high : INTEGER

BEGIN

READ radius, high

area = 3.14159 * radius^2 * high

PRINT area

END

3. การเขียนผังงาน (Flowchart)

การเขียนผังงานจะน าเสนอขั้นตอนการท างานของโปรแกรมโดยใช้รูปภาพและสัญลักษณ์ต่างๆ ซึ่งเป็น

มาตรฐานเดียวกัน เป็นวิธีการน าเสนอที่สามารถถ่ายทอดความเข้าใจได้ง่ายเนื่องจากรูปภาพสามารถสื่อความหมาย

ได้ชัดเจน การเขียนผังงานท าให้ผู้เขียนโปรแกรมสามารถออกแบบและเขียนโปรแกรมได้อย่างรวดเร็ว

กิจกรรมพื้นฐานในการประมวลผลข้อมูล

ในการประมวลผลข้อมูลของคอมพิวเตอร์จะประกอบไปด้วย กิจกรรมการรับข้อมูลเพื่อรับข้อมูลเข้าสู่

เครื่องคอมพิวเตอร์ กิจกรรมการประมวลผลเป็นการกระท ากับข้อมูลเพื่อค านวณหรือเปลี่ยนแปลงข้อมูลไปเป็น

ผลลัพธ์ที่ต้องการ และกิจกรรมสุดท้ายคือกิจกรรมการแสดงข้อมูลเพื่อแสดงผลข้อมูลที่ผ่านการประมวลผลแล้ว



ขั้นตอนการวิเคราะห์ปัญหา

1. การวิเคราะห์ผลลัพธ์ (Output Analysis) เป็นการวิเคราะห์ว่าปัญหาต้องการผลลัพธ์เป็นอะไรเช่น

เป็นตัวเลข ตัวอักษรหรือข้อความ

2. การวิเคราะห์ข้อมูล (Data Analysis) เป็นการวิเคราะห์ถึงข้อมูลและแหล่งที่มาของข้อมูลที่จะน ามา

ประมวลผล โดยข้อมูลที่น าเข้ามาประมวลผลจะเรียกว่า (Input) ซึ่งอาจจะอยู่ในรูปแบบของตัวเลข ตัวอักษรหรือ

ข้อความ ซึ่งปัญหาอาจจะบอกเป็นตัวเลขมาโดยตรงหรือบอกเป็นสิ่งที่จะให้ผู้ใช้ป้อนเข้ามา

3. การวิเคราะห์การประมวลผล (Process Analysis) เป็นการวิเคราะห์ถึงวิธีการประมวลผลข้อมูลที่จะ

ท าให้ได้ผลลัพธ์ที่ต้องการ เช่น การค านวณ การเปรียบเทียบเพื่อเลือกทิศทาง

การวิเคราะห์โจทย์ปัญหา จะต้องท าการพิจารณาเพื่อให้ทราบถึง 3 สิ่งดังต่อไปนี้

1. ข้อมูลเข้า (Input)

2. การประมวลผล (Process)

3. ผลลัพธ์(Output)

ตัวอย่าง การวิเคราะห์โจทย์ปัญหา

ตัวอย่างที่1 จงวิเคราะห์โจทย์ปัญหาการค านวณหาพื้นที่สามเหลี่ยมโดยรับข้อมูลความกว้างของฐานและความสูง

ของสามเหลี่ยมจากผู้ใช้

วิเคราะห์โจทย์ปัญหา ได้ดังนี้

Input คือ ความกว้างของฐาน, ความสูงของสามเหลี่ยม

Process คือ พื้นที่สามเหลี่ยม = 0.5 × ฐาน × สูง

Output คือ พี้นที่สามเหลี่ยม

ตัวอย่างที่ 2 จงวิเคราะห์โจทย์ปัญหาการแปลงหน่วยเงินจากดอลล่าสหรัฐเป็นเงินบาท โดยคิดจาก 1 ดอนล่า

สหรัฐเท่ากับ 34 บาท

วิเคราะห์โจทย์ปัญหา ได้ดังนี้

Input คือ จ านวนเงินดอนล่าสหรัฐ

Process คือ จ านวนเงินบาท = จ านวนเงินดอนล่าสหรัฐ × 34

Output คือ จ านวนเงินบาท

การเขียนอัลกอริทึมด้วยรหัสเทียม (Pseudo Code)

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

ค่าคงที่ค าที่ใช้ในการก าหนดค่าเริ่มต้นได้แก่ INIT และ SET

ตัวอย่าง เช่น INIT A, B, C : INTEGER หมายถึงการประกาศตัวแปร A , B , C เป็นชนิด Integer หรือจ านวน

เต็ม

1. ค าสั่งก าหนดค่าเริ่มต้น เป็นข้อความที่จะใช้ในการก าหนดค่าเริ่มต้นให้กับตัวแปร และ

ชนิดของตัวแปร

SET A = 12 หมายถึง ก าหนดให้ตัวแปร A มีค่าเท่ากับ 12

INTEGER ตัวแปรชนิดตัวเลขจ านวนเต็มเช่น 1, 2, 10, 500

REAL หรือ Float ตัวแปรชนิดตัวเลขจ านวนจริงมีจุดทศนิยม เช่น 1.5, 3.28

CHAR ตัวแปรชนิดตัวอักษร เช่น A, B, X, ก, ข

2. ค าสั่งรับข้อมูล ค าศัพท์ที่ใช้แสดงถึงการรับข้อมูลส าหรับการเขียน Pseudo code เช่น

READ, INPUT, OBTAIN, GET ดังตัวอย่างดังนี้

ตัวอย่างอื่นๆ เช่น

READ A, B, C หมายถึง การรับค่าข้อมูล A, B และ C

INPUT A, B, C

READ Name

GET Score

3. ค าสั่งแสดงผลข้อมูล ค าศัพท์ที่ใช้เขียนเพื่อบอกถึงการแสดงผลข้อมูลได้แก่ PRINT, WRITE,

OUTPUT, DISPLAY และ SHOW เช่น

ตัวอย่างอื่น ๆ เช่น

PRINT A, B, C หมายถึง แสดงค่าตัวแปร A, B และ C

WRITE A, B, C

PRINT “Welcome”

DISPLAY “Welcome”

เรียบเรียงโดย อ.พินันทา ฉัตรวัฒนา

4. ค าสั่งค านวณ ค าสั่งที่ใช้เขียนเพื่อแสดงถึงการค านวณหรือประมวลผล ได้แก่ COMPUTE,

CALCULATE และ DETERMINE

ตารางที่ 3-1 สัญลักษณ์ที่แสดงถึงการค านวณ


ตัวอย่าง การใช้ค าสั่งค านวณเช่น COMPUTE area = width * length

หมายถึง การค านวณพื้นที่ โดยให้ความกว้างคูณด้วยความยาว หรืออาจจะเขียนนิพจน์การค านวณไปเลยโดยไม่

ต้องใช้ค าศัพท์ใดๆ น าหน้า เช่น

area = width * length (width คูณกับ length แล้วน าไปเก็บไว้ที่ตัวแปร area)

X = X + 1 (ตัวแปร X มีค่าเท่ากับค่าเดิมของ X บวกด้วย 1)

X = Y / Z (ตัวแปร X มีค่าเท่ากับ ค่าของ Y หารด้วย Z)

ตัวอย่างการเขียน Pseudo code อย่างง่าย

ตัวอย่างที่3 จงเขียน Pseudo code ค านวณพื้นที่สี่เหลี่ยมใดๆ


5. ค าสั่งเปรียบเทียบและท างานตามเงื่อนไข

จากนั้นจะท าการเลือกทิศทางจากผลของการเปรียบเทียบ เช่น ถ้าเงื่อนไขเป็นจริง (True) จะท างานอย่างหนึ่ง แต่

ถ้าเงื่อนไขเป็นเท็จ (False) จะท างานอีกอย่างหนึ่ง ชุดของค าสั่งที่ใช้เปรียบเทียบเงื่อนไขนี้จะประกอบไปด้วย 4 ค า

คือ IF, THEN, ELSE และ ENDIF ซึ่งมีรูปแบบการเขียนดังนี้

5.1 การเปรียบเทียบ 2 เงื่อนไข เป็นการเปรียบเทียบเงื่อนไขแบบบูลีน คือ จริงกับเท็จจากนั้นจะท าการเลือกทิศทางจากผลของการเปรียบเทียบ เช่น ถ้าเงื่อนไขเป็นจริง (True) จะท างานอย่างหนึ่ง แต่

ถ้าเงื่อนไขเป็นเท็จ (False) จะท างานอีกอย่างหนึ่ง ชุดของค าสั่งที่ใช้เปรียบเทียบเงื่อนไขนี้จะประกอบไปด้วย 4 ค า

คือ IF, THEN, ELSE และ ENDIF ซึ่งมีรูปแบบการเขียนดังนี้


ตารางที่ 3-2 สัญลักษณ์ที่ใช้ในการเปรียบเทียบ


ประโยคเงื่อนไขสามารถน ามาเชื่อมต่อกันได้เพื่อสร้างเงือนไขที่หลากหลายมากขึ้น ค าที่ใช้ส าหรับ

เชื่อมประโยคเงื่อนไข ได้แก่AND (&), OR (||), NOT (!=) และความหมายของการเชื่อมประโยคมีดังนี้


** หมายเหตุ

T = True เงื่อนไขเป็นจริง

F = False เงื่อนไขเป็นเท็จ

ตัวอย่าง (Score >= 50) AND (Score <= 100)

ประโยคเงื่อนไขนี้จะเป็นจริงเมื่อ ประโยค Score >= 50 เป็นจริง และ ประโยค Score <= 100 เป็น

จริง แต่ถ้าประโยคใดประโยคหนึ่งเป็นเท็จจะท าให้ประโยครวมเป็นเท็จ

ตัวอย่างการเขียน Pseudo code แบบเปรียบเทียบ 2 เงื่อนไข

ตัวอย่างที่ 4 จงเขียน Pseudo code ส าหรับรับค่าคะแนนของนักศึกษา ถ้าคะแนนที่รับเข้ามามีค่า

มากกว่าหรือเท่ากับ 50 ให้พิมพ์ค าว่า PASS แต่ถ้าน้อยกว่า 50 ให้พิมพ์ค าว่า FAIL



5.2 การเปรียบเทียบหลายเงื่อนไขโดยใช้IF ซ้อน IF เป็นการเขียน Pseudo Code

ส าหรับโปรแกรมที่มีทางเลือกหลายเงื่อนไข โดยจะน าประโยค IF มาซ้อนกัน ดังตัวอย่างต่อไปนี้

ตัวอย่างที่5 จงเขียน Pseudo code การตรวจสอบเลขที่รับเข้ามาว่าเป็นเลขจ านวนเต็มบวก เต็มลบหรือเป็นศูนย์



5.3 การเปรียบเทียบแบบมีหลายทางเลือก การเปรียบเทียวหลายทางเลือกจะใช้

รูปแบบของ CASE ซึ่งรูปแบบการเขียนจะประกอบไปด้วย CASE, OF, ELSE และ END CASE โดยมีรูปแบบการเขียนดังนี้



ตัวอย่างการเขียน Pseudo code เปรียบเทียบหลายทางเลือก

ตัวอย่างที่ 6 จงเขียน Pseudo code ส าหรับใช้ตัวเลือกเพื่อแสดงความหมายของภาษาอังกฤษ 4 ค า

โดยมีเงื่อนไขดังนี้

ถ้าป้อน A ให้แสดงความหมายของค าว่า Good morning

ถ้าป้อน B ให้แสดงความหมายของค าว่า Good afternoon

ถ้าป้อน C ให้แสดงความหมายของค าว่า Good evening

ถ้าป้อน D ให้แสดงความหมายของค าว่า Good night



มีหลายรูปแบบดังนี้

เงื่อนไขเป็นจริงก็จะท าซ้ าไปเรื่อยๆ ในขณะที่เงื่อนไขยังเป็นจริงอยู่ ถ้าตรวจสอบเงื่อนไขแล้วเป็นเท็จจะออกจาก

การท าซ้ าทันทีโดยมีรูปแบบค าสั่งดังนี้

6. ค าสั่งท างานซ้ า (Loop) การเขียน Pseudo code เพื่อแสดงถึงการท างานซ้ าของโปรแกรม

6.1 การท าซ้ าโดยใช้ค าสั่ง WHILE ค าสั่ง WHILE จะท าการตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงก็จะท าซ้ าไปเรื่อยๆ ในขณะที่เงื่อนไขยังเป็นจริงอยู่ ถ้าตรวจสอบเงื่อนไขแล้วเป็นเท็จจะออกจาก

การท าซ้ าทันทีโดยมีรูปแบบค าสั่งดังนี้



ตัวอย่างที่7 จงเขียน Pseudo code เพื่อแสดงตัวเลขตั้งแต่ 1 – 10



6.2 การท าซ้ าโดยใช้ค าสั่ง REPEAT UNTIL ค าสั่ง REPEAT จะท างานก่อนแล้ว

ตรวจสอบเงื่อนไขทีหลังและจะท างานวนซ้ าไปเรื่อยๆ จนกว่าเงื่อนเป็นจริงก็จะออกจากการท าซ้ า มีรูปแบบดังนี้



ตัวอย่างที่8 จงเขียน Pseudo code เพื่อแสดงตัวเลขตั้งแต่ 1 – 10



6.3 การท าซ้ าโดยใช้ค าสั่ง FOR เป็นค าสั่งการท าซ้ าซึ่งจะตรวจสอบเงื่อนไขก่อนการ

ท างานภายในลูปและมีการตั้งจ านวนครั้งในการตั้งจ านวนครั้งในการวนซ้ าให้ด้วย โดยมีรูปแบบการเขียนดังนี้



ตัวอย่างการเขียน Pseudo code โดยใช้FOR

ตัวอย่างที่9 จงเขียน Pseudo code ให้มีการพิมพ์ตัวเลขตั้งแต่ 1 – 10


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

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