Chapter 5: Function.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
INTRODUCTION TO C LANGUAGE
Advertisements

ครั้งที่ 8 Function.
ข้อมูลชนิดโครงสร้าง (Structure Data)
ฟังก์ชัน (Function).
Structure Programming
Structure Programming
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
LAB # 4.
คำสั่งเพื่อการกำหนดเงื่อนไข
ตัวชี้ P O I N T E R Created By Tasanawan Soonklang
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
โปรแกรมย่อย : Pascal Procedure
ฟังก์ชัน (Function).
Lecture no. 10 Files System
บทที่ 6 ตัวแปรอาร์เรย์ (Array of Variable)
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
การเขียนโปรแกรมภาษาซี
ตัวแปรกับชนิดของข้อมูล
การสร้างฟังก์ชั่นเพื่อพัฒนาโปรแกรม Interactive C
บทที่ 5 ฟังก์ชันกับอาร์เรย์ Function & Array
C language W.lilakiatsakun.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Call by reference.
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร
TECH30201 Object-Oriented Programming
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
รูปแบบของการใช้คำสั่ง for for( ตัวแปร = ค่าเริ่มต้น ; นิพจน์ตรรกะ ; ค่าเพิ่มหรือค่าลด ) { statement(s); } ตัวอย่าง กรณีกำหนดการวนซ้ำเป็นค่าคงที่ For(n=1;n
หลักการโปรแกรม 1 Lecture 14: โปรแกรมย่อย ( การส่งพารามิเตอร์ แบบ pass by reference)
ฟังก์ชันในภาษา C. ฟังก์ชัน (Functions) 2 การออกแบบโปรแกรมในภาษาซี จะอยู่บนพื้นฐานของการออกแบบ โมดูล (Module Design) โดยการแบ่ง โปรแกรมออกเป็นงานย่อย ๆ.
โครงสร้างภาษาซี C ++ structure
บทที่ 5 ฟังก์ชัน Function
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Computer Programming I โดย อ.วิมลศรี เกตุโสภณ สาขาวิชาระบบสารสนเทศ
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
โครงสร้างโปรแกรมภาษา C
โปรแกรม ภาษา C ภาษาซี (C Language) เป็นภาษาหนึ่งสำหรับเขียนโปรแกรมคอมพิวเตอร์   พัฒนาขึ้นโดยนายเดนนิส  ริทชี่ (Dennis Ritche)  ในปี ค.ศ. 1972  เพื่อสร้างระบบปฏิบัติการยูนิกซ์
การเขียนโปรแกรมด้วยภาษา C
บทที่ 4 การรับและแสดงผลข้อมูล
C Programming By Mr. Sanae Sukprung.
โปรแกรมย่อย อาจารย์สมเกียรติ ช่อเหมือน
ครูวีรธรรม เทศประสิทธิ์ แผนกวิชาคอมพิวเตอร์ธุรกิจ
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Chapter 9 ตัวชี้ pointer.
INC 161 , CPE 100 Computer Programming
ใช้สำหรับ Turbo C++ Version 3.0
ภาษา C เบื้องต้น.
การควบคุมการทำงานด้วยภาษา C
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
โครงสร้างโปรแกรมภาษา C
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 4 ฟังก์ชัน Function
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 4 ตัวแปร (Variables)
ตัวแปรกับชนิดของข้อมูล
หลักการเขียนโปรแกรมภาษาซี
introduction to Computer Programming
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
บทที่ 2 แนะนำภาษา C Basic C Program
Chapter 3 Basic Input & Output.
Chapter 2 ตัวดำเนินการ และนิพจน์.
Chapter 7 ฟังก์ชัน Function.
บทที่ 3 โครงสร้างควบคุม Control Structures
โปรแกรมย่อย (Sub Program)
บทที่ 3 โครงสร้างภาษาซีเบื้องต้น
ตัวแปรชนิดพอยเตอร์ (Pointer)
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
Introduction to Computer Programming
ใบสำเนางานนำเสนอ:

Chapter 5: Function

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

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

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

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

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

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

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

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

ตัวอย่างการใช้ 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; }

/. 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

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

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

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

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

ตัวอย่าง 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

การส่งค่าของตัวแปรไปยังฟังก์ชันโดยตรง (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”; }

การส่งค่าของตัวแปรไปยังฟังก์ชันโดยตรง (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--;

การส่งค่าของตัวแปรไปยังฟังก์ชันโดยตรง (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); }

ตัวอย่าง แสดงว่าในสองฟังก์ชันใดๆ ชื่อตัวแปรเหมือนกันแต่ถือว่าเป็นคนละตัวกัน 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; }

การส่งค่าไปยังฟังก์ชันโดยส่งเป็น 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; }

การส่งค่าไปยังฟังก์ชันด้วยตัวแปรชุด (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]); }

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

ฟังก์ชันที่มีการส่งค่ากลับ เป็นการเขียนฟังก์ชันในลักษณะที่มีการส่งค่ากลับไปยังฟังก์ชันที่เรียกใช้ ในฟังก์ชันที่ถูกเรียกใช้จะต้องมีคำสั่ง 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)) }

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

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

โปรแกรมตัวอย่าง /* 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;

โปรแกรมตัวอย่าง /* 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

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

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

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