Bài giảng Nhập môn lập trình: Hàm và kỹ thuật tổ chức chương trình giới thiệu tới người đọc các kiến thức: Tiếp cận top-down, nguyên mẫu hàm, phân biệt một cách tương đối, định nghĩa hàm sqrt3,... Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Nhập môn lập trình
Trình bày: Nguyễn Sơn Hoàng Quốc Email: nshquoc@fit.hcmus.edu.vn
Trang 2Tiếp cận top-down
Chương trình lớn
được chia thành các
chương trình con
nhỏ hơn nhằm dễ dàng phân chia và kiểm tra công việc hay sử dụng lại những bộ phận đã hoàn tất
Nhập
dữ liệu kết quả Xuất
Xử lý 1 Xử lý 2
Tiếp cận top-down trong lập trình cấu trúc
Xử lý
Chương trình
Trang 3Đặc điểm
• Hàm có các đặc điểm sau:
– Có một tên duy nhất
– Là một thành phần độc lập
– Thực hiện một công việc cụ thể
– Có thể nhận các đối số
– Có thể trả về kết quả cho chương trình gọi nó
Các đối tượng
có sẵn ( đối số ) Các kết quả
Hàm
Thực hiện một công việc
cụ thể nào đó
Trang 4Nguyên mẫu hàm
• Trong đó:
trả về gì cả thì kiểu trả về sẽ là void
– function_name: tên của hàm, thể hiện công việc hàm
sẽ làm, nên bắt đầu bằng một động từ
– param-name, param-type: tên và kiểu tương ứng của tham số hình thức (formal parameter)
– Được kết thúc bằng dấu chấm phẩy ;
Trang 5Định nghĩa hàm
return-type function_name(param-type param_name,
…, param-type param_name) {
// statements here…
}
• Trong đó:
– Dòng đầu là tiêu đề hàm (giống nguyên mẫu hàm
nhưng không có ; và bắt buộc phải có tên tham số) – Tiếp theo là thân hàm (đặt trong {}) chứa các câu lệnh hàm sẽ thực hiện (phải có ít nhất một lệnh return nếu kiểu trả về không phải là void)
Trang 6Phân biệt một cách tương đối
hãng phần mềm viết để bán hoặc cho) như:
– Hàm xuất, nhập thông tin: printf(), scanf(), …
– Hàm toán học: sqrt(), pow(), abs(), sin(), …
• Hàm do người lập trình viết thêm như:
– Hàm xuất, nhập thông tin:Nhập số dương – Hàm toán học: Tính căn bậc 3, tính căn bậc
n, tính giai thừa, giải phương trình bậc 1, bậc
2, bậc 4 đối xứng, …
Trang 7Ví dụ về hàm có sẵn
1 void main()
2 {
3 double a = 7, b = 5;
4 double z = 9;
5 printf("a = %d\n", a);
6 printf("b = ");
7 scanf("%lf", &b);
8 z = pow(b, a);
9 }
Đối số
Biến nhận giá trị trả về của hàm
Trang 8Ví dụ về hàm tự viết thêm
• Hàm tính 𝑥3
(𝑥 ∈ ℝ) chưa có trong thư viện math.h
𝑥 → hàm 𝑠𝑞𝑟𝑡(3) → 3 𝑥
• Lưu ý:
𝑥
3
=
𝑝𝑜𝑤(𝑥, 1.0 3 ) 𝑛ế𝑢 𝑥 > 0
−𝑝𝑜𝑤(−𝑥, 1.0 3 ) 𝑛ế𝑢 𝑥 < 0
• Khai báo hàm: double sqrt3 ( double x);
Trang 9Định nghĩa hàm sqrt3()
1 double sqrt3(double x)
2 {
3 double y = 0; // temporary variable
4
5 if (x > 0)
6 y = pow(x, 1/(double)3);
7 else
8 if (x < 0)
9 y = -pow(-x, 1/(double)3);
10
11 return y; // returns result
12.} // end of function
Trang 10Ví dụ minh họa
• Viết hàm tìm giá trị lớn nhất của hai số
nguyên 𝑎 và 𝑏
Trang 11Ví dụ minh họa
2 {
7 }`