ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1....

33
ETE183 การเขียนโปรแกรมคอมพิวเตอร์สำหรับ วิศวกรรมไฟฟ้า ผศ.ดร.วชิราพรรณ แก้วประพันธ์ .ชนกชนม์ สังวรโยธิน

Transcript of ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1....

Page 1: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

ETE183การเขียนโปรแกรมคอมพิวเตอร์สำหรับ

วิศวกรรมไฟฟ้า

ผศ.ดร.วชิราพรรณ แกว้ประพนัธ์

อ.ชนกชนม ์สงัวรโยธิน

Page 2: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

บทที่ 7 ฟังก์ชัน

Page 3: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

บทที่ 7

1. กระบวนการทำงานของฟังก์ชัน

2. ประโยชน์ของการใช้ฟังก์ชัน

3. การใช้ฟังก์ชันสำเร็จรูป (Library)

4. การสร้าง Function

5. การใช้ ฟังก์ชัน

Page 4: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

ฟังก์ชั'นที'มีอยูแ่ล้วในภาษาซีเวลาจะเรียกใช้งานก็ต้องทําการ includeไฟล์นามสกลุ .hเชน่ถ้าต้องการใช้ฟังก์ชั'น printfหรือ scanf จะต้อง includeไฟล์ชื'อ stdio.h มาก่อน เป็นต้น

ฟังก์ชนัที'เขียนขึ Kนเองใหมเ่หมือนกบัสร้างภาษาซีขึ Kนเองเพิ'มเตมิจากที'มีอยูแ่ล้ว ซึ'งจะทําให้ลดความซบัซ้อนของโปรแกรมลง

ฟังก์ชัน

Page 5: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

Function2 ชนิด

ฟังก์ชั่นที่มีอยู่ในไลบรารีของภาษาซี

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

Page 6: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

6

ฟังก์ชั่นที่มีอยู่ในไลบรารีของภาษาซี

Page 7: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

คือ ฟังก์ชนัแรกในโปรแกรม เมื'อโปรแกรมเริ'มทํางาน โปรแกรมจะอา่นบรรทดัคําสั'งจากบรรทดัแรกจนถงึบรรทดัที'ประกาศฟังก์ชนัหลกั เพื'อหาคําสั'งในฟังก์ชั'นหลกั (main)แล้วโปรแกรมจะกระทําคําสั'งนั Kนเป็นลาํดบัแรก

เปรียบได้กบัห้องโถง ที'เมื'อทกุคนเดนิเข้าบ้าน จะต้องเข้ามาที'ห้องโถงก่อนทกุครั Kง เพราะประตเูข้าบ้านอยูที่'ห้องโถง ก่อนจะไปห้องอื'น

ฟังก์ชันหลัก

Page 8: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

ฟังก์ชันแรกในโปรแกรมคือ main()

#include<stdio.h>void main(){int x,y,z;x = 100;y=23;z=x+y;printf(“%d”,z);

}

มีการเรียกใชฟั้งกช์นั printf จะเห็นวา่จะตอ้งมีการ include ไฟล ์

stdio.h เขา้มาก่อน

Page 9: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การส่งค่า

คือ การสง่คา่จากฟังก์ชนัหนึ'ง ไปยงัอีกฟังก์ชนัหนึ'งผา่น พารามิเตอร์

การส่งค่ากลับ

คือ การที'ฟังก์ชนักระทําคําสั'งจนเสร็จแล้วต้องการสง่คา่กลบัไปยงัฟังก์ชนัต้นทางที'เรียกใช้มนั (return)พารามเิตอร์

คือการรับคา่จากฟังก์ชนัหนึ'ง มายงัฟังก์ชนัตวัเอง

ศัพท์ที่ควรรู้

Page 10: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

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

1.ฟังก์ชันแบบไม่มีการส่งค่ากลับและไม่มีพารามิเตอร์

2. ฟังก์ชันแบบไม่มีการส่งค่ากลับและมีพารามิเตอร์

3. ฟังก์ชันแบบมีการส่งค่ากลับและไม่มีพารามิเตอร์

4. ฟังก์ชันแบบมีการส่งค่ากลับและมีพารามิเตอร์

Page 11: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

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

รับค่า ไม่รับค่า

ส่งค่ากลับ รับคา่

และ

สง่คา่กลบั

ไมรั่บคา่

และ

สง่คา่กลบั

ไม่ส่งค่ากลับ รับคา่

และ

ไมส่ง่คา่กลบั

ไมรั่บคา่

และ

ไมส่ง่คา่กลบั

Page 12: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การสร้างฟังก์ชัน

1. ประกาศฟังก์ชันที่ต้องการไว้ในส่วนแรกของโปรแกรม (ประกาศก่อน main)

2. เรียกใช้ฟังก์ชันที่ประกาศไว้ในฟังก์ชัน main หรือฟังก์ชันใดๆ

