1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Slide nmvlt c6

19 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Chương Hàm (Function) Presenter: Nhập mơn lập trình (C6) Slide Learning outcomes 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 Nhập mơn lập trình (C6) Slide Tổ chức chương trình C Cấu trúc module  Tiền xử lý: Mô tả module # Khai báo / định nghĩa Hàm Hàm Hàm Nhập mơn lập trình (C6) • #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 Slide Tổ chức chương trình C Project/solution : chương trình  Lập trình theo module Mô tả module # Khai báo / định nghĩa Hàm Hàm Hàm Mô tả module # Khai báo / định nghĩa Hàm Hàm Hàm Mô tả module # Khai báo / định nghĩa Chia nhiều cpp Hàm Hàm Hàm Mô tả module # Khai báo / định nghĩa Hàm Hàm Source file Nhập môn lập trình (C6) Hàm Slide Hàm ?  Hàm là phương tiện phân chia code module nhiều đơn vị nhỏ để 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 lập trình (C6) Slide Các vấn đề 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 Truyền tham số hàm  Trực tiếp  Gián tiếp  Trị  Tham khảo Nhập mơn lập trình (C6) Slide 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 lập trình (C6) Slide 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 đã định nghĩa module khác  static (định nghĩa): hàm gọi cục module chứa hàm này, là đối tượng extern Nhập mơn lập trình (C6) Slide 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à trả trị là expr Giá trị expr gởi nơi gọi hàm để sử dụng  arglist : danh sách tham sớ hình thức (hàm khơng có tham số), tham số cách bởi dấu phẩy (,) mô tả theo cú pháp sau : type parameter_name [=defaultvalue]  defaultvalue 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 lập trình (C6) Slide 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: Định nghĩa hàm: Tên hàm Tham số hình thức Kiểu trả về Trị trả về Nhập môn 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 định nghĩa module khác, cần có khai báo extern trước gọi hàm Ví dụ : Tham sớ thực Nhập mơn lập trình (C6) Slide 11 Truyền tham số  Trong VC++, có cách truyền tham số cho hàm : • Truyền trị dạng 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 biến trỏ (kiểu*)  Tham số hình thức : (kiểu* tên)  Tham số thực : (&tên) • Truyền địa 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 lập trình (C6) Slide 12 Hàm có sẳn  C hổ trợ rất nhiều hàm 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 lập trình (C6) Slide 13 Hàm đệ qui Định nghĩa  Hàm mà thân hàm có gọi lại chính nó thì 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 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ó hàm A, B mà hàm A có gọi hàm B và hàm B có gọi lại A thì gọi là đệ qui tương hổ Nhập môn lập trình (C6) Chương : Lặp & đệ qui Slide 14 Hàm đệ qui Ví dụ tính ex  Hàm ex tính theo triển khai Maclaurin: ex = + 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 lần gọi đệ qui ta cần kiểm soát trở hàm điều kiện ban đầu • ex(0) = : n=0 thì trả trị • x0 = : n=0 thì trả trị • 1! = : n=1 thì trả trị Nhập môn lập trình (C6) Chương : Lặp & đệ qui Slide 15 Hàm đệ qui Các hàm đệ qui Nhập mơn lập trình (C6) Slide 16 Bài tố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 chuyển đĩa • Đĩa nhỏ nằm đĩa lớn A Nhập mơn lập trình (C6) B C Slide 17 Phân tích 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) phân tích 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 lập trình (C6) Slide 18 Hàm inline  Hàm inline hàm không dùng cách gọi thơng thường mà chuơng trình dịch thay gọi hàm thân hàm vào chỗ gọi  Ví dụ Nhập mơn lập trình (C6) Slide 19

Ngày đăng: 11/04/2023, 18:54