Upload
phong-bk
View
30
Download
0
Embed Size (px)
Citation preview
Bài tập lớn môn Kỹ thuật lập trình 20141
Bài tập 1. Xây dựng chương trình cho phép thực hiện khảo sát phân tích hệ thống
điều khiển cho ở dạng hàm truyền:
- Tính số nghiệm dương, âm, bằng 0 (dùng bảng Routh) và phân tích tính ổn định
- Chuyển đổi hệ thống sang dạng không gian trạng thái
- Nhập thêm điều kiện đầu, thời gian giới hạn T và bước lặp ΔT, thực hiện tính
toán mô phỏng
- Tất cả kết quả đều lưu ra các file .txt, trong đó kết quả mô phỏng có thể vẽ lại
trên MATLAB
Bài tập 2. Xây dựng chương trình cho phép thực hiện khảo sát phân tích hệ thống
điều khiển cho ở dạng mô hình trong không gian trạng thái.
- Tính số nghiệm dương, âm, bằng 0 của phương trình đặc trưng (dùng bảng
Routh) và phân tích tính ổn định
- Nhập thêm điều kiện đầu, thời gian giới hạn T và bước lặp ΔT, thực hiện tính
toán mô phỏng
- Chuyển đổi hệ thống sang dạng hàm truyền
- Tất cả kết quả đều lưu ra các file .txt, trong đó kết quả mô phỏng có thể vẽ lại
trên MATLAB
Bài tập 3. Xây dựng chương trình cho phép quản lý động cơ và tính toán tham số
của chúng theo các thông số của nhà sản xuất cung cấp.
- Sơ đồ các lớp và thừa kế:
- Cho phép nhập các tham số tương ứng và tính toán công suất
- Có thể lưu/đọc dữ liệu từ file
Bài tập 4. Xây dựng thư viện các phép toán học cho vector/ma trận và thao tác
thuận tiện như Matlab hỗ trợ.
- Lớp tên là Matrix
- Các phép toán cơ bản: cộng, trừ, nhân/chia với số, nhân ma trận/vector, mũ số
nguyên, phủ định, so sánh bằng/khác
- Trích phần tử với toán tử [ ]
- Các phương thức: tính định thức, nghịch đảo, chuyển vị, giải phương trình
- Chương trình demo
Bài tập 5. Xây dựng hai chương trình truyền thông qua giao diện RS-232 cho
phép gửi file giữa hai máy tính: một chương trình gửi và một chương trình nhận
- Có thể dùng các hàm đọc/ghi file chuẩn của C, hoặc tự tìm hiểu thêm và dùng các
hàm API của Windows: http://msdn.microsoft.com/en-us/library/aa363196
Bài tập 6. Xây dựng chương trình thực hiện chức năng mô phỏng hệ thống điều
khiển số cho ở dạng hàm truyền với nhiều khối.
- Các khối chức năng có thể kết nối linh hoạt (nối tiếp/song song/hồi tiếp) theo yêu
cầu.
- Dữ liệu các khối của hệ thống được mô tả trong một file, chương trình đọc file đó
sau đó đưa ra hàm truyền tổng và tiến hành mô phỏng.
VD: (G1{2.5 10 / 1 4.4 5.22} - (G2{1.1 2.1 1.2 / 1 5.4 2.3 5.3} // G3{1 / 1.2
3.3})) < G4{1 / 5.2 2.3}
(G1 nối tiếp (G2 song song G3)) hồi tiếp G4
- Kết quả mô phỏng được lưu trong một file .txt để có thể vẽ lại trên MATLAB.
- Gợi ý: để làm được bài này, nên xây dựng một lớp Polynomial để làm việc với
các đa thức: cộng, trừ, nhân… sau đó xây dựng một lớp TransferFunction để làm
việc với các hàm truyền
Bài tập 7. Xây dựng chương trình mô phỏng bộ điều khiển PID cho một hệ thống
1 đầu vào, 1 đầu ra.
- Hệ thống được điều khiển (tuyến tính hoặc phi tuyến) cho sẵn ở dạng không gian
trạng thái và viết sẵn trong chương trình
- Các hệ số PID được nhập từ tham số dòng lệnh của chương trình
- Yêu cầu không được tính toán hàm truyền tổng
- Kết quả mô phỏng được lưu trong một file .txt để có thể vẽ lại trên MATLAB
Bài tập 8. Xây dựng một chương trình phục vụ mô phỏng hoạt động mạch điện:
- Mạch gồm các phần tử cơ bản (R, L, C) cùng với các thông số
- Cấu trúc của mạch điện được mô tả trong một file đầu vào có dạng:
VD: ((R1{R 5} // L1{L 1.2} // C1{C 3.2}) - L2{L 1.5}) // R2{R 4.3}
((R1 ss L1 ss C1) nt L2) ss R2)
- Cho một tín hiệu điện áp vào hai đầu của mạch và tiến hành mô phỏng: tính điện
áp và dòng ở từng phần tử
- Kết quả lưu vào một file .txt để có thể vẽ lại trên MATLAB
Bài tập 9. Xây dựng chương trình khảo sát mạch điện xoay chiều:
- Mạch gồm các phần tử cơ bản (điện trở, tụ, cuộn cảm) cùng với các thông số
- Hiện một menu lựa chọn với các chức năng:
+ Nhập một mạch điện mới, cấu trúc nhập theo dạng:
VD: ((R1{R 5} // L1{L 1.2} // C1{C 3.2}) - L2{L 1.5}) // R2{R 4.3}
((R1 ss L1 ss C1) nt L2) ss R2)
+ Nhập một điện áp xoay chiều vào 2 đầu mạch
+ Tính tổng trở
+ Tính dòng tổng
+ Tính công suất tổng
+ Tính áp, dòng, công suất ở từng phần tử
- Các kết quả in ra màn hình
Bài tập 10. Xây dựng chương trình mô phỏng mạch điện tử số với các phần tử cơ
bản (đầu vào, AND, OR, XOR, NOT):
- Cấu trúc của mạch được mô tả trong một file đầu vào là một biểu thức logic
VD: (not (A and B) xor (C or D)) or (C and A)
Trong đó A, B, C, D là các tín hiệu logic vào (0/1)
- Các tín hiệu đầu vào được cho trong một file dưới dạng:
A B C D ...
0 1 1 0
1 1 0 1
0 0 0 1
1 1 0 1
...
- Hiển thị các sóng đầu vào và đầu ra trên màn hình console (tương tự như trên
nhưng thêm cột kết quả)
Bài tập 11. Tạo file có định dạng .txt chứa toạ độ của một tập các điểm theo dạng
(x, y). Viết chương trình đọc file này rồi tính hình bao lồi của tập điểm này và in
kết quả ra màn hình. Hình bao lồi của một tập điểm là hình đa giác nhỏ nhất có
chứa tất cả các điểm.
Bài tập 12. Xây dựng chương trình kết nối cơ sở dữ liệu xây dựng trên MySQL
chứa dữ liệu sinh viên bao gồm: số sinh viên, họ tên và điểm trung bình. Viết
chương trình đọc dữ liệu từ MySQL, lọc ra các sinh viên có điểm trung bình nằm
trong khoảng 5 đến 7, sau đó ghi kết quả ra file “out.txt” theo thứ tự điểm tăng dần.
Bài tập 13. Tạo file định dạng .txt chứa các phép toán với đa thức, mỗi dòng là
một câu lệnh thuộc một trong hai loại:
- khai báo đa thức. VD: P2 = [5.134 -2 9.12] nghĩa là �2 = 5.134�� − 2� + 9.12
- thực hiện phép tính đơn (cộng, trừ, nhân). Các phép toán đều có 2 toán hạng,
mỗi toán hạng có thể là một hằng đa thức, hoặc một biến đã có ở trên.
Viết chương trình đọc file lệnh này, sau đó thực hiện từng câu lệnh và in kết quả ra
màn hình.
Bài tập 14. Tạo file định dạng .txt chứa các phép toán với ma trận, mỗi dòng là
một câu lệnh thuộc một trong hai loại:
- khai báo ma trận. VD: �� = [1.233.21;−50; 2.122.31] nghĩa là �� =
�1.23 3.21−5 02.12 2.31
�
- thực hiện phép tính đơn (cộng, trừ, nhân). Các phép toán đều có 2 toán hạng,
mỗi toán hạng có thể là một hằng ma trận, hoặc một biến đã có ở trên.
Viết chương trình đọc file lệnh này, sau đó thực hiện từng câu lệnh và in kết quả ra
màn hình.
Bài tập 15. Tạo file định dạng .txt chứa các phép toán với phân số, mỗi dòng là
một câu lệnh thuộc một trong hai loại:
- khai báo phân số. VD: A = 12:17 nghĩa là =��
�� . Nếu là số nguyên có thể viết
dưới dạng: A = 34.
- thực hiện phép tính đơn (cộng, trừ, nhân, chia). Các phép toán đều có 2 toán
hạng, mỗi toán hạng có thể là một hằng phân số, hoặc một biến đã có ở trên.
Viết chương trình đọc file lệnh này, sau đó thực hiện từng câu lệnh và in kết quả ra
màn hình.
Bài tập 16. Viết chương trình thực hiện thuật toán lặp tìm nghiệm của Newton-
Raphson. Phương trình được cho dưới dạng �(�) = 0 trong đó �(�) được khai báo
trong chương trình và có thể thay đổi được. Người dùng nhập vào điểm khởi đầu
�� và độ chính xác �, chương trình cần tính và in ra màn hình nghiệm tìm được
bằng phương pháp trên. Điều kiện dừng của phép lặp là sai số giữa hai lần lặp liên
tiếp nhỏ hơn � hoặc số lần lặp vượt quá 100.
Bài tập 17. Sử dụng thư viện boost/asio () viết chương trình làm việc với cổng COM RS232 để truyền nhận dữ liệu theo định dạng 1 bit start, 1 bit stop, 8 bit dữ liệu, 1 bit kiểm tra chẳn lẻ (tổng số số 1 là chẳn), truyền ở tốc độ 9600 baud.
- Viết chương trình truyền - Viêt chương trình nhận - Viết hàm cấu hình cổng khi truyền/nhận - Viết hàm nhận dữ liệu - Viết hàm truyền dữ liệu
Bài tập 18. Sử dụng thư viện boost/CRC (http://www.boost.org/doc/libs/1_47_0/libs/crc/index.html) để thực hiện các công việc sau:
- Viết một hàm trả về mã kiểm lỗi checksum của một mảng dữ liệu gồm 16 byte trả về checksum theo các giải thuật crc_16_type, crc_ccitt_type, crc_xmodem_type, crc_32_type
- Viết một hàm nhận 16 byte dữ liệu, 1 checksum tương ứng với giải thuật trên, viết một hàm kiểm tra xem có lỗi hay không
Bài tập 19.Tìm hiểu sử dụng boost.filesystem (http://www.boost.org/doc/libs/1_47_0/libs/filesystem/v3/doc/tutorial.html) để thao tác trên hệ thống file:
- Viết hàm tìm file (ví dụ : abc.txt) tại một đường dẫn xác định (ví dụ: c:\)
- Viết hàm trả về tất cả các file (ví dụ : *.wav) trong đường dẫn cho trước, kết
quả lưu trong một mảng động chứa tên file
- Viết hàm trả về kích thước một file, tên file là đầu vào của hàm
- Viết chương trình test các công việc đã được triển khai trong các hàm trên.
Bài tập 20: Viết chương trình đường đi ngắn nhất (là bài toán tìm một đường đi
giữa hai đỉnh sao cho tổng các trọng số của các cạnh tạo nên đường đi đó là nhỏ
nhất) theo thuật toán Dijkstra. Đầu vào của bài toán là file chứa dữ liệu các đỉnh
cho dưới dạng ma trận (số lượng các đỉnh có giới hạn dưới 1000). Ghi kết quả ra
file out.txt.