ฟังก์ชั่น function -...

27
อ.พิศิษฐ์ นาคใจ ฟังก์ช่น Function

Upload: others

Post on 28-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

อ.พิศษิฐ์ นาคใจ

ฟังก์ชั่นFunction

Page 2: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

Function

• ฟังก์ชัน คือ ชดุของการท างาน ที่ถูกเขียนขึ้นให้โปรแกรมเมอร์สามารถเรียกใช้ได้โดยง่าย เป็นการเขียนค าสั่งรวมกันไว้เป็นกลุ่มของค าสั่งเพื่อท างานให้ส าเร็จ

ฟังก์ชัน คือ ชดุของการท างาน

ฟังก์ชัน สามารถถูกเรียกใช้งานได้

Page 3: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

Function

• ปัญหาที่เกิดจากการพัฒนาโปรแกรมที่ซับซ้อนโปรแกรมเมอร์ไม่สามารถทราบขั้นตอนการท างานของคอมพิวเตอร์ทั้งหมดได้ เช่น

ขั้นตอนการน าข้อความไปปรากฏบนหน้าจอ

โปรแกรมมีการท างานที่ซับซ้อน และการท างานซับซ้อน มีการค านวณทางคณิตศาสตร์ เช่น การหาค่า SIN การหาผลลัพธ์ทางวิทยาศาสตร์ การวิเคราะหข์้อมูลขนาดใหญ่เป็นต้น

Page 4: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

• วิธีการแก้ไขท าการให้โปรแกรมเมอร์ที่มีความรู้เกี่ยวกับขั้นตอนการท างานเหล่านั้น

เขียนชุดค าสั่งของกระบวนการต่างๆ ขึ้นมา แล้วแจกจ่ายให้โปรแกรมเมอร์อื่นๆ ได้ใช้งาน

โปรแกรมเมอรท์ี่ต้องการใช้งาน กระบวนการเหล่านั้น สามารถเรียกใช้ฟังก์ชั่นโดยทราบเพียงวธิีการใช้งาน และ ผลลัพธท์ี่เกิดขึ้นหลังจากเรียกใช้งานฟังก์ชันเท่านั้น

เช่น โปรแกรมเมอรท์ี่ไม่ทราบวา่ท าอย่างไรตวัอักษรจึงจะปรากฏบนหน้าจอ สามารถใช้ค าสัง่ printf ได้เลย โดยโปรแกรมเมอร์จะทราบเพียงแค่ การเรียกprintf จะท าให้มตีัวอักษรปรากฏบนหน้าจอได้เท่านั้น

Page 5: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

• ข้อดีของฟังก์ชันท าให้โปรแกรมเมอร์สามารถพัฒนาโปรแกรมได้โดยง่าย โดยโปรแกรมเมอร์ไม่

จ าเป็นต้องทราบว่าการท างานของฟังก์ชันท างานอย่างไรทราบเพียงผลลัพธ์ของการท างานเท่านั้น

โปรแกรมเมอรส์ามารถเขียนโปรแกรมให้มีการท างานที่ซับซ้อนได้ โดยไม่จ าเป็นต้องเขียนโปรแกรมส่วนที่ซับซ้อนนั้นหลายๆ ครั้ง

โปรแกรมเมอรส์ามารถออกแบบฟังก์ชันได้ตามความต้องการของโปรแกรมเมอร์

Page 6: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ประเภทของ ฟงัก์ชั่น

ฟังก์ชันแบ่งออกเป็น 2 ประเภท

1. ฟังก์ชันไลบรารมีาตรฐาน (Standard Library function)

2. ฟังก์ชันที่สรา้งขึ้นเอง (User Defined function)

Page 7: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ฟังก์ชันไลบรารีมาตรฐาน

ฟังก์ชันไลบรารมีาตรฐาน (Standard Library Function) เป็นฟังก์ชันที่มี

อยู่แลว้เก็บไว้ใน Library ในการใช้งานต้อง include directives ก่อน

directive คือสารบัญของกลุ่มฟังก์ชัน เช่น stdio.h , conio.h , string.h,

math.h เป็นต้น

การ include directives จะเป็นเหมือนการประกาศให้กับ compilerทราบว่าจะใช้ค าสั่ง ในกลุ่มของ directive นั้นๆ เช่น การใชค้ าสั่ง sin()

ซ่ึงอยู่ใน math.h จะตอ้องมีบรรทัด include math.h เสมอ ดังตัวอยา่าง

Page 8: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ทดลองเขยีน Function sin()

Page 9: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ฟังก์ชันไลบรารีมาตรฐาน

การเรียกใช้ Standard Library Function มีขั้นตอนดังนี้

1. ทราบว่าโปรแกรมที่เขียนต้องการการท างานอะไร

2. การท างานดังกล่าวคือฟังก์ชันช่ืออะไร

3. ทราบ directive ที่เป็นสารบัญของค าสั่ง

4. Include directive นั้นๆ

5. เรียกใช้ฟังกช์ันในโปรแกรม

Page 10: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ฟังก์ชันไลบรารีมาตรฐาน

ฟังก์ชันการค านวณทางคณติศาสตร์

– ไฟล์ header => math.h

ฟังก์ชันส าหรบัอักขระและข้อความ

– ไฟล์ header => string.h

ctype.h

Page 11: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

#include<math.h>

sin(var)cos(var);tan(var);sqrt(var);pow(var1,var2);log(var);log10(var);exp(var);fabs(var);

Page 12: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ตัวอย่างโปรแกรม

#include<stdio.h>#include<math.h> // int main(){float a = 3.14; float b = -123.456;float c = 2.7;int d = -2000;

