งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

C Programming Lecture no. 6: Function. Department of Computer Science310222 C Programming 2/33 ฟังก์ชัน (Function)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "C Programming Lecture no. 6: Function. Department of Computer Science310222 C Programming 2/33 ฟังก์ชัน (Function)"— ใบสำเนางานนำเสนอ:

1 C Programming Lecture no. 6: Function

2 Department of Computer Science C Programming 2/33 ฟังก์ชัน (Function)

3 Department of Computer Science C Programming 3/33  การออกแบบโปรแกรมในภาษาซี จะอยู่บนพื้นฐานของการออกแบบ โมดูล (Modular Design)  โดยการแบ่งโปรแกรมออกเป็น งานย่อย ๆ ( หรือโมดูล ) แต่ละงาน ย่อยจะทำงานอย่างใดอย่างหนึ่ง เท่านั้น และไม่ควรจะมีขนาดใหญ่ จนเกินไป  งานย่อยเหล่านี้เมื่อนำไปเขียน โปรแกรมใน ภาษาซีจะเป็นการ เขียนในลักษณะของฟังก์ชัน ฟังก์ชัน (Function)

4 Department of Computer Science C Programming 4/33 รับข้อมูล 2 จำนวน จากผู้ใช้ บวกเลข 2 จำนวนแล้ว เก็บผลลัพธ์ แสดงผลลัพธ์ของการ ทำงาน โปรแกรมเพื่อบวกเลขสองจำนวนที่รับ จากผู้ใช้ และแสดงผลการคำนวณ ตัวอย่าง ที่ 1 สามารถแบ่งการทำงานเป็นงานย่อยได้ดังนี้

5 Department of Computer Science C Programming 5/33 ฟังก์ชันการรับ ข้อมูล ฟังก์ชันในการบวกเลข ฟังก์ชันแสดงผลลัพธ์ จะได้ว่าโปรแกรมประกอบด้วย ฟังก์ชัน 4 ฟังก์ชันคือ ฟังก์ชันหลัก ตัวอย่างที่ 1 [2]

6 Department of Computer Science C Programming 6/33 Source file function Source file function Obje ct file Librar y file Execu te file com pile link ขั้นตอนการสร้างโปรแกรม ด้วยภาษา C

7 Department of Computer Science C Programming 7/33 รูปแบบของ ฟังก์ชัน ชนิดข้อมูลที่คืนค่า ชื่อฟังก์ชัน ( การประกาศตัวแปร ) { การประกาศตัวแปรภายใน ฟังก์ชัน ; คำสั่ง ; return ( ค่าข้อมูลที่ต้องการ ส่งค่ากลับ ); } int, char, float, double ฯลฯ แบบที่ 1

8 Department of Computer Science C Programming 8/33 รูปแบบของ ฟังก์ชัน [2] void ชื่อฟังก์ชัน ( การประกาศ ตัวแปร ) { การประกาศตัวแปร ภายในฟังก์ชัน ; คำสั่ง ; } แบบที่ 2

9 Department of Computer Science C Programming 9/33 ตัวอย่างที่ 2 แสดงการทำงานของโปรแกรมการบวกเลข จำนวนจริง 2 จำนวนที่รับจากผู้ใช้ #include double InputDouble ( ) { double x; printf ( “\nInput real value : “ ); scanf ( “%.2f ”, &x ); return ( x ); }

10 Department of Computer Science C Programming 10/33 ตัวอย่างที่ 2 [2] double SumDouble ( double x, double y ) { return ( x + y ); } void PrintOut ( double x ) { printf ( “\n Result of sum is : %.2f”, x ); }

11 Department of Computer Science C Programming 11/33 ตัวอย่างที่ 2 ( ต่อ ) void main ( ) { double a1, a2, sumVal; a1 = InputDouble( ); a2 = InputDouble( ); sumVal = SumDouble ( a1, a2 ); PrintOut ( sumVal ); }

12 Department of Computer Science C Programming 12/33 การประกาศโพรโทไทป์ของ ฟังก์ชัน การประกาศโปรโตไทป์เป็น สิ่งจำเป็นในภาษาซีเนื่องจาก ภาษาซีเป็นภาษาในลักษณะที่ต้อง มีการประกาศฟังก์ชันก่อนจะ เรียกใช้ฟังก์ชันนั้น (Pre-defined Function)

