Professional Documents
Culture Documents
Hà Nội, 05-2021
MỤC LỤC
1
Danh mục hình vẽ
2
Lời nói đầu
3
I. Mô tả mục tiêu, phương pháp, cách triển khai mã nguồn
4
station_load_train (struct station * station, int Count)
Hàm dùng để điều khiển tàu tham chiếu tới struct station gồm các
giá trị ghế trống, hành khách đợi ở ga, hành khách lên tàu và các biến
điều kiện khác, tham số count là số ghể trống.Khi thỏa mãn điều kiện
hành khách đợi ở ga > 0 và ghể trống trên tàu > 0. Khi đó tàu sẽ dừng và
thông báo cho tất cả hành khách đang đợi ở ga để lên tàu. Hàm chỉ được
chạy khi tàu ở ga và hoàn tất quá trình khách đã lên tàu.
5
1.3 Cách triển khai mã nguồn
Sau khi xác định toàn bộ chức năng của vấn đề được đặt ra, nhóm em
đã sắp xếp và sử dụng ngôn ngữ lập trình C để tạo thành một chương
trình hoàn chỉnh có thể đưa vào sử dụng.
Chương trình C hoàn chỉnh được biên dịch bằng “a test framework”
có sẵn do người ra đề tài cung cấp và được chạy thông qua Termial trên
hệ điều hành Ubuntu 18.04. Kết quả cuối cùng sẽ được hiển thị tại màn
hình giao diện Terminal.
II. Công việc thực hiện
Sau quá trình trao đổi và thảo luận, nhóm em đã thống nhất và đưa ra
công việc của từng các nhân. Bản thân em làm 2 nhiệm vụ chính là viết
hàm khởi tạo station_init() và station_load_train(). Các hàm trên đều
được viết bằng ngôn ngữ C, hoàn chỉnh cùng với các phần code khác và
biên dịch bằng “a test framework” có sẵn do người ra đề tài cung cấp,
chạy thông qua Termial trên hệ điều hành Ubuntu 18.04. Kết quả cuối
cùng sẽ được hiển thị tại màn hình giao diện Terminal như trong báo cáo
của nhóm.
Sau đây là mô tả mã nguồn cho các hàm mà em đã viết.
2.1 Mô tả mã nguồn cho hàm station_init()
Hàm station_init() sẽ khởi tạo các giá trị ban đầu cho cấu trúc station.
Số lượng ghế trống, hành khách đợi ở ga, hành khách lên tàu có giá trị
ban đầu bằng 0. Các hàm lock_init, cond_init dùng để khởi tạo giá trị
ban đầu cho khóa lock và 2 biến điều kiên Tau_den , Tat_ca_hk_len_tau.
6
Hình 1: Kết quả hàm station_init
7
Hình 2: Kết quả hàm station_load_train
III. Kết quả thu được
Các hàm đều đã có thể chạy được và đưa ra kết quả giống như mong
muốn của nhóm. Trong quá trình tìm hiểu và thực hiện bài tập lớn, em
cũng đã được tiếp cận với lập trình đa luồng để có thể áp dụng các kiến
thức được học trên lớp. Em hi vọng có thể nhận được các đóng góp của
thầy để có thể tối ưu hóa mã nguồn của mình hơn.
[1] https://cseweb.ucsd.edu/
[2] https://web.stanford.edu/
8
9