· web view• การนำอ ลกอร ท มมาเข ยนเป นช...

Post on 31-Dec-2019

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

12

ชอ....................................... นามสกล ............................................

หอง ................................. เลขท .................................

เอกสารประกอบการเรยน วชาคอมพวเตอร

หลกการเขยนโปรแกรมเบองตน

อลกอรทม (Algorithm)หลกการเขยนโปรแกรมเบองตน อลกอรทม

โรงเรยนเซนตหลยส ฉะเชงเทรา

ม.

12

กลมสาระการเรยนรการงานอาชพและเทคโนโลย

โรงเรยนเซนตหลยส ฉะเชงเทรา

หลกการเขยนโปรแกรมเบองตน อลกอรทม (Algorithm)

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

โรงเรยนเซนตหลยส ฉะเชงเทรา

12

o การวเคราะหปญหา o การออกแบบโปรแกรม o การเขยนโปรแกรม o การทดสอบโปรแกรม o การจดทำาเอกสารประกอบโปรแกรม

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

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

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

สวนนำาขอมลเขา (Input) สวนการประมวลผล (Processing) สวนผลลพธ (Output)การกำาหนดตวแปร (Variable)

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

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

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

ขนตอนการออกแบบโปรแกรมประกอบดวย o กำาหนดขนตอนการประมวลผลสวนหลกๆ o การทำางานของสวนงานยอย o การออกแบบสวนประสานการทำางานระหวางผใช (User Interface) o โครงสรางควบคมการทำางาน เชน การทำางานซำา หรอการตรวจสอบเงอนไข o ตวแปร และโครงสรางของเรคคอรด o ตรรกะโปรแกรม (Logic)

การเขยนโปรแกรม • การนำาอลกอรทมมาเขยนเปนชดคำาสงดวยภาษาคอมพวเตอร

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

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

การทดสอบโปรแกรม• การทดสอบดวยการแปลรหสชดคำาสง เปนการตรวจสอบขอผด

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

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

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

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

Documentation) จะอธบายชอของโปรแกรมยอย และการทำางานของแตละโปรแกรมยอย

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

แตยงตองงายตอการอาน และงายตอการปรบปรงในอนาคตดวย รปแบบในการเขยนโปรแกรม สามารถแบงออกเปน 2 รปแบบ คอ

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

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

การเขยนโปรแกรมเชงโครงสราง (Structured Programming) ประกอบดวยโครงสรางควบคมการทำางานหลก 3 สวน คอ

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

2. มทางเลอกในการตดสนใจทางใดทางหนง (Decision) เปนโครงสรางทมเงอนไข และมการตรวจสอบคาตวแปรแลวประมวลผลตามเงอนไขทกำาหนดตรรกะคาจรงหรอเทจ แลวดำาเนนงานตามคำาสงทเปนไปตามเงอนไขทกำาหนด

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

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

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

การเขยนโปรแกรมเชงโครงสราง

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

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

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

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

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

• คลาส (Class) เปนตวกำาหนดคณสมบตของวตถ • คลาสสามารถสบทอดคณสมบต (Inheritance) ไปยงคลาสยอย (Subclass) ตางๆ ได • เกดการนำามาใชใหม (Reusable) ทำาใหลดขนตอนการพฒนาโปรแกรมลง

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

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

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

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

โมดลยอย • ออกแบบโปรแกรมใหงาย และหากมการสงผานขอมลระหวาง

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

สอบเงอนไข • ชวยลดขอผดพลาดภายในโปรแกรม • สามารถนำาโปรแกรมกลบมาใชงานได

อลกอรทม (Algorithms) หลกการเขยนโปรแกรมเบองตน อลกอรทม

โรงเรยนเซนตหลยส ฉะเชงเทรา

12

• สงสำาคญของการเขยนโปรแกรม ไมใชการลงมอเขยนโปรแกรมโดยทนท เพราะอาจสงผลใหไดโปรแกรมทมโครงสรางทไมด

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

• ขนตอนการทำางานของอลกอรทม อาจมความแตกตางกนได แตจะไดผลลพธเชนเดยวกน ทงนขนอยกบความเหมาะสม

คณสมบตของอลกอรทม เปนกระบวนการทสรางขนจากกฎเกณฑ

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

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

ใหเกดความเขาใจไดหลายความหมาย การประมวลผลตองเปนลำาดบขนตอน

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

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

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

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

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

ตวอยางของอลกอรทม ตวอยางอลกอรทมการตมบะหมสำาเรจรป

O เทนำาสะอาดใสหมอ และตมจนเดอดO ฉกซอง และนำาบะหมกงสำาเรจรปใสลงในชามO ฉกและเทเครองปรงลงในชามO นำานำาทตมเดอดเทลงในชาม O ปดฝาO รอประมาณ 3 นาท

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

