ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยRidwan Iwan Hermanto ได้เปลี่ยน 6 ปีที่แล้ว
1
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
สัปดาห์ที่ 12 ฟังก์ชัน (Function)
2
objectives เพื่อให้นิสิตรู้จักและเข้าใจการนิยามและการเขียนฟังก์ชันในภาษาซี สามารถเขียนฟังก์ชันร่วมกับคำสั่งทำซ้ำ อาเรย์ ตัวแปรชี้ตำแหน่ง ตัวแปรชนิดโครงสร้างในภาษาซีได้อย่างมีประสิทธิภาพ สามารถนำความรู้เรื่องฟังก์ชันไปประยุกต์เพื่อแก้ไขโจทย์ปัญหาในชีวิตประจำวันได้ได้อย่างถูกต้องเหมาะสม
3
C Standard Library Function
Outline 1 C Standard Library Function 2 p Function Format 3 User-Defined Function 4 Passing Parameters
4
User-Defined Function (cont.)
#include<file.h> type function_name(type); type variable int main() { type variable; statement-1; ... statement-n; return 0; } type function_name(type variable) return(var); พรีโปรเซสเซอร์ไดเร็คทีฟ ฟังก์ชันโพรโทรไทพ์ ส่วนหัวโปรแกรม ตัวแปรชนิดโกบอล ตัวแปรชนิดโลคอล ฟังก์ชันหลัก คำสั่ง ส่วนตัวโปรแกรม ฟังก์ชันย่อย
5
Mathematics Function Example
#include<stdio.h> #include<math.h> void main() { printf(“square root 3 =”); printf(“%f\n”, sqrt(3)); printf(“5 power 3 =”); printf(“%f”, pow(5,4)); } Square root 3 = ? 5 power 4 = ?
6
String Function Example
#include <stdio.h> #include <conio.h> #include <string.h> void main() { char str1[30] = "Current Date "; char str2[30] = "18 August 2008"; char str3[30]; strcpy(str3, str1); strcat(str1, str2); printf("str1 = %s\n", str1); printf("str3 = %s\n", str3); }
7
String Function Example (cont.)
#include <stdio.h> #include <conio.h> #include <string.h> void main() { char buf1[] = "Nanometer", buf2[] = "Nanometer"; int ptr; printf("buffer 1 : \"%s\"\n",buf1); printf("buffer 2 : \"%s\"\n",buf2); ptr = strcmp(buf2, buf1); if(ptr == 0) printf("buffer 2 is equal to buffer 1\n"); printf("Length of buffer 1 : %d\n", strlen(buf1)); }
8
String Function Example (cont.)
#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> void main() { int length, i; char string[] = "This Is a String"; length = strlen(string); for(i=0; i<length; i++) string[i] = toupper(string[i]); printf("%s\n",string); string[i] = tolower(string[i]); }
9
String Function Example (cont.)
#include <stdio.h> #include <conio.h> void main() { char line1[] = "Ferguson wants Rooney for life"; char line2[] = "Henry pleading with Cole to stay"; char line3[] = "Mourinho not giving up on Gallas"; printf("%s\n", line1); printf("%s\n", line2); printf("%s\n", line3); gotoxy(14,1); clreol(); gotoxy(1,2); insline(); getch(); }
10
C Standard Library Function
Outline 1 C Standard Library Function 2 p Function Format 3 User-Defined Function 4 Passing Parameters
11
User-Defined Function (cont.)
ฟังก์ชัน : กลุ่มคำสั่งทำงานที่มีการรับค่าแล้วทำตามคำสั่งในฟังก์ชั่น และมีการส่งค่ากลับ (return) Process (ทำงาน) ส่งค่ากลับ รับค่ามา Function Return_Type Function_name(Type variable)
12
Function Declaration เป็นการประกาศการใช้งานฟังก์ชั่นที่อยู่หลัง main()
type คือ ชนิดของฟังก์ชัน ว่าฟังชันที่ทำการสร้างจะส่งข้อมูลชนิดใดกลับ function_name คือ ชื่อฟังก์ชันที่จะสร้างขึ้น type-n คือ ชนิดของข้อมูลที่จะส่งให้ฟังก์ชัน type function_name(type-1,type-2,...,type-n);
13
Function Format #1 แบบที่ 1: ฟังก์ชันแบบไม่มีการส่งค่ากลับและไม่มีพารามิเตอร์ เป็นฟังก์ชันที่ไม่มีการส่งค่ากลับไปให้กับฟังก์ชันที่เรียกมา และไม่มีการส่งค่าจากฟังก์ชันที่เรียกมาให้ด้วย void main() { my_print(); } void my_print() printf(“Hello world”);
14
Function Format #2 แบบที่ 2 ฟังก์ชันแบบไม่มีการส่งค่ากลับแต่มีพารามิเตอร์ เป็นฟังก์ชันที่จะไม่มีการส่งค่ากลับไปให้ฟังก์ชันที่เรียกขึ้นมา แต่มีการส่งค่าจากฟังก์ชันที่เรียกมาให้ด้วย void main() { my_print(‘a’, 5); } void my_print(char ch, int x) while (x > 0) printf(“%c”, ch); x--; void main() { my_print(2); } void my_print(int x) printf(“%d”, x);
15
Function Format #3 แบบที่ 3 ฟังก์ชันแบบมีการส่งค่ากลับและไม่มีพารามิเตอร์ เป็นฟังก์ชันที่จะมีการส่งค่ากลับไปให้ฟังก์ชันที่เรียกมา แต่ไม่มีการส่งค่าจากฟังก์ชันที่เรียกมาให้ด้วย void main() { printf(“%d”,my_func()); } int my_func() int a; scanf(“%d”,&a); return (a*5);
16
Function Format #4 แบบที่ 4 ฟังก์ชันแบบมีการส่งค่ากลับและมีพารามิเตอร์
แบบที่ 4 ฟังก์ชันแบบมีการส่งค่ากลับและมีพารามิเตอร์ เป็นฟังก์ชันที่จะมีการส่งค่ากลับไปให้กับฟังก์ชันที่เรียกมา แต่มีการส่งค่าจากฟังก์ชันที่เรียกมาให้ด้วย void main() { char ch; ch = my_print(5); printf(“%c\n”, ch); } char my_print(int x) { char lch; printf(“Enter your character: ”); scanf(“%c”, &lch); while (x > 0) printf(“%c”, lch); x--; } printf(“\n”); return lch;
17
C Standard Library Function
Outline 1 C Standard Library Function 2 p Function Format 3 User-Defined Function 4 Passing Parameters
18
Pass by Value #include <stdio.h> void call_by_value(int x) {
printf("Inside call_by_value x = %d before adding 10.\n", x); x += 10; printf("Inside call_by_value x = %d after adding 10.\n", x); } int main() int a=10; printf("a = %d before function call_by_value.\n", a); call_by_value(a); printf("a = %d after function call_by_value.\n", a); return 0;
19
Result a = 10 before function call_by_value. Inside call_by_value x = 10 before adding 10. Inside call_by_value x = 20 after adding 10. a = 10 after function call_by_value
20
Pass by Reference #include <stdio.h> void call_by_reference(int *y) { printf("Inside call_by_reference y = %d before adding 10.\n", *y); (*y) += 10; printf("Inside call_by_reference y = %d after adding 10.\n", *y); } int main() { int b=10; printf("b = %d before function call_by_reference.\n", b); call_by_reference(&b); printf("b = %d after function call_by_reference.\n", b); return 0;
21
Result b = 10 before function call_by_reference.Inside call_by_reference y = 10 before adding 10.Inside call_by_reference y = 20 after adding 10.b = 20 after function call_by_reference.
22
คำสั่งเรียกใช้ฟังก์ชัน รับ 2 operand/ส่ง result
Case Study I 2 รับ(1และ4)/ส่ง choice ส่วนหัวของโปรแกรมภาษา C ฟังก์ชัน getChoice ฟังก์ชัน main( ) คำสั่งเรียกใช้ฟังก์ชัน 1 3 ฟังก์ชัน menu ฟังก์ชัน getOperand ไม่รับ/ไม่ส่ง ไม่รับ/ส่ง 2 operand 4 ฟังก์ชัน add ฟังก์ชัน sub ฟังก์ชัน mul ฟังก์ชัน div รับ 2 operand/ส่ง result
23
1: /* Program: case1.c 2: Integer calculation menu 3: */ 4: #include <stdio.h> 5: 6: /* function prototypes */ 7: void showMenu(void); 8: char getChoice(char min, char max); 9: int getOperand(void); 10: int add(int a, int b); 11: int sub(int a, int b); 12: int mul(int a, int b); 13: int div(int a, int b); 14: 15: int main() 16: { 17: char choice; 18: int result, operand1, operand2; 19: 20: /* display menu and get a choice */ 21: showMenu(); 22: choice = getChoice('1', '4'); 23: 24: /* get operand values */ 25: operand1 = getOperand(); 26: operand2 = getOperand(); 27:
24
28: switch ( choice ) 29: { 30: case '1': 31: result = add(operand1, operand2); 31: printf("%d + %d = %d\n", operand1, operand2, result); 32: break; 33: 34: case '2': 35: result = sub(operand1, operand2); 36: printf("%d - %d = %d\n", operand1, operand2, result); 37: break; 38: 39: case '3': 40: result = mul(operand1, operand2); 41: printf("%d x %d = %d\n", operand1, operand2, result); 42: break; 43: 44: case '4': 45: result = div(operand1, operand2); 46: printf("%d / %d = %d\n", operand1, operand2, result); 47: 48: } 49: 50: return 0; 51: }
25
53: /* display a menu on screen */
54: void showMenu(void) 55: { 56: printf("Integer calculation\n" 57: "1. Addition\n" 58: "2. Subtraction\n" 59: "3. Multiplication\n" 60: "4. Division\n"); 61: } 63: /* get a choice between min and max values */ 64: char getChoice(char min, char max) 65: { 66: char ch; 67: 68: do 69: { 70: printf("Enter your choice (%c-%c): ", min, max); 71: ch = getchar(); 72: } while ( ch < min || ch > max ); 73: 74: return ch; 75: } 77: /* get an operand as an integer value */ 78: int getOperand(void) 79: { 80: int iVal; 81: 82: printf("Enter an integer operand: "); 83: scanf("%d", &iVal); 84: 85: return iVal; 86: }
26
88: /* add 2 integer operands and return the result */
89: int add(int a, int b) 90: { 91: return (a + b); 92: } 93: 94: /* subtract 2 integer operands and return the result */ 95: int sub(int a, int b) 96: { 97: return (a - b); 98: } 99: 100: /* multiply 2 integer operands and return the result */ 101: int mul(int a, int b) 102: { 103: return (a * b); 104: } 105: 106: /* divide 2 integer operands and return the result */ 107: int div(int a, int b) 108: { 109: return (a / b); 110: }
27
Result Integer calculation 1. Addition 2. Subtraction
3. Multiplication 4. Division Enter your choice (1-4): 0 Enter your choice (1-4): 5 Enter your choice (1-4): 3 Enter an integer operand: 2 Enter an integer operand: 3 2 x 3 = 6
28
Assignment #11 1. โปรแกรมเก็บข้อมูลสินค้า 1 ชนิด ภายในโปรแกรมประกอบด้วย ฟังก์ชันต่างๆดังนี้ ฟังก์ชันใส่ข้อมูลสินค้า getdata() ฟังก์ชันเพิ่มจำนวนสินค้า 10 ชิ้น add10() ฟังก์ชันลดจำนวนสินค้า 10 ชิ้น sub10() และฟังก์ชันแสดงจำนวนรายละเอียดภายในสินค้า โปรแกรมนี้ยังไม่สมบรูณ์ดี ให้นักศึกษาเขียนคำประกาศฟังก์ชัน getdata() และ add10 และคำสั่งภายในให้สมบรูณ์
29
Assignment #11 (cont.)
30
Assignment #11 (cont.) 2. ให้นิสิตอธิบายการทำงานของโปรแกรมนี้ พร้อมกับชี้ให้เห็นว่าจุดผิดของโปร แกรมคือจุดใด Hint: มีที่ผิด 1 จุด
31
Assignment #11 (cont.) 3. โปรแกรมต่อไปนี้แสดงผลเลขอะไรจอภาพ ใช้เวลาคิดไม่เกิน 10นาที เมื่อคิดเสร็จแล้วให้ลองพิมพ์ code ดังกล่าวลงคอมพิวเตอร์ และตรวจสอบคำตอบ
32
Assignment #11 (cont.)
33
Assignment #11 (cont.) 4. จงวิเคราะห์โจทย์ วิเคราะห์การทำงาน เขียนขั้นตอนการทำงานอย่างละเอียด เขียนรหัส เทียม เขียนแผนภาพการไหลของข้อมูล (Flowchart) พร้อมทั้งเขียนโปรแกรมการเรียงลำ ดับตัวเลข (Bubble sort) 10 จำนวน จากน้อยไปมาก กำหนดให้มีการรับค่าตัวเลข 10 จำนวนจากแป้นพิมพ์ ให้เขียนฟังก์ชันในการเรียงลำดับตัวเลขชื่อฟังก์ชัน “Sort_function” โดยฟังก์ชันนี้จะส่งผลลัพธ์ของการเรียงลำดับตัวเลขมาแสดงผลในฟังก์ชันหลัก (main function) และมีข้อกำหนดให้ฟังก์ชันดังกล่าวมีการส่งค่าในสองรูปแบบคือ pass by reference และ pass by value ตามลำดับ
34
Assignments #12 หัวหน้าแผนกฝ่ายบุคคลของบริษัทแห่งหนึ่งต้องการโปรแกรมเก็บข้อมูลของพนักงานภายในบริษัททั้งหมด ซึ่งโปรแกรมประกอบด้วย ฟังก์ชันต่างๆ ดังนี้ ฟังก์ชันแสดงการทำงานของเมนูหลัก Main_menu ( ) ฟังก์ชันบันทึกข้อมูลพนักงาน Data_record ( ) ฟังก์ชันเพิ่มข้อมูลพนักงานตามจำนวนพนักงานใหม่ Add_data( ) ฟังก์ชันลบข้อมูลพนักงานตาม ID Sub_data ( ) ฟังก์ชันเพิ่มและแก้ไขข้อมูลพนักงานตาม ID Change_data ( ) และฟังก์ชันแสดงจำนวนรายละเอียดของพนักงาน Show_detail ( ) ให้นิสิตวิเคราะห์โจทย์ วิเคราะห์ขั้นตอนการทำงาน เขียนรหัสเทียม เขียนแผนผังการไหลของข้อมูล รวมถึงให้เขียนโปรแกรมดังกล่าวให้เสร็จสมบรูณ์
35
Main Menu -----*** Welcome to main menu of employee record***-----
-->Please select the menu that you need to process 1. Record all data of employee 2. Record date of the new employee 3. Delete some employee record 4. Update some employee record 5. Show all employee record ======================== ========================= -->Please enter your choice (1-5): 0 Enter your choice (1-4): 6 Enter your choice (1-4): 3
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.