Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore หลักการเขียนโปรแกรม-03

หลักการเขียนโปรแกรม-03

Published by ch.aunchalee, 2020-11-23 16:42:56

Description: หลักการเขียนโปรแกรม-03

Search

Read the Text Version

โครงสร้างของโปรแกรมคอมพิวเตอร์ (Structured Programming) หมายถึง การเขียนโปรแกรมที่มีการนาโครงสร้างของคาสงั่ หลายๆ รูปแบบ มาใช้ในโปรแกรม เพื่อให้โปรแกรมที่เขียนขึ้นมีขนั้ ตอนท่ี แน่ นอน และ สะดวกต่อการแก้ไขโปรแกรม มีวิธีการแบ่งเป็ นโปรแกรมหลัก (Main Program) โปรแกรมย่อยๆ (Subprogram) หรือเป็นโมดลู (Module) หลายๆ โมดูล ทาให้การเขียนโปรแกรมเข้าใจได้ง่าย โดยหลีกเล่ียงการใช้คาสงั่ GOTO หรอื ใช้ให้น้อยท่ีสดุ เพราะคาสงั่ GOTO จะทาให้โปรแกรมมีการย้าย การทางานจากจุดหนึ่งไปยงั อีกจุดหนึ่งท่ีกาหนดไว้ ซ่ึงจะทาให้เกิดความ สบั สนในการตรวจสอบการทางานของโปรแกรม 46

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

1 โปรแกรมหลกั (Main Program) หลกั การออกแบบโปรแกรมแบบโครงสร้างคือจะแบ่งโปรแกรม ออกเป็ นส่วนๆ แต่ละส่วนก็เสมือนเป็ นโปรแกรมย่อย โดยจะต้องมี โปรแกรมส่วนหน่ึงที่ทาหน้าที่ในการเป็นศนู ยก์ ลางการทางาน ท่ีทาการ เรียกใช้ส่วนอ่ืนๆ เพื่อทางานให้สอดคล้องและเป็นไปตามวตั ถปุ ระสงค์ ของโปรแกรมใหญ่ ส่วนท่ีทาหน้าที่เป็นศนู ยก์ ลางนี้เรียกว่าโปรแกรมหลกั 2 โปรแกรมย่อย (Subprogram) เป็ นโปรแกรมท่ีแบ่งออกมาจากโปรแกรมหลกั โดยควรต้องเป็ น โปรแกรมที่มีความชดั เจนในตวั เอง คือเป็ นโปรแกรมท่ีออกแบบมา เพ่ือให้ทางานอย่างใดอย่างหนึ่งโดยเฉพาะ ในภาษาซีได้แบง่ โปรแกรม ย่อยออกเป็ น 2 แบบ คือโปรแกรมย่อยภายใน และโปรแกรมย่อย ภายนอก 48

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

เป็ นโปรแกรมย่อยที่แยกออกจากโปรแกรมประยุกต์ สามารถถกู เรียกใช้โดย โปรแกรมต่างๆ ได้ โปรแกรมย่อยภายนอกเหล่านี้มีไว้เพ่ืออานวยความสะดวกให้กบั นักเขียนโปรแกรม มกั ถกู เกบ็ ไว้ในไลบรารี (Library) ของระบบ โปรแกรมย่อยภายนอก มกั จะใช้งานร่วมกับหลายโปรแกรมได้ การเรียกใช้โปรแกรมย่อยเหล่านี้ นักเขียน โปรแกรมไม่ต้องใช้เทคนิคเพิ่มเติมแต่จะต้องร้วู ่าโปรแกรมย่อยเหล่านี้อย่ทู ี่ไหนและมีช่ือ โปรแกรมว่าอะไรและต้องส่งข้อมูลอะไรไปให้โปรแกรมย่อยบา้ งจึงจะได้รบั ส่ิงท่ีต้องการ กลบั มา โปรแกรมหลกั จะประกอบด้วยคาสงั่ ในการเรียกใช้โปรแกรมย่อยต่างๆ เรียง ตามลาดบั ขนั้ ตอนท่ีได้วิเคราะหไ์ ว้ล่วงหน้าแล้ว ดงั นัน้ โปรแกรมย่อยแต่ละโปรแกรมอาจ ถกู วางอยู่ท่ีตาแหน่งใดกไ็ ด้ในโปรแกรมไม่ต้องเรียงลาดบั ไว้ เน่ืองจากลาดบั การใช้งาน จะขึ้นอยู่กบั ลาดบั ของการเรียกใช้ในโปรแกรมย่อยหลกั การเรียกใช้งานโปรแกรมย่อย ของโปรแกรมหลกั สามารถเรียกใช้โปรแกรมย่อยจากส่วนใดของโปรแกรมก็ได้ และ สามารถเรียกใช้ได้หลายๆ ครงั้ ภายในโปรแกรมเดียวกนั หรือโปรแกรมย่อยสามารถ เรียกใช้โปรแกรมย่อยต่อไปได้อีก 50