13 Department of Computer Science C Programming 13/33  จากตัวอย่างที่ 2 จะเห็นว่าฟังก์ชัน main ( ) จะอยู่ ใต้ฟังก์ชันอื่น ๆ ที่มี การเรียกใช้ เป็นลักษณะที่ไม่ต้อง ประกาศฟังก์ชันที่ต้องการเรียกใช้ ก่อนจากเรียกใช้ฟังก์ชันนั้น  แต่หากต้องการย้ายฟังก์ชัน main ( ) ขึ้นไปไว้ ด้านบน จะต้องมีการประกาศโปร โตไทป์ของฟังก์ชัน ที่ต้องการ เรียกใช้ก่อนเสมอ การประกาศโพรโทไทป์ของ ฟังก์ชัน [2]

14 Department of Computer Science C Programming 14/33 #include double InputDouble (double ); double SumDouble ( double, double ); void PrintOut ( double ); ตัวอย่าง ที่ 3 แสดงการทำงานของโปรแกรมการ บวกเลขจำนวนจริง 2 จำนวน ที่รับ จากผู้ใช้ในลักษณะที่มีการประกาศ โปรโตไทป์

15 Department of Computer Science C Programming 15/33 void main ( void ) { double a1, a2, sumVal; a1 = InputDouble( ); a2 = InputDouble( ); sumVal = SumDouble ( a1, a2 ); PrintOut ( sumVal ); } ตัวอย่างที่ 3 ( ต่อ )

16 Department of Computer Science C Programming 16/33 จะเห็นว่าในโปรโตไทป์ไม่มีการประกาศ ชื่อตัวแปรมีแต่การเขียน ประเภทของตัว แปรไว้ภายในเป็นการช่วยให้คอมไพเลอร์ สามารถตรวจสอบ จำนวนของตัวแปร ประเภทของตัวแปร ประเภทของการคืนค่า ภายในโปรแกรมว่ามีการเรียกใช้งานสิ่ง ต่างๆเกี่ยวกับฟังก์ชัน นั้นถูกต้องหรือไม่ นอกจากนี้เราอาจจะแยกส่วนโปรโตไทป์ ไปเขียนไว้ในอินคลูดไฟล์ (include file) ก็ ได้เช่นเดียวกัน การประกาศโพรโทไทป์ของ ฟังก์ชัน [3]

17 Department of Computer Science C Programming 17/33 การเรียกใช้ ฟังก์ชัน การเรียกใช้ฟังก์ชันที่มีการคืน ค่า จะใช้รูปแบบ ดังต่อไปนี้ ค่าที่รับ = ฟังก์ชัน ( อาร์กิวเมนต์ ) คือ ค่าที่ถูกคืนมาจากการทำงานของฟังก์ชั่น

18 Department of Computer Science C Programming 18/33 a1 = InputDouble ( ); ใช้คู่กับโปรโต ไทป์ double InputDouble ( ); ตัวอย่างที่ 4 a1 ต้องมีชนิดเป็น double เนื่องจากค่าที่จะส่งคืนกลับ มาจากฟังก์ชันมีชนิดเป็น double

19 Department of Computer Science C Programming 19/33 sumVal = SumDouble (a1,a2 ); ใช้คู่กับโปรโตไทป์ double SumDouble ( ); ตัวอย่างที่ 5 a1 และ a2 ต้องมีชนิดเป็น double เพื่อให้ตรงกับชนิดตัวแปรของอาร์กิวเมนท์ ที่ประกาศในโปรโตไทป์

20 Department of Computer Science C Programming 20/33 PrintOut( sumVal ); ใช้คู่กับโปรโตไทป์ void PrintOut ( double ); ตัวอย่างที่ 6 ประกาศให้รู้ว่าฟังก์ชั่นนี้ไม่มีการคืนค่า

21 Department of Computer Science C Programming 21/33 ขอบเขต ( Scope) การทำงานของโปรแกรม ภาษาซี  จะทำงานที่ฟังก์ชัน main ( ) ก่อน เสมอ  เมื่อฟังก์ชัน main ( ) เรียกใช้งาน ฟังก์ชันอื่น ก็จะมีการส่งคอนโทรล (Control) ที่ควบคุมการทำงานไป ยังฟังก์ชันนั้น ๆ จนกว่าจะจบ ฟังก์ชัน หรือ พบคำสั่ง return

