Trang 1
BÀI TP LP TRÌNH
MÔN LÝ THUYT AUTOMATA VÀ NGÔN NG HÌNH THC
Giáo Viên: H Văn Quân
Email: hcquan@dit.hcmut.edu.vn
Mc đích: Đâymt hình thc để khuyến khích các bn sinh viên tham gia tìm hiu môn hc và
rèn luyn thêm k năng lp trình.
Các qui định:
1. Các nhóm s viết bng mt trong các ngôn ng sau: Delphi, Visual Basic, Visual C++, Java,
C#, Visual Basic.NET.
2. Các nhóm khác nhau nếu thc hin cùng mt đề thì nên viết bng các ngôn ng khác nhau. Nếu
giáo viên phát hin có vic copy mã ngun thì các thành viên trong nhóm s b tr 2 đim vào
đim thi hc k.
3. Các nhóm có liên quan vi nhau phi phi hp vi nhau để thc hin.
4. Mi nhóm không được quá 2n người cho đề n đim.
5. S đim mi người trong nhóm thc hin mt đề s bng s đim ca đề chia cho s thành viên
ca nhóm. Đim cng ch tính theo thang 0.5, 1.0, 1.5, … không tính ti 2 s l chng hn 0.75.
6. Mi người có th tham gia nhiu nhóm, mi nhóm có th thc hin nhiu đề.
7. Tng đim cng cui hc k ti đa ca mi người là 2 đim. Nếu đim cng vượt quá 2 thì
phn vượt quá không được tính.
8. Các nhóm phi np sn phm vào ĐÚNG tun 15 (tun d tr), nếu np trước hay sau thi
gian trên thì không được xem xét. Sau khi np các sinh viên s được thông báo ngày mang máy
lên trình bày vi giáo viên. Các sinh viên không lên báo cáo s không được cng đim. Mi đề
được trình bày trong vòng 5 đến 10 phút. Chú ý KHI MANG MÁY VÀO TRƯỜNG CÁC
SINH VIÊN PHI XIN “GIY MANG MÁY VÀO TRƯỜNG” CH CÁC CHÚ BO
V TRƯỜNG.
9. Mi nhóm s đặt chương trình trong mt thư mc có tên là mã s sinh viên ca các thành viên
trong nhóm, chng hn 50012345_50054321_50056789. Trong thư mc này phi có file
tacgia.txt ghi rõ thông tin ca các thành viên trong nhóm bao gm h tên, mã s, nhóm lp,
làm bài tp nào, viết bng ngôn ng gì. Ví d
Nguyn Văn A 50012345 Nhóm 3A
Trn Văn B 50054321 Nhóm 2B
Làm các bài tp 1, 3, 6
Ngôn ng Visual C++
Hình thc np:
Cách 1, các nhóm s ftp lên máy ca ging viên vào thi gian được qui định.
Cách 2, các nhóm s gi mail cho giáo viên theo địa ch hcquan@dit.hcmut.edu.vn vi subject
chính xác như sau k c ch hoa ln ch thường “Bai tap lon Automata” vào thi gian được
qui định.
10. Sn phm np phi bao gm source codechương trình đã dch sang mã máy. Source code
phi có chú thích rõ ràng tng phn chng hn mc đích ca tng phn và ý nghĩa ca các
câu lnh quan trng. Ngoài ra nếu để chy được chương trình cn có điu kin gì v môi trường
h điu hành cũng như cn phi thc hin các thao tác gì thì phi nêu rõ trong mt file help.txt
đi kèm.
11. Các bài np không đúng qui định s không được tính đim.
12. Nếu các bn sinh viên có ý kiến đóng góp gì trong vn đề này thì có th gi mail v cho giáo
viên theo địa ch trên.
Trang 2
DANH SÁCH CÁC ĐỀ
Ñeà 1. (2đ)
Xây dng b công c cho phép v các đồ th chuyn trng thái (các đối tượng trong đồ th
th thay đổi v trí được), nhp các bng truyn ca các dfa, nfa. Lưu tr và hin th li chúng.
Các câu sau nếu có dùng đến nfa và dfa thì có th kế tha t Đề 1. Ngoài ra ch chp nhn hai
dng biu din ca nfa và dfa là dng đồ th chuyn trng thái và dng bng truyn.
Ñeà 2. (1đ)
Viết chương trình mô phng s xchui ca mt nfa, dfa dưới dng đồ th chuyn trng
thái.
Ñeà 3. (2đ)
Viết chương trình biến đổi mt nfa thành dfa tương đương
Ñeà 4. (2đ)
Viết chương trình rút gn mt dfa thành dfa ti gin
Ñeà 5. (3đ)
Viết chương trình nhn dng các token t khoá (begin, end, var, if, then, for, to), s nguyên, s
thc, tên biến, phép gán, phép so sánh, các phép toán s hc (+, -, *, /) ca mt chương trình
viết bng Pascal. Chương trình phi được thc hin theo mô hình lý thuyết automata.
Ñeà 6. (3đ)
Viết chương trình phân tích cú pháp, to và hin th cây cú pháp (dưới dng đồ ho) ca mt
biu thc chính qui.
Ñeà 7. (2đ)
Viết chương trình biến đổi mt biu thc chính qui thành nfa theo phương pháp ci tiến. (Có
th kế tha t Đề 6.)
Ñeà 8. (3đ)
Viết chương trình biến đổi mt biu thc chính qui thành dfa trc tiếp không thông qua nfa.
(Có th kế tha t Đề 6.)
Ñeà 9. (2đ)
Viết chương trình biến đổi mt nfa thành văn phm tuyến tính phi, văn phm tuyến tính trái và
ngược li.
Ñeà 10. (2đ)
Viết chương trình thc hin giao ca hai dfa, hiu ca hai dfa.
Ñeà 11. (2đ)
Viết chương trình thc hin thương đúng ca hai dfa.
Ñeà 12. (3đ)
Viết chương trình kim tra hai dfa có tương đương nhau không.
Ñeà 13. (3đ)
ng dng automata hu hn, viết chương trình chuyn mã ca các file text gia ít nht 3 bng
mã thông dng hin nay VNI, Unicode, ...
Ñeà 14. (3đ)
ng dng automata hu hn viết chương trình đổi nhiu tên file cùng lúc t mu này sang mu
khác. (To ra các phép toán thun tin hơn cho người s dng da vào 3 phép toán cơ bn ca
biu thc chính qui. Tham kho thêm ngôn ng Perl để biết thêm chi tiết)
Ñeà 15. (5đ)
ng dng automata hu hn viết chương trình driver cho b gõ tiếng Vit h tr hai cách gõ
VNI, Telex và h tr ít nht 3 bng mã thông dng hin nay VNI, Unicode, ...
Ñeà 16. (2đ)
Viết các chương trình loi b ln lượt và loi b đồng thi ba loi lut sinh vô dng, trng và
đơn v.
Ñeà 17. (3đ)
Trang 3
Viết các chương trình biến đổi mt văn phm bt k thành văn phm có dng Chomsky và
Greibach
Ñeà 18. (1đ)
Cho biết dn xut, viết chương trình hin th dn xut dưới dng cây.
Ñeà 19. (2đ)
Viết chương trình phân tích cú pháp theo phương pháp vét cn. Có trình bày tun t các bước
phân tích và dn xut nếu có.
Ñeà 20. (3đ)
Viết chương trình phân tích cú pháp theo phương pháp CYK. Có trình bày các bước tính toán
và dn xut nếu có.
Ñeà 21. (4đ)
Viết chương trình phân tích cú pháp theo phương pháp Earley. Có trình bày các bước tính toán
và dn xut nếu có.
Ñeà 22. (2đ)
Xây dng b công c cho phép nhp, v các npda, dpda (các đối tượng trong đồ th có th thay
đổi v trí được). Lưu tr và hin th li chúng.
Ñeà 23. (3đ)
Viết chương trình mô phng hot động ca mt npda, dpda bng hình nh và bng đồ th
chuyn trng thái.
Ñeà 24. (2đ)
Viết chương trình biến đổi mt văn phm phi ng cnh thành mt npda.
Ñeà 25. (3đ)
Viết chương trình biến đổi mt npda thành mt văn phm phi ng cnh.
Ñeà 26. (4đ)
Viết chương trình phân tích cú pháp cho ngôn ng Pascal đơn gin (bao gm các khai báo hàm,
th tc, khai báo biến, begin, end, lnh if, lnh lp for, repeat … until, while … do, các phép so
sánh, các phép toán s hc).
Ñeà 27. (3đ)
Tìm hiu các hàm x lý chui ca ngôn ng Perl. Xây dng li mt s hàm này (khong 10
hàm) cho các ngôn ng khác.