การเรียกโปรแกรมย่อยของโปรแกรมหลกั 51

การเรียกใช้โปรแกรมย่อยหลายครงั้ จากโปรแกรมหลกั เดียวกนั 52

การเรียกใช้โปรแกรมย่อย และโปรแกรมย่อยเรียกใช้โปรแกรมย่อยอืน่ ๆ 53

โ ค ร ง ส ร้ า ง ข อ ง ภ า ษ า ค อ ม พิ ว เ ต อ ร์ที่ ใ ช้ ใ น ก า ร เ ขี ย น โ ป ร แ ก ร ม ประกอบไปด้วย 1 ส่วนหวั (Heading) 2 ส่วนประกาศตวั แปรแบบ Global 3 ส่วนประโยคชดุ คาสงั่ (Main Program) 54

โครงสร้างของ ภาษาคอมพิวเตอร์ 55

1 ส่วนหวั (Heading) เป็ นส่ วนที่ อยู่บนสุดในการเขี ยน โปรแกรม ใช้สาหรบั กาหนดช่ือโปรแกรม การติดต่อกบั อปุ กรณ์ (Input,Output) ที่จะ ทาการติดต่อในการเขียนโปรแกรม ส่วนหวั ของโปรแกรมจะประกอบไปด้วย คาสงั่ ท่ีเป็น การกาหนดค่า หรือกาหนดตัวแปรต่างๆ คาสงั่ ท่ีขึ้นต้นด้วยสญั ลกั ษณ์ # เป็ นคาสงั่ ท่ี เรียกว่า ตวั ประมวลผลก่อน (Preprocessor) คือ คาสัง่ ที่ได้รับการทาก่อนที่จะมีการ ประมวลผลโปรแกรม นอกจากนัน้ ยงั มีส่วน ท่ีไม่ต้องการให้โปรแกรมประมวลผล เช่น 56

ตวั อย่างส่วนหวั ของ การเขียนโปรแกรม 57

ฟังก์ชนั (Functions) เป็ นส่วนที่เกบ็ คาสงั่ ต่าง ๆ ไว้ ซ่ึง ในภาษาซีจะบงั คบั ให้มีฟังกช์ นั อย่างน้อย 1 ฟังกช์ นั คือ ฟังกช์ นั Main() และในโปรแกรม 1 โปรแกรมสามารถมีฟังก์ชันได้ มากกว่า 1 ฟังกช์ นั ตวั ประมวลผลก่อน ที่สาคญั ของภาษาซีแบ่งออกเป็ น 2 ประเภท คือ 1 #include 2 #define เป็นฟังกช์ นั มาตรฐาน ใช้กาหนดค่าคงท่ี หรือ ค่าเร่ิมต้น 58

กาหนดค่า YES มีค่าคงที่เท่ากบั ‘1’ และ NO มีค่าคงท่ี เท่ากบั ‘2’ #define YES 1 #define NO 2 59

