13

Click here to load reader

101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Embed Size (px)

Citation preview

Page 1: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

LLẬẬPP TTRRÌÌNNHH HHƯƯỚỚNNGG ĐĐỐỐII TTƯƯỢỢNNGG

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM TP,HCM KHOA TOÁN – TIN HỌC http://math.hcmup.edu.vn

Page 2: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 2/13

Mục lục

1. Phần 1: Struct .............................................................................................................. 3

1.1. Quản lý học sinh ................................................................................................... 3 1.2. Quản lý học sinh - lớp........................................................................................... 3 1.3. Quản lý học sinh - lớp - khối lớp .......................................................................... 4

2. Phần 2: Làm quen với lập trình hướng đối tượng ................................................... 5

2.1. Quản lý học sinh ................................................................................................... 5 2.2. Quản lý học sinh - lớp........................................................................................... 6 2.3. Quản lý học sinh - lớp - khối lớp .......................................................................... 7 2.4. Thiết kế và cài đặt lớp Phân số............................................................................. 7 2.5. Thiết kế và cài đặt lớp Ngày ................................................................................. 9

3. Phần 3: Làm quen với Contructor, Destructor, Operator ...................................... 9

3.1. Lớp Phân số .......................................................................................................... 9 3.2. Lớp Ngày ............................................................................................................. 10

4. Phần 4: Làm quen với kế thừa ................................................................................. 10

4.1. Quản lý “Lương nhân viên” .............................................................................. 10 4.2. Quản lý các đối tượng hình học ......................................................................... 11

5. Phần 5: Bài tập tổng hợp .......................................................................................... 11

5.1. Lớp Phân số ........................................................................................................ 11 5.2. Trò chơi Caro ...................................................................................................... 12 5.3. Trò chơi Minesweeper ........................................................................................ 12 5.4. Trò chơi Cờ tướng .............................................................................................. 13 5.5. Trò chơi TETRIS ................................................................................................ 13

Page 3: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 3/13

1. Phần 1: Struct

1.1. Quản lý học sinh

1.1.1. Đề bài

Viết chương trình nhập thông tin họ tên học sinh, điểm thi 2 môn Văn, Toán. Tính điểm trung bình, in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 1 Nhap ho ten hoc sinh: Nguyen Van A Toan: 8 Van: 7 Ket qua Ho ten Van Toan Trung binh Nguyen Van A 7.0 8.0 7.5

1.1.2. Hướng dẫn gợi ý

Tổ chức cấu trúc dữ liệu được lưu trữ như sau Struct HocSinh { char HoTen[30]; float Van, Toan, DTB; }

a. Viết hàm nhập thông tin học sinh theo prototype sau void Nhap(HocSinh &hs);

b. Viết hàm xuất thông tin học sinh theo prototype sau void Xuat(HocSinh hs);

c. Viết hàm tính điểm trung bình học sinh theo prototype sau void TinhTB(HocSinh &hs);

d. Viết chương trình nhập thông tin học sinh, tính điểm trung bình và in kết quả học sinh ra màn hình.

1.2. Quản lý học sinh - lớp

1.2.1. Đề bài

Viết chương trình nhập thông tin của một lớp học gồm N học sinh (N<=50), với mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn Văn, Toán.

Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 2 Nhap thong tin hoc sinh thu 1: Ho ten hoc sinh: Nguyen Van A Toan: 8

Page 4: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 4/13

Van: 7 Nhap thong tin hoc sinh thu 2: Ho ten hoc sinh: Nguyen Van B Toan: 8.5 Van: 7.5 KET QUA Ho ten Van Toan Trung binh Nguyen Van A 7.0 8.0 7.5 Nguyen Van B 7.5 8.5 8.0

1.2.2. Hướng dẫn cài đặt

Tổ chức cấu trúc dữ liệu được lưu trữ như sau Struct HocSinh { char HoTen[30]; float Van, Toan, DTB; } Struct LopHoc { char TenLop[30]; HocSinh hs[50]; int SiSo; } Bổ sung thêm bài tập “Quản lý học sinh” các hàm sau

a. Viết hàm nhập thông tin lớp theo prototype sau void Nhap(LopHoc &l);

b. Viết hàm xuất thông tin lớp học theo prototype sau void Xuat(LopHoc l);

c. Viết hàm tính điểm trung bình học sinh của một lớp học theo prototype sau void TinhTB(LopHoc &l);

d. Viết chương trình nhập thông tin học sinh, tính điểm trung bình và in kết quả học sinh của một lớp học ra màn hình.

1.3. Quản lý học sinh - lớp - khối lớp

1.3.1. Đề bài

Viết chương trình nhập thông tin của một khối gồm có N (N<50) lớp học, mỗi lớp học gồm N học sinh (N<=50), với mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn Văn, Toán.

Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình

1.3.2. Hướng dẫn gợi ý

Bổ sung thêm bài tập “Quản lý học sinh - lớp” cấu trúc Khoi và các hàm sau

Page 5: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 5/13

Struct Khoi { char TenKhoi[30]; LopHoc lh[50]; int SiSo; }

a. Viết hàm nhập thông tin một khối theo prototype sau void Nhap(Khoi &k);

b. Viết hàm xuất thông tin một khối theo prototype sau void Xuat(Khoi k);

c. Viết hàm tính điểm trung bình học sinh của một khối theo prototype sau void TinhTB(Khoi &k);

d. Viết chương trình nhập thông tin học sinh, tính điểm trung bình và in kết quả học sinh của một khối ra màn hình.

2. Phần 2: Làm quen với lập trình hướng đối tượng

2.1. Quản lý học sinh

2.1.1. Đề bài

Viết chương trình nhập thông tin họ tên học sinh, điểm thi 2 môn Văn, Toán. Tính điểm trung bình, in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 1 Nhap ho ten hoc sinh: Nguyen Van A Toan: 8 Van: 7 Ket qua Ho ten Van Toan Trung binh Nguyen Van A 7.0 8.0 7.5

2.1.2. Hướng dẫn gợi ý

Tổ chức class HocSinh class HocSinh { Protected:

char HoTen[30]; float Van, Toan, DTB; public: void Nhap(); void Xuat(); void TinhTB(); }

Page 6: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 6/13

a. Viết hàm nhập thông tin học sinh trong class HocSinh b. Viết hàm xuất thông tin học sinh trong class HocSinh c. Viết hàm tính điểm trung bình học sinh trong class HocSinh d. Viết chương trình sử dụng class HocSinh để nhập thông tin học sinh, tính điểm

trung bình và in kết quả học sinh ra màn hình.

2.2. Quản lý học sinh - lớp

2.2.1. Đề bài

Viết chương trình nhập thông tin của một lớp học gồm N học sinh (N<=50), với mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn Văn, Toán.

Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình theo format sau

CHUONG TRINH MINH HOA 2 Nhap thong tin hoc sinh thu 1: Ho ten hoc sinh: Nguyen Van A Toan: 8 Van: 7 Nhap thong tin hoc sinh thu 2: Ho ten hoc sinh: Nguyen Van B Toan: 8.5 Van: 7.5 KET QUA Ho ten Van Toan Trung binh Nguyen Van A 7.0 8.0 7.5 Nguyen Van B 7.5 8.5 8.0

2.2.2. Hướng dẫn cài đặt

Bổ sung thêm bài tập “Quản lý học sinh” class LopHoc như sau: class LopHoc { Protected: char TenLop[30]; HocSinh hs[50]; int SiSo; public: void Nhap(); void Xuat(); void TinhTB(); } Bổ sung thêm bài tập “Quản lý học sinh” các hàm sau

a. Viết hàm nhập thông tin học sinh của một lớp lớp trong class LopHoc b. Viết hàm xuất thông tin học sinh của một lớp lớp trong class LopHoc c. Viết hàm tính điểm trung bình học sinh một lớp lớp trong class LopHoc

Page 7: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 7/13

d. Viết chương trình sử dụng class LopHoc để nhập thông tin học sinh, tính điểm trung bình và in kết quả học sinh của một lớp học ra màn hình.

2.3. Quản lý học sinh - lớp - khối lớp

2.3.1. Đề bài

Viết chương trình nhập thông tin của một khối gồm có N (N<50) lớp học, mỗi lớp học gồm N học sinh (N<=50), với mỗi học sinh nhập họ tên học sinh, điểm thi 2 môn Văn, Toán.

Tính điểm trung bình của mỗi học sinh và in kết quả ra màn hình

2.3.2. Hướng dẫn gợi ý