ใบงานครงท 1 อลกอรทม

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

การวเคราะหโจทยและออกแบบโปรแกรม ดวยโครงสรางควบคมแบบเรยงลำาดบ

กรณการปอนขอมลเปนป ค.ศ. แลวตองการใหโปรแกรมแสดงผลเปน ป พ.ศ. 1. การวเคราะหปญหา

o ปญหา คอ การแปลงป ค.ศ. เปน ป พ.ศ. o สวนนำาขอมลเขา คอ ตวเลขจำานวนเตม 4 ตว แทนป ค.ศ. o สวนผลลพธ คอ ตวเลขจำานวนเตม 4 ตว แทนป พ.ศ. o การกำาหนดตวแปร

กำาหนดให thai_year เปนตวเลข แทนป พ.ศ. english_year เปนตวเลข แทนป ค.ศ.

o สวนการประมวลผล คอ ป พ.ศ. = ป ค.ศ. + 543 thai_year = english_year + 543

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

การวเคราะหโจทยและออกแบบโปรแกรม ดวยโครงสรางควบคมแบบเรยงลำาดบ

การหาคาเฉลยของตวเลขจำานวน 3 ตว โดยใหแสดงผลเปนจดทศนยม 2 ตำาแหนง 1. การวเคราะหปญหา

o ปญหา คอ การหาคาเฉลยของตวเลข 3 ตว และแสดงผลเปนจดทศนยม 2 ตำาแหนงo สวนนำาขอมลเขา คอ ตวเลขจำานวนเตม 3 จำานวน o สวนผลลพธ คอ ตวเลขคาเฉลยทมทศนยม 2 ตำาแหนง o การกำาหนดตวแปร กำาหนดให number1 เปนตวเลข แทนจำานวนท 1

number2 เปนตวเลข แทนจานวนท 2 number3 เปนตวเลข แทนจานวนท 3 average เปนตวเลข แทนคาเฉลย

สวนการประมวลผล คอ คาเฉลย = จำานวนท 1 + จำานวนท 2 + จำานวนท 3

หารดวย 3 average = (number1 + number2 + number3)/3

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

โรงเรยนเซนตหลยส ฉะเชงเทรา

12

2. การออกแบบโปรแกรมดวยอลกอรทม

Algorithm การหาคาเฉลยของตวเลข 3 จำานวน ขนท 1 ทำาการรบคาตวเลขจำานวนเตม 3 จำานวน ขนท 2 คำานวณหาคาเฉลย โดยนำาขอมลจำานวนเตมทง 3

จำานวนทปอนเขามาบวกกน แลวหารดวย 3 ขนท 3 แปลงรปแบบการแสดงผลของคาเฉลยทไดเปน

ทศนยม 2 ตำาแหนง ขนท 4 แสดงผลลพธทได

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

โครงสรางควบคมแบบเรยงลำาดบ

การวเคราะหโจทยและออกแบบโปรแกรม ดวยโครงสรางควบคมแบบเลอกทำา

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

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

สญลกษณทใชคอ มากกวา (>), นอยกวา (<), มากกวาหรอเทากบ (>=), นอยกวาหรอเทากบ (<=), เทากบ (=), ไมเทากบ (<>) และ Boolean (True หรอ False)

ตวอยางท 1 การรบคาจานวนเตม และแสดงผลลพธวาเปนเลขค หรอเลขค

1. การวเคราะหปญหา o ปญหา คอ การคำานวณเพอตรวจสอบคาทรบเขามาวาเปนเลขค หรอเลขค o สวนนำาขอมลเขา คอ ตวเลขจำานวนเตม 1 จำานวน o สวนผลลพธ คอ ผลการตรวจสอบเลขจำานวนเตมวาเปนเลขค หรอเลขค o การกำาหนดตวแปร

กำาหนดให number เปนตวเลขจำานวนเตม result เปนผลการตรวจสอบตวเลข

สวนการประมวลผล คอ ถาคาจำานวนเตม หารดวย 2 ไดเศษเทากบ 0 แสดงวาเปนเลข

ค ถา number mod 2 = 0 result เทากบ เลขค ถาคาจำานวนเตม หารดวย 2 ไดเศษไมเทากบ 0 แสดงวาเปน

เลขค ถา number mod 2 <> 0 result เทากบ เลขค

2. การออกแบบโปรแกรมดวยอลกอรทม

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

Algorithm การคำานวณเพอตรวจสอบคาทรบเขามาวาเปนเลขคหรอเลขค

