Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
873,02 KB
Nội dung
MƠN: NHẬP MƠN VỀ LẬP TRÌNH Chương 06 Hàm tổ chức chương trình Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Chuẩn đầu L.O.4.1 – Xác định thành phần hàm L.O.4.2 – Hiện thực giải thuật dạng hàm L.O.4.3 – Giải thích kiểu truyền tham số C L.O.4.4 – Tổ chức chương trình lớn, gồm nhiều hàm L.O.3.5 – Hiện thực giải thuật đệ quy ngôn ngữ C hiểu nguyên tắc hoạt động Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Khái niệm Hàm đơn vị xử lý Nhận tham số đầu vào; xử lý tính tốn; trả kết đầu Các tham số đầu vào Các lệnh xử lý hàm Giá trị trả đầu Lợi ích hàm: Tránh lặp lại mã nguồn Giúp phân chia chương trình rõ ràng Dễ bảo trì, phát triển chương trình Có thể chia sẻ cho nhiều dự án Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Hàm main() Một chương trình phải có hàm main() int main() { // lệnh xử lý hàm main return 0; } Kiểu trả hàm main int (hoặc void) Giá trị trả kiểu int là: (hoặc EXIT_SUCCESS): chương trình kết thúc thành cơng (hoặc EXIT_FAILURE): chương trình kết thúc có lỗi Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Hàm thư viện Dùng thị #include < … > đầu chương trình để báo cho biên dịch có sử dụng thư viện Ví dụ: #include Khi gọi hàm ta cần biết: Tên hàm công dụng hàm Các tham số đầu vào cần gởi cho hàm Kiểu kết trả hàm Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Hàm có sẵn thư viện C hổ trợ nhiều hàm thư viện hàm có sẳn như: stdio.lib stdlib.lib string.lib math.lib Có thể tham khảo trang web: https://www.tutorialspoint.com/c_standard_library/index.htm Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Mợt sớ hàm tốn học Các hàm toán học nằm thư viện math.lib Muốn sử dụng phải thực hiện: #include Một số hàm thường dùng: Tên hàm abs(a) log(a) sin(a) cos(a) tan(a) log10(a) pow(a1,a2) exp(a) sqrt(a) Diễn giải Trị tuyệt đối logarit số tự nhiên hàm sin hàm cos hàm tang log10(a) a1a2 ea bậ a Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Trị trả double double double double double double double double Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Khai báo hàm Cú pháp : [extern] [ret_type] name ([arglist]) { [statements]* Phần mô tả hàm (header) [return expr ] Phần thân hàm (body) } extern : khai báo hàm định nghĩa module khác arglist: danh sách tham số hình thức (hàm khơng có tham số), tham số cách dấu phẩy (,) mô tả theo cú pháp: type argument_name Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Lời gọi hàm Cú pháp: Tên_hàm (); Ví dụ: hàm lấy bậc hai có cú pháp: double sqrt (double x) #include int main() { printf ("sqrt(25.0) = %5.2f\n", sqrt(25.0)); // sqrt(25.0) = 5.00 } Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide Hàm người dùng tự định nghĩa int add(int x,int y) { int t; t = x + y; return t; } int main(){ int a=10, b=15; printf("%d + %d = %d",a,b,add(a,b)); getch(); return 0; } 10 + 15 = 25 Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 10 Tổ chức chương trình C Module # Khai báo / định nghĩa Hàm Hàm Hàm Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Tiền xử lý: #include #define Khai báo / định nghĩa: Hằng Biến Hàm/biến extern Mô tả hàm Các hàm: main chạy Định nghĩa ngang cấp, không lồng Được gọi chạy Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 24 Tổ chức chương trình C Project bao gồm nhiều module Module # Khai báo / định nghĩa Hàm Hàm Hàm Module # Khai báo / định nghĩa Hàm Module # Khai báo / định nghĩa Hàm Hàm Hàm Hàm Hàm Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 25 Tổ chức mã nguồn chương trình #include #include Tách rời phần mô tả hàm đặt trước hàm “main” (trước sử dụng) int add(int a, int b); int main(){ printf("10 + 15 = %d", add(10, 15)); return 0; } int add(int a, int b){ int c; c = a + b; return c; } Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Cài đặt lệnh cho phần thân hàm Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 26 Tổ chức mã nguồn chương trình lớn Đưa phần mô tả vào tập tin riêng Tập tin header (mơ tả hàm): *.h Có thể sử dụng lại nhiều tập tin khác dự án Đưa phần thực vào tập tin riêng Sử dụng thị #if !defined(.) … endif để tránh lỗi “định nghĩa lặp lại” (redefinition) Tập tin thực (implementation): *.c Có thể sử dụng lại nhiều tập tin khác dự án Đưa hàm main() vào tập tin riêng Khai báo có sử dụng hàm tập tin *.h nêu Gọi hàm Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 27 Tổ chức mã nguồn chương trình lớn Tập tin chứa hàm main() Để sử dụng hàm thư viện tự tạo đặt #include ”xyz.h” mã nguồn Tập tin chứa phần cài đặt hàm Tập tin chứa phần mô tả cho hàm, kiểu liệu, v.v phần mơ tả nói chung Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 28 Tập tin thực (implementation) Tập tin my_math.c int add(int a,int b) { int c; c=a+b; return c; } // int xxx(){ } Khai báo biến định nghĩa trước module khác cú pháp: extern ; Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 29 Tập tin header Tập tin my_math.h #if !defined(MY_MATH_HEADER) #define MY_MATH_HEADER extern int add(int,int); // extern int xxx(); … #endif Phần mô tả cho hàm add Nếu lúc biên dịch chưa thấy tên (MY_MATH_HEADER) định nghĩa tên (MY_MATH_HEADER) thực biên dịch cho đoạn mã nguồn nằm phần tương ứng khối #if Ngược lại khơng cần định nghĩa tên không cần biên dịch đoạn mã nguồn tương ứng khối if Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 30 Tập tin chương trình Tập tin program.c #include #include #include "my_math.h" int main() { printf("10 + 15 = %d",add(10,15)); return 0; } Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 31 Ôn tập Cho hàm foo sau: Int foo(int x) { return x; return x*x; return x*x*x; } Hãy cho biết lời gọi hàm foo(5) trả giá trị Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Trong hàm đây, cho biết hàm định nghĩa cú pháp: A int sum(int a, int b) {int sum; sum = a+b;} B void sum(int a, int b) {int sum; sum = a+b; return (sum)} C maximum(int a, int b) {int c; return (c = a >= b? a:b);} D void fun(void) { printf( “Hello! Everyone”); void fun1() {printf ( “Please sit down”);} } Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 32 Ơn tập Cho hàm : unsigned func(unsigned num) { unsigned k; { k = num % 10; num /= 10; } while(num); return k; } Cho biết lời gọi hàm func(26) trả giá trị Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Hãy cho biết kết xuất đoạn chương trình sau: void fun(int x, int y, int z) { z = x*x + y*y; } void main() { int z = 68; fun(5, 2, z); printf(“%d”, z); } Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 33 Ôn tập Cho hàm : int fun(int a, int b){ return ++a*b++; } Hãy cho biết lời gọi hàm fun(fun(3, 4), 5); trả kết Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Cho biết kết xuất đoạn chương trình sau: char st[] = "hello friend!"; void func1(int i) { printf(“%c”, st[i]); if(i 1) printf(“%d”, i ); } Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 36 Ơn tập 11 Giá trị lời gọi hàm Recur(0) bao nhiêu? 12 Giá trị func3(6, 3) bao nhiêu? int Recur (int n) { if (n==0) return 0; else return Recur(n-1) + n*n*n; } int func3(int m, int n) { if (m < n) return 0; else return + func3(m-n, n); } Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 37 Ơn tập 13 Nhận định sau KHƠNG ĐÚNG đệ quy vơ hạn A Đệ quy vơ hạn khiến cho chương trình bị treo B Đệ quy vơ hạn tiêu tốn tồn bộ nhớ máy tính khiến cho chương trình kết thúc cách bất thường C Gọi đệ quy gián tiếp gây đệ quy vô hạn D Nếu lời gọi đệ quy không đến điểm dừng (base case) đệ quy vơ hạn xuất Đại học Bách Khoa TpHCM Khoa KH & KT Máy Tính Chương 6: Hàm tổ chức chương trình Mơn: Nhập mơn lập trình Slide 38 ... chương trình lớn Đưa phần mô tả vào tập tin riêng Tập tin header (mơ tả hàm): *.h Có thể sử dụng lại nhiều tập tin khác dự án Đưa phần thực vào tập tin riêng Sử dụng thị #if... nghĩa lặp lại” (redefinition) Tập tin thực (implementation): *.c Có thể sử dụng lại nhiều tập tin khác dự án Đưa hàm main() vào tập tin riêng Khai báo có sử dụng hàm tập tin *.h nêu Gọi hàm Đại... Nhập mơn lập trình Slide Khái niệm Hàm đơn vị xử lý Nhận tham số đầu vào; xử lý tính tốn; trả kết đầu Các tham số đầu vào Các lệnh xử lý hàm Giá trị trả đầu Lợi ích hàm: Tránh lặp