3. กำหนดหรือสร้างรายละเอียดคำสั่งของฟังก์ชันนั้นๆ รวมถึงการส่งค่ากลับ return

Page 13: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การประกาศฟังก์ชัน

การประกาศฟังก์ชั'นนั Kน เป็นสิ'งที'จําเป็นต้องทําเสมอเมื'อจะสร้างฟังก์ชัน่ การประกาศฟังก์ชั'นนั Kนจะประกาศอยูต่รงสว่นบนสดุของโปรแกรม หรือก่อนสว่นการประกาศตวัแปรแบบ Global

ชนิดของข้อมูล

ที;จะส่งค่ากลับ

ชื;อฟังก์ชัน ( รายชื;อพารามเิตอร์ที;จะมี

การบอกชนิดข้อมูล )จบคาํสั;ง

void hello () ;

int num (int num) ;

char name (int num,chara) ;

Page 14: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การเรียกใช้ฟังก์ชัน

การเรียกใช้ฟังก์ชนั จะเป็นคําสั'งที'ใช้เรียกฟังก์ชนัที'เราประกาศขึ Kนมาและสามารถสง่คา่ใดๆไปยงัฟังก์ชนันั Kนได้ แตต้่องขึ Kนอยูก่บัโครงสร้างของฟังก์ชนันั Kนๆด้วย

ชื;อฟังก์ชันที;จะเรียกใช้ ( พารามเิตอร์ ที;จะใช้ส่งค่าไป ) จบคาํสั;งจะมีเมื;อเรียกใช้ตวัเดี;ยวๆ

hello () ;

num (5) ;

name (number,‘B’) ;

Page 15: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การเรียกใช้ฟังก์ชัน

เราสามารถเรียกใช้ฟังก์ชนัในสถานการณ์ใดๆก็ได้ โดยคา่ที'ฟังก์ชนักระทํา จะนําไปแทนท่ีในที'ๆฟังก์ชนันั Kนประกาศเอาไว้ เชน่

printf(“%c”,name(number,’B’));

printf(“Hello”);hello();

a=0;a =num(5)+10;

Page 16: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การสร้างคำสั่งในฟังก์ชัน

เราสามารถสร้างรายละเอียดของฟังก์ชนั โดยภายในจะเก็บคําสั'งเอาไว้ สามารถนําคา่จากพารามิเตอร์ที'รับคา่มา มาใช้ในการคํานวณได้ และยงัสามารถใช้คําสั'ง returnในการสง่คา่กลบัได้

ชนิดของข้อมูลที;

จะส่งค่ากลับ

ชื;อฟังก์ชัน ( รายชื;อพารามเิตอร์ที;จะมีการ

บอกชนิดข้อมูล ){

คําสั'ง

return…..;}

Page 17: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การสร้างคำสั่งในฟังก์ชัน

ยกตวัอยา่งเชน่

voidhello(){

printf(“Hello”);}

int num(int number){

int a;a=number+1;returna;

}

Page 18: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

การสร้างคำสั่งในฟังก์ชัน

ยกตวัอยา่งเชน่

int name(int num,chara){

int x;if(a==‘A’)x=num-1;elseif(a==‘B’)x=num+1;elsex=0;returnx;

}

Page 19: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

จากตวัอย่าง

เราสามารถเอาคําสั'งตา่งๆ ใน main() มาสร้างเป็นฟังก์ชั'นใหมไ่ด้ดงันี K#include<stdio.h>void test( ){

int x,y,z;x = 100;y = 23;z = x+y;printf(“%d”,z);

}

void main( ){

test( );}

เรียกใชฟั้งกช์นั test( ) เพียงตวัเดียวกจ็ะทาํงานเหมือนคาํสัJงทัKงหมดทีJเขียนไวใ้นฟังกช์นั

test () ขา้งบน

int x,y,z;x = 100;y = 23;z = x+y;printf(“%d”,z);

แยกคาํสัJงบางส่วนมาใส่ในฟังกช์นั ชืJอ test ( )

Page 20: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

โปรแกรมเขยีนใหม่จะเป็นดงันี>#include<stdio.h>void test( ){

int x,y,z;x = 100;y = 23;z = x+y;printf(“%d”,z);

}main( ){

test( );}

ส่วนของฟังกช์นั ชืJอวา่ test ( )

เรียกชืJอฟังกช์นั test ( ) เพืJอทาํงานตรงจุดน้ีฟังกช์นัหลกั

Page 21: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

โปรแกรมเขยีนใหม่จะเป็นดงันี>#include<stdio.h>void test( );main( ){

test( );}void test( ){

int x,y,z;x = 100;y = 23;z = x+y;printf(“%d”,z);

}

Page 22: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

โครงสร้างฟังก์ชัน

รับค่า ไม่รับค่า

ส่งค่ากลับ ใช้ int/float/charนําหน้าชื'อ

ฟังก์ชนั

ใช้ returnมีพารามิเตอร์

