rèn luyện thêm kỹ năng lập trình. Các qui định: 1. ... Chương trình phải được thực hiện theo mô hình lý thuyết automata. Ñeà 6. (3đ) ...
Trang 1- BÀI TẬP LẬP TRÌNH _ MÔN LÝ THUYÉT AUTOMATA VÀ NGÔN NGỮ HÌNH THỨC
Giáo Viên: Hồ Văn Quân
Email: hcquan@dit.hcmut.edu.vn
Mục đích: Đây là một hình thức để khuyến khích các bạn sinh viên tham gia tìm hiểu môn học và rèn luyện thêm kỹ năng lập trình
Các qui định:
1
2
10
11
12
Các nhóm sẽ viết bằng một trong các ngôn ngữ sau: Delphi, Visual Basic, Visual C++, Java, C#, Visual Basic.NET
Các nhóm khác nhau nếu thực hiện cùng một đề thì nên viết bằng các ngôn ngữ khác nhau Nếu giáo viên phát hiện có việc copy mã nguân thì các thành viên trong nhóm sẽ bị trừ 2 điểm vào điểm thi học ky
Các nhóm có liên quan với nhau phải phối hợp với nhau để thực hiện
Mỗi nhóm không được quá 2w người cho đề w điểm
Số điểm mỗi người trong nhóm thực hiện một đề sẽ bằng số điểm của đề chia cho số thành viên của nhóm Điểm cộng chỉ tính theo thang 0.5, 1.0, 1.5, không tính tới 2 số lẽ chẳng hạn 0.75 Mỗi người có thể tham gia nhiều nhóm, mỗi nhóm có thể thực hiện nhiều đề
Tổng điểm cộng cuối học kỳ tối đa của mỗi người là 2 điểm Nếu điểm cộng vượt quá 2 thì phần vượt quá không được tính
Các nhóm phải nộp sản phẩm vào ĐỨNG tuần 15 (tuần dự trữ), nếu nộp trước hay sau thời
gian trên thì không được xem xét Sau khi nộp các sinh viên sẽ được thông báo ngày mang máy lên trình bảy với giáo viên Các sinh viên không lên báo cáo sẽ không được cộng điểm Mỗi đề
đượ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 PHẢI XIN “GIẦY MANG MÁY VÀO TRƯỜNG” Ở CHỖ CÁC CHÚ BẢO
VỆ TRƯỜNG
Mỗi nhóm sẽ đặt chương trình trong một thư mục có tên là mã số sinh viên của các thành viên trong nhóm, chang han 50012345 50054321 50056789 Trong thư mục này phải có file tacgia.txt ghi rõ thông tin của các thành viên trong nhóm bao gồm họ tên, mã sô, nhóm lớp, làm bài tập nao, viết bằng ngôn ngữ gì Ví đụ
Lam cac bai tap 1,3,6
Hình thức nộp:
Cách 1, các nhóm sẽ fip lên máy của giảng viên vào thời gian được qui định
Cách 2, các nhóm sẽ gởi mail cho giáo viên theo dia chi hcquan@dit.hcmut.edu.vn voi subject chỉnh xác như sau kế cả chữ hoa lẫn chữ thường “Bai tap lon Automatfa” vào thời gian được qui định
San phẩm nộp phải bao gồm souree code và chương trình đã địch sang mã may Source code phải có chú thích rõ ràng ở từng phần chẳng hạn mục đích của từng phần và y nghia cua cac câu lệnh quan trọng Ngoài ra nêu để chạy được chương trình cần có điều kiện gì về môi trường
hệ điều hành cũng như cần phải thực hiện các thao tác gì thì phải nêu rõ trong một ñile help.txt
đi kèm
Các bài nộp không đúng qui định sẽ không được tính điểm
Nếu các bạn sinh viên có ý kiến đóng góp gì trong vấn đề này thì có thể gởi mail về cho giáo viên theo địa chỉ ở trên
Trang 2
DANH SACH CAC DE
Đề1 (2đ)
Xây dựng bộ công cụ cho phép vẽ các đồ thị chuyển trạng thái (các đối tượng trong đồ thị có thé thay đôi vị trí được), nhập các bảng truyền của các dfa, nfa Lưu trữ và hiển thị lại chúng Các câu sau nếu có dùng đến nƒa và dfa thì có thể kế thừa từ Đề 1 Ngoài ra chỉ chấp nhận hai dạng biểu diễn của nýa và dƒa là dạng đề thị chuyển trạng thái và dạng bảng truyền
Đề2 (1đ)
Viết chương trình mô phỏng sự xử lý chuỗi của một nía, đía đưới dạng đồ thị chuyển trạng
thái
Việt chương trình biên đôi một nía thành día tương đương
Việt chương trình rút gọn một día thành dfa tdi gian
Đêề5 (3d)
Viết chương trình nhận dạng các token từ khoá (begin, end, var, if, then, for, to), số nguyên, số thực, tên biến, phép gán, phép so sánh, các phép toán số học (+, -, *, /) của một chương trình viết bằng Pascal Chương trình phải được thực hiện theo mô hình lý thuyết automata
Đề6 (3d)
Viết chương trình phân tích cú pháp, tạo và hiển thị cây cú pháp (đưới dạng đồ hoạ) của một
biểu thức chính qui
Đề7 (2đ)
Viết chương trình biến đổi một biểu thức chính qui thành nâ theo phương pháp cải tiến (Có thé kế thừa từ Đề 6.)
Đê§ (3đ)
Viết chương trình biến đổi một biểu thức chính qui thành đfa trực tiếp không thông qua nôa (Có thể kế thừa từ Đề 6.)
Đề 9 (2đ
Viết hương trình biến đổi một nfa thành văn phạm tuyến tính phải, văn phạm tuyến tính trái và ngược lại
Đề 10 _ (24)
Viet chương trình thực hiện g1ao của hai día, hiệu của hai dfa
Đề 11 (2đ)
Việt chương trình thực hiện thương đúng của hai đía
Đề 12 (3đ)
Viết chương trình kiểm tra hai đfa có tương đương nhau không
Đề 13 (3đ)
Ung dụng automata hữu hạn, viết chương trình chuyển mã của các ñile text giữa ít nhất 3 bảng
mã thông dụng hiện nay VNI, Unicode,
Đề 14 (3đ)
Ứng dụng automata hữu hạn viết chương trình đổi nhiều tên file cùng lúc từ mẫu này sang mẫu khác (Tạo ra các phép toán thuận tiện hơn cho người sử dụng dựa vào 3 phép toán cơ bản của biểu thức chính qui Tham khảo thêm ngôn ngữ Perl để biết thêm chỉ tiết)
Đề 15 (5đ)
Ứng dung automata hữu hạn viết chương trình driver cho bộ gõ tiếng Việt hỗ trợ hai cách gõ VNI, Telex và hỗ trợ ít nhất 3 bảng mã thông dụng hiện nay VNI, Unicode,
Đề 16 (2đ)
Viết các chương trình loại bỏ lần lượt và loại bỏ đồng thời ba loại luật sinh vô dụng, trống và don vi
Đề 17 (3đ)
Trang 3Đề
Đề
Đề
Đề
Đề
Đề
é
D
é
Đề
Viết các chương trình biến đổi một văn phạm bất kỳ thành văn phạm có dang Chomsky va Greibach
18 (1đ)
Cho biết dẫn xuất, viết chương trình hiển thị dẫn xuất đưới đạng cây
19 (2đ)
Viết chương trình phân tích cú pháp theo phương pháp vét cạn Có trình bày tuần tự các bước phân tích và dẫn xuất nếu có
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à dẫn xuất nếu có
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à dẫn xuất nếu có
22 (2đ)
Xây dựng bộ công cụ cho phép nhập, vẽ các npda, đpda (các đối tượng trong đồ thị có thể thay đổi vị trí được) Lưu trữ và hiến thị lại chúng
23 (3đ)
Viết chương trình mô phỏng hoạt động của một npda, dpda bằng hình ảnh và bằng đồ thị chuyển trạng thái
24 (2đ)
Viết chương trình biến đổi một văn phạm phi ngữ cảnh thành một npda
25 (3đ)
Viết chương trình biến đổi một npda thành một văn phạm phi ngữ cảnh
26 (4đ)
Viết chương trình phân tích cú pháp cho ngôn ngữ Pascal đơn giản (bao gồm các khai báo hàm, thủ tục, khai báo biến, begin, end, lệnh if, lệnh lặp for, repeat until, while do, cdc phép so sánh, các phép toán số học)
27 (3đ)
Tìm hiểu các hàm xử lý chuỗi của ngôn ngữ Pcrl Xây dựng lại một số hàm này (khoảng 10 hàm) cho các ngôn ngữ khác