ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
ฟังก์ชั่น function
2
ฟังก์ชั่น เปรียบเสมือนการคำนวณทางคณิตศาสตร์
คำสั่งชุดหนึ่งที่ทำงานเหมือนโปรแกรมหนึ่ง มีชื่อเรียก ส่วนอื่นๆ ของโปรแกรม สามารถเรียกใช้คำสั่งชุดนี้ได้
3
ฟังก์ชั่นในภาษาซี ภาษาซีเป็นการเขียนโปรแกรมแบบฟังชั่น
แบ่งการทำงานของโปรแกรมเป็นส่วนๆ ประกอบด้วยฟังก์ชั่นหลัก คือ main() ซึ่งฟังก์ชั่นแรกที่เริ่มทำงาน Main program Function1 Function2 Functionn . . .
4
ประเภทของฟังก์ชั่น ภาษาซีแบ่งฟังก์ชั่นเป็น 2 ประเภท
ฟังก์ชั่นมาตรฐาน (Standard Libraries Function) ฟังก์ชันที่มีอยู่แล้วในภาษาซี โดยกำหนดไว้ในไลบรารี ฟังก์ชั่นที่ผู้ใช้กำหนด (User-Define Function) ฟังก์ชันที่ผู้ใช้เขียนขึ้นเองใหม่เหมือนกับสร้างฟังก์ชั่นเพิ่มเติมจากที่มีอยู่แล้ว
5
ฟังก์ชั่นมาตรฐาน เรียกใช้โดยการ include ไฟล์นามสกุล .h ที่เก็บฟังก์ชั่น นั้นไว้ เช่น ถ้าต้องการใช้ฟังก์ชั่น printf หรือ scanf จะต้อง include ไฟล์ชื่อ stdio.h มาก่อน ถ้าเราต้องการใช้ฟังก์ชันทางคณิตศาสตร์ เช่น sqrt หรือ pow ต้อง include ไฟล์ชื่อ math.h คำแนะนำ: ลองเปิดไฟล์ .h ใน c:\tc\include
6
ฟังก์ชั่นมาตรฐาน #include<stdio.h> Square root 4 = 2.000000
#include<math.h> void main() { printf(“square root 4 =”); printf(“%f\n”, sqrt(4)); printf(“5 power 3 =”); printf(“%f”, pow(5,3)); } Square root 4 = 5 power 3 =
7
ฟังก์ชั่นที่ผู้ใช้กำหนด
ฟังก์ชันที่เขียนขึ้นเองใหม่เพื่อให้ทำงานตามต้องการ นิยมเขียนเพื่อทำงานอย่างใดอย่างหนึ่ง สามารถเรียกใช้ฟังก์ชันนี้หลายๆ ที่ได้ ประโยชน์ ทำให้ทั้งโปรแกรมมีโครงสร้างที่ดี กะทัดรัด เข้าใจง่าย ง่ายต่อการทดสอบและแก้ไขโปรแกรม นำกลับมาใช้ง่ายและรวดเร็ว
8
ฟังก์ชั่นที่ผู้ใช้กำหนด
#include<stdio.h> void showmenu() { printf(“==== MENU ====\n\n”); printf(“a) Say Hello\n”); printf(“b) Say Good Bye\n”); printf(“Select a or b : \n”); } void main() printf(“Begin\n”); showmenu(); printf(“END\n”); Begin ==== MENU ==== a) Say Hello b) Say Good Bye Select a or b : END
9
รูปแบบของฟังก์ชั่นกำหนดเอง
ประกอบด้วย 2 ส่วน ส่วนหัว (Function header) type function_name (type arg1,type arg2,…) ส่วนตัว (Function body) { variable declaration; statements; [ return ] }
10
รูปแบบของฟังก์ชั่นกำหนดเอง
Return = ส่งค่ากลับ Parameters = รับค่าเข้า type function_name (type arg1,type arg2,…) { [ variable declaration; ] statements; [ return value; ] } ส่งค่ากลับ
11
ประเภทของฟังก์ชั่นกำหนดเอง
แบบที่ 1 ไม่มีการรับค่าเข้า ไม่มีการส่งค่ากลับ แบบที่ 2 ไม่มีการรับค่าเข้า มีการส่งค่ากลับ แบบที่ 3 มีการรับค่าเข้า ไม่มีการส่งค่ากลับ แบบที่ 4 มีการรับค่าเข้า มีการส่งค่ากลับ
12
แบบที่ 1: ไม่มีการรับค่าเข้า ไม่มีการส่งค่ากลับ
void function_name (void) { statements; }
13
แบบที่ 2: ไม่มีการรับค่าเข้า มีการส่งค่ากลับ
type function_name (void) { statements; return value; }
14
แบบที่ 3: มีการรับค่าเข้า ไม่มีการส่งค่ากลับ
void function_name (type arg1, type arg2,… ) { statements; }
15
แบบที่ 4: มีการรับค่าเข้า มีการส่งค่ากลับ
type function_name (type arg1, type arg2,… ) { statements; return value; }
16
การประกาศฟังก์ชั่น (function prototype)
ฟังก์ชั่นที่กำหนดเอง ต้องมีการ ประกาศฟังก์ชั่นให้รู้จักก่อน จึง สามารถเรียกใช้งานได้ ทำได้โดย การ copy บรรทัดหัวฟังก์ชัน ขึ้นมาเขียนเอาไว้เหนือ main (อย่าลืมใส่เครื่องหมาย ; ด้วย) * ถ้าสร้างฟังก์ชั่นก่อน main ไม่จำเป็นต้องประกาศ
17
การประกาศฟังก์ชั่น (function prototype)
สำหรับฟังก์ชั่นที่มีการรับค่าเข้า ไม่จำเป็นต้องระบุชื่อargument ก็ได้ เช่น int test_function(int y); หรือ int test_function(int); void test_function(int y); หรือ void test_function(int);
18
ขอบเขตตัวแปร ตัวแปรในภาษาซีแบ่งเป็น 2 ชนิดตามขอบเขตการมองเห็น
Global variable นำไปใช้ได้ในทุกๆ ฟังก์ชันของโปรแกรมนั้น โดยต้องประกาศตัวแปรไว้เหนือฟังก์ชัน main() Local variable ใช้ได้เฉพาะในฟังก์ชันที่ประกาศตัวแปรนี้เท่านั้น โดยการประกาศจะอยู่ภายในของแต่ละฟังก์ชัน
19
Global variable
20
Local variable
21
#include <stdio.h>
int function_add (int x, int y) { printf("x = %d , y = %d \n",x,y); return x+y; } main () int value1 =1, value2 = 2; printf("result : x + y = %d\n“, function_add(value1,value2) );
22
#include <stdio.h>
void oddeven (void); void negpos(void); int num; void main (void) { printf("enter number :"); scanf("%d",&num); oddeven(); negpos(); getchar(); } void oddeven (void) { if (num % 2 ) printf("Number is odd\n"); else printf("Number is even\n"); } void negpos( void) if (num < 0) printf("number is negative\n"); printf("number is positiven\");
23
#include <stdio.h>
#define PI float area (float); void main (void) { float radius; printf("Enter radius of sphere:"); scanf("%f",&radius); printf("area of sphere is %.2f",area(radius)); } float area (float rad) return 4*PI*rad*rad;
24
#include <stdio.h> float power3(float); void main (void) {
int i; for (i=1; i <=10; i++) printf(“%d\t%.0f\n", i, power3(i) ); } float power3(float x) return x* x *x; 1 8 27 64 125 216 343 512 729 1000
25
สร้างฟังก์ชั่นทำไม? Input and prepare data Display data in graph
#include<stdio.h> main() { int i; int scores[ARRAYMAX]; float percents[ARRAYMAX]; int g_driver, g_mode; int i, left, top, wide, bottom, deep; for (i = 0; i < ARRAYMAX; i++) printf("\nEnter score between 0 and %d: ", MAX); scanf("%d", &scores[i]); } percents[i] = ((float) scores[i]) / MAX; printf("\n\n\n\tSCORE\tPERCENT"); printf("\n%d. \t%d\t%3.0f", i + 1, scores[i], (percents[i] * 100)); getch(); detectgraph(&g_driver, &g_mode); initgraph(&g_driver, &g_mode, "..\\bgi"); wide = (int)((getmaxx()) / ((ARRAYMAX * 2 ) + 1)); bottom = getmaxy() - 20; deep = (int) (wide / 4); left = wide; top = (bottom) - ((int)(p[i] * 300)); bar3d(left, top, (left + wide), bottom, deep, 1); left += (wide * 2); Input and prepare data Display data in graph Draw graph
26
สร้างฟังก์ชั่นทำไม? แบ่งโค้ดออกเป็น 3 ฟังก์ชั่น ฟังก์ชั่น input_data()
ฟังก์ชั่น display_data() ฟังก์ชั่น draw_graph() Main program Input data Display data Draw graph
27
สร้างฟังก์ชั่นทำไม? Main function Input and prepare data
#include<stdio.h> void input_data(float); void display_data(float); void make_graph(float); main() { Int I, scores[ARRAYMAX]; float percents[ARRAYMAX]; input_data(percents); display_data(percents); make_graph(percents); } void input_data(float p[]) …. void display_data(float p[]) void make_graph(float p[]) Main function Input and prepare data Display data in graph Draw graph
28
สร้างฟังก์ชั่นทำไม? Main function Input and prepare data
#include<stdio.h> void input_data(float); void display_data(float); void make_graph(float); main() { Int I, scores[ARRAYMAX]; float percents[ARRAYMAX]; input_data(percents); display_data(percents); make_graph(percents); } void input_data(float p[]) …. void display_data(float p[]) void make_graph(float p[]) Main function Input and prepare data Display data in graph Draw graph
29
โจทย์ 1 โจทย์ 2 เขียนโปรแกรมในการคำนวณหาพื้นที่
สามเหลี่ยม สี่เหลี่ยมและวงกลม โดยให้สร้างเป็นฟังก์ชั่นดังนี้ showmenu(); tri_area(float, float); rec_area(float, float); cir_area(float); เขียนฟังก์ชั่นและเรียกใช้ดังนี้ Min หาค่าต่ำสุด โดยรับค่าเข้า 3 ค่าเป็นจำนวนเต็ม และคืนค่าต่ำสุด Max หาค่าสุดสุด โดยรับค่าเข้า 3 ค่าเป็นจำนวนเต็ม และคืนค่าต่ำสุด ตัวอย่างการเรียกใช้ a = min(34,23,42); b = max(3,2,4);
30
โจทย์ 1 โจทย์ 2 เขียนฟังก์ชั่นในการพิมพ์กราฟแนวนอน
โดยสร้างฟังก์ชั่นดังนี้ ฟังก์ชั่นชื่อ star ไม่มีการส่งค่ากลับ มีการรับค่าเข้าเป็นเลขจำนวนเต็ม ทำการพิมพ์เครื่องหมาย * เท่ากับจำนวนเลขที่รับค่าเข้ามา แล้วขึ้นบรรทัดใหม่ กำหนดตัวแปรชนิด array ในการ เก็บอุณหภูมิ 5 วัน รับค่าอุณหภูมิเข้าจากผู้ใช้ พิมพ์อุณหภูมิทั้ง 5 วัน และพิมพ์เครื่องหมาย * เท่ากับค่าอุณหภูมิแต่ละวัน (โดยเรียกใช้ฟังก์ชั่น star) Enter temp day 1: 9 Enter temp day 2: 11 Enter temp day 3: 8 Enter temp day 4: 5 Enter temp day 5: 15 Day 1: ********* Day 2: 11 *********** Day 3: ******** Day 4: ***** Day 5: 15 *************** main() { star(9); star(2); } ********* ** โจทย์ 1 โจทย์ 2
31
References คู่มือการเขียนโปรแกรมภาษาซี โดย รศ. ธีรวัฒน์ ประกอบผล
คู่มือการเขียนโปรแกรมภาษาซี โดย รศ. ธีรวัฒน์ ประกอบผล เอกสารประกอบการสอนวิชา โครงสร้างข้อมูลและอัลกอริทึม โดย อ.วิญญู นิรนาทล้ำพงศ์
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.