บทที่ 2 ขั้นตอนการทางาน Algorithm (Part.1) 1
บทนา อัลกอริทึม (Algorithm) หมายถึง ลาดับของขั้นตอนเชิงคานวณที่แปล ข้อมูลด้านอินพตุของปัญหา ไปเป็นผลลัพธ์ท่ีต้องการ ซ่ึงเราจะต้องออกแบบ ก่อนการลงมือเขียนโปรแกรม โดยอัลกอริทึมจะเป็นเครื่องมือในการแสดง ขั้นตอนการทางานของระบบงานใดๆ เพ่ือให้การเขียนโปรแกรมเป็นไปได้ รวดเรว็ และงา่ ยข้ึน โดยเราอาจเขยี นอลั กอริธมึ ได้ 2 ลกั ษณะดังนี้ 1. รหสั จาลอง หรอื ซูโดโคด้ (Pseudocodes) 2. ผังงาน (Flowchart) 2
2.1 ซโู ดโค้ด (Pseudocodes) ซูโดโค้ด เป็นคาอธิบายขั้นตอนการทางานของโปรแกรมโดยใชถ้อยคา ผสมระหว่างภาษาอังกฤษและภาษาการเขียนโปรแกรมแบบโครงสร้างท่ี เข้าใจง่ายมาแสดงลาดับการทางานของโปรแกรม หรืออาจใช้ภาษาไทยก็ได้ โดยให้ผู้เขยี นโปรแกรมสามารถพัฒนาขั้นตอนตา่ งๆ ให้เปน็ โปรแกรมได้ง่ายข้นึ โดยคาท่ีใช้มักเป็นคาเฉพาะ (Reserve Word) ท่ีมีอยู่ในภาษาการเขียน โปรแกรมและมักจะเขียนด้วยตัวอกั ษรตัวใหญ่ซูโดโค้ด ที่ดีจะต้องมีความชัดเจน สั้นและได้ใจความ ข้อมูลต่าง ๆ ที่ใช้จะถูกเขียนอยู่ในรูปของตัวแปร ซูโดโค้ด น้ี บางครง้ั จะเรยี กว่า อลั กอริทึม ก็ได้ รปู แบบทั่วไปจะเป็นดงั นี้ 3
2.1 ซูโดโคด้ (Pseudocodes)(2) ตัวอย่างที่ 1 การเขียนซูโดโค้ด สาหรับให้คอมพิวเตอร์หาค่าเฉล่ียจากข้อมูลท่ี รบั เขา้ ทางแป้นพิมพ์ ถา้ ใสค่ ่าศูนย์ 0 แสดงวา่ หยุดป้อนขอ้ มลู อาจเขยี นได้ดงั นี้ Algorithm การหาคา่ เฉลย่ี 1. ตัวนบั = 0 2. ผลรวม = 0 3. รบั ค่าทางแป้นพมิ พ์เก็บไว้ใน (ข้อมูล) 4. ถ้าข้อมูลมากกว่า 0 เพมิ่ คา่ ตัวนับขึน้ หนึ่งคา่ ผลรวม = ผลรวม + ค่าข้อมูล ย้อนกลับไปทาขัน้ ตอนท่ี 3 ถา้ ไมม่ ากกว่าไปทาข้นั ตอนที่ 5 5. ค่าเฉลยี่ = ผลรวมหารด้วยตัวนบั 6. แสดงค่าเฉลี่ยทางจอภาพ โดยมที ศนยิ มสองตาแหน่ง 7. จบ 4
2.1 ซูโดโค้ด (Pseudocodes)(3) ซูโดโค้ดในรปู แบบภาษาอังกฤษ Algorithm Average_Sum 1. count = 0 2. sum = 0 3. INPUT (value) 4. IF value > 0 THEN count = count +1 sum = sum + value GOTO 3 ELSE GOTO 5 5. average = sum / count 6. OUTPUT (average) 7. END 5
2.1 ซูโดโคด้ (Pseudocodes)(4) ตัวอย่างที่ 2 การเขียนซูโดโค้ด สาหรับให้คอมพิวเตอร์คานวณหาพ้ืนที่ สามเหลย่ี ม อาจเขียนได้ดงั นี้ ซโู ดโคด้ หาพนื้ ทสี่ ามเหลย่ี ม เร่มิ ต้น 1. รบั คา่ ความยาวของดา้ นท่ีเปน็ ฐานมาเก็บในตัวแปร X 2. รับคา่ ความยาวของสว่ นสงู มาเก็บในตัวแปร Y 3. คานวณพน้ ื ทโ่ี ดย AREA = (X * Y)/2 4. แสดงผลพื้นท่ี จบ 6
2.1 ซโู ดโค้ด (Pseudocodes)(5) ซูโดโค้ดในรปู แบบภาษาองั กฤษ Algorithm Area_Triangle START 1. READ X 2. READ Y 3. Compute AREA = (X * Y)/2 4. Print AREA END 7
การกาหนดคา่ การกาหนดค่าเริ่มต้น ให้กับตัวแปรจะใช้คาว่า INIT และ SET ถ้าหากเป็น การประกาศตัวแปรจะต้องระบุด้วยว่าเป็นตัวแปรประเภทใด และถ้าเป็นการ ประกาศค่าคงทจ่ี ะใช้เครอ่ื งหมายเทา่ กับในการกาหนดคา่ ตัวอยา่ ง INIT A, B : INTEGER ;ให้ตวั แปร A และ B เป็นตัวแปรที่เกบ็ เลข จานวนเต็ม INIT Y : REAL ;ให้ตวั แปร Y เป็นตัวแปรทเี่ ก็บเลขทศนยิ ม INIT Z : CHAR ;ให้ตัวแปร Y เป็นตัวแปรท่เี กบ็ ตวั อักษร SET A = 8 ;กาหนดใหต้ วั แปร A มีคา่ เท่ากับ 8 8
การรับขอ้ มูลเขา้ และการแสดงผลข้อมลู ในการรับข้อมูลจะนิยมใช้คาว่า READ หรือ GET หรือ INPUT ตามด้วยตัว แปรท่ีต้องการใช้เก็บข้อมูลถ้าหากมีตัว แปรหลายตัวจะใช้เครื่องหมายคอมมา (,) ค่ัน ส่วนการแสดงผลมักใช้คาว่า PRINT หรือ WRITE สาหรับการรับข้อมูล มีรปู แบบดงั นี้ ตัวอย่าง การรับขอ้ มูล READ DATA1; รับข้อมูลมาเกบ็ ในตัวแปร DATA1 INPUT X,Y ; รับข้อมูลมาเก็บในตวั แปร X และ Y ตามลาดับ ตวั อยา่ ง การแสดงผล WRITE DATA1 ; แสดงขอ้ มูลทีอ่ ย่ใู นตวั แปร DATA1 PRINT X, Y ; แสดงขอ้ มลู ที่อยใู่ นตัวแปร X และตวั แปร Y 9
การคานวณ ในการประมวลผลแบบคานวณจะข้ึนต้นด้วยคาว่า COMPUTE หรือ CALCULATE แล้ว ตามด้วยตัวแปรท่ีต้องการเก็บค่าจากการคานวณ เครื่องหมายเท่ากับ และนิพจน์การคานวณ ซึ่งประกอบไปด้วยเคร่ืองหมายการ กระทาทางคณิตศาสตร์ ตวั อย่าง COMPUTE AREA = (X * Y)/2 หมายความวา่ ให้ตวั แปร AREA มคี ่าเท่ากบั การนาตวั แปร X คูณกับตวั แปร Y แลว้ หารดว้ ย 2 ตัวอย่าง COMPUTE Profit = Price - Cost หมายความวา่ กาไรคานวณได้จากตัวแปรทเ่ี ก็บราคาลบด้วยต้นทนุ 10
การตดั สินใจและการทดสอบทางเลือกหรือเงอื่ นไข การตัดสินใจเพ่ือเลือกทาระหว่างทางสองทางจะใช้คาว่า IF หรือ IF- THEN-ELSE และ ENDIF โดยจะเปรียบเทียบเง่ือนไข ถ้าเงื่อนไขเป็นจริงจะทา กลุ่มคาสั่ง (Statement) กลุ่มหน่ึง ถ้าเป็นเท็จจะทากลมุ่ คาส่ังอีกกลมุ่ หน่ึง โดย มรี ปู แบบดงั นี้ IF ตรวจสอบเงอ่ื นไข THEN ;เรม่ิ ต้น กลมุ่ คาส่ัง 1 ;ถา้ เป็นจริงทากลมุ่ คาสั่งนี้ ELSE ;ถา้ เปน็ เท็จทากลมุ่ คาสั่งน้ี กลุ่มคาสั่ง 2 ;จบการทางาน ENDIF 11
การตดั สินใจและการทดสอบทางเลือกหรอื เงื่อนไข(2) ตัวอย่างที่ 1 นาตัวเลขในตัวแปร number มาทดสอบถ้ามากกว่า 0 ให้แสดงว่า POSITIVE NUMBER (เป็นเลขบวก) แต่ถ้าไม่มากกว่า 0 ให้แสดงว่า NEGATIVE NUMBER (เป็นเลขลบ) IF number > 0 THEN PRINT POSITIVE NUMBER ELSE PRINT NEGATIVE NUMBER ENDIF จากตัวอย่างหมายความว่าถ้าค่า number มีค่ามากกว่า 0 ให้คอมพิวเตอร์ พิมพค์ าวา่ POSITIVE NUMBER ถ้าไม่มากกว่าพมิ พ์คาวา่ NEGATIVE NUMBER 12
การตัดสินใจและการทดสอบทางเลือกหรือเง่อื นไข(3) ตัวอย่างที่ 2 สาหรับกรณีท่ีมีทางเลือกมากกว่าสองทางจะใช้คาว่า CASE, OF และ ENDCASE โดยจะตรวจสอบว่าตัวแปรที่อยู่หลัง CASE มีค่าเท่ากับ ค่าคงท่ี ตวั ใด กจ็ ะทากลมุ่ คาสัง่ ทีอ่ ยู่หลงั คา่ คงท่ตี ัวนนั้ CASE num OF 1 : PRINT 11111 2 : PRINT 22222 3 : PRINT 33333 ENDCASE จากตัวอย่างถ้าค่าในตัวแปร num เป็น 1 จะให้คอมพิวเตอร์พิมพ์คาว่า 11111 ถ้าตัวแปร num มคี ่าเป็น 2 จะให้พมิ พ์คาว่า 22222 13
การทางานแบบวนซ้าหรอื การวนรอบ ในการทาซ้าหมายความว่าให้ระบบทางานซ้าๆ ตามเงื่อนไขท่ีกาหนดโดย จะมีการเปรยี บเทยี บเง่ือนไข ในการทาซา้ แบง่ ออกได้ 3 รปู แบบดงั นี้ 1. การทาซ้าการเพ่ิมค่าในแต่ละรอบ จะใช้คาว่า FOR และ ENDFOR โดยมีคาว่า IN STEPS OF เป็นการบอกค่าท่ีเพ่ิมในแต่ละรอบ ถ้าไม่มีคาว่า IN STEPS OF หมายความว่า เพิม่ ค่ารอบละหน่งึ โดยมรี ูปแบบดังน้ี FOR กาหนดรอบการทาซ้า Statement ENDFOR 14
การทางานแบบวนซ้าหรอื การวนรอบ(2) 2. การทาซ้าจนระบบมีเงื่อนไขอยา่ งหน่งึ จงึ หยุดทา จะใชค้ าว่า DO- WHILE ดังรปู แบบตอ่ ไปนี้ DO Statement_1 ……………. ENDDO WHILE (Condition) 15
การทางานแบบวนซ้าหรือการวนรอบ(3) 3. ถ้าเง่ือนไขเปน็ จรงิ จะทาคาส่ังภายใน จะใช้คาวา่ WHILE โดยจะ ตรวจสอบเงื่อนไขก่อน ทท่ี าชดุ คาสง่ั ภายในดังรปู แบบตอ่ ไปน้ี WHILE (Condition) Statement_1 ……………. ENDWHILE 16
การทางานแบบวนซา้ หรือการวนรอบ(4) ตัวอยา่ งที่ 3 ถ้าหากต้องการเขยี นซูโดโคด้ ในการบวกเลข 1+2+3+...+10 และ พิมพผ์ ลลัพธอ์ อกมาอาจเขยี นไดด้ งั น้ี 2 1 START START i=0 i=0 sum = 0 sum = 0 WHILE (i<=10) DO COMPUTE sum = sum+i COMPUTE sum = sum+i COMPUTE i = i + 1 COMPUTE i = i + 1 ENDWHILE ENDDO PRINT sum WHILE (i<=10) END PRINT sum END 17
การทางานแบบวนซา้ หรอื การวนรอบ(5) ตวั อย่างท่ี 3 ถ้าหากต้องการเขียนซูโดโค้ดในการบวกเลข 1+2+3+...+10 และ พมิ พผ์ ลลพั ธอ์ อกมาอาจเขยี นได้ดงั นี้ 3 START i=0 sum = 0 FOR 10 TIMES COMPUTE sum = sum+i COMPUTE i = i + 1 ENDFOR PRINT sum END 18
การกระโดดข้าม การกระโดดข้ามไปทาชุดคาสั่งใด ๆ จะใช้คาว่า LABEL กาหนดตาแหน่งที่จะ กระโดดมา และใชค้ าวา่ GOTO ในตาแหนง่ ทจ่ี ะกระโดด ตัวอยา่ งเชน่ START Statement_1 ………….. AB1: …………. ………… GOTO AB1 END 19
สรปุ ทา้ ยหน่วยการเรียน ซโู ดโค้ด (Pseudocodes) การเขียนซูโดโคด้ มรี ปู แบบตา่ งๆ ดงั น้ี การกาหนดคา่ การรบั ขอ้ มลู เขา้ และการแสดงผลขอ้ มลู การคานวณ การตดั สินใจและการทดสอบทางเลือกหรือเงือ่ นไข การทางานแบบวนซา้ หรือการวนรอบ การกระโดดข้าม 20
แบบฝึกหัด จงเขยี นซโู ดโค้ดเพ่อื ออกแบบข้ันตอนการเขียนโปรแกรมดังนี้ 1. นบั จานวนนักศึกษา(Student) ที่อาย(ุ Age) มากกว่าหรอื เท่ากบั 18 (Adult) และจานวนนกั ศกึ ษาที่ อายนุ ้อยกวา่ 18 ปี (Junior) จากนนั้ แสดงผลลัพธ์ 2. นบั จานวนนักศึกษาชาย(Male) และหญิง(Female) โดยนับจากการระบุเพศ (Sex) และหากตรวจสอบวา่ ไม่ระบุเพศ(Unknown)ให้แสดงจานวนท่ีไม่ระบุด้วย จากนั้นแสดงผลลัพธ์ 3. จงหาพน้ื ทข่ี องวงกลม(Area of Cycle) จากน้นั แสดงผลลัพธ์ (รศั มี=Radius) 4. จงหาพ้ืนท่ีของสามเหล่ียม(Area of Triangle) จากน้ันแสดงผลลัพธ์ (สูง = High, ฐาน = Base) 5. จงคานวณหาแม่สูตรคูณแม่ 5 โดยการวนรอบการทางาน จากน้ันแสดง ผลลัพธ์ 21
Unit 2 (Part.1) THE END 30
Search
Read the Text Version
- 1 - 22
Pages: