Giáo trình Hệ điều hành - Chương 7: Toán tử số học

pdf 16 trang huongle 3100
Bạn đang xem tài liệu "Giáo trình Hệ điều hành - Chương 7: Toán tử số học", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_he_dieu_hanh_chuong_7_toan_tu_so_hoc.pdf

Nội dung text: Giáo trình Hệ điều hành - Chương 7: Toán tử số học

  1. Khoa CNTT LTHĐT Chương 7 TOÁN TỬ SỐ HỌC GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 1 ThS. Nguyễn Tấn Trần Minh Khang
  2. Khoa CNTT LTHĐT 0. MỤC TIÊU Hiểu được các toán tử số học là gì? Hiểu được vai trò của toán tử số học trong C++ GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 2 ThS. Nguyễn Tấn Trần Minh Khang Click to see Figure 1-2
  3. Khoa CNTT LTHĐT 1. BÀI TOÁN DẪN NHẬP Bài toán: Viết chương trình nhập vào hai phân số. Tính tổng giữa chúng và xuất kết quả băng phương pháp lập trình hướng đối tương. Chương trình #include class CPhanSo { private: int tu; int mau; public: void Nhap(); void Xuat(); CPhanSo Tong(CPhanSo); }; GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 3 ThS. Nguyễn Tấn Trần Minh Khang
  4. Khoa CNTT LTHĐT 1. BÀI TOÁN DẪN NHẬP void main() { CPhanSo a,b,kq; a.Nhap(); b.Nhap(); kq = a.Tong(b); printf("Tong la:"); kq.Xuat(); } GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 4 ThS. Nguyễn Tấn Trần Minh Khang
  5. Khoa CNTT LTHĐT 1. BÀI TOÁN DẪN NHẬP void CPhanSo::Nhap() { cout >tu; cout >mau; } void CPhanSo::Xuat() { cout<<tu<<“/”<<mau; } GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 5 ThS. Nguyễn Tấn Trần Minh Khang
  6. Khoa CNTT LTHĐT 1. BÀI TOÁN DẪN NHẬP CPhanSo CPhanSo::Tong(CPhanSo x) { CPhanSo temp; temp.tu= tu*x.mau + mau*x.tu; temp.mau= mau*x.mau; return temp; } kq = a.Tong(b); x y temp a c ad bc b d bd GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 6 ThS. Nguyễn Tấn Trần Minh Khang
  7. Khoa CNTT LTHĐT 2. KHÁI NIỆM Trong ngôn ngữ lập trình C có các toán tử số học như sau: Toán tử cộng (operator +) Toán tử trừ (operator -) Toán tử nhân (operator *) Toán tử chia (operator /) Toán tử mod (operator %) Toán tử cộng bằng (operator +=) Toán tử trừ bằng (operator -=) Toán tử nhân bằng (operator *=) Toán tử chia bằng (operator /=) Toán tử mod bằng (operator %=) Toán tử tăng một (operator ++) Toán tử giảm một (operator ) GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 7 ThS. Nguyễn Tấn Trần Minh Khang
  8. Khoa CNTT LTHĐT 3. ĐẶT VẤN ĐỀ Hãy khai báo và định nghĩa các phương thức và toán tử cần thiết để các câu lệnh sau có thể thực hiện. Các câu lệnh 11.CPhanSo a,b,kq; 12.cin>>a>>b; 13.kq = a + b; 14.cout<<"Tong:"<<kq; 15.kq = a – b; 16.cout<<"Hieu:"<<kq; 17.kq = a * b; 18.cout<<"Tich:"<<kq; 19.kq = a / b; 20.cout<<"Thuong:"<<kq; GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 8 ThS. Nguyễn Tấn Trần Minh Khang
  9. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ Để giải quyết vấn đề trên ta phải khai báo và định nghĩa các toán tử số học cho lớp đối tượng CPhanSo. Khai báo lớp class CPhanSo { private: int tu; int mau; public: CPhanSo Tong(CPhanSo); CPhanSo operator+(CPhanSo); CPhanSo operator-(CPhanSo); CPhanSo operator*(CPhanSo); CPhanSo operator/(CPhanSo); }; GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 9 ThS. Nguyễn Tấn Trần Minh Khang
  10. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ CPhanSo CPhanSo::operator+ (CPhanSo x) { CPhanSo temp; temp.tu = tu*x.mau+mau*x.tu; temp.mau = mau*x.mau; return temp; } CPhanSo CPhanSo::operator- (CPhanSo x) { CPhanSo temp; temp.tu = tu*x.mau-mau*x.tu; temp.mau = mau*x.mau; return temp; } GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 10 ThS. Nguyễn Tấn Trần Minh Khang
  11. Khoa CNTT LTHĐT 4. GIẢI QUYẾT VẤN ĐỀ CPhanSo CPhanSo::operator* (CPhanSo x) { CPhanSo temp; temp.tu = tu*x.tu; temp.mau = mau*x.mau; return temp; } CPhanSo CPhanSo::operator/ (CPhanSo x) { CPhanSo temp; temp.tu = tu*x.mau; temp.mau = mau*x.tu; return temp; }GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 11 ThS. Nguyễn Tấn Trần Minh Khang
  12. Khoa CNTT LTHĐT 5. BÀI TẬP VỀ NHÀ Bài 01: Hãy định nghĩa các toán tử +,-,*,/,+=,-=,*=,/=,++, cho lớp đối tượng CPhanSo Bài 02: Hãy định nghĩa các toán tử +,-,*,/,+=,-=,*=,/= cho lớp đối tượng CSoPhuc. Bài 03: Hãy định nghĩa các toán tử *,/,*=,/= cho lớp đối tượng CDonThuc. Bài 04: Hãy định nghĩa các toán tử +,-,*,/,+=,-=,*=,/= cho lớp đối tượng CDaThuc. GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 12 ThS. Nguyễn Tấn Trần Minh Khang
  13. Khoa CNTT LTHĐT 6. BÀI TẬP NỘP MOODLE Thiết kế và xây dựng các lớp cần thiết để thực hiện hàm main như sau: 11. void main() 12. { 13. CPhanSo a,b,kq; 14. cin>>a>>b; 15. kq = a + b; 16. cout<<"Tong:"<<kq; 17. kq = a – b; 18. cout<<"Hieu:"<<kq; 19. kq = a * b; 20. cout<<"Tich:"<<kq; 21. kq = a / b; 22. cout<<"Thuong:"<<kq; 23. 24. } GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 13 ThS. Nguyễn Tấn Trần Minh Khang
  14. Khoa CNTT LTHĐT 6. BÀI TẬP NỘP MOODLE 11. void main() 12. { 13. 14. a += b; 15. cout<<"a="<<a; 16. a -= b; 17. cout<<"a="<<a; 18. a *= b; 19. cout<<"a="<<a; 20. a /= b; 21. cout<<"a="<<a; 22. a++; 23. cout<<"a="<<a; 24. a ; 25. cout<<"a="<<a; 26. } GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 14 ThS. Nguyễn Tấn Trần Minh Khang
  15. Khoa CNTT LTHĐT 6. BÀI TẬP NỘP MOODLE Tương tự cho bài 02 đến bài 04 (chỉ thực hiện những toán tử cho các bài tương ứng) GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 15 ThS. Nguyễn Tấn Trần Minh Khang
  16. Khoa CNTT LTHĐT 6. BÀI TẬP NỘP MOODLE Yêu cầu chung: Làm tất cả các bài tập trong một workspace có tên là MSSV_BT07. Trong workspace có 4 project tương ứng với từng bài tập. Đặt tên lần lược là (Bai01, Bai02, Bai03, Bai04 Nộp bài tập lên hệ thống Moodle theo qui định. GV. Nguyễn Sơn Hoàng Quốc Chương 07 - 16 ThS. Nguyễn Tấn Trần Minh Khang