Bổ sung thêm bài tập “Quản lý học sinh - lớp” class Khoi và các hàm sau class Khoi { Protected:

char TenKhoi[30]; LopHoc lh[50]; int SiSo; public: void Nhap(); void Xuat(); void TinhTB(); }

a. Viết hàm nhập thông tin học sinh của một khối trong class Khoi b. Viết hàm xuất thông tin học sinh của một khối trong class Khoi c. Viết hàm tính điểm trung bình học sinh của một khối trong class Khoi d. Viết chương trình sử dụng class Khoi để nhập thông tin học sinh, tính điểm trung

bình và in kết quả học sinh của một khối ra màn hình.

2.4. Thiết kế và cài đặt lớp Phân số

2.4.1. Đề bài

Thiết kế và cài đặt lớp phân số Viết chương trình minh họa từng bước bốn phép toán cộng, trừ, nhân, chia 2 phân số.

2.4.2. Hướng dẫn gợi ý

Thiết kế và cài đặt lớp phân số với các thành phần như sau:

a. Thành phần thuộc tính - Tử số: số nguyên - Mẫu số: số nguyên

b. Thành phần xử lý - Nhóm khởi tạo

• Nhập từ bàn phím

Page 8: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 8/13

• Khởi tạo từ danh sách tham số tử sổ, mẫu số • Khởi tạo từ đối tượng thuộc lớp phân số

- Nhóm cung cấp thông tin • Đọc giá trị tử số • Đọc giá trị mẫu số • Xuất phân số ra màn hình

- Nhóm cập nhật • Cập nhật tử số • Cập nhật mẫu số • Rút gọn phân số

- Nhóm xử lý tính toán • Cộng hai phân số • Trừ hai phân số • Nhân hai phân số • Chia hai phân số

2.4.3. Tổ chức project

a. Lưu trữ lớp phân số - Tập tin header: Phanso.h - Tập tin source: Phanso.cpp

b. Tập tin chứa hàm main: psmain.cpp c. Tập tin hỗ trợ khác:

- Tập tin uscln.h: chứa khai báo prototype các hàm ước chung lớn nhất, bội chung nhỏ nhất,…

- Tập tin ucsln.cpp: chức cài đặt các hàm khai báo trong tập tin uscln.h d. Tập tin project: PS.prj chứa các tập tin

- Tập tin source của lớp phân số: Phanso.cpp - Tập tin chứa hàm main: psmain.cpp - Tập tin ucsln.cpp

2.5. Thiết kế và cài đặt lớp mảng 1 chiều

2.5.1. Đề bài Thiết kế và cài đặt lớp mảng một chiều có n phần tử (số lượng phần tử được cấp phát

động), mỗi phần tử là một số nguyên Viết chương trình minh họa các thao tác cơ bản trong mảng.

- Nhập mảng - Phát sinh mảng - Đọc từ file - Xuất mảng - Ghi ra file - Tìm kiếm một phần tử trong mảng

• Tìm tuần tự • Tìm nhị phân

- Sắp xếp các phần tử trong mảng theo thứ tự tăng/giảm

Page 9: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 9/13

• Sắp xếp đổi chỗ trực tiếp • Sắp xếp chọn trực tiếp • Sắp xếp chèn trực tiếp • ….

- Thêm/chèn phần tử - Xóa phần tử trong mảng - Kiểm tra mảng con - Nối mảng - Tính toán

• Tổng các phần tử • Tổng các phần tử chẵn • Tổng các phần tử lẻ • Tổng các phần tử nguyên tố • ….

2.5.2. Hướng dẫn gợi ý

2.6. Thiết kế và cài đặt lớp Ngày

2.6.1. Đề bài

Thiết kế và cài đặt lớp Ngày Viết chương trình minh họa hiển thị lịch của một tháng, lịch của 1 năm.

2.6.2. Hướng dẫn gợi ý

3. Phần 3: Làm quen với Contructor, Destructor, Operator

3.1. Lớp Phân số

3.1.1. Đề bài

Bổ sung các xử lý thuộc loại Constructor, Destructor, Operator

3.1.2. Hướng dẫn gợi ý

3.2. Lớp mảng một chiều

3.2.1. Đề bài

Bổ sung các xử lý thuộc loại Constructor, Destructor, Constructor copy, Operator

3.2.2. Hướng dẫn gợi ý

Page 10: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 10/13

3.3. Lớp Ngày

3.3.1. Đề bài

Bổ sung các xử lý thuộc loại Constructor, Destructor, Operator

3.3.2. Hướng dẫn gợi ý

4. Phần 4: Làm quen với kế thừa

4.1. Quản lý “Lương nhân viên”

4.1.1. Đề bài

Một công ty cần tin học hóa công việc tính tiền thưởng trong năm cho nhân viên trong toàn công ty. Nội dung yêu cầu như sau:

Cần lưu danh sách các nhân viên (tối đa 200 nhân viên), trong đó mỗi nhân viên có ít nhất các thông tin:

- Mã số nhân viên - Họ tên - Mức lương - Loại nhân viên: nhân viên văn phòng, nhân viên bán hàng, nhân viên sản xuất.

Tiền thưởng cho mỗi nhân viên trong công ty được tính theo quy tắc sau: - Đối với nhân viên văn phòng

o Nếu thời gian công tác < 6 tháng thì Tiền thưởng = 100000

o Nếu thời gian công tác ≥ 6 Tiền thưởng = 200000 + Mức lương *10% * thời gian công tác/6

Trong đó thời gian công tác (được tính theo đơn vị tháng) là số tháng mà nhân viên làm việc tại công ty - Đối với nhân viên bán hàng

o Tiền thưởng = 150000 * hệ số thưởng Mỗi nhân viên bán hàng có một hệ số thưởng riêng.

- Đối với nhân viên sản xuất o Tiền thưởng = 20000 * tổng số sản phẩm tính từ đầu năm

Với những mô tả trên, yêu cầu: a) Khai báo các lớp dữ liệu cần cho bài toán, biểu diễn cây kế thừa (nếu có). b) Trong mỗi lớp ở câu a),

a. Khai báo và cài đặt phương phức tính tiền thưởng cho mỗi nhân viên. b. Khai báo và cài đặt phương thức hiển thị thông tin của mỗi nhân viên

c) Cài đặt một hàm hiển thị danh sách nhân viên với prototype như sau: void HienThi(NHANVIEN *pnv[], int n) ;

Trong đó: - pnv là một mảng các con trỏ mà mỗi phần tử lưu địa chỉ của một đối tượng

thuộc 1 trong 3 loại nhân viên kể trên. - n là tổng số nhân viên.

Page 11: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 11/13

4.1.2. Hướng dẫn gợi ý

4.2. Quản lý các đối tượng hình học

4.2.1. Đề bài

Xây dựng (vẽ) cây kế thừa biểu diễn các lớp Hình chữ nhật, ellipse, hình tròn, hình trụ, hình cầu.

a. Định nghĩa các lớp bao gồm các thành sau: - Thuộc tính - 1 constructor - Hàm tính diện tích

b. Viết hàm tính tổng diện tích với tham số là mảng các hình ở mức tổng quát, cho

phép tính tổng diện tích hình chữ nhật, ellipse, hình tròn, hình trụ, hình cầu.

4.2.2. Hướng dẫn gợi ý

5. Phần 5: Bài tập tổng hợp

5.1. Lớp Phân số

5.1.1. Đề bài

Xây dựng chương trình minh họa các phép toán cộng, trừ, nhân, chia trên phân số

5.1.2. Hướng dẫn gợi ý

Page 12: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 12/13

5.2. Trò chơi Caro

5.2.1. Đề bài

Viết chương trình trò chơi Caro cho phép 2 người cùng chơi, máy tính đóng vai trò trọng tài

5.2.2. Hướng dẫn gợi ý

5.3. Trò chơi Minesweeper

5.3.1. Đề bài

Viết chương trình trò chơi gỡ mìn tương tự trò chơi gỡ mìn trong Windows.

Page 13: 101234273 Bai Tap Lap Trinh Huong Doi Tuong C

Khoa Toán – Tin học Bài tập thực hành Hướng đối tượng

Ths Trần Ngọc Bảo Trang 13/13

5.3.2. Hướng dẫn gợi ý

5.4. Trò chơi Cờ tướng

5.4.1. Đề bài

Viết chương trình trò chơi Cờ tướng cho phép 2 người cùng chơi, máy tính đóng vai trò trọng tài

5.4.2. Hướng dẫn gợi ý

5.5. Trò chơi TETRIS

5.5.1. Đề bài

Viết chương trình trò chơi TETRIS cho phép người chơi chọn nhiều mức độ khác nhau

5.5.2. Hướng dẫn gợi ý