ขนท 1 ทำาการรบคาจำานวนเตม 1 จำานวน ขนท 2 ถาคาจำานวนเตม หารดวย 2 แลวมเศษเทากบ 0 แสดงวา เปนเลขค

ถาคาจำานวนเตม หารดวย 2 แลวมเศษไมเทากบ 0 แสดงวา เปนเลขค

ขนท 3 แสดงผลวาเปนเลขค หรอเลขค

ตวอยางท 2 การคดผลการสอบของนกศกษาจากคะแนน โดยกำาหนดให ถามากกวาหรอเทากบ 50 ถอวา ผาน ถาตำากวา ถอวา ไมผาน 1. การวเคราะหปญหา

o ปญหา คอ การคดผลการสอบของนกศกษาจากคะแนน o สวนนำาขอมลเขา คอ คะแนนของนกศกษา o สวนผลลพธ คอ ผลการสอบวา ผาน หรอ ไมผาน o การกำาหนดตวแปร

กำาหนดให score เปนคะแนนของนกศกษา result เปนผลการสอบของนกศกษา o สวนการประมวลผล คอ ถาผลการสอบมากกวาหรอเทากบ 50 แสดงวา สอบผาน

score >= 50 result = ผาน ถาผลการสอบตำากวา 50 แสดงวา สอบไมผาน

score < 50 result = ไมผาน

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

2. การออกแบบโปรแกรมดวยอลกอรทม

Algorithm การคดผลการสอบของนกศกษาจากคะแนน ขนท 1 ทำาการรบคาคะแนนของนกศกษา ขนท 2 ตรวจสอบผลการสอบ โดย

ถาคะแนนทรบมามคามากกวาหรอเทากบ 50 แสดงวา สอบผาน

ถาคะแนนทรบมามคานอยกวา 50 แสดงวา สอบไมผาน ขนท 3 แสดงผลการสอบของนกศกษา

การวเคราะหโจทยและออกแบบโปรแกรม ดวยโครงสรางควบคมแบบวนซำา

โครงสรางควบคมแบบวนซำาเปนโครงสรางทกำาหนดใหมการวนคำาสงชดหนงซำาๆ ตราบเทาทเงอนไขทใชควบคมการวนซำาเปนเทจ และจะออกจากคำาส งเม อเงอนไขเปนจรง เรยกคาความจรงลกษณะนวา Boolean (True, False)

ตวอยางท 1 เขยนโปรแกรมเพอรบคาตวเลข และทำาการบวกคาทรบเขามาแบบวนซำา โดยใหออกจากโปรแกรม เมอผลลพธมคามากกวา 1,000 และแสดงผลของผลลพธทได 1. การวเคราะหปญหา

o ปญหา คอ ทำาการรบคาและบวกคาทรบเขามาแบบวนซำา จากนนตรวจสอบผลลพธ หากมคามากกวา 1,000 ใหแสดงผลลพธและ

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

12

ออกจากโปรแกรม o สวนนำาขอมลเขา คอ ตวเลขจำานวนเตม o สวนผลลพธ คอ ผลลพธจากการบวกคาทรบเขามา o การกำาหนดตวแปร

กำาหนดให number เปนจำานวนเตม แทนคาทผใชปอนเขามา

total เปนจำานวนเตม แทนผลบวกของคาทรบเขามา

o สวนการประมวลผล คอ ผลบวกของคาทรบเขามา = ผลบวกของคาทรบเขามากอน

หนา + คาทรบเขามา total = total + number ถา ผลบวกของคาทรบเขามา < 1,000 ทาการรบคาอกครง ถา ผลบวกของคาทรบเขามา > 1,000 ออกจากโปรแกรม

2. การออกแบบโปรแกรมดวยอลกอรทม

Algorithm การรบคาตวเลขจากผใช และบวกคาทรบเขามาแบบวนซำา

ขนท 1 ทำาการกำาหนดตวแปร total เทากบ 0 และ number เทากบ 0

ขนท 2 รบคาตวเลขจากผใช และเกบไวในตวแปร number ขนท 3 ทำาการบวกคาทรบเขามากบคา total

total = total + number หลกการเขยนโปรแกรมเบองตน อลกอรทม

โรงเรยนเซนตหลยส ฉะเชงเทรา

12

ขนท 4 ตรวจสอบคา total วามากกวา 1,000 หรอไม ถานอยกวา 1,000 วนกลบไปทาขนตอนท 2 ถามากกวา 1,000 แสดงผลคา total

ขนท 5 ออกจากโปรแกรม

หลกการเขยนโปรแกรมเบองตน อลกอรทม โรงเรยนเซนตหลยส ฉะเชงเทรา

top related