Giáo trình thực hành Lập trình hướng đối tượng - Bài thực hành số 8.3: Xây dựng chương trình tính tổng 2 ma trận
Trang 1
MÔN : LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài thực hành số 8.3 : Xây dựng chương trình tính tổng 2 ma trận
I. Mục tiêu :
Giúp SV làm quen với cách thức viết code ₫ể ₫ọc dữ liệu ở dạng nhị phân từ file ₫ể xử
lý/tính toán ngay bên trong máy mà không cần tốn chi phí mã hóa chúng, cách thức ₫ể
ghi dữ liệu nhị phân bên trong chương trình ra file nhị phân cho hiệu quả cả về dung
lượng chứa lẫn thời gian ghi tin (vì không cần tốn chi phí giải mã).
II. Nội dung :
Viết code ₫ể ₫ọc dữ liệu của 2 ma trận từ 2 file nhị phân, tính ma trận tổng, xuất kết quả
ma trận tổng ra file nhị phân ₫ể ₫ạt hiệu quả cao nhất.
III. Chuẩn ₫ầu ra :
Sinh viên nắm vững và lập trình thành thạo các ₫oạn code ₫ể ₫ọc/ghi dữ liệu nhị phân từ
file nhị phân vào các biến bên trong chương trình.
IV. Qui trình :
1. Vẫn giữ lại 2 file c:\A.txt và c:\B.txt chứa nội dung 2 ma trận A và B như sau :
Nội dung c:\A.txt như sau :
5, 7
1, 2, 3, 4, 5, 6, 7
8, 9, 10, 11, 12, 13, 14
15, 16, 17, 18, 19, 20, 21
22, 23, 24, 25, 26, 27, 28
29, 30, 31, 32, 33, 34, 35
Và nội dung c:\B.txt như sau :
5, 7
2, 3, 4, 5, 6, 7, 8
9, 10, 11, 12, 13, 14, 15
16, 17, 18, 19, 20, 21, 22
23, 24, 25, 26, 27, 28, 29
30, 31, 32, 33, 34, 35, 36
2. Nhân bản thư mục chứa Project của bài thực hành 8.2 (thư mục TongMTTxt) thành thư mục
mới và ₫ặt tên cho thư mục này là TongMTBin.
3. Chạy VS .Net, mở lại Porject trong thư mục TongMTBin.
4. Hiệu chỉnh lại hàm WriteMT như sau :
//hàm ghi ma trận ra file binary
static void WriteMT(string path, double[,] A, int hang, int cot) {
//1. tạo ₫ối tượng quản lý file
FileStream stream = new FileStream(path, FileMode.Create);
//2. tạo ₫ối tượng phục vụ ghi file
BinaryWriter writer = new BinaryWriter(stream);
//3. ₫ịnh nghĩa các biến dữ liệu theo yêu cầu chương trình
int i, j;
//4. ghi dữ liệu từ các biến ra file
writer.Write(hang); //ghi số hàng
writer.Write(cot); //ghi số cột
//ghi ma trận
for (i = 0; i < hang; i++) { //ghi từng hàng ma trận
for (j = 0; j < cot; j++) {
Trang 2
writer.Write(A[i, j]); //ghi phần tử i,j
}
}
//5. ₫óng các ₫ối tượng ₫ược dùng lại
writer.Close(); stream.Close();
}
5. Duyệt tìm hàm Main(), tìm và sửa lệnh gọi hàm WriteMT() thành :
//xuất ma trận kết quả ra file c:\S.bin
WriteMT("c:\\S.bin", S, hang, cot);
6. Chọn menu Debug.Start Debugging ₫ể dịch và chạy ứng dụng. Nếu không có lỗi thì chương
trình sẽ chạy tốt và ghi nội dung ma trận tổng ra file S.bin. So sánh kích thước của file S.bin
với file S.txt, lý giải tại sao kích thước của file S.bin chỉ có 288 byte.
7. Copy file c:\S.bin thành 2 file c:\A.bin và c:\B.bin ₫ể tạo 2 file miêu tả 2 ma trận A và B ở
dạng nhị phân.
8. Hiệu chỉnh lại hàm ReadMT như sau :
//hàm ₫ọc ma trận từ file binary
static void ReadMT(string path, ref double[,] A, ref int hang, ref int cot) {
//1. tạo ₫ối tượng quản lý file
FileStream stream = new FileStream(path, FileMode.Open);
//2. tạo ₫ối tượng phục vụ ₫ọc file
BinaryReader reader = new BinaryReader(stream);
//3. ₫ịnh nghĩa các biến dữ liệu theo yêu cầu chương trình
int i, j;
//4. ₫ọc dữ liệu từ file vào các biến
//₫ọc số hàng
hang = reader.ReadInt32(); //₫ọc số nguyên 32 bit
//₫ọc số cột
cot = reader.ReadInt32();
//₫ọc số nguyên 32 bit
//phân phối vùng nhớ cho ma trận
A = new double[hang, cot];
//₫ọc từng phần tử ma trận
for (i = 0; i < hang; i++)
for (j = 0; j < cot; j++)
{
A[i, j] = reader.ReadDouble(); //₫ọc số thực
}
//5. ₫óng các ₫ối tượng ₫ược dùng lại
reader.Close(); stream.Close();
}
9. Duyệt tìm hàm Main(), tìm và sửa lệnh 2 lệnh gọi hàm ReadMT() thành :
//₫ọc ma trận A từ file c:\A.bin
ReadMT("c:\\a.bin", ref A, ref hang, ref cot);
//₫ọc ma trận B từ file c:\B.bin
ReadMT("c:\\b.bin", ref B, ref h, ref c);
10. Duyệt tìm và xóa hàm ReadItem vì không cần thiết.
11. Chọn menu Debug.Start Debugging ₫ể dịch và chạy ứng dụng. Nếu không có lỗi thì chương
trình sẽ chạy tốt, nó sẽ ₫ọc lần lượt từng ma trận trong file nhị phân tương ứng vào chương
trình, tình tổng ma trận và ghi nội dung ma trận tổng ra file S.bin.
Bạn đang xem tài liệu "Giáo trình thực hành Lập trình hướng đối tượng - Bài thực hành số 8.3: Xây dựng chương trình tính tổng 2 ma trận", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_thuc_hanh_lap_trinh_huong_doi_tuong_bai_thuc_hanh.pdf

