Lecture 7 ฟังก์ชัน To do: Hand back assignments

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

Computer Language.
INTRODUCTION TO C LANGUAGE
Introduction to C Introduction to C.
ENG2116 การโปรแกรมคอมพิวเตอร์ (C programming)
ความรู้เบื้องต้นเกี่ยวกับภาษา c
โครงสร้างภาษาซี เบื้องต้น
Computer Programming 1 LAB Test 3
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
Introduction to C Programming
เริ่มต้นเขียนโปรแกรมภาษา C++
แนะนำการเขียนโปรแกรมภาษา C Introduction to C Programming Language
Department of Computer Business
Control structure part II
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
Lecture 9: การวนซ้ำแบบมีโครงสร้างการวนซ้ำซ้อนกัน
หลักการโปรแกรม 1 Lecture 1: ความรู้เบื้องต้นเกี่ยวกับ การโปรแกรม.
ฟังก์ชัน (Function).
Structure Programming
Structure Programming
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
Computer Programming 1 LAB # 6 Function.
LAB # 4.
Function.
องค์ประกอบของโปรแกรม
Week 6 ประกาศค่าตัวแปร.
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
โครงสร้างภาษาซี.
โดย อาจารย์ณัฐพงศ์ พยัฆคิน
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
ฟังก์ชัน (Function).
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
บทที่ 13 Pre-processor directive & macro Kairoek choeychuen
ฟังก์ชันของ PHP ฟังก์ชันคือ โปรแกรมย่อยที่สามารถประมวลผล และ คืนผลลัพธ์จาการประมวลผลนั้นสู่โปรแกรมหลักได้ ซึ่งจำเป็นในการเขียนโปรแกรมเพื่อช่วยให้การทำงานมีประสิทธิภาพที่สูงขึ้น.
C Programming Lecture no. 6: Function.
ขั้นตอนวิธี (Algorithm)
แนะนำการเขียนโปรแกรมภาษา C Introduction to C Programming Language
Lecture 4 องค์ประกอบภาษา C To do: Hand back assignments
คำสั่งควบคุมการทำงาน
Lecture 9 Class (คลาส) To do: Hand back assignments
การเขียนโปรแกรมภาษาซี
Introduction to C Language
ตัวแปรกับชนิดของข้อมูล
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
ใบงานที่ 3 โครงสร้างของโปรแกรมภาษาซี
อาจารย์นัณฑ์ศิตา ชูรัตน์
ประวัติความเป็นมาภาษาซี
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
Computer Programming for Engineers
2.1 วิธีแก้ปัญหาด้วยคอมพิวเตอร์ (Computer problem solving methods)
ฟังก์ชัน.
วิชา วิศวกรรมซอฟต์แวร์ (Software Engineering)
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
Software Testing  - ช่วยกำจัด และลดข้อบกพร่องที่จะก่อให้เกิดปัญหาลงให้มากที่สุดที่จำทำได้ (ตามเวลาที่มี) - ช่วยลดความเสี่ยง เพิ่มความมั่นใจ และน่าเชื่อถือ.
หลักการเขียนโปรแกรม ( )
PHP: [8] การสร้างฟังก์ชั่นขึ้นใช้เอง (User-defined functions)
หลักการสร้างสรรค์ชุดคำสั่ง ๓
การเขียนโปรแกรมคอมพิวเตอร์ 1
บทที่ 2 แนวคิดในการเขียนโปรแกรม. ขั้นตอนการ พัฒนาโปรแกรม ในการพัฒนาโปรแกรมมีขั้นตอนหลัก 5 ขั้นตอน ซึ่งไม่ว่าจะทำการพัฒนาโปรแกรม ครั้งใดจะต้องปฏิบัติตามขั้นตอนเหล่านี้
โครงสร้าง ภาษาซี.
บทที่ 9 การสร้างและใช้ งานฟังก์ชั่น C Programming C-Programming.
นาย เกียรติศักดิ์ แสนนวล โรงเรียนจักรคำคณาทรลำพูน
แนะนำการเขียนโปรแกรมภาษา C Introduction to C Programming Language
Function. วัตถุประสงค์การเรียนรู้ ให้รู้จักว่าฟังก์ชันคืออะไร ให้รู้จักว่าเราสร้างฟังก์ชันเพื่อจุดประสงค์ใด หรือ เพื่อประโยชน์ใด ให้รู้จักประเภทของฟังก์ชัน.
บทที่ 10 การจัดการไฟล์ อาจารย์ศศลักษณ์ ทองขาว สงวนลิขสิทธิ์ © 2547 มหาวิทยาลัยราช ภัฏสงขลา C Programming C-Programming.
บทที่ 5 โปรแกรมย่อย.
บทที่ 7 การสร้างและการใช้งาน ฟังก์ชัน อาจารย์ชนิดา คำเพ็ง สาขาวิชาเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ และเทคโนโลยี
ใบสำเนางานนำเสนอ:

