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

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

Chapter 5: Function.

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


งานนำเสนอเรื่อง: "Chapter 5: Function."— ใบสำเนางานนำเสนอ:

1 Chapter 5: Function

2 โปรแกรมคอมพิวเตอร์ส่วนใหญ่ที่ใช้งานจริง มักจะเป็นโปรแกรมขนาดใหญ่ เกินกว่าที่จะเขียนรวมๆ กันในฟังก์ชันหลัก main() แบ่งการทำงานออกเป็นส่วนเล็กๆ หรือ Module เมื่อสร้างและทดสอบโปรแกรมย่อยๆนั้นแล้ว ก็ประกอบขึ้นมาเป็นโปรแกรมใหญ่ที่สมบูรณ์ในขั้นตอนสุดท้าย การสร้างโปรแกรมที่มีขนาดใหญ่จากโปรแกรมย่อยๆ

3 โปรแกรมย่อย (Program Module) ในภาษาซี
ฟังก์ชันมาตรฐานในภาษาซี (C Standard Function) ฟังก์ชันที่สร้างขึ้นใหม่โดยโปรแกรมเมอร์ (Programmer-Defined Function) FUNCTIONS IN C C STANDARD LIBRARY PROGRAMMER DEFINED FUNCTION

4 ฟังก์ชันมาตรฐานในภาษาซี (C Standard Function)
ฟังก์ชันมาตรฐานในภาษาซี ซึ่งจะอยู่ในไลบรารีภาษาซีมาตรฐาน (C Standard Library) ไลบรารีภาษาซีมาตรฐานประกอบด้วยฟังก์ชันต่างๆมากมาย เช่น การคำนวณทางคณิตศาสตร์ การจัดการกับข้อความ การจัดการกับ input/output และอื่นๆ โดยการใช้งานฟังก์ชันประเภทนี้จะต้องรวม (include) ไลบรารีที่ต้องการใช้งาน เช่น include <stdio.h> ฟังก์ชันที่อยู่ใน library stdio.h ได้แก่ printf(), scanf()

5 ฟังก์ชันที่สร้างขึ้นใหม่โดยโปรแกรมเมอร์ (Programmer-Defined Function)
โปรแกรมเมอร์สามารถเขียนฟังก์ชันเพื่อนิยามการทำงานที่จะเรียกใช้ในส่วนต่างๆของโปรแกรม เช่น ฟังก์ชัน A ได้ถูกออกแบบสำหรับการรับค่าข้อมูล ฟังก์ชัน B ได้ถูกสร้างขึ้นสำหรับการคำนวณพื้นที่ ฟังก์ชัน C ได้ถูกสร้างขึ้นสำหรับแสดงผล คล้ายการประกอบตัวต่อ นำส่วนย่อยๆ มาประกอบกัน ฟังก์ชันนั้นจะถูกเรียกใช้โดย main() หรือ ฟังก์ชันอื่นก็ได้

6 ฟังก์ชันจะถูกเรียกให้ทำงานก็ต่อเมื่อ มีการเรียกใช้ฟังก์ชัน (call function)
การเรียกใช้ฟังก์ชันจะต้องระบุชื่อของฟังก์ชัน ข้อมูลที่จะให้กับฟังก์ชันนั้น (argument)

7 ฟังก์ชัน Worker ที่ถูกเรียกใช้งาน ยังสามารถเรียกใช้หรือเป็นผู้สั่งงานฟังก์ชันอื่นๆต่อไปได้อีกด้วย
ฟังก์ชัน main ทำงานร่วมกับฟังก์ชัน Worker ต่างๆในรูปแบบของลำดับชั้น (Hierarchical) สังเกตได้ว่า worker1 เป็น Boss function ของ worker4 และ worker5 ในขณะที่ฟังก์ชัน main เป็น Boss function ของ worker1, worker2 และ worker5 main worker1 worker3 worker2 worker4 worker5

8 รูปแบบของการใช้ function
function prototype ของ f1 function prototype ของ f2 main() { statement; f1(); f2(); } f1 () { : statement; return; } f2 () { : statement; return; }

9 รูปแบบของฟังก์ชัน type function-name (type arg1, type arg2…type argn)
{ local variable; : statement; return; }

10 ตัวอย่างการใช้ function
/* 1st sample program: calling standard library function */ #include <stdio.h> main() { int x; for (x = 1; x <= 10; x++) printf(“%d “, x * x); printf(“\n”); return 0; }

