Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

INTRODUCTION TO C LANGUAGE
Introduction to C Introduction to C.
โครงสร้างโปรแกรมภาษา C
โครงสร้างภาษาซี เบื้องต้น
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
ครั้งที่ 8 Function.
Department of Computer Business
การรับค่าและแสดงผล.
Control Statement for while do-while.
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Type Judgments และ Type Rules. คำศัพท์ที่จะใช้ Type judgment: การตัดสินความถูกต้องของ type สำหรับ expression หรือ statement ใน โปรแกรม – เป็นบทสรุป (conclusion)
Functional Programming
Data Structures and Algorithms
Data Structures and Algorithms
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
ฟังก์ชัน (Function).
Structure Programming
Structure Programming
องค์ประกอบของโปรแกรม
โครงสร้างภาษาซี.
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
Lecture no. 2: Overview of C Programming
ฟังก์ชัน (Function).
Arrays.
C Programming Lecture no. 6: Function.
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
ตัวแปรชุดของอักขระ String
หน่วยที่ 14 การเขียนโปรแกรมย่อย
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
Lecture 4 องค์ประกอบภาษา C To do: Hand back assignments
Flow Control.
การคำนวณทางคณิตศาสตร์ ตัวดำเนินการ
การเขียนโปรแกรมภาษาซี
การสร้างฟังก์ชั่นเพื่อพัฒนาโปรแกรม Interactive C
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
คำสั่ง while และ do…while
บทที่ 5 ฟังก์ชันกับอาร์เรย์ Function & Array
C language W.lilakiatsakun.
ประวัติความเป็นมาภาษาซี
Method of Class อ.สุพจน์ สิงหัษฐิต
Week 2 Variables.
Week 12 Engineering Problem 2
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
การประมวลผลสายอักขระ
Computer Programming for Engineers
โปรแกรมประยุกต์อื่นๆ
2 /* ข้อความนี้เป็นเพียงคำอธิบาย ไม่มีผลต่อขั้นตอนการ ทำงานของโปรแกรม */ /* A simple program to display a line of text */ #include void main ( ) { printf.
Call by reference.
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
Object-Oriented Programming
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
โครงสร้างภาษาซี #include <stdio.h> void main() {
หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรอบรมครู คอมพิวเตอร์ หลักสูตรที่ ๑ ทักษะการโปรแกรม เบื้องต้น วันที่สาม.
การเขียนโปรแกรมคอมพิวเตอร์ 1
บทที่ 9 การสร้างและใช้ งานฟังก์ชั่น C Programming C-Programming.
บทที่ 2 โครงสร้างของภาษา C.
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
Function. วัตถุประสงค์การเรียนรู้ ให้รู้จักว่าฟังก์ชันคืออะไร ให้รู้จักว่าเราสร้างฟังก์ชันเพื่อจุดประสงค์ใด หรือ เพื่อประโยชน์ใด ให้รู้จักประเภทของฟังก์ชัน.
บทที่ 10 การจัดการไฟล์ อาจารย์ศศลักษณ์ ทองขาว สงวนลิขสิทธิ์ © 2547 มหาวิทยาลัยราช ภัฏสงขลา C Programming C-Programming.
Syntax and Semantics ธนวัฒน์ แซ่เอียบ.
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
บทที่ 5 โปรแกรมย่อย.
รูปแบบของการใช้คำสั่ง for for( ตัวแปร = ค่าเริ่มต้น ; นิพจน์ตรรกะ ; ค่าเพิ่มหรือค่าลด ) { statement(s); } ตัวอย่าง กรณีกำหนดการวนซ้ำเป็นค่าคงที่ For(n=1;n
Subroutine ธนวัฒน์ แซ่ เอียบ. Subrountine – คือส่วนหนึ่งของ code จากโปรแกรมทั้งหมด สำหรับปฏิบัติงานโดยเฉพาะ และเป็นอิสระ จาก code ส่วนอื่นของโปรแกรม ประโยชน์
Chapter 7 ฟังก์ชัน Function.
Chapter 5: Function.
ใบสำเนางานนำเสนอ:

Function ธนวัฒน์ แซ่ เอียบ

What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input ให้กลายเป็น output โดยที่ ผู้ใช้ไม่รู้ว่าภายในฟังก์ ชันเกิดอะไรขึ้นบ้าง ยกเว้นคนที่เป็นเจ้าของฟังก์ชันนั้น Output ที่ได้จากฟังก์ชันสามารถเป็น action และ value – ตัวอย่างฟังก์ชันที่ output เป็น action เช่น printf() – ตัวอย่างฟังก์ชันที่ output เป็น value เช่น getchar()

Defining a function #include void printMessage (void) { printf ("Programming is fun.\n"); } int main (void) { printMessage (); return 0; } Function Definition -occurs ONE time for all -outside other functions Function calls (invocations) -occurs ANY (0-N) times -statement inside (other) functions body

Transfer of control flow printMessage (); return 0; main printf printMesage printf เมื่อพบคำสั่งการเรียกใช้ฟังก์ชัน โปรแกรมจะ เปลี่ยนลำดับไปที่ฟังก์ชัน แล้วปฏิบัติฟังก์ชันนี้ จนจบ หลังจากนั้นจะกลับไปที่ฟังก์ชันผู้เรียก และปฏิบัติงานต่อจากคำสั่งการเรียกใช้ฟังก์ชัน

Function definitions return-type function-name(argument declarations) { declarations and statements } General form of function definition: void printMessage ( void ) { printf ("Programming is fun.\n"); } void printMessage (void) { printf ("Programming is fun.\n"); return; } return-typearguments

Function prototype นำบรรทัดแรกของการนิยามฟังก์ชัน มาเขียนเป็น ต้นแบบของฟังก์ชัน ( สังเกตว่าจะมีข้อมูลที่จำเป็นต้องรู้ เกี่ยวกับฟังก์ชันไว้ทั้งหมด ) void calculateTriangularNumber (int n) Input ของฟังก์ชันประกอบด้วย พารามีเตอร์หรืออาร์กี เมนต์ – ในการนิยามฟังก์ชัน เรียกว่า formal parameters เป็นชื่อสำหรับใช้ภายในฟังก์ชัน – ในคำสั่งเรียกฟังก์ชัน เรียกว่า actual parameters actual parameters สามารถเป็นค่าคงที่ ตัวแปร หรือ expression actual parameters จะถูกหาค่า และนำค่าที่ได้ ส่งต่อให้กับ formal parameter ของฟังก์ชันที่ สัมพันธ์กัน

Example: function declaration #include void printMessage (void) ; int main (void) { printMessage (); return 0; } void printMessage (void) { printf ("Programming is fun.\n"); } Function declaration (prototype) (has to be before the calling function) Function calls Function definition (can be after the calling function)

Examples: function declarations การประกาศฟังก์ชันสามารถระบุเพียงแค่ type ไม่ จำเป็นต้องระบุชื่อก็ได้ int gcd (int u, int v); Or int gcd (int, int); void calculateTriangularNumber (int n); Or void calculateTriangularNumber (int);

Example: arguments // Function to calculate the nth triangular number #include void calculateTriangularNumber ( int n ) { int i, triangularNumber = 0; for ( i = 1; i <= n; ++i ) triangularNumber += i; printf ("Triangular number %i is %i\n", n, triangularNumber); } int main (void) { calculateTriangularNumber (10); calculateTriangularNumber (20); calculateTriangularNumber (50); return 0; }

Arguments and local variables ตัวแปรที่นิยามภายในฟังก์ชันเรียกว่า local variables – ตัวแปรแบบนี้สามารถเข้าถึงได้เฉพาะฟังก์ชันนี้ เท่านั้น ฟังก์ชันอื่นไม่สามารถเข้ามาใช้ได้ – ถ้ามีการกำหนดค่าเริ่มต้นให้กับตัวแปร แต่ละครั้งที่มี การเรียกฟังก์ชันจะกำหนดค่าเริ่มต้นนี้ให้กับตัวแปร ทุกครั้ง Formal parameters เหมือนกับ local variables Scope คือพื้นที่ที่สามารถเข้าถึงตัวแปรได้ –Scope ของ local variables and formal parameters อยู่ภายในฟังก์ชันเท่านั้น

exercise จากตัวอย่างก่อนหน้านี้ ภายในฟังก์ชัน calculateTriangularNumber (10); บรรทัดสุดท้าย ค่า ของ n, I, triangularNumber มีค่าเท่ากับเท่าไร จากตัวอย่างก่อนหน้านี้ ภายในฟังก์ชัน calculateTriangularNumber (20); บรรทัดสุดท้าย ค่า ของ n, I, triangularNumber มีค่าเท่ากับเท่าไร จากตัวอย่างก่อนหน้านี้ ภายในฟังก์ชัน calculateTriangularNumber (50); บรรทัดสุดท้าย ค่า ของ n, I, triangularNumber มีค่าเท่ากับเท่าไร

Example: arguments #include void gcd (int u, int v) { int temp; printf ("The gcd of %i and %i is ", u, v); while ( v != 0 ) { temp = u % v; u = v; v = temp; } printf ("%i\n", u); } int main (void) { gcd (150, 35); gcd (1026, 405); gcd (83, 240); return 0; } ถ้าต้องมี parameter มากกว่า 1 ตัวต้อง ประกาศ type แต่ละ ตัวให้ชัดเจน

Example: arguments are passed by copying values ! #include void gcd (int u, int v) { int temp; printf ("The gcd of %i and %i is ", u, v); while ( v != 0 ) { temp = u % v; u = v; v = temp; } printf ("%i\n", u); } int main (void) { int x=10,y=15; gcd (x, y); printf(“x=%i y=%i \n”,x,y); return 0; } x และ y ค่าคง เดิม ไม่มีการ เปลี่ยนแปลง u และ v สามารถ ถูกกำหนดค่า ใหม่ในฟังก์ชันได้

Example: arguments are passed by copying values ! Ex จงแสดงสิ่งที่พิมพ์ออกทางจอภาพ #include void multiplyBy2 (float x) { printf(“parameter at start: %.2f, at %p \n”,x, &x); x*=2; printf(“parameter at end: %.2f, at %p \n”,x, &x); } int main (void) { float y = 7; printf (“y before call: %.2f, at %p \n", y, &y); multiplyBy2 (y); printf (“y after call: %.2f, at %p \n", y, &y); return 0; }

Example: scope of local variables Ex จงแสดงสิ่งที่พิมพ์ออกทางจอภาพ #include void f1 (float x) { int n=6; printf(“%f \n”, x+n); } int f2(void) { float n=10; printf(“%f \n”,n); } int main (void) { int n=5; f1(3); f2(); return 0; }

Returning function results ฟังก์ชันภาษา C สามารถส่งค่ากลับได้ เช่น return expression ค่าที่ได้จาก expression จะส่งกลับไปให้ฟังก์ชัน ถ้า type ของ expression ไม่ตรงกับ return type ตาม การประกาศฟังก์ชัน ภาษา C จะเปลี่ยน type ตามที่ได้ ประกาศไว้ให้ รูปแบบง่ายๆของ return คือ return; การปฏิบัติคำสั่ง return statement จะทำให้โปรแกรม กลับไปฟังก์ชันผู้เรียกทันที

Example: function result จงเขียนฟังก์ชันหาค่าสูงที่สุดของพารามิเตอร์ #include int max (int u, int v) { … } int main (void) { int result; result = max (150, 35); printf ("%i\n", result); result = max (1026, 405); printf ("%i\n", result); printf ("%i\n", gcd (83, 240)); return 0; }

Parameter are passed by reference ถ้าภายในฟังก์ชันเปลี่ยนแปลงค่าของพารามิเตอร์แล้ว จะส่งผลให้พารามิเตอร์ที่ส่งเข้ามาถูกเปลี่ยนแปลงค่า ไปด้วย ใช้ type แบบ pointer void increment(int *n){ *n=*n+1; } void main(){ int a=2; increment(…); }

Passing arrays as parameters A whole array can be one parameter in a function In the function declaration, you can then omit the specification of the number of elements contained in the formal parameter array. –The C compiler actually ignores this part of the declaration anyway; all the compiler is concerned with is the fact that an array is expected as an argument to the function and not how many elements are in it. Example: a function that returns the minimum value from an array given as parameter –int minimum (int values[10]); We must modify the function definition if a different array size is needed ! –int minimum (int values[]); Syntactically OK, but how will the function know the actual size of the array ?! –int minimum (int values[], int numberOfElements);

Example: Passing arrays as parameters // Function to find the minimum value in an array #include int minimum (int values[10]) { int minValue, i; minValue = values[0]; for ( i = 1; i < 10; ++i ) if ( values[i] < minValue ) minValue = values[i]; return minValue; } int main (void) { int scores[10], i, minScore; printf ("Enter 10 scores\n"); for ( i = 0; i < 10; ++i ) scanf ("%i", &scores[i]); minScore = minimum (scores); printf ("\nMinimum score is %i\n", minScore); return 0; }

Example: No size specified for formal parameter array // Function to find the minimum value in an array #include int minimum (int values[], int numberOfElements) { int minValue, i; minValue = values[0]; for ( i = 1; i < numberOfElements; ++i ) if ( values[i] < minValue ) minValue = values[i]; return minValue; } int main (void) { int array1[5] = { 157, -28, -37, 26, 10 }; int array2[7] = { 12, 45, 1, 10, 5, 3, 22 }; printf ("array1 minimum: %i\n", minimum (array1, 5)); printf ("array2 minimum: %i\n", minimum (array2, 7)); return 0; }

Array parameters are passed by reference ! If a function changes the value of an array element, that change is made to the original array that was passed to the function. This change remains in effect even after the function has completed execution and has returned to the calling routine. Parameters of non-array type: passed by copying values Parameters of array type: passed by reference –the entire contents of the array is not copied into the formal parameter array. –the function gets passed information describing where in the computer’s memory the original array is located. –Any changes made to the formal parameter array by the function are actually made to the original array passed to the function, and not to a copy of the array.

Example: Array parameters are passed by reference ! #include void multiplyBy2 (float array[], int n) { int i; for ( i = 0; i < n; ++i ) array[i] *= 2; } int main (void) { float floatVals[4] = { 1.2f, -3.7f, 6.2f, 8.55f }; int i; multiplyBy2 (floatVals, 4); for ( i = 0; i < 4; ++i ) printf ("%.2f ", floatVals[i]); printf ("\n"); return 0; }

ที่มา conf.dr.ing. Ioana Sora : University of Timisoara, Romania