22 Department of Computer Science C Programming 22/33  เมื่อมีการเรียกใช้งานฟังก์ชันจะ มีการจองพื้นที่หน่วยความจำ สำหรับตัวแปรที่ต้องใช้ภายใน ฟังก์ชันนั้น  เมื่อสิ้นสุดการทำงานของ ฟังก์ชันก็จะมีการคืนพื้นที่ หน่วยความจำส่วนนั้นกลับสู่ระบบ การใช้งานตัวแปรแต่ละตัวจะมี ขอบเขตของการใช้งานขึ้นอยู่กับ ตำแหน่งที่ประกาศตัวแปรนั้น ขอบเขต [2]

23 Department of Computer Science C Programming 23/33 a1 a2 sum Val mai n ( ) x InputDou ble ( ) a1 = InputDouble( ); ตัวอย่างที่ 7 step1 จากตัวอย่างที่ 1 และตัวอย่างที่ 2 สามารถแสดง ขอบเขตการ ทำงานได้ดังนี้

24 Department of Computer Science C Programming 24/33 a1 a2 sum Val mai n ( ) x InputDou ble ( ) a2 = InputDouble( ); ตัวอย่างที่ 7 [2] step2

25 Department of Computer Science C Programming 25/33 a1 a2 sum Val mai n ( ) x sumDou ble ( ) sumVal=SumDouble(a1,a2) ตัวอย่างที่ 7 [3] Step3 y

26 Department of Computer Science C Programming 26/33 a1 a2 sum Val mai n ( ) x PrintOut ( ) PrintOut(sumVal); ตัวอย่างที่ 7 [4] step4

27 Department of Computer Science C Programming 27/33  จะเห็นว่าตัวแปร x ที่ประกาศในแต่ละ ขั้นตอนจะทำงานอยู่ภายในฟังก์ชันที่มี การประกาศค่าเท่านั้น และใช้พื้นที่ใน การเก็บข้อมูลคนละส่วนกัน ตัว แปรโลคอล (Local Variable)  ขอบเขตการทำงานของตัวแปรแต่ละตัว จะกำหนดอยู่ภายในบล็อกของคำสั่ง ภายในเครื่องหมายปีกกา ( { } ) หรือ การประกาศในช่วงของการประกาศ ฟังก์ชัน เรียกตัวแปรเหล่านี้ว่า ตัว แปรโลคอล (Local Variable) ขอบเขตของตัว แปร

28 Department of Computer Science C Programming 28/33 ตัว แปรโกลบอล (Global Variable)  นอกจากนี้สามารถประกาศตัวแปร ไว้ที่ภายนอกฟังก์ชันบริเวณส่วนเริ่ม ของโปรแกรมจะเรียกว่า ตัว แปรโกลบอล (Global Variable) ซึ่งเป็นตัวแปรที่สามารถเรียกใช้ที่ ตำแหน่งใด ๆ ในโปรแกรมก็ได้ ยกเว้นในกรณีที่มีการประกาศตัวแปร ที่มีชื่อเดียวกันกับตัวแปรโกลบอล ภายในบล็อกหรือฟังก์ชัน ขอบเขตของตัว แปร [2]

29 Department of Computer Science C Programming 29/33 #include int x; void func1 ( ) { x = x + 10; printf ( “func1 -> x : %d\n”, x ); } ตัวอย่างที่ 8 แสดงการทำงานของโปรแกรมใน ลักษณะที่มีตัวแปรโกลบอล แสดง ขอบเขตการใช้งานของตัวแปรภายใน โปรแกรม

30 Department of Computer Science C Programming 30/33 void func2 ( int x ) { x = x + 10; printf ( “func2 -> x : %d\n”, x );} void func3 ( ) { int x=0; x = x + 10; printf ( “func3 -> x : %d\n”, x );} ตัวอย่างที่ 8 [2]

31 Department of Computer Science C Programming 31/33 void main ( ) { x = 10; printf ( “main (start) -> x : %d\n”, x ); func1 ( ); printf ( “main (after func1) -> x : %d\n”, x ); func2 ( x ); printf ( “main (after func2) -> x : %d\n”, x); func3 ( ); printf ( “main (after func3) -> x : %d\n”, x); } ตัวอย่างที่ 8 [3]

32 Department of Computer Science C Programming 32/33 main (start) -> x : 10 func1 -> x : 20 main (after func1) - > x : 20 func2 -> x : 30 main (after func2) - > x : 20 func3 -> x : 10 main (after func3) - > x : 20 ตัวอย่างที่ 8 [4] ผลการทำงาน

33 The End


ดาวน์โหลด ppt C Programming Lecture no. 6: Function. Department of Computer Science310222 C Programming 2/33 ฟังก์ชัน (Function)

งานนำเสนอที่คล้ายกัน


Ads by Google