11 /. 2nd sample program: A programmer-defined square function
/* 2nd sample program: A programmer-defined square function */ #include <stdio.h> int square(int); /* function prototype */ main() { int x; for (x = 1; x <= 10; x++) printf(“%d “, square(x)); printf(“\n”); return 0; } /* Function definition */ int square(int y) { int ans; ans = y*y; return ans; ประกาศ prototype ก่อนการเรียกใช้ function

12 ฟังก์ชัน square รับค่าสำเนาของ x ไว้ในพารามิเตอร์ (parameter) y
หลังจากนั้นฟังก์ชัน square ก็คำนวณหาค่าของ y * y ผลลัพธ์จะถูกส่งกลับมายังฟังก์ชัน main แล้วทำการแสดงผลใน printf กระบวนการนี้ถูกทำซ้ำ 10 ครั้งโดยใช้โครงสร้างการวนซ้ำแบบ for main( ) x square( ) y COPY ARGUMENTS COPY RETURN-VALUE y * y printf

13 ฟังก์ชันที่ไม่มีการส่งค่ากันระหว่างฟังก์ชัน
ชนิดของฟังก์ชัน ฟังก์ชันที่ไม่มีการส่งค่ากันระหว่างฟังก์ชัน ฟังก์ชันที่มีการส่งค่ากันระหว่างฟังก์ชัน ส่งค่าไป ส่งค่าไป-กลับ

14 ฟังก์ชันที่ไม่มีการส่งค่ากันระหว่างฟังก์ชัน
เป็นฟังก์ชันที่ทำงานอิสระเสร็จสิ้นในตัวเอง ไม่ต้องมีการรับค่าหรือส่งค่ากลับไปยังฟังก์ชันเรียก (calling function) ส่วนมากใช้ในบางส่วนของโปรแกรมที่มีการเขียนซ้ำกันบ่อยๆ เช่นการตีเส้น

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

