Bài giảng Nhập môn về lập trình - Chương 6: Hàm (Function)
lượt xem 3
download
Bài giảng Nhập môn về lập trình - Chương 6: Hàm (Function) với mục tiêu giúp sinh viên biết xác định được thành phần của một hàm, hiện thực được giải thuật dưới dạng hàm, giải thích được các kiểu truyền tham số trong C, tổ chức được các chương trình lớn, gồm nhiều hàm,... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng,
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: 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 # Lập trình theo 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 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Nhập môn lập trình: Chương 2 - Trần Minh Thái
86 p | 106 | 8
-
Bài giảng Nhập môn Java: Bài 4 – Võ Tấn Dũng
74 p | 92 | 7
-
Bài giảng Nhập môn lập trình: Chương 1 - Trần Minh Thái
58 p | 102 | 7
-
Bài giảng Nhập môn lập trình: Bài 1 - Trần Duy Thanh
70 p | 188 | 5
-
Bài giảng Nhập môn lập trình - Bài 2: Giới thiệu ngôn ngữ lập trình C
18 p | 108 | 5
-
Bài giảng Nhập môn lập trình - Bài 5: Câu lệnh lặp
49 p | 100 | 4
-
Bài giảng Nhập môn lập trình - Bài 1: Các khái niệm cơ bản về lập trình
21 p | 127 | 4
-
Bài giảng Nhập môn về lập trình - Chương 9: Sử dụng tập tin (file)
12 p | 39 | 3
-
Bài giảng Nhập môn về lập trình - Chương 8: Con trỏ (Pointer)
17 p | 34 | 3
-
Bài giảng Nhập môn về lập trình - Chương 7: Mảng (Array)
8 p | 44 | 3
-
Bài giảng Nhập môn về lập trình - Chương 5: Vòng lặp while, do-while, for
20 p | 42 | 3
-
Bài giảng Nhập môn về lập trình - Chương 4: Lệnh if-else, lệnh switch
14 p | 42 | 3
-
Bài giảng Nhập môn về lập trình - Chương 3: Tổ chức dữ liệu trong chương trình
26 p | 36 | 3
-
Bài giảng Nhập môn về lập trình - Chương 2: Cấu trúc và thành phần của chương trình C
27 p | 48 | 3
-
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 p | 56 | 3
-
Bài giảng Nhập môn lập trình: Bài 3 - Trần Duy Thanh
16 p | 94 | 3
-
Bài giảng Nhập môn về lập trình - Chương 5: Cấu trúc lặp
34 p | 89 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn