Bài giảng Giới thiệu lập trình: Hàm – Cơ bản trình bày các khái niệm chung, định nghĩa hàm, sử dụng hàm, truyền tham số, phạm vi biến. Đây là một tài liệu hữu ích dành cho các bạn sinh viên và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
Giới Thiệu Lập Trình Hàm – Cơ Bản TS Lê Nguyên Khôi Trường Đại học Công nghệ, ĐHQGHN Nội Dung Khái niệm chung Định nghĩa hàm Sử dụng hàm Truyền tham số Phạm vi biến Giới Thiệu Lập Trình Khái Niệm Chung Giải toán phức tạp Chia nhỏ toán ban đầu thành toán nhỏ hơn, đơn lẻ, dễ giải Xử lý toán nhỏ Kết hợp lại để giải tốn ban đầu Ngơn ngữ lập trình bậc cao Cung cấp công cụ để phân tách xử lý tốn nhỏ (khối lắp ghép - mơ-đun hóa chương trình) Lợi ích Tái sử dụng mã, dễ quản lý Tránh đoạn mã giống lặp lặp lại Tìm lỗi, gỡ lỗi dễ dàng, nhanh chóng Giới Thiệu Lập Trình Khái Niệm Chung Chia nhỏ tốn, ví du: Cho độ dài đoạn thẳng, đoạn thẳng tạo thành tam giác gì? đoạn thẳng có tạo thành tam giác? đoạn thẳng có tạo thành tam giác đều? đoạn thẳng có tạo thành tam giác cân? đoạn thẳng có tạo thành tam vng? … đoạn thẳng có tạo thành tam giác vng cân? Giới Thiệu Lập Trình Khái Niệm Chung Tái sử dụng mã, ví du: Tính ước chung lớn số nguyên dương Kiểm tra số nguyên tố Tối giản phân số Kiểm tra số có chia hết cho Giới Thiệu Lập Trình Hàm (Phương Thức) Hàm (phương thức) khối câu lênh (phải) đặt tên, để thực thao tác xác định trước Hàm cách hữu hiệu để cấu trúc chương trình xử lý: Đoạn mã dùng lại nhiều lần Hàm sử dụng Hàm tính bậc (sqrt(x)) Hàm tính số mũ (pow(x,y)) Hàm tạo số ngẫu nhiên (rand()) Giới Thiệu Lập Trình Hàm – Đặc Điểm Thực số thao tác cung cấp kết Ví dụ: bậc (sqrt(x)) Dữ liệu đầu vào: số Thao tác: tính bậc hai Dữ liệu trả về: bậc hai số đố Dạng chung Có thể cần liệu đầu vào Thực số thao tác Có thể trả liệu sau xử lý Để thuận tiện, thao tác đặt tên, tên hàm Giới Thiệu Lập Trình Hàm – Tính ܺ ௬ Dữ liệu đầu vào số (int, double, …) đặt tên x, y Dữ liệu trả số (int, double, …) đặt tên ketQua Thao tác Thực phép nhân lặp lặp lại Ví dụ: 2ସ = 16 = ∗ ∗ ∗ Tên hàm power Giới Thiệu Lập Trình Định Nghĩa Hàm Trong C++ Cú pháp: KiểuDLTrảVề TênHàm (DanhSáchDLĐầuVào) { // danh sách mệnh lệnh // thân hàm } Kiểu liệu trả (KiểuDLTrảVề) int, double, char, … Nếu hàm khơng trả gì, kiểu liệu trả void Tên hàm (TênHàm): phải có Danh sách liệu đầu vào (DanhSáchDLĐầuVào) Danh sách tham số (tham số có kiểu) Giới Thiệu Lập Trình Định Nghĩa Hàm Trong C++ int main() { return 0; } Sử dụng câu lệnh return để trả kết hàm Thực câu lệnh return trả kết hàm, kết thúc thao tác hàm Thông thường return câu lệnh cuối thân hàm (định nghĩa hàm) Kiểu liệu trả sử dụng câu lệnh return phải giống với kiểu liệu trả hàm (KiểuDLTrảVề) Giới Thiệu Lập Trình Xác Định Loại Tam Giác tạo thành tam giác bool laTamGiacD(double a, double b, double c) { return (a == b && b == c); } int main() { … … … return 0; } Giới Thiệu Lập Trình 23 Xác Định Loại Tam Giác tạo thành tam giác cân bool laTamGiacC(double a, double b, double c) { return (a == b || b == c || c == a); } int main() { … … … return 0; } Giới Thiệu Lập Trình 24 Xác Định Loại Tam Giác tạo thành tam giác vuông bool laTamGiacV(double a, double { double sqrCanhA = a * a; double sqrCanhB = b * b; double sqrCanhC = c * c; return (sqrCanhA == sqrCanhB || sqrCanhB == sqrCanhC || sqrCanhC == sqrCanhA } b, double c) + sqrCanhC + sqrCanhA + sqrCanhB); int main() { … … … return 0; } Giới Thiệu Lập Trình 25 Xác Định Loại Tam Giác tạo thành tam giác vuông cân bool laTamGiacVC(double a, double b, double c) { return (laTamGiacV(a, b, c) && laTamGiacC(a, b, c)); } int main() { … … … return 0; } Giới Thiệu Lập Trình 26 Xác Định Loại Tam Giác Cho độ dài đoạn thẳng, đoạn thẳng tạo thành tam giác gì? đoạn thẳng có tạo thành tam giác? đoạn thẳng có tạo thành tam giác đều? đoạn thẳng có tạo thành tam giác cân? đoạn thẳng có tạo thành tam vng? đoạn thẳng có tạo thành tam giác vng cân? Suy luận lơ-gic: Có cần kiểm tra tam giác trước xác định loại tam giác không? Giới Thiệu Lập Trình 27 Nhập Số Nguyên Dương int main() { int a, b; { cin >> a; } while (a > b; } while (b > soND; } while (soND > soND; } while (soND > soND; } while (soND 0; i ) ketQua = ketQua + y; } int main() { int a, b, tich; cin >> a >> b; multiply(a, b, tich); cout