Bài giảng Kỹ thuật lập trình - Chương 5: Xây dựng và sử dụng hàm, cung cấp cho người học những kiến thức như: Vai trò của hàm; Cấu trúc hàm; Lời gọi hàm và vấn đề truyền tham số; Hàm đệ quy. Mời các bạn cùng tham khảo!
Trang 1CHƯƠNG 5: XÂY DỰNG VÀ SỬ DỤNG HÀM
BÀI GIẢNG HỌC PHẦN
KỸ THUẬT LẬP TRÌNH
Trang 35.1 Vai trò của hàm (1)
• Hàm:
- Chương trình con cho phép thực hiện một nhiệm vụ
cụ thể, chuyên biệt cho chương trình chính
- Được định nghĩa với một tên gọi xác định, có thể cónhiều tham số đầu vào/đầu ra
- Thường trả về một kết quả thông qua tên hàm (cóthể không)
• Vai trò của hàm:
- Cho phép chia chương trình thành những phần nhỏ
để có thể dễ dàng xây dựng, quản lý, hiệu chỉnh phương pháp lập trình có cấu trúc
- Có thể được gọi thực hiện lặp đi lặp lại nhiều lầnvới các tham số khác nhau khả năng tái sử dụng
Trang 45.1 Vai trò của hàm (2)
• Phân loại hàm:
- Hàm chuẩn (các hàm do trình biên dịch đã xây dựngsẵn, muốn sử dụng chúng cần khai báo tệp tiêu đềtương ứng, ví dụ: muốn sử dụng hàm sqrt(x) cầnkhai báo tệp tiêu đề math.h)
Trang 55.2 Cấu trúc hàm (1)
kiểu_dữ_liệu_trả_về tên_hàm(danh_sách_tham_số){
về giá trị thì dùng từ khóa void
- tên_hàm: đặt theo quy định đặt tên, phản ánh nộidung hàm
- danh_sách_tham_số: là các tham số hình thức, đượckhai báo giống như khai báo biến
Trang 6- biểu_thức: cho giá trị là giá trị trả về qua tên hàm
Trang 85.2 Cấu trúc hàm (4)
• Ví dụ: (tiếp)
- Hàm tính diện tích tam giác:
float dttg(float x, float y, float z)
Trang 95.3 Lời gọi hàm và vấn đề truyền tham số
• Lời gọi hàm
• Vấn đề truyền tham số
Trang 10Lời gọi hàm
• Cú pháp:
tên_hàm(danh_sách_tham_số)trong đó: danh_sách_tham_số gồm các tham số thựcsự
- Ví dụ:
tong(4,5)dttg(3,4,5)
…
Trang 11Vấn đề truyền tham số
• Tham số hình thức: khai báo trong cấu trúc hàm
• Tham số thực sự: đặt trong lời gọi hàm
• Các tham số hình thức và các tham số thực sự cần
“tương thích” với nhau
• Khi xây dựng hàm, ta không cần quan tâm đến giátrị của các tham số thực sự là bao nhiêu mà chỉ cầnquan tâm đến việc cần thực hiện các thao tác tínhtoán và xử lý dữ liệu dựa trên các tham số hình thứcnhư thế nào để thu được kết quả trả về qua tên hàm
• Khi có lời gọi hàm, các tham số thực sự được
“truyền” cho các tham số hình thức (truyền giátrị/địa chỉ)
Trang 15Ví dụ (4)
• Chương trình tính diện tích tam giác: (tiếp)
printf("Dien tich tam giac la: %6.2f",dttg(a,b,c));return 0;
Trang 16Lưu ý
• Khi xây dựng hàm cần chú ý các nguyên tắc sau:
- Mỗi hàm chỉ nên thực hiện 1 công việc duy nhất
- Độc lập với các hàm khác
- Khả năng tái sử dụng càng cao càng tốt
- Các tham số của hàm cần được chỉ rõ
- Trong thân hàm nên sử dụng các biến cục bộ, hạnchế tối đa việc sử dụng các biến toàn cục
- Hàm nên che giấu thông tin
• Bài toán: tính tổng S = a! + b!
Chương trình?
Trang 175.4 Hàm đệ quy (1)
• Trong thân hàm có lời gọi tới chính nó
• Áp dụng với các bài toán có giải thuật mang tính đệquy
• Giá trị trả về của hàm đệ quy cần được xác định rõtrong 2 trường hợp:
- Trường hợp suy biến: hàm trả về một giá trị cụ thể
- Trường hợp đệ quy: giá trị trả về của hàm được xácđịnh qua lời gọi tới chính nó
Ví dụ: Tính n! (n không âm)
Sử dụng hàm đệ quy:
- Trường hợp suy biến: n=0, khi đó 0! = 1
- Trường hợp đệ quy: n>0, khi đó n! = n*(n-1)!
Trang 18if (k>0)
return gt(k-1)*k;else return 1;
}
Trang 205.4 Hàm đệ quy (4)
• Chương trình tìm (a,b) (tiếp)
int ucln(int x, int y)
Trang 22Bài tập
• Bài 1: Viết chương trình tính tổ hợp chập m của nphần tử: Cm
n (m,n do người dùng nhập từ bàn phím)Yêu cầu trong chương trình có sử dụng hàm
• Bài 2 Viết chương trình tìm và in ra màn hình các
số nguyên tố <=n (n nhập từ bàn phím)
Yêu cầu trong chương trình có sử dụng hàm