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 เอกสารติว

เอกสารติว

Published by krupook_sajai, 2022-06-18 06:09:20

Description: เอกสารติว

Search

Read the Text Version

ภาษาโปรแกรม (ภาษาซ)ี

1. ประวัตคิ วามเปน็ มา ภาษา ภาษา ภาษา BCPL B C Basic Combined บนเครอ่ื ง พ.ศ. 2515 Programming โดย เดนนชิ ริทช่ี Language PDP-7 (UNIX) พ.ศ. 2513 2

2. โครงสร้างพื้นฐานของภาษาซี # header สว่ นท่ี 2 สว่ นท่ี 1 ส่วนท่ี 3 main( ) { /* เร่มิ โปรแกรม */ 3 declaration ……… คาสง่ั ต่าง ๆ }

ส่วนท่ี 1 เปน็ ส่วนท่ีระบใุ หซ้ คี อมไพเลอร์เตรียมการทางานท่ีกาหนด ในส่วนน้ีไว้ โดยหน้าคาส่งั จะมีเคร่ืองหมาย # เช่น # include <stdio.h> เปน็ การระบใุ ห้นาไฟล์ stdio.h มารวมกบั ไฟลน์ ี้ เพ่อื ท่จี ะ สามารถใช้คาส่งั ท่ีอยู่ในไฟลน์ ี้มาใชง้ านได้ หรือ # define START 0 เปน็ การกาหนดคา่ คงทใ่ี ห้กับตัวแปร START โดยใหม้ คี ่าเปน็ 0 หรือ # define temp 37 เป็นการกาหนดใหต้ วั แปร temp มคี ่าเทา่ กบั 37 4

ส่วนที่ 2 declaration เป็นการกาหนดชนิดข้อมูลที่จะใชใ้ น โปรแกรมซึง่ ตวั แปรหรอื ข้อมลู ตา่ ง ๆ นั้นจะต้องถกู ประกาศ(declare) ในส่วนน้กี อ่ น จึงจะสามารถนาไปใช้ ในโปรแกรมได้ เช่น int stdno; เปน็ การกาหนดวา่ ตัวแปร stdno เปน็ ขอ้ มลู ชนดิ จานวนเต็ม หรือ interger ซ่ึงอาจไดแ้ ก่คา่ 0,4,-1,-3,…. เป็นต้น float score; เป็นการกาหนดว่าตวั แปร score เปน็ ข้อมลู ชนดิ เลขมจี ดุ ทศนิยม (floating point)ซง่ึ อาจมีคา่ 0.23, 1.34, -21.002, เป็นตน้ 5

ส่วนที่ 3 Body คอื ส่วนของตวั โปรแกรม โดยจะตอ้ งเร่มิ ต้นด้วยฟงั กช์ ัน main ( ) แลว้ ใสเ่ คร่อื งหมายกาหนดขอบเขตเริ่มตน้ ของตวั โปรแกรมคือ { หลังจากนัน้ ใสค่ าสงั่ หรอื ฟังกช์ ันต่าง ๆ โดยแต่ ละคาสงั่ หรอื ฟังก์ชันนนั้ ๆ จะต้องปดิ ด้วยเครือ่ งหมาย ; เมื่อตอ้ งการจบโปรแกรมให้ใสเ่ ครือ่ งหมาย } ปิดทา้ ย เช่น main ( ) { /* เร่ิมต้นโปรแกรม */ คาสัง่ ต่าง ๆ ; ฟังก์ชัน; …………… …………... } /* จบโปรแกรม */ 6

