
z
LUẬN VĂN:
Xây dựng chương trình thống kê kí
tự đơn và kí tự đôi trong file văn
bản tiếng Việt mã ABC

I. Đặt vấn đề
*Mục đích của đề tài
Từ khi máy vi tính trở nên phổ biến và rộng rãi trong nước, nhu cầu sử dụng chữ Việt
trên máy vi tính đã trở thành nhu cầu cấp thiết đối với người sử dụng. Việc đưa tiếng Việt
vào máy tính là một vấn đề có tầm quan trọng trong việc tin học hóa, phổ cập tin học và
phát triển công nghệ phần mềm trong nước. Do vậy đã có nhiều cá nhân, tập thể trong và
ngoài nước đã tập trung nhiều công sức trong việc đưa tiếng Việt vào các máy tính nói
chung và máy vi tính nói riêng.
Hiện nay có rất nhiều phần mềm đưa tiếng Việt vào máy tính, số lượng các phần
mềm này lớn cho ta thấy được ý nghĩa của việc đưa tiếng Việt vào máy tính. Tuy nhiên
mỗi phần mềm này lại có một cách thức thể hiện khác nhau (cách mã hóa ký tự tiếng Việt
khác nhau). Có rất nhiều cách mã hóa ký tự Tiếng Việt. Mặc dù khác nhau, không thống
nhất theo những quy tắc chung, các giải pháp tiếng Việt đã phần nào đáp ứng được nhu
cầu thực tiễn, ít nhất cũng trong phạm vi của một tổ chức, cơ quan...và góp phần vào việc
“Việt hóa” các ứng dụng cho máy tính.
ở cấp độ các cơ quan nhà nước, một bộ mã tiếng Việt duy nhất được thống nhất sử
dụng, đó là bộ mã TCVN3 hay còn gọi là mã ABC. Mặc dù vẫn còn nhiều khiếm khuyết
nhưng trên thực tế, bộ mã tiếng Việt 8 bit này đã được chấp nhận và lưu hành rộng rãi tại
Hà Nội và các tỉnh phía Bắc sau một số năm áp dụng. Việc xử lý các văn bản sử dụng
bảng mã ABC vẫn có ý nghĩa quan trọng trong thời điểm hiện tại.
*Giói thiệu bài toán cụ thể của đề tài
Chuyên đề thực tập này có nội dung như sau:

“Xây dựng chương trình thống kê kí tự đơn và kí tự đôi trong file văn bản tiếng Việt
mã ABC”.
Đề tài gồm hai phần:
Phần thứ nhất thống kê tất cả các kí tự đơn của file văn bản
Phần thứ hai liệt kê số lần xuất hiện của một kí tự đơn sau một kí tự đơn khác là
bao nhiêu lần trong toàn bộ file văn bản (ví dụ ta có kí tự đôi “ca”, vậy kí tự “a” sẽ đứng
sau kí tự “c” là bao nhiêu lần trong văn bản), sau đó tính tần suất xuất hiện kí tự đôi.
II. Cơ sở lý thuyết của đề tài thực tập
Trình bầy tổng quan các nghiên cứu trong lý thuyết
1) File văn bản
Để giải bài toán đặt ra, trước hết ta phải xác định kiểu file đầu vào cho chương trình.
Trong Turbo Pascal, file văn bản được hiểu theo nghĩa chuẩn, các dữ liệu được lưu trữ
dưới dạng các ký tự trong bảng mã ASCII. Các ký tự được liên kết thành từng dòng, dấu
hết dòng được ghi nhận bởi cặp ký tự điều khiển có mã 13 (ký tự trở về đầu dòng - CR)
và ký tự có mã 10 (ký tự xuống dòng - Lf). Không có quy định về chiều dài dòng cho file
văn bản.
Turbo Pascal dùng tên chuẩn Text để đặt cho file văn bản. Vì thế lời khai báo biến
file văn bản sẽ là:
Var

