งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Department of Computer Engineering, PSU 242-101, 241-101 Introduction to Computer Programming คณาจารย์ภาควิชาวิศวกรรม คอมพิวเตอร์

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Department of Computer Engineering, PSU 242-101, 241-101 Introduction to Computer Programming คณาจารย์ภาควิชาวิศวกรรม คอมพิวเตอร์"— ใบสำเนางานนำเสนอ:

1 Department of Computer Engineering, PSU , Introduction to Computer Programming คณาจารย์ภาควิชาวิศวกรรม คอมพิวเตอร์ บทที่ 5 ฟังก์ชัน กับอาร์เรย์ Function & Array

2 , Introduction to Computer Programming Department of Computer Engineering, PSU ส่งอาร์เรย์เป็นอากิวเมนต์ของ ฟังก์ชัน สามารถแบ่งได้เป็น 2 ลักษณะ การส่งค่าอาร์เรย์เพียง หนึ่งอีลีเมนต์ ให้กับฟังก์ชัน เป็นการเรียกใช้ฟังก์ชัน แบบ Call-by-value การส่งค่าอาร์เรย์ ทุกอีลีเมนต์ ให้กับ ฟังก์ชัน เป็นการเรียกใช้ฟังก์ชันแบบ Call-by-reference

3 , Introduction to Computer Programming Department of Computer Engineering, PSU การเรียกใช้แบบ Call-by-value ใช้วิธีการส่งค่าของตัวแปร (value) ให้กับ ฟังก์ชัน ไม่สามารถแก้ไขค่าของอาร์กิวเมนต์ ภายในฟังก์ชันได้ ใช้กับฟังก์ชันที่รับค่าเข้าเป็นตัวแปร ธรรมดา (int, float, char,...)

4 , Introduction to Computer Programming Department of Computer Engineering, PSU ใช้วิธีการส่งค่า แอดเดรส (Address)*** ของตัวแปรไปให้ฟังก์ชัน ใช้กับฟังก์ชันที่รับค่าเข้าเป็นอาร์เรย์ สามารถแก้ไขค่าของอาร์กิวเมนต์ภายใน ฟังก์ชันได้ *** แอดเดรส (Address) คือ ค่าที่ใช้อ้างถึง ตัวข้อมูลภายในหน่วยความจำ เหมือนกับ หมายเลขบ้านเลขที่ *** การเรียกใช้แบบ Call-by- reference

5 , Introduction to Computer Programming Department of Computer Engineering, PSU การส่งผ่านค่าอีลีเมนต์อาร์เรย์ให้กับ ฟังก์ชัน หากฟังก์ชัน my_func มีต้นแบบของ ฟังก์ชันดังนี้ void my_func(int x); และใน main ได้มีการประกาศตัวแปร อาร์เรย์ชื่อว่า num int num[10]; การส่งอีลีเมนต์ที่ 0 ของอาร์เรย์ num ไป เป็นอาร์กิวเมนต์ของฟังก์ชัน my_func สามารถเขียนได้ดังนี้ my_func(num[0]); คิดเหมือนการส่งค่าตัวแปร ธรรมดา หนึ่งค่า

6 , Introduction to Computer Programming Department of Computer Engineering, PSU Ex. การส่งค่าอีลิเมนต์ในอาร์เรย์ให้กับ ฟังก์ชัน #include void check_val(int x); int main() { int a[3] = {2,-1,5}; check_val(a[0]); return 0; } void check_val(int x) { if(x >= 0) printf("%d : Positive\n",x); else printf("%d : Negative\n",x) ; } ผลการรัน โปรแกรม 2 : Positive a[0] x COPY

7 , Introduction to Computer Programming Department of Computer Engineering, PSU Ex. การส่งค่าอีลิเมนต์ในอาร์เรย์ให้กับ ฟังก์ชัน #include void check_val(int x); int main() { int i,a[3] = {2,-1,5}; for(i=0;i<3;i++) check_val(a[i]); return 0; } void check_val(int x) { if(x >= 0) printf("%d : Positive\n",x); else printf("%d : Negative\n",x); } ผลการรัน โปรแกรม 2 : Positive -1 : Negative 5 : Positive

8 , Introduction to Computer Programming Department of Computer Engineering, PSU Ex. การส่งค่าอีลิเมนต์ในอาร์เรย์ให้กับ ฟังก์ชัน #include void find_max(int vals); void main() { int nums[5] = {2, 18, 1, 27, 16}; find_max(nums[0]); } void find_max(int vals)/*find the maximum value*/ { printf("Values is %d\n", vals); } ผลการรัน โปรแกรม Value is 2

9 , Introduction to Computer Programming Department of Computer Engineering, PSU ฟังก์ชันที่มีการรับค่าเข้าเป็นอาร์เรย์ ชนิดข้อมูล ชื่อฟังก์ชัน ( ชนิดข้อมูล ชื่อตัว แปร [ ขนาดอาร์เรย์ ]); กรณีฟังก์ชันมีการรับค่าเข้าเป็นอาร์เรย์ 1 มิติ อาจจะไม่ต้องกำหนดขนาดของ อาร์เรย์ก็ได้ ตัวอย่างเช่น int sum_arr(int num[10]); void print_arr(int a[5]); float average(int num[]);

10 , Introduction to Computer Programming Department of Computer Engineering, PSU การส่งอาร์เรย์ทุกอีลีเมนต์ให้กับ ฟังก์ชัน การส่งอาร์เรย์ในกรณีนี้ ใช้แค่ชื่อตัวแปร อาร์เรย์เท่านั้น เช่น หากใน main มีการ ประกาศอาร์เรย์ดังนี้ int num[10]; และฟังก์ชัน print_arr มีต้นแบบฟังก์ชัน ดังนี้ void print_arr(int a[10]); การส่งอาร์เรย์ num ทุกอีลีเมนต์ไปให้ ฟังก์ชัน print_arr สามารถเขียนได้ดังนี้ print_arr(num);

11 , Introduction to Computer Programming Department of Computer Engineering, PSU การส่งอาร์เรย์ทุกอีลีเมนต์ให้กับ ฟังก์ชัน #include void print_arr(int a[4]); int main() { int num[4] = {5,2,-1,8}; print_arr(num); return 0; } void print_arr(int a[4]) { int i; for(i =0;i<4;i++) printf("%d ", a[i]); } ผลการรัน โปรแกรม num[0] num[1]num[2]num[3] a[0]a[1]a[2]a[3]

12 , Introduction to Computer Programming Department of Computer Engineering, PSU การส่งอาร์เรย์ทุกอีลีเมนต์ให้กับ ฟังก์ชัน #include void find_max(int vals[5]); void main() { int nums[5] = {2, 18, 1, 27, 16}; find_max(nums); } void find_max(int vals[5]) //find the maximum value { int i, max = vals[0]; for ( i = 1; i < 5; ++i) if (max < vals[i]) max = vals[i]; printf("The maximum value is %d\n", max); } ผลการรันโปรแกรม The maximum value is 27

13 , Introduction to Computer Programming Department of Computer Engineering, PSU โจทย์ฝึกสมองที่ 1 เขียนโปรแกรมที่รับจำนวนเต็มจากผู้ใช้ 10 ตัว จากนั้นให้นับว่าในจำนวนเต็มทั้ง 10 ตัวนั้นมีตัว ประกอบของ 40 อยู่กี่ตัว ( เลขที่หาร 40 ลงตัว ) กำหนดให้ส่วนที่รับค่าจำนวนเต็มจากผู้ใช้และ ส่วนที่แสดงผลลัพธ์อยู่ใน main และให้ส่วนที่ นับตัวประกอบของ 40 อยู่ในฟังก์ชันชื่อ count_factor โดยให้ส่งอาร์เรย์ที่เก็บจำนวน เต็มทั้ง 10 จาก main มาให้กับฟังก์ชัน count_factor maincount_factor อาร์เรย์ของจำนวนเต็ม ผลการนับตัว ประกอบ

14 , Introduction to Computer Programming Department of Computer Engineering, PSU โจทย์ฝึกสมองที่ 2 จงเขียนโปรแกรมสำหรับรับค่าคะแนน ของนักศึกษาจำนวน 10 คน และให้พิมพ์ ค่าเฉลี่ยของคะแนนทั้งหมด โดยกำหนดให้ ส่วนรับคะแนนจากผู้ใช้และส่วนที่แสดง ค่าเฉลี่ยอยู่ใน main สำหรับส่วนที่คำนวณ ค่าเฉลี่ยให้อยู่ฟังก์ชันชื่อ average โดย ให้ส่งอาร์เรย์ที่เก็บคะแนนทั้งของ 10 คน จาก main มาให้ฟังก์ชัน average ( คะแนนสามารถเป็นทศนิยมได้ ) mainaverage อาร์เรย์ของคะแนน ค่าเฉลี่ย

15 , Introduction to Computer Programming Department of Computer Engineering, PSU การแก้ไขค่าของอาร์เรย์ภายใน ฟังก์ชัน ฟังก์ชันที่มีการรับพารามิเตอร์เป็น อาร์เรย์ หากมีการแก้ไขค่าภายในอาร์เรย์ ดังกล่าว จะส่งทำให้อาร์เรย์ที่ถูกส่งมาเป็น อาร์กิวเมนต์ของฟังก์ชันมีการเปลี่ยนแปลง ด้วย

16 , Introduction to Computer Programming Department of Computer Engineering, PSU ฟังก์ชันแก้ไขค่าพารามิเตอร์ที่เป็น อาร์เรย์ #include void edit_arr(int a[4]); int main() { int i,num[4] = {2,5}; edit_arr(num); for(i=0;i<4;i++) printf("%d ",num[i]); return 0; } void edit_arr(int a[4]) { int i; for(i=0;i<4;i++) a[i] = a[i]*a[i]; } ผลการรัน โปรแกรม num[0] num[1]num[2]num[3]

17 , Introduction to Computer Programming Department of Computer Engineering, PSU จากต้นแบบของฟังก์ชัน : void display(int val[3][4]); หมายถึง ฟังก์ชันชื่อ display ไม่มีการส่ง ค่ากลับ แต่รับค่าเข้าเป็นอาร์เรย์ของ int ขนาด 3 แถว 4 หลัก หรืออาจจะละจำนวนแถวก็ได้ แต่ต้องระบุ จำนวนหลักเสมอ เช่น void display(int val[ ][4]); ฟังก์ชันที่รับค่าเข้าเป็นอาร์เรย์ 2 มิติ

18 , Introduction to Computer Programming Department of Computer Engineering, PSU ฟังก์ชันที่รับค่าเข้าเป็นอาร์เรย์ 2 มิติ #include void display(int nums[3][4]); void main() { int i, j, val[3][4] = {8,16,9,52,3,15,27,6,14,25,2,10 }; display(val); } void display ( int nums[3][4]) { int row_num, col_num; for(row_num = 0 ; row_num < 3 ; row_num++) { for(col_num = 0; col_num < 4; ++col_num) printf("%4d", nums[row_num][col_num]); printf("\n"); }


ดาวน์โหลด ppt Department of Computer Engineering, PSU 242-101, 241-101 Introduction to Computer Programming คณาจารย์ภาควิชาวิศวกรรม คอมพิวเตอร์

งานนำเสนอที่คล้ายกัน


Ads by Google