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

27
อัลกอริทึม (Algorithm) อ.สมวรร ธนศรีพนิชชัย สาขาคอมพิวเตอร์ธุรกิจ คณะวิทยาการจัดการ มหาวิทยาลัยราชภัฏอุดรธานี

Upload: others

Post on 31-Dec-2019

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

อลกอรทม (Algorithm)

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

Page 2: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

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

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

Page 3: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

สวนผลลพธ (Output)

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

Page 4: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

Page 5: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

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

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

Page 6: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

Page 7: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

Page 8: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

Page 9: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

Page 10: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

Page 11: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

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

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

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

Page 12: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

Page 13: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

Page 14: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

(Subclass) ตางๆ ได

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

Page 15: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

Page 16: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

Page 17: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

Page 18: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

Page 19: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

Page 20: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

Page 21: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

Page 22: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

จ านวนมาก

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

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

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

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

Page 23: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

Page 24: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

Page 25: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

Page 26: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

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

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

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

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

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

o ปดฝา

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

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

Page 27: อัลกอริทึม ( Algorithm)academic.udru.ac.th/~samawan/content/1-intro-programming.pdf · 2015-09-17 · การเขียนโปรแกรมเชิงวัตถุ

ค าถาม???