เคร่อื งหมายต่าง ๆ { } - เปน็ ตวั กาหนดขอบเขตหรอื บลอ็ กของฟงั ก์ชัน ( ) - เปน็ การระบุตวั ผ่านค่าหรืออาร์กวิ เมนต์ใหก้ ับฟังกช์ นั ถ้าภายในวงเลบ็ ไม่มีขอ้ ความใด ๆ แสดงว่าไม่มตี วั ผา่ น คา่ ทตี่ ้องการระบสุ าหรับฟงั ก์ชนั นัน้ ๆ /* */ - เป็นการกาหนด comment หรอื ข้อความ ท่ีไม่ ตอ้ งการให้คอมไพเลอร์ปฏบิ ตั ิงาน ซงึ่ ข้อความที่อยู่ ภายในเครอ่ื งหมายนจ้ี ะถือว่า ไมใ่ ชค่ าสั่งปฏบิ ตั งิ าน 7

ตัวอยา่ งโปรแกรม โปรแกรมที่ 1 # include <stdio.h> int main (void ) { printf(“Hello, Good morning. \\n”); } เป็นโปรแกรมสั่งพิมพ์ข้อความ Hello, Good morning. 8

โปรแกรมที่ 2 9 # include <stdio.h> main ( ) { float point; printf(\"\\n\\nPut your score in\\n\"); scanf(\"%f\", &point); printf(\"Your score is %f point\\n\\n\", point); } เป็นโปรแกรมรับคะแนนและเก็บคา่ ที่ตัวแปร point หลังจากน้ันสั่งใหม้ กี ารพมิ พ์คะแนนออกมา

ชนิดของขอ้ มูลและตัวแปรในภาษาซี การกาหนดชอื่ ตัวแปร หลกั การมีดังนี้ 1. ต้องข้นึ ตน้ ดว้ ยตวั อกั ษร 2. หา้ มใช้เครื่องหมายทางคณติ ศาสตร์ในชื่อตวั แปร 3. สามารถใชเ้ ครื่องหมาย underline ‘_’ ได้ 4. หา้ มใช้ reserved words เช่น int, float, etc. Note: คอมไพเลอรใ์ นภาษาซีสามารถเหน็ ความแตกต่างของชอื่ ตัว แปรไดย้ าวไมเ่ กิน 8 ตัวอกั ษร และช่ือตัวแปรจะแตกต่างกนั ถา้ ใช้ รูปแบบของตวั อักษรต่างกนั 10

แบบขอ้ มูลและขนาด แบบขอ้ มูลหรอื ชนิดของตวั แปรตา่ ง ๆ ทก่ี าหนดไว้ในภาษาซี char ชนดิ ของตัวอักษรหรืออักขระ int ชนดิ จานวนเตม็ ปกติ short ชนิดจานวนเตม็ ปกติ long ชนดิ จานวนเต็มที่มีความยาวเปน็ 2 เท่า unsigned ชนดิ ของเลขท่ีไม่คดิ เครื่องหมาย float ชนิดเลขมีจุดทศนิยม double ชนดิ เลขท่มี ีจดุ ทศนิยมความยาวเป็น 2 เทา่ 11

ตารางแสดงเน้ือท่ีในหนว่ ยความจาและคา่ ตัวเลขท่เี กบ็ ของขอ้ มลู แต่ละชนดิ ิม เ ่ ร เก ( ) เ เ่ ก Char 1 Int 2 เก ก ร ASCII 1 ร เ มร 0 255 Short 2 เ ร –32768 32767 Long 4 เ ร –32768 32767 Unsigned Unsigned short = 2 เ ปร ม  2000 Float Unsigned long = 4 เ ร 0 65535 Double เ ร 0 4000 4 8 เ กก 10x โ x ม ร –37 +38 มก เ ม 12

ในการเขียนโปรแกรม แบบข้อมลู ที่ใชจ้ ะแบ่งออกเปน็ 4 กลุ่มใหญ่ ดังน้ี ขอ้ มูลและตัวแปรชนิดอกั ขระ ขอ้ มลู และตวั แปรชนดิ จานวนเต็ม ข้อมลู และตวั แปรชนดิ เลขมีจุดทศนยิ ม ขอ้ มูลและตวั แปรแบบสตริง 13