Lecture 7 ฟังก์ชัน To do: Hand back assignments Give out handouts to anybody who missed them last class Quick comments on PS3 Quick comments on grades READING: S+S: Appendix C

บทนำ โปรแกรมที่สร้างขึ้นส่วนใหญ่ มักจะมีขนาดใหญ่ ดังนั้นในการจัดการโปรแกรมที่มีขนาดใหญ่ จะใช้วิธีการ แบ่งส่วนของโปรแกรมออกเป็นส่วนย่อยๆ ซึ่ง โปรแกรมย่อยเหล่านี้เรียกว่า ฟังก์ชัน(Function) ประโยชน์ของฟังก์ชัน 1. สามารถหาจุดผิดของโปรแกรมได้ง่าย 2. โปรแกรมมีขนาดเล็ก 3. สามารถนำไปใช้ ณ. ส่วนอื่นๆ ของโปรแกรมก็ได้ 4. ช่วยกันพัฒนาได้ โมดูล(Module)หรือฟังก์ชัน(Function) เป็นคำที่มีความหมายเหมือนกัน

OBJECTIVE 1. ฟังก์ชันมาตรฐาน(Standard Functions) 2. ฟังก์ชันที่ผู้ใช้กำหนด(User-defined Functions) - การ Test Driver - การส่งผ่านค่าให้ฟังก์ชัน 3. ฟังก์ชันโอเวอร์โหลด(Overloading Function)

ฟังก์ชันมี 2 ชนิด 1. ฟังก์ชันมาตรฐาน(Standard Functions) เป็นฟังก์ชันที่มีการนิยามไว้แล้วในComplier เราเพียงแต่ทำความเข้าใจการทำงานของฟังก์ชันและนำมาใช้ให้ถูกต้อง โดยจะต้องค้นหาว่า ฟังก์ชันนิยามอยู่ใน module หรือ header file ใด เมื่อทราบแล้วก็ทำการ include เข้ามาใช้ในการแปลร่วม 2. ฟังก์ชันที่ผู้ใช้สร้างขึ้น(User-define Functions) เป็นฟังก์ชันที่ผู้เขียนโปรแกรมนิยามขึ้นใหม่ โดยอาจจะเขียนรวมไว้ในไฟล์เดียวหรืออาจจะแยกไวในไฟล์อื่น ซึ่งถ้าจะนำมาใช้งานร่วมกันก็ต้องประกาศ include ไว้ตอนต้นโปรแกรมเช่นเดียวกับฟังก์ชันมาตรฐาน

7.1 ฟังก์ชันมาตรฐานในภาษาซี ฟังก์ชันมาตรฐานในภาษาซี++ได้มีการจัดทำไว้แล้วและผู้ใช้สามารถที่จะเรียกมาใช้งานได้ เพียงแต่กำหนดตรงส่วนหัวว่าจะนำเอาฟังก์ชันมาตรฐานของ library ใดมาใช้ในโปรแกรม #include <iostream.h> #include <math.h> int main() { for (int i = 0; i < 6; i++) cout << i << "\t" << sqrt(i) << endl; return 0; } ฟังก์ชัน sqrt() เป็นฟังก์ชันหารากที่สอง ซึ่งเป็นฟังก์ชันมาตรฐานหนึ่งใน C และ C++ การเรียกฟังก์ชันนี้มาใช้งานจะต้องประกาศส่วนหัว #include <math.h>หรือ #include “math.h” ก่อนจึงจะใช้งานได้

ฟังก์ชันใน math.h บางตัว abs Return absolute value of int acos Calculate arccosine asin Calculate arcsine atan, atan2 Calculate arctangent atof Convert character string to double-precision floating-point value cos Calculate cosine cosh Calculate hyperbolic cosine sin Calculate sine sinh Calculate hyperbolic sine exp Calculate exponential function fabs Find absolute value log Calculate natural logarithm log10 Calculate base-10 logarithm pow Calculate value raised to a power

ไฟล์ส่วนหัวบางตัวใน library มาตรฐานภาษา C <math.h> ประกาศฟังก์ชันคณิตศาสตร์ <stdio.h> ประกาศฟังก์ชันสำหรับรับเข้าและส่งออกข้อมูลมาตรฐาน<stringh.h> ประกาศฟังก์ชันสำหรับการประมวลผลสายอักขระ <time.h> ประกาศฟังก์ชันเวลาและวันที่ <ctype.h> ประกาศฟังก์ชันสำหรับทดสอบตัวอักขระ <iostream.h> ประกาศฟังก์ชันสำหรับรับเข้าและส่งออกสายอักขระ