กาหนดค่า ANS ให้มีค่าคงท่ีเป็นผลบวกของจานวน จานวนหนึ่ง #define ANS (10+20+30) 2 ส่วนตวั แปรแบบ Global ตวั แปร คือ การจองพืน้ ท่ีในหน่วยความจาของคอมพิวเตอรส์ าหรบั เก็บข้อมูลท่ีต้องใช้ในการทางานของโปรแกรมโดยมีการตงั้ ช่ือเรียก หน่วยความจาในตาแหน่งนัน้ ด้วยเพ่ือความสะดวกในการเรียกใช้ข้อมูล ถ้าจะใช้ข้อมลู ใดกใ็ ห้เรียกผา่ นช่ือของตวั แปรที่เกบ็ เอาไว้ 60

ตวั แปรแบบ Global เป็นการประกาศตวั แปรหรือค่าต่างๆ ที่โปรแกรม สามารถเรียกใช้ได้ทงั้ โปรแกรมโดยการตงั้ ชื่อของตวั แปร (Variable) ใน ภาษาซีจาเป็ นต้องกาหนดประเภทของข้อมูลตวั แปร ได้แก่ จานวนเตม็ จานวนจริง และตวั อกั ษร การตงั้ ช่ือ ตวั แปรนี้ จะรวมไปถึงการตงั้ ชื่อ ของฟังกช์ นั ท่ีนามาใช้โดยมีกฎ ของการตงั้ ชื่อดงั นี้ 1 ชื่อที่ตงั้ ต้องประกอบไปด้วยตวั อกั ษรภาษาองั กฤษ ซ่ึงจะเป็น ตวั อกั ษรพิมพเ์ ลก็ ตวั อกั ษรพิมพใ์ หญ่ ตวั เลข และเครอื่ งหมาย _ (Underscore) โดยมีเงื่อนไขว่าตวั แรกต้องเป็นตวั อกั ษรเท่านัน้ 61

2 การตงั้ ชื่อตวั แปรจะมีความยาวเท่าไรกไ็ ด้ แต่ภาษาซี จะนับตวั อกั ขระแปดตวั แรกเป็นสาคญั โดยกฎข้อนี้จะทาให้ exp_variable 1 และ exp_variable 2 ถือเป็นตวั เดียวกนั 3 ห้ามใช้ศพั ทส์ งวน (ศพั ทส์ งวน คือศพั ทท์ ่ีใช้เป็นคาสงั่ ในการเขียน โปรแกรม) มาตงั้ เป็นช่ือตวั แปร 4 การตงั้ ชื่อตวั แปรจะให้ความสาคญั กบั ชนิดของตวั อกั ษรว่าเป็นตวั พิมพ์ ใหญ่หรอื พิมพเ์ ลก็ เช่น NAME กบั Name และ name ถือเป็นตวั แปรคน ละชนิ ดกนั 62

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

การประกาศตวั แปรขึน้ มาใช้งาน (Variable Declaration) โดยเขียนคาสงั่ ให้ถกู ต้องตามแบบการประกาศตวั แปรดงั นี้ 64

type name; type : ชนิดของตวั แปร name : ช่ือตวั แปร (ต้องเป็นไปตามหลกั การตงั้ ชื่อตวั แปร) #include <stdio.> int num; /*สร้างตวั แปรช่ือ num เพื่อเกบ็ ข้อมลู ชนิดจานวนเตม็ */ float h; /*สรา้ งตวั แปรชื่อ h เพื่อเกบ็ ข้อมลู ชนิดเลขทศนิยม*/ int main() { } rssppgpeccrerrtiiiaatnnuncnnttrthff(nff((“(((““““)E0;ET%%;nhntdfate”e”n,r,r&&knhhunye)muoi;gmubh”e)t);r;::””);); 65

