อัลกอริทึม (...

Post on 31-Dec-2019

10 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

อลกอรทม (Algorithm)

อ.สมวรร ธนศรพนชชย สาขาคอมพวเตอรธรกจคณะวทยาการจดการ มหาวทยาลยราชภฏอดรธาน

ขนตอนการเขยนโปรแกรม การเขยนโปรแกรมทดจ าเปนตองมแบบแผนและสามารถถายทอดกนได

ซงประกอบดวย 5 ขนตอนหลก ดงน

การวเคราะหปญหา

การออกแบบโปรแกรม

การเขยนโปรแกรม

การทดสอบโปรแกรม

การจดท าเอกสารประกอบโปรแกรม

การวเคราะหปญหา จ าเปนตองอานโจทยอยางระมดระวง เพอใหเขาใจถงความตองการทแทจรง

หากตความโจทยผดพลาด จะสงผลกระทบตอเนองเปนทอดๆ ท าใหโปรแกรมทเขยนขนไมตรงกบความตองการในทสด ท าใหสญเสยงบประมาณตามมา

ขนตอนการวเคราะหปญหา แบงเปน 4 สวนหลก ดงน

สวนน าขอมลเขา (Input)

สวนการประมวลผล (Processing)

สวนผลลพธ (Output)

การก าหนดตวแปร (Variable)

การออกแบบโปรแกรมเครองมอทน ามาใชในการออกแบบโปรแกรม เชน

อลกอรทม (Algorithms) เปนขนตอนท ใชอธบายล าดบการท างานของโปรแกรม โดยเปนประโยคภาษาองกฤษท มความคลายกบชดค าสงคอมพวเตอร

ผงงาน (Flowchart) ประกอบดวยสญลกษณทใชแทนความหมายตางๆ วาการประมวลผลมล าดบขนตอนใดบาง แต มขอจ ากดคอ ยงมรายละเอยดไมเพยงพอ

ซโดโคด (Pseudo Code) มรปแบบเปนโครงสรางภาษาองกฤษทคลายคลงกบภาษาคอมพวเตอรระดบสง

การออกแบบโปรแกรม ขนตอนการออกแบบโปรแกรมประกอบดวย

ก าหนดขนตอนการประมวลผลสวนหลกๆ

การท างานของสวนงานยอย

การออกแบบสวนประสานการท างานระหวางผใช (User Interface)

โครงสรางควบคมการท างาน เชน การท างานซ า หรอการตรวจสอบเงอนไข

ตวแปร และโครงสรางของเรคคอรด

ตรรกะโปรแกรม (Logic)

การเขยนโปรแกรม การน าอลกอรทมมาเขยนเปนชดค าสงดวยภาษาคอมพวเตอร โดยการเขยนโปรแกรมสามารถเลอกใชภาษาคอมพวเตอรระดบสงตามความเหมาะสม เชน Pascal, C, C++ เปนตน ตวอยางชดค าสงใน VB2008

การทดสอบโปรแกรมหรอการดบกโปรแกรม (Debugging) คอ การน าโปรแกรมมาแปลโดยตวแปรภาษาคอมพวเตอร (อาจเปนตวแปรชนดคอมไพเลอร หรออนเตอรพรเตอรกได)

คอมไพเลอร (Complier) จะท าการแปลทงโปรแกรม หากโปรแกรมมขอผดพลาด ตองแกไขใหถกตองก อน แลวแปลใหม จนไม พบขอผดพลาดโปรแกรมจงจะสามารถใชงานได เชน C, C++, Pascal

อนเตอรพรเตอร (Interpreter) จะแปลชดค าสงทละค าสงในแตละบรรทด โดยโปรแกรมยงสามารถท างานตอไปได ถงจะมขอผดพลาดในโปรแกรม ตราบใดทตวแปรภาษายงไมผานการแปลในบรรทดทเขยนชดค าสงผด เชน Java, Perl, Python

การทดสอบโปรแกรม(ตอ) การทดสอบดวยการแปลรหสชดค าสง เปนการตรวจสอบขอผดพลาดของชดค าสง (Syntax Error) เชน กรณพมพค าสงผด พมพค าสง printf ผด เปน print ซงตวแปลภาษาไมรจก กจะแสดงขอผดพลาดออกมา

แตถาผลลพธของโปรแกรมผดพลาดจากการใชสตรค านวณทผด (Logic Error) เชน การตงสตรผด ซงไมเปนขอผดพลาดจากชดค าสง ตวแปรภาษากจะไมรเลยวา สตรทเขยนขนมา ผดหรอถก

ดงนนในการทดสอบโปรแกรม ตองทดสอบทงรปแบบของชดค าสง และผลลพธทรนวาถกตองหรอไม และจ าเปนตองทดสอบหลายๆ ครง ดวยการปอนขอมลทดสอบในหลายๆ กรณ

การจดท าเอกสารประกอบโปรแกรม อาจจดท าขนตงแตขนตอนการก าหนดปญหา จนถงขนตอนสดทาย คอ การทดสอบโปรแกรม โดยเอกสารเหลานจะน ามาใชส าหรบอางองถงขอผดพลาดทเกดขน วธการแกไขขอผดพลาด รวมถงการน าไปใช เพอปรบปรงโปรแกรมในอนาคต

เอกสารส าหรบผใชโปรแกรม (User Documentation) จะเนนการอธบายการใชงานโปรแกรมเปนหลก

เอกสารส าหรบผ เขยนโปรแกรม (Technical Documentation) จะอธบายชอของโปรแกรมยอย และการท างานของแตละโปรแกรมยอย

รปแบบของการเขยนโปรแกรม โปรแกรมทมคณภาพ ไมไดพจารณาเพยงผลลพธทถกตองเทานน แตยงตองงายตอการอาน และงายตอการปรบปรงในอนาคตดวย

รปแบบในการเขยนโปรแกรม สามารถแบงออกเปน 2 รปแบบ คอ

1. การเขยนโปรแกรมเชงโครงสราง (Structured Programming)

2. การเขยนโปรแกรมเชงวตถ (Object-Oriented Programming)

การเขยนโปรแกรมเชงโครงสราง (Structured Programming)

ประกอบดวยโครงสรางควบคมการท างานหลก 3 สวน คอ

1. ชดค าสงภายในโปรแกรมจะเปนล าดบขนตอน (Sequence)

ประกอบดวยค าสงอยางงาย ไมมเงอนไข ไมมการตดสนใจ มทางเขาทางเดยว และมทางออกทางเดยวด าเนนการแบบเรยงล าดบตอเนอง โดยแตละขนตอนมการด าเนนงานเพยงครงเดยว

2. มทางเลอกในการตดสนใจทางใดทางหนง (Decision)

เปนโครงสรางทมเงอนไข และมการตรวจสอบคาตวแปรแลวประมวลผลตามเงอนไขท ก าหนดตรรกะคาจรงหรอเทจ แลวด าเนนงานตามค าสงทเปนไปตามเงอนไขทก าหนด

3. มชดค าสงเพอการท าซ า (Repetition)

เปนการท างานในลกษณะวนซ าหลายๆ รอบ (Loop) โดยจะหลดออกจากเงอนไขกตอเมอเงอนไขตรงตามทก าหนดไว

การเขยนโปรแกรมเชงโครงสราง (ตอ)

การเขยนโปรแกรมแบบบนลงลาง (Top-Down Programming)• การเขยนโปรแกรมแบบบนลงลางจะน าโปรแกรมมาแบงสวนเปนโมดลยอยๆ เพอลดความซบซอน

• ภายในโปรแกรมประกอบดวยหลายๆ โมดลทท างานรวมกน เพอแกไขปญหาซงชวยใหงายตอการอานและงายตอการแกไขโปรแกรม

การเขยนโปรแกรมเชงวตถ การเขยนโปรแกรมเชงวตถ จะมองวตถหนงๆ เปนแหลงรวมของ

ขอมลและกระบวนการเขาไวดวยกน โดยม

• คลาส (Class) เปนตวก าหนดคณสมบตของวตถ

• คลาสสามารถสบทอดคณสมบต (Inheritance) ไปยงคลาสยอย

(Subclass) ตางๆ ได

• เกดการน ามาใชใหม (Reusable) ท าใหลดขนตอนการพฒนาโปรแกรมลง

เทคนคการออกแบบโปรแกรมเชงวตถ จดประสงคหลกในการออกแบบโปรแกรมประกอบดวย

• เพอสรางโปรแกรมใหมคณภาพ และท านายไดวาจะเกดอะไรขนในโปรแกรม

• เพอสรางโปรแกรมทงายตอการปรบปรงและแกไข

• เพอใหขนตอนการพฒนาโปรแกรมมระบบระเบยบยงขน

• เพอใหการพฒนาระบบมความรวดเรว และประหยดตนทน

ภาษาส าหรบการพฒนาโปรแกรม• ภาษาทใชส าหรบการพฒนาโปรแกรมในระบบคอมพวเตอรเรยกวาภาษาคอมพวเตอร หมายถงสญลกษณ อกขระบนคอมพวเตอรทถกก าหนดขนมา เพอใหมนษยสามารถสงงาน และควบคมใหคอมพวเตอรท างานไดตรงกบความตองการ ซงภาษาคอมพวเตอรนนมอยหลายชนด หลายแบบทน ามาพฒนาโปรแกรม

ชนดของภาษาคอมพวเตอรภาษาเครอง (Machine Languages)

ภาษาเครอง ถอวาเปนภาษาโปรแกรม ซงใชในการพฒนาคอมพวเตอร ในระยะแรกเรม ค าสงทใชเขยนประกอบดวยเลขฐานสองเทานน โปรแกรมเมอรตองมความรเกยวกบการท างานภายในของเครองคอมพวเตอรเปนอยางด เพราะตองระบถงต าแหนงการเกบขอมลในหนวยความจ า การใชรจสเตอร ตวนบ (counter) ตวช (pointer) ตวสวทซ (Switch) เพอใชในการโปรแกรม ซงการเขยนโปรแกรมในลกษณะนยากมากเนองจากการท างานทกอยาง ตองใชค าสงเปนตวเลขทงสน และใชเวลานานมากในการเขยน รวมทงเกดขอผดพลาดไดงายดวย การแกไขกยากดวย เชนเดยวกน เชน 10101010

ภาษาแอสแซมบล (Assembler Languages)

เปนภาษา ทอยในล าดบขนทสงกวาภาษาเครอง ซงพฒนาใหเขยนงายกวาภาษาเครอง อาจเรยกวา ภาษาสญลกษณ (Symbolic Language) กได เพราะใชสญลกษณ แทน ค าสงปฏบตงานและต าแหนงทเกบขอมล เชน ใช ST แทน 1100 ซง 1100 เปนค าสงใหเกบคาของขอมลโดยแทนใหเปน ST ในภาษาแอสแซมบล

ซงภาษาแอสแซมบลจะแทนค าสงปฏบตงานตางๆ ดวยตวอกษร ซงเรยกวา mnemonics (memory aids) ดงนน โปรแกรมเมอรทเขยนค าสงดวยภาษาแอสแซมบล ไมสามารถสอสารกบคอมพวเตอรไดโดยตรง ตองมลามในการแปลตวอกษรตางๆ เหลานใหเปนภาษาเครองอกท ตวลามทวาน เปนโปรแกรมแปลภาษา ซงเรยกวา แอสแซมเบอร (assemblers)

ภาษาระดบสง (High-level Language)ภาษา BASIC, COBOL, FORTRAN และภาษา C ซงแตละภาษากมความ

แตกตางไป เพราะภาษานนๆ จะตองมตวแปลภาษา หรอคอมไพเลอร ทจะแปลภาษาทท าใหเครองคอมพวเตอรท างานไดตรงตามโปรแกรมทเราเขยนเอาไว

ภาษาระดบสง หรอเรยกอกอยางวา compiler languages ค าสงของภาษาระดบสง เรยกวา statements ซงลกษณะการแทนค าสงตางๆจะใกลเคยงกบภาษาองกฤษทเขาใจไดงาย การค านวณจะมรปแบบการแทนคาเปนมาตรฐาน ทเหนใชกนโดยทวไป ซงค าสงของภาษาระดบสง คอค าสงมาโคร ซงเมอท าการแปล โดย compilers หรอ interpreters แลวจะเกดเปนค าสงเครองหลายค าสง ภาษาระดบสงสวนมากไดมการออกแบบใหเปน machine indendent คอสามารถประมวลผลกบคอมพวเตอรซงผลตจากผผลตทแตกตางกนได โดยขนอยกบ compiler เปนตน

ภาษาระดบสงมาก (Very high-level Language)

เปนยคทพฒนาโปรแกรมขนมาเปนระดบท 4 หรอเปน ภาษายคทส(Fourth-generation Language)หรอ 4GLs เปนการพฒนาคณสมบตของภาษาไดแตกตางจากยคกอนอยางชดเจน โดยใชหลกการเขยนโปรแกรม แบบไมใชโพรซเยอร(Procedural language) ซงแบบเกาเราตองเขยนโปรแกรมสรางโพรซเยอรแตละตวเพอไวใหท างานในดานตางๆ แตยคนโปรแกรมการท างานในสวนตางๆ จะถกสรางไวพรอมแลว

• ดงนนนกพฒนาโปรแกรมไมจ าเปนตองเขยนโปรแกรมขนใหมทงหมด ซงสามารถเรยกชดการท างานทมอยแลวมาสรางเปนโปรแกรมใหมทเราตองการไดเลย

ภาษาธรรมชาต(Natural Language)

เปนภาษาโปรแกรมทพฒนามาถงระดบท 5 หรอเรยกวา ภาษายคทหา (Fifth generation language)หรอ 5GLs เหตผลทมาของภาษาธรรมชาต กเพราะวาเปนภาษาทใกลเคยงกบภาษาธรรมชาตของมนษย ซงไมตองสนใจเรองไวยากรณของภาษา

โดยทวไปเปนค าสงเหมอนการสนทนาในภาษาองกฤษ ท าใหโปรแกรมทใชในการแปลภาษาธรรมชาตน ตองซบซอนมากตามไปดวย ซงเรยกกวา intelligent compiler

การเลอกใชภาษาคอมพวเตอรในการพฒนาโปรแกรมการพฒนาโปรแกรมเพอประยกตใชงานในแตละดาน จ าเปนอยาง

ยงทจะตองเลอกใชภาษาทเหมาะสม และเนองจากภาษาคอมพวเตอรม

จ านวนมาก

• ภาษามาตรฐานทใชในองคกร

• คณสมบตและความเหมาะสม

• การท างานรวมกบโปรแกรมอน

• การท างานรวมกบระบบอน

อลกอรทม (Algorithms) สงส าคญของการเขยนโปรแกรม ไมใชการลงมอเขยนโปรแกรมโดยทนท เพราะ

อาจสงผลใหไดโปรแกรมทมโครงสรางทไมด

อลกอรทม หมายถง ขนตอนวธทจะอธบายวางานนนท าอยางไร โดยจะประกอบไปดวยกระบวนการท างานเปนล าดบขนตอนทชดเจน และมการรบประกนวา เมอไดปฏบตถกตองตามขนตอนจนครบแลว จะตองไดผลลพธทถกตองตามความตองการ

ขนตอนการท างานของอลกอรทม อาจมความแตกตางกนได แตจะไดผลลพธ

เชนเดยวกน ทงนขนอยกบความเหมาะสม

คณสมบตของอลกอรทม เปนกระบวนการทสรางขนจากกฎเกณฑ อาจอยในรปแบบของประโยคภาษาองกฤษ สญลกษณ หรอซโดโคด ทมความเปนสากล

กฎเกณฑทสรางอลกอรทมตองไมคลมเครอ ตองเปนกฎเกณฑท อานแลวเขาใจตรงกน ควรหลกเลยงค าท กอใหเกดความเขาใจไดหลายความหมาย

การประมวลผลตองเปนล าดบขนตอน ค าสงตางๆ จะตองประมวลผลเปนล าดบตามขนตอนทแนนอน

กระบวนการตองใหผลลพธตามทก าหนดในปญหา กลมขนตอนตางๆ เมอด าเนนการแลว ตองมผลลพธตรงตามทก าหนดในปญหานนๆ

อลกอรทมตองมจดสนสด เนองจาก คอมพวเตอรไมสามารถประมวลผลแบบไมสนสดได

ประสทธภาพของอลกอรทม อลกอรทมทดตองใชเวลาในการด าเนนการนอยทสด ควรมขนตอนตางๆ เทาทจ าเปน

อลกอรทมทดตองใชหนวยความจ านอยทสด ภายในหนวยความจ าควรจะมขอมลทจ าเปนตอการด าเนนงานในขณะนน

อลกอรทมทดตองมความยดหยน ควรออกแบบใหสามารถปรบปรงการใชงานไดงาย

อลกอรทมทดตองใชเวลาในการพฒนานอยทสด ควรใชเวลาในการพฒนาอลกอรทมใหเหมาะสมกบเวลา

อลกอรทมทดตองงายตอการท าความเขาใจ จะตองออกแบบดวยการใชประโยคค าสงทเปนมาตรฐาน เมออานแลวตองตความหมายทเขาใจตรงกน ไมสบสน

ตวอยางของอลกอรทม

o เทน าสะอาดใสหมอ และตมจนเดอด

o ฉกซอง และน าบะหมกงส าเรจรปใสลงในชาม

o ฉกและเทเครองปรงลงในชาม

o น าน าทตมเดอดเทลงในชาม

o ปดฝา

o รอประมาณ 3 นาท

การตมบะหมส าเรจรป

ค าถาม???

top related