<assert.h> -- for enforcing assertions when functions execute <ctype.h> -- for classifying characters <errno.h> -- for testing error codes reported by library functions <float.h> -- for testing floating-point type properties <limits.h> -- for testing integer type properties <locale.h> -- for adapting to different cultural conventions <math.h> -- for computing common mathematical functions <setjmp.h> -- for executing nonlocal goto statements <signal.h> -- for controlling various exceptional conditions <stdarg.h> -- for accessing a varying number of arguments <stddef.h> -- for defining several useful types and macros <stdio.h> -- for performing input and output <stdlib.h> -- for performing a variety of operations <string.h> -- for manipulating several kinds of strings <time.h> -- for converting between various time and date formats <wchar.h> -- for manipulating wide streams and several kinds of strings <wctype.h> -- for classifying wide characters

7.2 ฟังก์ชันที่ผู้ใช้กำหนดเอง ฟังก์ชันมาตรฐานในภาษาซี++ได้มีการจัดทำไว้แล้วก็จริง แต่บางครั้งยังไม่เพียงพอ กับการใช้งานของนักพัฒนาโปรแกรม ดังนั้น ภาษาC++ ยอมให้มีการ สร้างฟังก์ชันขึ้นใช้งานเอง รูปแบบการกำหนด ชนิดข้อมูลส่งค่ากลับ ชื่อฟังก์ชั่น(ชนิดข้อมูลส่งค่าเข้า ตัวแปร) { ส่วนการกำหนดตัวแปรแบบ Local; statement; statement; …; return ตัวแปรที่ส่งกลับ; }

ตัวอย่าง #include <iostream.h> #include <math.h> int cube(int x); //declare function int main(void) { int ans; ans=cube(5); cout<<"Result is "<<ans<<endl; return 0; } int cube(int x) int result; //local variable result = x*x*x; return result;

- การทดสอบโปรแกรมขับ(Test Driver) การเขียนโปรแกรมในส่วนทดสอบไม่ต้องเขียนให้สวยงานนัก แต่จะเน้นถึงการทำงานของฟังก์ชันที่เราสร้างขึ้นว่าถูกต้องหรือไม่

ตัวอย่างการ Test Driver #include <iostream.h> #include <math.h> int cube(int x); //declare function int main(void) { int ans; cin >>ans; //recive value to ans ans=cube(5); //test Driver function cube() by 5 cout<<ans; return 0; } int cube(int x) int result; //local variable result = x*x*x; return result;

- การส่งผ่านค่าพารามิเตอร์ให้ฟังก์ชัน การผ่านค่าพารามิเตอร์ให้ฟังก์ชันมี 2วิธี 1.วิธีผ่านโดยการอ้างค่า (pass by value) 2.วิธีผ่านโดยอ้างอิง(pass by reference) วิธีผ่านโดยการอ้างค่า จะเป็นการส่งผ่านค่าของพารามิเตอร์ให้ฟังก์ชัน วิธีผ่านโดยการอ้างอิง จะเป็นการส่งผ่านค่าของตำแหน่ง(address) ของพารามิเตอร์ให้ฟังก์ชัน การส่งผ่านวิธีนี้จะต้องใช้เครื่องหมายให้ถูกต้อง เนื่องจากภาษา C สามารถส่งค่ากลับได้ 1 ค่า แต่การผ่านด้วยวิธีนี้สามารถที่จะส่งค่ากลับได้มากว่า 1 ค่า

ตัวอย่างวิธีผ่านโดยการอ้างอิง(แบบ1) ใช้ได้ C และ C++ #include <iostream.h> void divide(int *data1); //declare function void main(void){ //main function int a1; a1 = 20; divide(&a1); cout<<a1<<endl; } void divide(int *data1){ //function *data1 = *data1/4;

รูปตัวอย่างการพิจารณา a1 data1 ค่าของ a1 20 0x001120 *ของdata ชี้ไปที่ค่าของ a1 Address ของ a1 0x001120 *data1 #include <iostream.h> void divide(int *data1); //declare function void main(void){ //main function int a1; a1 = 20; divide(&a1); cout<<a1<<endl; } void divide(int *data1){ //function *data1 = *data1/4;

ตัวอย่างวิธีผ่านโดยการอ้างอิง(แบบ2) ใช้ได้ เฉพาะC++ #include <iostream.h> void divide(int &data1); //declare function void main(void){ //main function int a1; a1 = 20; divide(a1); cout<<a1<<endl; } void divide(int &data1){ //function data1 = data1/4;