ขอ้ มูลและตวั แปรชนิดอกั ขระ 1 อักขระแทนดว้ ย char โดยอยภู่ ายในเคร่อื งหมาย ‘ ’ เช่น # include <stdio.h> main ( ) { char reply; reply = ‘y’; 14 ………………… }

การใหค้ ่าอักขระท่เี ป็นรหสั พิเศษหรอื รหัสควบคุม อกั ขระเหลา่ นีไ้ มส่ ามารถใหค้ า่ โดยตรง แต่จะทาไดโ้ ดยการให้คา่ เป็นรหัส ASCII ซึง่ จะเขียนในรปู ของเลขฐานแปด โดยใช้เครอื่ งหมาย ‘\\’ นาหนา้ หรอื ใชต้ วั อักขระท่ีกาหนดใหก้ ับรหัสนัน้ ๆ เขียนตาม เครือ่ งหมาย ‘\\’ สาหรับรหสั บางตวั เชน่ รหัส BELL แทนดว้ ย ASCII 007 ซึง่ กาหนดไดด้ ังนี้ beep = ‘\\007’; หรือรหัสควบคมุ การข้ึนบรรทัดใหม่ ตวั อักขระที่กาหนดให้กบั รหัส คือ n สามารถกาหนดเปน็ newline = ‘\\n’; 15

ตัวอย่างโปรแกรม # include <stdio.h> main ( ) { char newline; newline = ‘\\n’; printf(“Hello, Good morning. %c”,newline); printf(“Hello, Good morning.\\n”); } 16

ข้อมลู และตวั แปรชนิดจานวนเตม็ จานวนเต็มในภาษาซีสามารถใชแ้ ทนได้ 4 รูปแบบคอื int, short, long และ unsigned สาหรบั การกาหนดตวั แปรแบบ unsigned คือจานวนเตม็ ทีไ่ มค่ ดิ เครอ่ื งหมายนัน้ จะต้องใช้ควบคกู่ บั รปู แบบข้อมูลจานวนเต็มชนดิ อื่น ๆ คือ int หรือ short หรือ long ตัวอยา่ งเช่น unsigned int plusnum; unsigned long width; unsigned short absno; /* absolute number */ 17

ข้อมูลและตวั แปรชนิดเลขมีจดุ ทศนิยม สาหรับเลขมจี ุดทศนยิ มนนั้ แทนได้ 2 แบบคือ float และ double โดย double เก็บคา่ ไดเ้ ปน็ 2 เท่าของ float สาหรบั งานทางวทิ ยาศาสตร์ทีต่ ้องการความละเอียดในการเก็บคา่ มักใชก้ ารเกบ็ ในรูปแบบนี้ คือเก็บแบบเอ็กโพเนนซ์ ดังตัวอย่างตอ่ ไปน้ี ตัวเลข แสดงแบบวิทยาศาสตร์ แบบเอก็ โพเนนซ์ 9,000,000,000 9.0*109 9.0e9 345,000 3.45*105 3.45e5 0.00063 6.3*10-4 6.3e-4 0.00000924 9.24*10-6 9.24e-6 18

ข้อมูลและตวั แปรแบบสตรงิ สตรงิ หมายถงึ ตัวอักขระหลาย ๆ ตวั มาประกอบกนั เป็นขอ้ ความ ซงึ่ การท่นี าตวั แปรหลาย ๆ ตวั มาเกบ็ รวมกนั ในภาษาซนี ้เี รียกว่า อะเรย์ (array) ดังนั้นข้อมลู แบบสตริงคอื อะเรย์ของตวั อกั ขระ น่ันเอง เคร่ืองหมายของอะเรย์คือ [ ] รปู แบบการกาหนดสตริงจงึ มี ลักษณะดงั นี้ char name[30]; หมายถึง ตวั แปร name เป็นชนิด char ที่มคี วามยาว 30 ตวั อกั ษร โดยเก็บเป็น อะเรย์ การเก็บน้นั จะเกบ็ เรยี งกันทีละไบต์ และไบตส์ ดุ ท้าย เกบ็ รหสั null คอื \\0 ดังนนั้ จะเก็บได้จริงเพยี ง 29 ตวั อักษร 19

