C Programming Lecture no. 6: Function.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
Advertisements

โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Computer Language.
ครั้งที่ 9 Function(ต่อ).
บทที่ 2 รหัสควบคุมและการคำนวณ
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
โครงสร้างภาษาซี เบื้องต้น
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
Introduction to C Programming
ครั้งที่ 8 Function.
Department of Computer Business
การรับค่าและแสดงผล.
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
ฟังก์ชัน (Function).
Structure Programming
Structure Programming
Computer Programming 1 LAB # 6 Function.
องค์ประกอบของโปรแกรม
Week 6 ประกาศค่าตัวแปร.
รับและแสดงผลข้อมูล.
โครงสร้างภาษาซี.
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
Lecture no. 2: Overview of C Programming
ตัวแปรชุด.
Lecture no. 6 Structure & Union
Lecture no. 3: Review and Exercises
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
บทที่ 6 ตัวแปรอาร์เรย์ (Array of Variable)
C Programming Lecture no. 9 Structure.
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
ข้อมูลพื้นฐานและตัวดำเนินการ
อาร์เรย์และข้อความสตริง
การคำนวณทางคณิตศาสตร์ ตัวดำเนินการ
การเขียนโปรแกรมภาษาซี
ตัวแปรกับชนิดของข้อมูล
การสร้างฟังก์ชั่นเพื่อพัฒนาโปรแกรม Interactive C
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
บทที่ 5 ฟังก์ชันกับอาร์เรย์ Function & Array
การรับและพิมพ์ข้อมูลเบื้องต้น
ประวัติความเป็นมาภาษาซี
ตัวแปรกับชนิดของข้อมูล
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
Week 2 Variables.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Computer Programming for Engineers
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
PHP: [8] การสร้างฟังก์ชั่นขึ้นใช้เอง (User-defined functions)
คำสั่งเกี่ยวกับการรับ และแสดงผล
หลักการสร้างสรรค์ชุดคำสั่ง ๓
Output of C.
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
โครงสร้าง ภาษาซี.
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
ตัวแปร และชนิดข้อมูล.
บทที่ 5 Function. Function Function เป็นการแบ่งโค้ดโปรแกรมออกเป็นส่วนย่อยๆ เพื่อทำงานบางอย่าง - โค้ดโปรแกรมเรียงต่อกันยาว - สามารถเรียกใช้ Function ซ้ำได้
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
ฟังก์ชันในภาษา C. ฟังก์ชัน (Functions) 2 การออกแบบโปรแกรมในภาษาซี จะอยู่บนพื้นฐานของการออกแบบ โมดูล (Module Design) โดยการแบ่ง โปรแกรมออกเป็นงานย่อย ๆ.
ใบสำเนางานนำเสนอ:

C Programming Lecture no. 6: Function

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ตัวอย่างที่ 7 main ( ) a1 a2 sumVal x InputDouble ( ) จากตัวอย่างที่1 และตัวอย่างที่ 2 สามารถแสดง ขอบเขตการทำงานได้ดังนี้ step1 main ( ) a1 a1 = InputDouble( ); a2 sumVal x InputDouble ( ) Department of Computer Science 310222 C Programming

ตัวอย่างที่ 7 [2] main ( ) a1 a2 sumVal x InputDouble ( ) step2 a1 a2 sumVal a2 = InputDouble( ); x InputDouble ( ) Department of Computer Science 310222 C Programming

sumVal=SumDouble(a1,a2) ตัวอย่างที่ 7 [3] Step3 main ( ) a1 a2 sumVal=SumDouble(a1,a2) sumVal x sumDouble ( ) y Department of Computer Science 310222 C Programming

ตัวอย่างที่ 7 [4] main ( ) a1 a2 sumVal x PrintOut ( ) step4 a1 a2 sumVal PrintOut(sumVal); x PrintOut ( ) Department of Computer Science 310222 C Programming

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

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

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

printf ( “func2 -> x : %d\n”, x ); } void func3 ( ) { int x=0; ตัวอย่างที่ 8 [2] 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 ); } Department of Computer Science 310222 C Programming

ตัวอย่างที่ 8 [3] 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); } Department of Computer Science 310222 C Programming

main (after func1) -> x : 20 func2 -> x : 30 ตัวอย่างที่ 8 [4] ผลการทำงาน 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 Department of Computer Science 310222 C Programming

The End