3 ส่วนประโยคชดุ คาสงั่ (Main Program) ชุดคาสงั่ หลกั ของภาษาซีคือ ฟังกช์ นั main( ) ซึ่งโปรแกรมภาษาซีทุกโปรแกรม จะต้องมีฟังกช์ นั นี้อย่ใู นโปรแกรมเสมอ จะเหน็ ได้จากช่ือฟังกช์ นั คือ main แปลว่า “หลกั ” ดงั นัน้ การเขียนโปรแกรมภาษาซีจึงขาดฟังก์ชนั นี้ไปไม่ได้ โดยขอบเขต ของฟังก์ชันจะถูกกาหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทางานของ ฟังก์ชนั จะเริ่มต้นที่เคร่ืองหมาย { และจะสิ้นสุดที่เคร่ืองหมาย } ฟังก์ชนั main() สามารถเขียนในรปู แบบของ int main กไ็ ด้มีความหมายเหมือนกนั คือหมายความว่า ฟังก์ชนั main() จะไม่มีอาร์กิวเมนต์ (argument) คือ ไม่มีการรบั ค่าใดๆ เข้ามา ประมวลผลภายในฟังกช์ นั และจะมีการคืนค่ากลบั ออกไปจากฟังกช์ นั ด้วย Argument คือ ตวั รบั ค่าเข้ามายงั ฟังกช์ นั เพื่อทางาน Parameter คือ ค่าท่ีส่งออกไปยงั ฟังกช์ นั เพื่อทางาน ค่าของ argument และ parameter ต้องเป็นข้อมลู ชนิดเดียวกนั เช่น กาหนดให้ argument ข้อมลู ตวั อกั ษร (Char) แลว้ จะส่งค่า parameter ไปเป็นตวั เลขไม่ได้ (int) 66

ส่วนของโปรแกรมหลกั จะประกอบด้วย 1 คาสงั่ ต่างๆ ที่ใช้ในการเขียนโปรแกรม 2 การคานวณ 3 การเปรียบเทียบเง่ือนไข 4 การทางานซา้ ของโปรแกรม 67

คอมเมนต์ (comment) คือ ส่วนที่เป็นหมายเหตขุ องโปรแกรมมีไว้เพ่ือ ให้ผเู้ ขียนโปรแกรมใส่ข้อความอธิบายกากบั ลงไปใน source code ซ่ึงคอมไพเลอร์ จะไม่ทาการแปลผลในส่วนที่เป็ นคอมเมนต์นี้คอมเมนต์ในภาษาซีมี 2 แบบ คือ 1 คอมเมนตแ์ บบบรรทดั เดียวใช้เครอ่ื งหมาย // 2 คอมเมนตแ์ บบหลายบรรทดั ใช้เครอื่ งหมาย /* และ */ หมายเหตุ : ในการใช้คอมเมนตค์ ือในกรณีท่ีใช้คอมเมนตแ์ บบหลายบรรทดั จะไม่ สามารถใช้คอมเมนตซ์ ้อนคอมเมนตไ์ ด้ และถา้ คอมเมนตย์ าวๆ อย่ใู น โปรแกรม อาจทาให้การประมวลผลโปรแกรมมีความผิดพลาดได้ 68

#include <stdio.h> int num; /*สร้างตวั แปรชื่อ num เพื่อเกบ็ ข้อมลู ชนิดจานวนเตม็ */ float h; /*สร้างตวั แปรชื่อ h เพื่อเกบ็ ข้อมลู ชนิดเลขทศนิยม*/ int main() { //เริ่มโปรแกรม print(“Enter number : ”); //แสดง Enter number : บนหน้าจอ scanf(“%d”,&num); /*รบั ข้อมลู ท่ีเป็นตวั เลข*/ printf(“Enter height : ”); //แสดง Enter height : บนหน้าจอ scanf(“%f”, &h); // รบั ข้อมลู ท่ีเป็นตวั เลข printf(“Thank you”); /*แสดง \"Thank you” บนหน้าจอ*/ getch(); return 0; } /*จบโปรแกรม*/ 69


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook