Ôn tập: điều phối máy tính
Thuộc phần Lập trình hướng đối tượng trong hành trình C của Coddy. Bài học 37 trên 61.
Thử thách
DễTạo một máy tính bằng bảng điều phối. Bạn sẽ tạo một mảng con trỏ hàm ánh xạ mã phép toán với hàm tương ứng, sau đó dùng mảng này để thực hiện phép tính.
Viết chương trình:
- Tạo một
typedefcó tênOperationcho con trỏ hàm nhận hai tham sốintvà trả về mộtint - Định nghĩa bốn hàm số học:
add: trả về a + bsub: trả về a - bmul: trả về a * bdivide: trả về a / b (phép chia lấy phần nguyên)
- Trong
main, tạo một bảng điều phối: một mảng gồm 4 con trỏ hàmOperation, trong đó chỉ số 0 là add, chỉ số 1 là sub, chỉ số 2 là mul và chỉ số 3 là divide - Đọc ba đầu vào: hai số nguyên và một mã phép toán (0-3)
- Dùng mã phép toán làm chỉ số để truy cập bảng điều phối và gọi hàm tương ứng
- In ra kết quả
Bạn sẽ nhận ba đầu vào: số thứ nhất, số thứ hai và mã phép toán (0 cho add, 1 cho sub, 2 cho mul, 3 cho divide).
Đầu ra của bạn phải là một số nguyên duy nhất: kết quả của phép toán:
7Trong ví dụ này, với đầu vào là 10, 3, 1: mã phép toán 1 chọn sub từ bảng điều phối, nên ta tính 10 - 3 = 7.
Điểm mấu chốt ở đây là dùng chỉ số mảng để chọn hàm: không cần câu lệnh if hay switch. Bảng điều phối của bạn sẽ có dạng:
Operation ops[4] = {add, sub, mul, divide};Sau đó gọi hàm bằng: ops[code](a, b)
Tự làm thử
#include <stdio.h>
// TODO: Tạo một typedef tên là 'Operation' cho con trỏ hàm (function)
// nhận hai tham số kiểu int và trả về một giá trị kiểu int
// TODO: Định nghĩa bốn hàm số học: add, sub, mul, divide
int main() {
// Đọc đầu vào
int a, b, code;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &code);
// TODO: Tạo bảng điều phối (mảng gồm 4 con trỏ hàm Operation)
// Operation ops[4] = { ... };
// TODO: Dùng mã phép toán để gọi hàm phù hợp
// và lưu kết quả
int result;
// In ra kết quả
printf("%d\n", result);
return 0;
}Tất cả bài học trong Lập trình hướng đối tượng
1Kiến thức cơ bản về lập trình mô-đun
Tệp tiêu đềInclude guardTệp mã nguồnHàm staticÔn tập: Máy tính mô-đun4Tính đóng gói
Khái niệm con trỏ mờĐịnh nghĩa struct mờHàm truy xuất và hàm gánKiểm tra tính hợp lệ trong hàm gánÔn tập: Hộp bí mật7Con trỏ hàm
Khai báo con trỏ hàmGọi con trỏ hàmDùng typedef cho con trỏ hàmTruyền hàm làm đối sốÔn tập: điều phối máy tính2Đối tượng và phương thức
Struct dưới dạng đối tượngCon trỏ 'Self'Tính đúng đắn của constCon trỏ và giá trịPhương thức hỗ trợÔn tập: trình quản lý Point5Dự án: Tài khoản ngân hàng đơn giản
Thiết lập dự ánTriển khai tài khoản3Vòng đời đối tượng
Mẫu hàm khởi tạoMẫu hàm hủyKhởi tạo trên ngăn xếpSao chép sâuÔn tập: lớp bao bọc chuỗi6Kế thừa bằng cách kết hợp
Nhúng structQuy tắc thành viên đầu tiênTruy cập thành viên lớp chaUpcastingÔn tập: hệ phân cấp hình dạngTự luyện tập: Trình biên dịch C online