16 ตัวอย่าง void markline() Main() { markline(); printf(“Function test /n”); } void markline () { int i, line=15; for (i=0;i<= line;i++) printf(“-”); printf(“/n”; } Function Test

17 การส่งค่าของตัวแปรไปยังฟังก์ชันโดยตรง (call by value)
void markline (int) Main() { markline(15); printf(“Function test”); markline(20); } void markline (int line) { int i; for (i=0;i<= line;i++) printf(“-”); printf(“/n”; }

18 การส่งค่าของตัวแปรไปยังฟังก์ชันโดยตรง (call by value)
ตัวอย่าง void my_print(char ,int) void main() { my_print(‘a’, 5); } void my_print(char ch, int x) while (x > 0) printf(“%c”, ch); x--;

19 การส่งค่าของตัวแปรไปยังฟังก์ชันโดยตรง (call by value)
ตัวอย่าง #include<stdio.h> void maximum(int, int, int); void main() { int a, b, c; printf(“Enter three integer: “); scanf(“%d%d%d”, &a, &b, &c); maximum(a, b, c); } void maximum(int x, int y, int z) { int max = x; if(y > max) max = y; if(z > max) max = z; printf(“Maximum is %d”, max); }

20 ตัวอย่าง แสดงว่าในสองฟังก์ชันใดๆ ชื่อตัวแปรเหมือนกันแต่ถือว่าเป็นคนละตัวกัน
void swap(int, int) void main() { int x, y; x=10; y= 20; printf(“x= %d y=%d \n”,x,y); swap(x,y); } void swap(int x, int y) { int temp; temp = x; x=y; y = temp; }

21 การส่งค่าไปยังฟังก์ชันโดยส่งเป็น address ของตัวแปร (call be reference)
void main() { int x, y; x=10; y= 20; printf(“x= %d y=%d \n”,x,y); swap(&x,&y) } Swap(int *x, int *y) { int temp; temp = *x; *x=*y; *y = temp; }

22 การส่งค่าไปยังฟังก์ชันด้วยตัวแปรชุด (calling Function with Array)
void main() { int t[10], i; for (i=0;i<10;i++) t[i] = i; display (t); } display(int num[10]) { int i; for (i=0;i<10;i++) printf(“ %d ”, num[i]); }

23 แบบฝึกหัดสำหรับการส่งค่าไปยังฟังก์ชัน
เขียนโปรแกรมคำนวณเกรดจากคะแนนสอบ โดยโปรแกรมจะรับค่าคะแนนมาจากผู้ใช้จากฟังก์ชัน main() และจะเรียกใช้ฟังก์ชันคำนวณเกรดโดยส่งค่าคะแนนไปในฟังก์ชัน โดยกำหนดฟังก์ชันคือ ฟังก์ชัน gradeEng() ในการคำนวณเกรดคือ A,B,C,D และ F ฟังก์ชัน gradeThai() ในการคำนวณเกรดคือ 4,3,2,1 และ 0 คะแนนสอบอยู่ในช่วง เกรด A หรือ เกรด 4 คะแนนสอบอยู่ในช่วง เกรด B หรือ เกรด 3 คะแนนสอบอยู่ในช่วง เกรด C หรือ เกรด 2 คะแนนสอบอยู่ในช่วง เกรด D หรือ เกรด 1 คะแนนน้อยกว่า 60 เกรด F หรือ เกรด 0

24 ฟังก์ชันที่มีการส่งค่ากลับ
เป็นการเขียนฟังก์ชันในลักษณะที่มีการส่งค่ากลับไปยังฟังก์ชันที่เรียกใช้ ในฟังก์ชันที่ถูกเรียกใช้จะต้องมีคำสั่ง return เพื่อส่งค่ากลับไปยังฟังก์ชันที่เรียกใช้ int maximum(int x, int y, int z) { int max = x; if(y > max) max = y; if(z > max) max = z; return max; } void main( ) { int a, b, c, ans; printf(“Enter three integer: “); scanf(“%d%d%d”, &a, &b, &c); ans = Maximum(a,b,c) printf(“%d”,ans) printf(“max is %d”, maximum(a,b,c)) }

25 void main() { int x=12, y = 23; printf(“%d” , sum(x,y)); } int sum(int a, int b) { int a,b; return(a+b); }

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

27 โปรแกรมตัวอย่าง /* 7th Sample Program: Local vs Global Variable */ #include<stdio.h> int ans = 0; int inc_one(int); /* function prototype */ void main() { int a = 3; ans = inc_one(a); printf(“Answer is %d\n”, ans); } /* function definition: return x+1 */ int inc_one(int x) int ans; ans = x + 1; return ans;

28 โปรแกรมตัวอย่าง /* 8th Sample Program: Local Variables */
#include<stdio.h> void my_func(); //prototype of my_func void main() { int x=3; printf(“Main: Before call function x=%d\n”, x); my_func(); //call my_func printf(“Main: After call function x=%d\n”, x); } void my_func() int x; x=2; printf(“My_func: x=%d\n”, x); Main: Before call function x=3 My_func: x=2 Main: After call function x=3

29 Main: Before call function x=3 My_func: x=2
โปรแกรมตัวอย่างที่ 5.9 /* 9th Sample Program: Global Variables */ #include<stdio.h> int x; void my_func(); //prototype of my_func void main() { x=3; printf(“Main: Before call function x=%d\n”, x); my_func(); //call my_func printf(“Main: After call function x=%d\n”, x); } void my_func() x=2; printf(“My_func: x=%d\n”, x); Main: Before call function x=3 My_func: x=2 Main: After call function x=2

30 Main: Before call function x=3 My_func: x=2
โปรแกรมตัวอย่างที่ 5.10 /* 10th Sample Program: Local vs. Global Variables */ #include<stdio.h> int x; void my_func(); //prototype of my_func void main() { x=3; printf(“Main: Before call function x=%d\n”, x); my_func(); //call my_func printf(“Main: After call function x=%d\n”, x); } void my_func() x=2; printf(“My_func: x=%d\n”, x); Main: Before call function x=3 My_func: x=2 Main: After call function x=3

31 แบบฝึกหัด เขียนโปรแกรมรับค่าสองค่าจากฟังก์ชัน main() และให้สร้างเมนูและฟังก์ชันในการคำนวณต่อไปนี้ ฟังก์ชัน Add() ในการบวกค่า ฟังก์ชัน Difference() ในการลบค่า ฟังก์ชัน Multiply() ในการคูณ ฟังก์ชัน Division() ในการหาร โดยให้ส่งค่าผลลัพธ์การคำนวณกลับมาแสดงผลที่ฟังก์ชัน main() ตัวอย่างหน้าจอผลลัพธ์


ดาวน์โหลด ppt Chapter 5: Function.

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


Ads by Google