1. Mục đích, yêu cầu
- Rèn luyện các thao tác xử lí xâu, kĩ năng tạo hiệu ứng chữ chạy trên màn hình;
- Nâng cao kĩ năng viết, sử dụng chương trình con.
2. Nội dung
a) Hai thủ tục CatDan(s1,s2) và CanGiua(s) sẽ được dùng trong một chương trình để làm một dòng chữ chạy trên màn hình.
- Thủ tục CatDan(s1,s2) tạo nên xâu s2 từ xâu s1 nhận đầu vào sao cho s2 chính là trạng thái tiếp theo nếu hình dung s1 dịch sang trái một vị trí trong chuyển dịch vòng. Ta chỉ cần khai báo s1 là tham số giá trị, nhưng s2 phải khai báo là tham số biến.
- Thủ tục CanGiua(s) thêm một số dấu cách ở đầu một xâu s sao cho khi đưa ra màn hình dòng chữ của xâu s nằm giữa màn hình. Nếu khai báo s là tham sổ biến thì thù tục này không có hiệu lực gì vì lệnh đưa s ra màn hình khòng nằm trong thủ tục này.
b) Chương trình làm một dòng chữ chạy trên màn hình. Nó sử dụng hai thủ tục mà chúng ta đã tìm hiểu ờ câu a).
Trong chương trình:
- Thủ tục chuẩn gotoxy(x,y) chuyển con trỏ màn hình đến vị trí Cột X dòng y trên màn hình;
- Thủ tục delay(n) dừng trạng thái của màn hình trong n miligiây.
- Hàm chuẩn keypressed không có tham số trả ra giá trị true khi có một phím được gõ.
Khi chạy chương trình trên với dòng chữ
'....Mung nghin nam Thang Long — Ha Noi!'
Kết quả chương trình có dạng như hình 72 dưới đây:
c) Để giải quyết bài toán tổng quát hơn (xâu chữ chạy ở dòng bất kỳ do chương trình chính quy định). Chúng ta cần lưu ý một số điểm sau:
Nhiệm vụ cùa thủ tục Chuchay(s, dong) thực hiện, về cơ bản là nhiệm vụ mà chương trình ở câu b) đã làm, chỉ khác là chương trình ở câu b) luôn cho dòng chữ chạy ở dòng 12, còn thủ tục Chuchay(s, dong) có tham số dong quy định dòng nào trên màn hình xảy ra chuyển động của chữ. Từ ý nghĩa sử dụng tham số dong ta thấy chi cần khai báo nó là tham số giá trị. Như vậy, thủ tục Chuchay(s, dong) chỉ viết khác thân chương trình ờ câu b) vài chỗ. Chẳng hạn: