Bài giảng Nhập môn về lập trình - Chương 6: Hàm (Function)

Chương 6  
Hꢀm (Function)  
Presenter:  
Nhập môn về lập trình (C6)  
Slide 1  
Learning outcomes  
L.O.4.1 – Xác định được thành phần của một hàm.  
L.O.4.2 – Hiện thực được giải thuật dưới dạng hàm.  
L.O.4.3 – Giải thích được các kiểu truyền tham số trong C.  
L.O.4.4 – Tổ chức được các chương trình lớn, gồm nhiều  
hàm.  
L.O.3.5 – Hiện thực được các giải thuật đệ quy bằng ngôn  
ngữ C và hiểu được nguyên tắc hoạt động của nó.  
Nhập môn về lập trình (C6)  
Slide 2  
Tổ chức chương trꢁnh C  
Cꢂu trꢃc module  
Tiền xꢄ lꢅ:  
Mô tꢃ module  
• #include  
• #define  
#<Tiꢀn xꢁ lꢂ>  
Khai bꢆo / định nghꢇa:  
• Hằng  
Khai bꢄo / đꢅnh nghꢆa  
Hꢇm 1  
• Biꢈn  
• Hꢀm/biꢈn extern  
• Mô tả hꢀm  
Cꢆc hꢀm:  
Hꢇm 2  
• main được chạy đầu tiên.  
• Định nghꢇa ngang cꢂp,  
không lồng nhau.  
Hꢇm 3  
• Được gꢉi mới chạy.  
Nhập môn về lập trình (C6)  
Slide 3  
Tổ chức chương trꢁnh C  
Project/solution : chương trꢁnh  
Mô tꢃ module  
#<Tiꢀn xꢁ lꢂ>  
Khai bꢄo / đꢅnh nghꢆa  
Lập trꢁnh theo module  
Hꢇm 1  
Hꢇm 2  
Hꢇm 3  
Mô tꢃ module  
#<Tiꢀn xꢁ lꢂ>  
Khai bꢄo / đꢅnh nghꢆa  
Hꢇm 1  
Hꢇm 2  
Hꢇm 3  
Mô tꢃ module  
#<Tiꢀn xꢁ lꢂ>  
Khai bꢄo / đꢅnh nghꢆa  
Chia ra  
nhiꢀu  
.cpp  
Hꢇm 1  
Hꢇm 2  
Hꢇm 3  
Mô tꢃ module  
#<Tiꢀn xꢁ lꢂ>  
Khai bꢄo / đꢅnh nghꢆa  
Hꢇm 1  
Hꢇm 2  
Hꢇm 3  
Source file  
Nhập môn về lập trình (C6)  
Slide 4  
Hàm là gì ?  
Hꢀm lꢀ phương tiện phân chia code của module ra nhiều  
đơn vị nhỏ hơn để dễ quản lꢅ vꢀ sꢄa chữa.  
Một dꢈ ꢄn/giꢃi phꢄp/chương trꢉnh = tập hợp N module  
Một Module = tập hợp N hꢇm  
Nhập môn về lập trình (C6)  
Slide 5  
Cꢆc vꢂn đề của hꢀm  
Khai bꢄo hꢇm  
extern  
Mô tả trước  
Hꢇm  
Đꢅnh nghꢆa hꢇm  
Định nghꢇa biꢈn  
Lệnh thực thi  
Gꢊi hꢇm  
Trực tiꢈp  
Giꢆn tiꢈp  
Truyꢀn tham sꢋ hꢇm  
Trị  
Tham khảo  
Nhập môn về lập trình (C6)  
Slide 6  
Khai bꢆo/định nghꢇa hàm  
Cú pháp :  
[extern|static] [ret_type] name ([arglist])  
{
[statements]*  
[return expr;]  
[statements]*  
[return expr;]  
extern | static  
Ret_type Name( arglist )  
}
{
}
Đꢅnh nghꢆa biꢌn  
[statements]*  
[return expr;]  
[statements]*  
[return expr;]  
Nhập môn về lập trình (C6)  
Slide 7  
Khai bꢆo/định nghꢇa hàm  
Cꢃ phꢆp  
Cú pháp :  
[extern|static] [ret_type] name ([arglist])  
{
[statements]*  
[return expr;]  
[statements]*  
[return expr;]  
}
extern (khai bꢆo): hàm đꢊ được định nghꢇa trong module  
khꢆc.  
static (định nghꢇa): hàm chỉ được gꢉi cục bộ trong  
module chứa hàm này, không thể lꢀ đối tượng của extern.  
Nhập môn về lập trình (C6)  
Slide 8  
Khai bꢆo/định nghꢇa hàm  
Trị trả về, tham số, gꢉi hꢀm  
return expr; kꢈt thꢃc hꢀm, trꢋ về vꢀ trả trị lꢀ expr. Giá trị  
của expr sẽ được gꢋi về nơi gꢉi hàm để sꢄ dụng.  
arglist : là danh sách các tham sꢋ hình thức (hꢀm có  
thể không có tham số), mỗi tham số được cách nhau bꢋi  
dꢂu phꢌy (,) và được mô tả theo cꢃ phꢆp như sau :  
type parameter_name [=defaultvalue]  
defaultvalue là giá trị gán mꢍc định cho tham số nꢈu  
không cung cꢂp lúc gꢉi hꢀm.  
Dạng thức gꢉi hꢀm:  
tên_hàm(<danh sꢆch tham số thực>);  
Nhập môn về lập trình (C6)  
Slide 9  
Khai bꢆo/định nghꢇa hàm  
Vꢎ dụ khai bꢆo, định nghꢇa  
Trong phần định nghꢇa hꢀm (function definition), ta phải  
cung cꢂp đầy đủ tên hꢀm, kiểu trị trả về, số lượng tham số,  
kiểu vꢀ tên cꢆc tham số.  
Vꢎ dụ :  
Khai bꢆo hꢀm:  
Tên hꢇm  
Định nghꢇa hꢀm:  
Tham sꢋ hꢉnh thức  
Kiꢍu trꢃ vꢀ  
Trꢅ trꢃ vꢀ  
Nhập môn về lập trình (C6)  
Slide 10  
Khai bꢆo/định nghꢇa hàm  
Vꢎ dụ gꢉi hꢀm  
Nꢈu hꢀm được định nghꢇa trong module khꢆc, cần cꢏ khai  
bꢆo extern trước khi gꢉi hꢀm.  
Vꢎ dụ :  
Tham sꢋ thꢈc  
Nhập môn về lập trình (C6)  
Slide 11  
Truyền tham số  
Trong VC++, có 3 cꢆch truyền tham số cho hꢀm :  
• Truyền trị dưới dạng một biểu thức.  
Tham số hꢁnh thức :  
Tham số thực :  
(kiểu tên)  
(biểu thức)  
• Truyền địa chỉ bằng biꢈn con trỏ (kiểu*).  
Tham số hꢁnh thức :  
(kiểu* tên)  
Tham số thực :  
(&tên)  
• Truyền địa chỉ bằng biꢈn tham khảo (kiểu&).  
Tham số hꢁnh thức :  
Tham số thực :  
(kiểu& tên)  
(tên)  
Nhập môn về lập trình (C6)  
Slide 12  
Hꢀm cꢏ sꢐn  
C hổ trợ rꢂt nhiều hꢀm trong cꢆc thư viện hꢀm cꢏ sꢐn:  
• stdio.lib  
• conio.lib  
• string.lib  
• math.lib  
• . . .  
Nhập môn về lập trình (C6)  
Slide 13  
Hàm đệ qui  
Định nghꢇa  
Hàm mà trong thân hꢀm có gꢉi lại chꢎnh nꢏ thꢁ được gꢉi lꢀ  
hꢀm đệ qui.  
Một bꢀi toꢆn muốn xꢄ lꢅ theo dạng hꢀm đệ qui phải đưa  
được về dạng :  
Fn(x) = G(Fn-1(x))  
Vꢎ dụ :  
n! = n * (n-1)!  
S(n) = n + S(n-1)  
Fibo(n) = Fibo(n-1) + Fibo(n-2)  
Nꢈu cꢏ 2 hꢀm A, B mꢀ trong hꢀm A cꢏ gꢉi hꢀm B vꢀ trong  
hꢀm B cꢏ gꢉi lại A thꢁ được gꢉi lꢀ đệ qui tương hổ.  
Nhập môn về lập trình (C6)  
Chương 5 : LặSp &liđdệequ1i 4  
Hàm đệ qui  
Vꢎ dụ tꢎnh ex  
Hàm ex tꢎnh theo triển khai Maclaurin:  
ex = 1 + x1/1! + x2/2! + ... + xn-1/(n-1)! + xn/n!  
cꢏ thể viꢈt lại thꢀnh:  
ex(n) = ex(n-1) + xn/n!  
Ngoꢀi ra, cꢆc hꢀm xn vꢀ n! cꢑng cꢏ thể tꢎnh đệ qui  
xn = xn-1 . x  
n! = (n-1)! . n  
Trong đꢏ, n giảm dần mỗi lần gꢉi đệ qui cho nên ta cần  
kiểm soꢆt sự trꢋ về của hꢀm bằng điều kiện ban đầu  
• ex(0) = 1 : khi n=0 thꢁ trả về trị 1.  
• x0 = 1 : khi n=0 thꢁ trả về trị 1.  
• 1! = 1 : khi n=1 thꢁ trả về trị 1.  
Nhập môn về lập trình (C6)  
Chương 5 : LặSp &liđdệequ1i 5  
Hꢀm đệ qui  
Cꢆc hꢀm đệ qui  
Nhập môn về lập trình (C6)  
Slide 16  
Bài toán tháp Hà nội  
Chuyển chồng đꢇa từ cột A sang cột C, cột B trung gian.  
• Mỗi lần chỉ chuyển một đꢇa.  
• Đꢇa nhỏ nằm trên đꢇa lớn.  
A
B
C
Nhập môn về lập trình (C6)  
Slide 17  
Phân tích và giải thuật  
Hꢀnh động chuyển chồng n đꢇa từ cột A sang cột C (cột B  
trung gian) được phân tꢎch ra thꢀnh cꢆc hꢀnh động sau :  
• Chuyển chồng n-1 đꢇa từ cột A sang cột B (cột C trung gian).  
• Chuyển đꢇa từ cột A sang cột C.  
• Chuyển chồng n-1 đꢇa từ cột B sang cột C (cột A trung gian).  
Nhập môn về lập trình (C6)  
Slide 18  
Hàm inline  
Hàm inline là hàm không dùng cách gꢉi thông thường mà  
chuơng trình dịch sẽ thay gꢉi hàm bằng chính thân hàm  
vào chỗ gꢉi.  
Vꢎ dụ  
Nhập môn về lập trình (C6)  
Slide 19  
pdf 19 trang yennguyen 17200 Free
Bạn đang xem tài liệu "Bài giảng Nhập môn về lập trình - Chương 6: Hàm (Function)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_nhap_mon_ve_lap_trinh_chuong_6_ham_function.pdf