การกาหนดค่าให้ตวั แปรและการส่งผลลพั ธ์ การกาหนดคา่ ใหต้ ัวแปรอาจทาได้โดยกาหนดในโปรแกรม หรอื กาหนดในขณะทีม่ กี ารกาหนดชนดิ กไ็ ด้ เช่น main ( ) { int age = 18; float height; height = 172.5; 20 printf(“Mr. Surasak is %d years old”,age); printf(“ and tall %f cms.\\n”,height); }

ตวั อยา่ งของโปรแกรมในการกาหนดคา่ และสง่ ค่าผลลพั ธ์ # include <stdio.h> main ( ) { int sum,valuea; int count = 1; valuea = 4; sum = count + valuea; printf(“Total value is %d.\\n”,sum); } ผ พธ ปร กฏ ม : Total value is 5. 21

ฟังกช์ ัน printf( ) และ scanf( ) รปู แบบของ printf ( ) printf( สว่ นควบคุมการพิมพ์, อาร์กวิ เมนต์, อารก์ วิ เมนต,์ ...) สว่ นควบคุมการพมิ พ์ เป็นสตรงิ ทมี่ ีขอ้ ความและรูปแบบของ การพิมพโ์ ดยอยู่ในเครือ่ งหมาย “ ” อารก์ ิวเมนต์ เป็นส่วนทจี่ ะนาขอ้ มูลมาพมิ พ์ ตามรปู แบบที่ กาหนดมาในส่วนควบคมุ การพิมพ์ 22

รปู แบบที่ใช้สาหรับกาหนดการพมิ พใ์ นฟงั กช์ นั printf %d พิมพด์ ้วยเลขฐานสบิ %o ” ” เลขฐานแปด %x ” ” เลขฐานสิบหก %u ” ” เลขฐานสบิ แบบไมค่ ิดเครอ่ื งหมาย %e ” ” ตวั เลขแบบวทิ ยาศาสตร์ เช่น 2.13e45 %f ” ” ตัวเลขมจี ุดทศนยิ ม %g ” ” รูปแบบ %e หรอื %f โดยเลือกแบบ ทส่ี ้ันท่ีสดุ สาหรับสตริงมีรปู แบบการพมิ พ์ ดังนี้ %c พมิ พด์ ้วยตัวอักษรตัวเดียว %s ” ”ข้อความ 23

เครอื่ งหมายสาหรบั ปรบั เปลีย่ นรปู แบบของขอ้ มลู เครือ่ งหมายลบ ใหพ้ มิ พข์ อ้ มลู ชดิ ขอบซา้ ย (ปกตขิ อ้ มลู ทั้งหมดจะพมิ พ์ชิดขวา) สตริงตวั เลข ระบุความกว้างของฟลิ ด์ จดุ ทศนยิ ม เป็นการกาหนดความกว้างของจุดทศนยิ ม Note การปรับเปล่ียนรปู แบบของข้อมลู นที้ าไดโ้ ดย การใส่ เครอ่ื งหมายเหลา่ นีร้ ะหว่างเครอื่ งหมาย % และเครอื่ งหมาย ทก่ี าหนดรปู แบบการพิมพ์ 24

รูปแบบของ scanf ( ) scanf( สว่ นควบคมุ ข้อมลู , อารก์ ิวเมนต์, อาร์กวิ เมนต์,...) สว่ นควบคุมข้อมลู เปน็ การกาหนดรูปแบบข้อมลู ในเครอ่ื งหมาย “ ” อารก์ วิ เมนต์ เป็นส่วนท่จี ะนาข้อมลู มาเกบ็ (ในตัวแปร) ซึง่ ชนดิ ของขอ้ มูลตอ้ ง ตรงตามรปู แบบที่กาหนดในสว่ นควบคมุ ข้อมูล การกาหนดลักษณะอารก์ วิ เมนตม์ ีได้ 2 แบบดังน้ี ถ้าขอ้ มูลนัน้ อาจจะนาไปใชใ้ นการคานวณ - จะใสเ่ คร่อื งหมาย & หน้าตัวแปร ถา้ ขอ้ มลู น้นั เปน็ ข้อความทจี่ ะนาไปเก็บไว้ในตวั แปรเลย - ไมจ่ าเป็นตอ้ งใส่เคร่ืองหมาย & หนา้ ตวั แปร 25