- ฟังก์ชันที่ไม่มีการส่งผ่านค่า ในกรณีที่ไม่มีการรับหรือส่งค่าเข้าไปเราจะใช้คำนิยาม void วางไว้ตรงตำแหน่งที่ไม่มีการรับหรือส่งค่า 1.รูปแบบการกำหนดชนิดไม่มีการส่งค่ากลับ void ชื่อฟังก์ชั่น(ชนิดข้อมูลส่งค่าเข้า ตัวแปร) { } 2.รูปแบบการกำหนดชนิดไม่มีการส่งค่าเข้า ชนิดข้อมูลส่งค่าออก ชื่อฟังก์ชั่น(void) { }

3.รูปแบบการกำหนดชนิดไม่มีการส่งค่าเข้าและส่งค่ากลับ void ชื่อฟังก์ชั่น(void) { } ฟังก์ชันทั้ง 3 แบบที่ไม่มีการส่งผ่านค่านี้ ในการประมวลผลร่วมกับฟังก์ชันหลักนั้น มักจะใช้ตัวแปรแบบ Gobal ในการรับค่าเข้าไปทำงานในฟังก์ชัน และส่งค่ากลับออกมาโดยใช้ตัวแปรแบบ Gobal

ตัวอย่างฟังก์ชันมีการส่งค่าเข้าแต่ไม่มีการส่งค่ากลับ #include <iostream.h> void max(float dat1,float dat2); //declare function void main(void){ //main function float a1,b1; cout<<“Type a1=“; cin>>a1; cout<<“Type b1=“; cin>>b1; max(a1,b1); } void max(float dat1,float dat2){ //function if(dat1>dat2) cout<<dat1<<“ Max than”<<dat2<<endl; else cout<<dat1<<“ a1 Less Than or Equal”<<dat1<<endl;

ตัวอย่างฟังก์ชันมีการส่งค่ากลับแต่ไม่มีการส่งค่าเข้า #include <iostream.h> char Sex(void); //declare function void main(void){ //main function char dat1; dat1=Sex(); //call function cout<<"Your sex is :"<<dat1<<endl; switch(dat1){ case 'f': case 'F': cout<<"Your Female \n"; break; case 'm': case 'M': cout<<"Your Male\n"; break; } char Sex(void){ //sub function char sex; cout<<"What your sex (f/m)? "; cin>>sex; return sex;

ตัวอย่างฟังก์ชันไม่มีการส่งค่าเข้าและไม่ส่งค่ากลับ #include <iostream.h> void Name(void); //declare function char name[20]; //gobal variable 20 character void main(void){ //main function Name(); cout<< “Your name is :“ << name << endl; } void Name(void){ //sub function cout<< “What your name ? “; cin >> name; โปรแกรมอ่านค่าชื่อ โดยใช้ตัวแปรแบบ gobal

7.3 ฟังก์ชันโอเวอร์โหลดดิ้ง ภาษา C++ ยอมให้มีการใช้ชื่อฟังก์ชันที่เหมือนกันได้ถ้าฟังก์ชันเหล่านั้นมีชนิดของตัวพารามิเตอร์ที่ต่างกัน หรืออย่างน้อยจะมีตำแหน่งหนึ่งในรายการที่ทำให้ฟังก์ชันต่างกัน

ตัวอย่างฟังก์ชันโอเวอร์โหลดดิ้ง #include <iostream.h> int max(int, int); double max(double, double); int main() { cout << max(99,77) << " " << max(3.4,7.2) << endl; return 0; } int max(int x, int y) return (x + y); double max(double x, double y) return (x - y);

Inclass Lab1 จงเขียนฟังก์ชันและทดสอบฟังก์ชัน min() ต่อไปนี้ โดยให้ฟังก์ชัน min(int,int) เพื่อหาและคืนค่าที่เล็ดที่สุดของจำนวนเต็มที่กำหนดให้ 2 จำนวน int min(int x , int y) ก่อนทำการส่งให้ Test Driver ดูว่าถูกต้องหรือไม่

Inclass Lab2 จงเขียนฟังก์ชันและทดสอบฟังก์ชัน GetRadius() ต่อไปนี้ โดยให้ฟังก์ชัน GetRadius(void) รับค่าและคืนค่ารัศมีออกจากฟังก์ชันและนำมาคำนวณหาพื้นที่วงกลมร่วมกับฟังก์ชัน main() int GetRadius(void) ก่อนทำการส่งให้ Test Driver ดูว่าถูกต้องหรือไม่

Inclass Lab3 จงเขียนฟังก์ชันและทดสอบฟังก์ชัน ComputeCircle() ต่อไปนี้ โดยให้ฟังก์ชัน ComputeCircle() เพื่อหาเส้นรอบวงและพื้นที่วงกลม โดยมีการรับค่ารัศมี และคืนค่าเส้นรอบวง และ พื้นที่วงกลม ออกจากฟังก์ชัน void ComputeCircle(float r , float *Area , float *Circle) ก่อนทำการส่งให้ Test Driver ดูว่าถูกต้องหรือไม่