printf ("%.3f \n", sin(a));printf ("%.3f \n", cos(a));printf ("%.3f \n", tan(a));printf ("%3f \n", sqrt(a));printf ("%.3f \n", pow(a,c));printf ("%.3f \n", log(a));printf ("%.3f \n", log10(a));printf ("%.3f \n", exp(a));printf ("%.3f \n", fabs(b));printf ("%d \n", abs(d));return 0;}

Page 13: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

include<string.h>

strcpy(str1, str2);strcat(dest1, src2);strcmp(dest1, src2);strcmpi(str1, str2);strlen(str);

#include<ctype.h>

tolower(ch);toupper(ch);

Page 14: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ฟังก์ชั่นที่ผู้ใช้งานสร้างขึ้นเอง

เนื่องจาก Standard Library Function ทั้งหมด เป็นฟันก์ชันมาตรฐานที่มีเฉพาะการท างานพื้นฐานต่างๆ เท่านั้น

หากต้องการฟังก์ชันที่มีการท างานเฉพาะอย่าง โปรแกรมเมอร์ต้องเขียนฟังก์ชันขึ้นมาเอง

Page 15: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

• ข้อก าหนดพื้นฐานของ User-defined Function

ต้องมีการประกาศ function prototype ที่ต้นโปรแกรมเสมอ จึงจะเรียกใช้งาน function นั้นๆ ได้ (เป็นการบอก Compiler ว่าเป็นค าสั่งไมใ่ช่ Error)

ต้องมีการเขียนฟังก์ชันตามโครงสร้างที่ได้ประกาศไว้ในfunction prototype เท่านั้น

Page 16: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

โครสร้างการเขียน Function

#include<stdio.h>

type function name(type);

int main()

{

statement-1;

statement-n;

return 0;

}

type function_name(type variable_name)

{

statement-1;

...

statement-n;

return(var);

}

Page 17: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

รูปแบบโครสร้างของฟังกชัน

การประกาศใช้งานฟังชันเป็นดังนี้

type คือ ชนิดข้อมูลที่ Function นั้นๆ ส่งกลับ หากไมม่ีการส่งกลับก าหนดค่านี้เป็น Void

function_name คือ ชื่อของFunction

type-n คือ ชนิดของข้อมูลที่จะส่งใหฟ้ังก์ชัน

type function_name(type-1, type-2,….,type-n)

Page 18: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

รูปแบบของ Function ที่สร้างขึ้นเอง

• รูปแบบของ Function ที่สร้างขึ้นเองมีการส่งและรับค่า หลากหลายรูปแบบดังนี้

• 1. ฟังก์ชันที่ไมม่ีการรับส่งค่า

• 2. ฟังก์ชันทีม่กีารรับค่าแต่ไม่ส่งค่ากลับ

• 3. ฟังก์ชันทีม่ีการรับค่า และมีการส่งค่ากลับ

• 4. ฟังก์ชันที่ไม่มีการรับค่าแต่มีการส่งค่ากลับ

Page 19: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ฟังก์ชันที่ไม่มีการรับส่งคา่

• เป็นฟังก์ชันที่ ไม่ม ีการรับค่าและส่งค่าออกจาก Function

#include<stdio.h>#include<conio.h>void function_name(void);int main(){...function_name(); // call Function...return 0;}

void function_name(){statement-1;statement-2;...statement-n;}

Page 20: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ตัวอย่างโปรแกรม

Page 21: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ฟังก์ชันที่มีการรับคา่แต่ไม่ส่งค่ากลับ

• เป็นฟังก์ชันที่มีการรับค่าเข้ามาในฟังก์ชัน แต่ไมม่ีการส่งค่ากลับออกไปจากฟังก์ชัน

#include<stdio.h>#include<conio.h>void func_name(type);int main(){...func_name(varX); // call Function…return 0;}

void func_name(type varY){statement-1;statement-2;...statement-n;}

Page 22: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ตัวอย่างโปรแกรม

Page 23: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

• เป็นฟังก์ชันที่มีการรับค่าเข้ามาในฟังก์ชัน และมีการส่งค่ากลับออกไปจากฟังก์ชัน

#include<stdio.h>#include<conio.h>type func_name(type);int main(){...var = func_name(varX);... return 0;}

type func_name(type varY){statement-1;statement-2;...statement-n;return(varZ);}

Page 24: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ตัวอย่างโปรแกรม

Page 25: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

• เป็นฟังก์ชันที่ไมม่ีการรับค่าเข้ามาในฟังก์ชัน แต่ไมม่ีการส่งค่ากลับออกไปจากฟังก์ชัน

#include<stdio.h>#include<conio.h>type func_name(void);int main(){...var = func_name();... return 0;}

type func_name(){statement-1;statement-2;...statement-n;return(varZ);}

Page 26: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

ตัวอย่างโปรแกรม

Page 27: ฟังก์ชั่น Function - URUmathcom.uru.ac.th/~beebrain/Slide/4121103A/Function.pdf · 2011-09-25 · ประเภทของ ฟังก์ชั่น ฟังก์ชันแบ่งออกเป็น

สรุป

Function คือชุดของค าสั่ง สร้างเพื่อลดความซับซ้อนในการเขียนโปรแกรม

Function แบ่งเป็น Function มาตรฐาน และ Function ที่สร้างเอง

Function สร้างสร้างเองมี 4 แบบ

1. ฟังก์ชันที่ไมม่ีการรับส่งค่า

2. ฟังก์ชันทีม่ีการรับค่าแต่ไม่ส่งค่ากลับ

3. ฟังก์ชันทีม่ีการรับค่า และมีการส่งค่ากลับ

4. ฟังก์ชันที่ไม่มีการรับค่าแต่มีการส่งค่ากลับ