โอเปอเรเตอร์และนพิ จน์ การแทนโอเปอเรเตอร์ทางคณติ ศาสตร์สาหรบั ภาษาซี + การบวก - การลบ * การคูณ / การหาร % การหารเอาเศษ (โมดลู สั ) 26

การเปลยี่ นชนิดของข้อมูล ทาไดโ้ ดยระบุชนดิ ท่ีตอ้ งการเปลยี่ นภายในเครอ่ื งหมาย ( ) แลว้ วางหน้าตัวแปรหรอื ข้อมลู ทตี่ อ้ งการเปล่ียนแปลงชนิด float money; ต้องการเปลยี่ นตวั แปร float ไปเปน็ integer ทาไดด้ งั น้ี (int) money; int cost; cost = 2.7+4.5; cost = (int)2.7+(int)4.5; 27

การเพ่มิ ค่าและลดคา่ ตัวแปร ++n เพิ่มคา่ n อีก 1 - -n ลดคา่ n ลง 1 ความแตกตา่ งระหว่าง count++ และ ++count เช่น count = 5; x = count++; จะได้คา่ x เท่ากบั 5 แล้วค่า count เท่ากบั 6 count = 5; x = ++count; จะไดค้ า่ x เท่ากบั 6 28

นิพจนก์ าหนดค่า (Assignment expression) เคร่อื งหมายทใ่ี ช้กาหนดคา่ คอื = โดยเป็นการกาหนดคา่ ทางขวาของเครื่องหมาย ให้กับตัวแปรที่อยู่ ทางซ้าย เชน่ j = 7+2 หรือ k = k+4 3.4.6 เคร่อื งหมายและนิพจนเ์ ปรียบเทยี บ > หรือ >= มากกวา่ หรอื มากกว่าเท่ากับ < หรือ <= น้อยกวา่ หรือ นอ้ ยกวา่ เท่ากับ == เทา่ กับ != ไมเ่ ทา่ กับ 29

ความแตกตา่ งของเครื่องหมาย = และ == เครื่องหมาย = เป็นตัวกาหนดคา่ ในขณะที่เครอ่ื งหมาย == เป็นเครือ่ งหมายเปรยี บเทยี บ ตัวอยา่ งเช่น point = 44; หมายถงึ เป็นการกาหนดค่าให้กับตัวแปร point ให้มคี ่าเทา่ กับ 44 point == 44; หมายถงึ เปน็ การตรวจสอบวา่ ค่า point มคี ่าเท่ากับ 44 หรอื ไม่ 30

เครือ่ งหมายและนิพจน์เปรยี บเทยี บแบบตรรกศาสตร์ && และ (and) | | หรอื (or) ! ไม่ (not) คา่ ของนิพจนเ์ ปรียบเทียบเชิงตรรก นิพจนท์ ่ี 1 && นิพจนท์ ี่ 2 เป็นจริง เมื่อนพิ จน์ทง้ั สองเปน็ จรงิ นพิ จน์ท่ี 1 | | นิพจนท์ ่ี 2 เป็นจริง เมอื่ นพิ จนใ์ ดนิพจนห์ นึ่ง เป็นจรงิ หรอื ทั้งสองนพิ จนน์ น้ั เป็นจริง ! นพิ จน์เปรียบเทียบ เป็นจริง เม่อื นพิ จน์เปรยี บเทยี บเปน็ เท็จ 31