ใช้ int/float/charนําหน้าชื'อ

ฟังก์ชนั

ใช้ returnไมมี่พารามิเตอร์

ไม่ส่งค่ากลับ ใช้ voidนําหน้า

ชื'อฟังก์ชนั

ไมใ่ช้ returnมีพารามิเตอร์

ใช้ void นําหน้า

ชื'อฟังก์ชนั

ไมใ่ช้ returnไมมี่พารามิเตอร์

Page 23: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

ตัวอย่าง ลองทำโจทย์จากสารพัดตัวอย่าง

Page 24: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

Example

Page 25: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

ตวัอย่าง การใช้ Function#include<stdio.h>voidshowmenu(){

printf(“====MENU====\n\n”);printf(“a)SayHello\n”);printf(“b)SayGoodBye\n”);printf(“Selectaorb:\n”);

}

voidmain(){printf(“Begin\n”);showmenu();printf(“END\n”);

}

Begin==== MENU ====

a) Say Hellob) Say Good ByeSelect a or b :END

2

1

34

5

6789

10

Page 26: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

ตวัอย่างทีA 1 โปรแกรมแสดงฟังก์ชัน

ย่อยเรียกใช้ฟังก์ชัน void main ( )

#include <stdio.h>

void main ( )

{

char ch ;

void sub ( ) ;

printf (“Enter any character , E for

End\n”) ;

ch = getchar ( ) ; scanf(“%c”,&ch);

putchar (ch ) ;

if (ch != ‘E’)

sub( ) ;

}

void sub ( )

{

main( ) ;

}

ฟังก์ชันเรียกตวัเอง (Recursive Functions)

จากตวัอย่างทีA 1 จะเห็นว่าฟังก์ชันสามารถเรียกใช้ซึAงกนัและ

กนัได้ ฟังก์ชันในภาษาซีสามารถเรียกใช้ตวัเองได้ ดงัตวัอย่าง1

ถ้าเขยีนใหม่เป็นตวัอย่าง 2 กจ็ะเป็นฟังก์ชันเรียกตวัเอง

ตวัอย่าง 2 โปรแกรมแสดงฟังก์ชัน main ( ) เรียกตวัเอง

#include <stdio.h>

void main ( )

{

char ch ;

printf (“Enter any character , E for End\n”) ;

putchar(ch) ;

if (ch != ‘E’)

main ( ) ;

}

Page 27: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

Factorialofn=n(n-1)(n-2)……1.

#include<stdio.h>

#include<conio.h>

int factorial(int);

int factorial (int i)

{

int f;

if(i==1)

return 1;

else

f = i* factorial (i-1);

return f;

}

main()

{

int x;

clrscr();

printf("Enter any number to calculate factorial :");

scanf("%d",&x);

printf("\nFactorial : %d", factorial (x));

getch();

}

Page 28: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

#include <stdio.h>long fibonacci( long n );main()

{long result;long number;printf( "Enter an integer: " );scanf( "%ld", &number );result = fibonacci( number );printf( "Fibonacci( %ld ) = %ld\n", number, result );return 0;

}

long fibonacci( long n ){

if ( n == 0 || n == 1 ) {return n;

}else {return fibonacci( n - 1 ) + fibonacci( n - 2 );

}

}

Enter an integer: 3Fibonacci( 3 ) = 2

Fibonacci.

Page 29: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

คำเตือน

ตัวแปรใดๆก็ตามที่ประกาศไว้ข้างนอก Function จะสามารถใช้ตัวแปรนั้นได้กับทุก Function

ตัวแปรใดๆก็ตามที่ประกาศไว้ข้างใน Function จะสามารถใช้ได้ภายใน Function นั้นเท่านั้น

การส่งค่าตัวแปรไปยังอีก function เราเรียกว่า “ตัวแปรพารามิเตอร์”

Page 30: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

คำเตือน

Void คือ การตั้งค่าให้ function นั้นๆไม่ส่งค่ากลับไปยัง function ต้นทางที่เรียกใช้ใน Function นั้นจะไม่มีการใช้คำสั่ง return

Page 31: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

Research

ค้นหาLibrary Function

สำหรับการคำนวณ (math.h)คืออะไร ใช้อย่างไร

หาค่า Squawroot อย่างไรFunction เลขยกกำลังคำสั่ง clrscr; ใน conio.hปล.ใช้ตอบคำถามใน Quiz

Page 32: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

Quiz Quiz บททีA 7 – 8.1ก่อนเข้าเรียนคาบหน้า

Page 33: ETE183 บทที่ 7ete.tido.tech/ete-programming/student/tutorials/... · บทที่7 1. กระบวนการทำงานของฟังก์ชัน 2.ประโยชน์ของการใช้ฟังก์ชัน

Homework

Learning Reportส่งภายใน

วนัอาทติย์ทีA 10 กนัยายน 2560เวลา 23.59 น.