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

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ó.

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

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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

Trang 6

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

Trang 7

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

Trang 8

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

Trang 9

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

Trang 10

Tải về để xem bản đầy đủ

pdf 19 trang xuanhieu 5660
Bạn đang xem 10 trang mẫu của 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

Tóm tắt nội dung tài liệu: Bài giảng Nhập môn về lập trình - Chương 6: Hàm (Function)

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 
 Mô tảmodule  Tiền xử lý: 
 • #include 
 # • #define 
 Khai báo / định nghĩa  Khai báo / định nghĩa: 
 • Hằng 
 Hàm 1 • Biến 
 • Hàm/biến extern 
 • Mô tả hàm 
 Hàm 2  Các hàm: 
 • 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 
 # 
 Khai báo / định nghĩa 
  Lập trình theo module Hàm 1 
 Hàm 2 
 Hàm 3 
 Mô tả module 
 # 
 Khai báo / định nghĩa 
 Hàm 1 
 Hàm 2 
 Hàm 3 
 Mô tả module 
 # 
 Khai báo / định nghĩa 
 Hàm 1 Chia ra 
 Hàm 2 nhiều 
 Hàm 3 .cpp 
 Mô tả module 
 # 
 Khai báo / định nghĩa 
 Hàm 1 
 Hàm 2 
 Source file Hàm 3 
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(); 
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 : (kiểu tên) 
  Tham số thực : (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 : (kiểu& tên) 
  Tham số thực : (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 
 • . . . 
 Tham khảo HELP của VC++ 
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ổ. 
 Chương 5 : Lặp & đệ qui 
Nhập môn về lập trình (C6) Slide 14 
 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 . 
 Chương 5 : Lặp & đệ qui 
Nhập môn về lập trình (C6) Slide 15 
 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 

File đính kèm:

  • pdfbai_giang_nhap_mon_ve_lap_trinh_chuong_6_ham_function.pdf