คาสัง่ if 32 รูปแบบของคาสั่ง if (เงือ่ นไข) คาสัง่ ที่ตอ้ งทา ถ้าเง่ือนไขน้นั เปน็ จรงิ ; ตัวอย่างเชน่ if (score >= 80) grade = ‘A’; /* simple statement */ หรือ if (math >= 60 && eng >= 55) { grade = ‘S’; /* compound statement */ printf(“Your grade is %c\\n”,grade); }

คาส่ัง if ….. else ….. รปู แบบของคาสงั่ if (คาส่ังหรอื นพิ จน์เงอื่ นไข) คาสัง่ ท่ีต้องทาเม่อื เงอ่ื นไขนน้ั เปน็ จรงิ else คาสงั่ ทีต่ อ้ งทาเมื่อเงอ่ื นไขน้นั ไมเ่ ปน็ จริง ตวั อยา่ งเชน่ if (value1 > value2) min = value2; else min = value1; 33

เคร่อื งหมายพเิ ศษท่ีใชใ้ นการเปรยี บเทียบเงื่อนไข ? : รปู แบบท่วั ไปของคาสง่ั เปรยี บเทียบเงื่อนไข ? : มดี ังนี้ นิพจน์ที่ 1 ? นิพจน์ที่ 2 : นพิ จนท์ ี่ 3 ความหมายคือ if นิพจนท์ ี่ 1 เปน็ จรงิ ทาตามคาส่งั ในนิพจน์ที่ 2 else ทาตามคาสง่ั ในนิพจนท์ ่ี 3 เชน่ x = (y< 0) ? -y : y; 34

คาส่งั ตรวจสอบเง่ือนไขหลาย ๆ ทาง : switch และ break รปู แบบคาสงั่ switch (นิพจน)์ { case label1 : statement1; case label2 : statement2; …………….. …………….. default : statementn; } 35

ตัวอยา่ ง 36 switch (ch) { case ‘1’ : printf(“Red\\n”); case ‘2’ : printf(“Blue\\n”); case ‘3’ : printf(“Yellow\\n”); default : printf(“White\\n”); }

ตวั อย่าง switch (ch) { case ‘1’ : printf(“Red\\n”); break; case ‘2’ : printf(“Blue\\n”); break; case ‘3’ : printf(“Yellow\\n”); break; default : printf(“White\\n”); } 37

คาส่งั loop หรอื คาส่งั วนซา้ compound statements คาสั่งลปู while 38 รปู แบบ while (นพิ จน์เงอื่ นไข) { คาสั่งท่วี นลปู ; ………… …………. }

คาสั่งลปู for รูปแบบ for ( นพิ จน์ที่ 1 ; นิพจน์ท่ี 2 ; นิพจน์ท่ี 3 ) { คาส่งั วนรอบ; ……. } เป็นคาส่งั ทใี่ ช้ในการควบคมุ ใหม้ กี ารวนรอบคาสัง่ หลาย ๆ รอบ โดยนพิ จน์ท่ี 1 คอื การกาหนดคา่ เรม่ิ ตน้ ให้กับตัวแปรทีใ่ ช้ในการวนรอบ นิพจน์ที่ 2 เปน็ การเปรยี บเทียบ ก่อนท่ีจะวนรอบถ้าเงอื่ นไขของนพิ จน์ เป็นจริงจะมกี ารทางานตามคาสั่งวนรอบ นิพจนท์ ี่ 3 เป็นคาส่ังในการ กาหนดค่าท่ีจะเปลี่ยนแปลงไปในแตล่ ะรอบ 39

คาสง่ั วนรอบแบบทตี่ รวจสอบเงอ่ื นไขทีหลัง : do while รูปแบบ do statement; while (นิพจน์เงื่อนไข); เช่น num = 2; do { num++; printf(“Now no is %d\\n”,num); } while (num == 10) 40