f: text;
File văn bản chỉ có thể truy cập tuần tự chứ không thể truy cập trực tiếp như file định
kiểu. Và cũng không thể vừa đọc vừa ghi trên file văn bản như file định kiểu.
Tuy nhiên vì file văn bản không phụ thuộc vào định nghĩa kiểu thành phần nên nó là
công cụ giao tiếp chung giữa các chương trình. Bất cứ chương trình nào cũng có thể đọc
dữ liệu từ file văn bản và kết xuất dữ liệu dưới dạng văn bản. Việc soạn thảo file văn bản
có thể dùng bất cứ một hệ soạn thảo nào (là những chương trình tiện ích vốn rất phong
phú hiện nay). Chẳng hạn, có thể dùng ngay hệ soạn thảo của chính Turbo Pascal để xây
dựng và hiệu chỉnh file văn bản.
Các bước thao tác trên file văn bản tuân theo quy trình như sau: đầu tiên cần đăng ký
biến file văn bản (f) với tên file trên đĩa (name) bằng thủ tục Assign (f, name). Sau đó mở
file bằng thủ tục Reset (f) nếu nó đã có để chuẩn bị đọc, hoặc mở bằng thủ tục Rewrite (f)
nếu muốn tạo mới để chuẩn bị ghi. Sau Reset chỉ có thể đọc và sau Rewrite chỉ có thể
ghi. Mỗi lần đọc ghi xong con trỏ lại định vị đến vị trí kế tiếp. Việc đọc dữ liệu từ file
văn bản tương tự như đọc từ bàn phím, cũng dùng các thủ tục Read (f, var1, var2, ...),
Readln nếu muốn đọc từng dòng. Các biến ký tự được đọc theo từng đơn vị ký tự, các
biến xâu ký tự được đọc đúng độ dài của nó hoặc cho đến khi gặp dấu xuống dòng. Việc
ghi ra file văn bản cũng tương tự như ghi ra màn hình (cũng dùng các thủ tục write và
writeln). Sau khi thao tác xong cần đóng file nhờ thủ tục Close (f) để đảm bảo an toàn dữ
liệu.
Ngoài ra còn có thủ tục Append (f) để mở một văn bản có sẵn để ghi kế tiếp, hàm Eof
(f) để kiểm tra đã định vị đến cuối file chưa...
2) Kiểu con trỏ

Trong Pascal, kiểu con trỏ là một kiểu dữ liệu đặc biệt, dùng để biểu diễn những giá
trị địa chỉ. Như thế kiểu con trỏ là những biến dùng để lưu những giá trị địa chỉ của bộ
nhớ. Nhờ các biến con trỏ, ta có thể thao tác trên các giá trị địa chỉ cũng như truy cập dữ
liệu ở các vùng nhớ một cách linh hoạt. Ngoài ra, biến con trỏ còn là công cụ để xin cấp
phát trên vùng Heap (cấp phát động) và xây dựng kiểu dữ liệu động, cho phép chương
trình có thể khai thác tối đa và hiệu quả bộ nhớ.
Có hai kiểu con trỏ là con trỏ định kiểu và con trỏ không định kiểu.
Với bài toán đã cho, con trỏ định kiểu được sử dụng. Con trỏ định kiểu cần xác định
kiểu dữ kiệu mà nó trỏ đến. Turbo Pascal dùng ký hiệu ^ trước tên kiểu dữ liệu để khai
báo con trỏ định kiểu:
Type
PtrType = ^DataType;
trong đó: PtrType là tên kiểu con trỏ
DataType là tên kiểu dữ liệu xác định kiểu dữ liệu được trỏ.
Vì kiểu con trỏ chỉ lưu địa chỉ nên nó có thể khai báo trước kiểu dữ liệu được trỏ.
Chẳng hạn, có quyền khai báo:
PtrType = ^ DataType;
DataType = record
..............
end;