คาส่ังควบคุมอื่น ๆ break, continue, goto และ labels คำสงั่ break ใชเ้ มือ่ ตอ้ งการใหก้ ารทางานสามารถหลุดออกจากลปู และกระโดด ไปยงั คาส่งั ท่อี ยู่นอกลปู ทนั ที โดยไม่ตอ้ งตรวจสอบเง่อื นไขใด ๆ คาสง่ั continue ใชเ้ มอ่ื ต้องการให้การทางานน้นั ยอ้ นกลับไปวนรอบใหม่อีกครั้ง ซง่ึ มีลักษณะทตี่ รงข้ามกับคาสัง่ break 41

คาสงั่ goto และ labels คาสัง่ goto ประกอบด้วย 2 ส่วน คอื - ตวั คาส่งั goto เป็นคาสั่งให้กระโดดไปยังตาแหนง่ ทีก่ าหนด โดยจะกาหนดเปน็ ชอ่ื เรยี กวา่ label name - ชื่อ (label name) เปน็ ตัวกาหนดตาแหน่งทค่ี าสงั่ จะกระโดด ไปทางาน ขอ้ ควรระวงั ! คาสั่งน้ถี อื เป็นคาส่งั ที่ควรหลีกเลีย่ งในการเขยี นโปรแกรม แต่ถ้าจาเปน็ หรอื หลีกเลยี่ งไม่ไดเ้ ทา่ นัน้ จึงจะใช้คาสง่ั น้ี 42

ตวั อย่างโปรแกรมทใี่ ชค้ าสั่ง goto 43 #include<stdio.h> main() { int sum,n; for(n=1;n<10;n++) if (n==5) goto part1; else printf(“%d\\n”,n); part1 : printf(“Interrupt with no. 5\\n”); }

ฟังก์ชนั (Function) 44

ฟั ก (Functions) การออกแบบโปรแกรมในภาษาซีจะอยบู่ นพนื้ ฐาน ของการออกแบบโมดูล (Module Design) โดยการแบง่ โปรแกรมออกเปน็ งานย่อย ๆ (หรอื โมดูล) แต่ละงานย่อย จะทางานอย่างใดอย่างหน่ึงเทา่ นน้ั และไม่ควรจะมขี นาด ใหญจ่ นเกนิ ไป งานย่อยเหล่าน้ีเม่อื นาไปเขยี นโปรแกรมใน ภาษาซีจะเป็นการเขียนในลักษณะของฟงั ก์ชัน 45

ตวั อยา่ ง โปรแกรมเพอ่ื บวกเลขสองจานวนที่รับจากผูใ้ ช้ และแสดงผลการคานวณ สามารถแบ่งการทางานเป็นงานยอ่ ยได้ดังนี้ รบั ข้อมลู 2 จานวนจากผใู้ ช้ บวกเลข 2 จานวนแลว้ เกบ็ ผลลพั ธ์ แสดงผลลัพธ์ของการทางาน 46

ตัวอย่าง (ตอ่ ) จะไดว้ ่าโปรแกรมประกอบด้วยฟงั ก์ชนั 4 ฟงั กช์ นั คอื ฟังก์ชนั หลกั ฟังก์ชันการรับขอ้ มลู ฟังกช์ ันในการบวกเลข ฟังก์ชนั แสดงผลลพั ธ์ 47

ข้นั ตอนการสร้างโปรแกรมด้วยภาษา C Source file compile Object Library file function link link function function file Execute Source file compile link file function function Object function file 48

4.1 รูปแบบของฟงั ก์ชัน แบบท่ี 1 int , char , float , double ฯลฯ ชนดิ ขอ้ มูลทีค่ นื ค่า ชื่อฟังก์ชนั ( การประกาศตวั แปร ) { การประกาศตัวแปรภายในฟงั ก์ชัน; คาสัง่ ; return (คา่ ข้อมูลที่ต้องการส่งค่ากลับ); } 49

รปู แบบของฟงั กช์ ัน (ต่อ) แบบท่ี 2 void ชอ่ื ฟงั กช์ ัน ( การประกาศตวั แปร ) { การประกาศตวั แปรภายในฟังกช์ นั ; คาสงั่ ; } 50


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