Bài tập môn Ngôn ngữ lập trình Pascal

a. Thực tập cài đặt Borland Pascal lên máy của mình.

b. Hướng dẫn ghi đè file Turbo.tpl để chống lỗi “divide by zero”.

c. Quan sát sự bố trí các file trong các thư mục.

d. Dùng lệnh Run của Windows chạy thử Pascal bằng cách dùng

Turbo.exe và bằng cách dùng BP.EXE. Quan sát và cho nhận xét. Tạo

Shorcut cho BP.EXE.

e. Chạy Borland Pascal và quan sát các thành phần của giao diện, menu

của nó. Bố trí cửa sổ soạn thảo và cửa sổ gỡ rối (Watch window).

f. Gọi Help của Borland Pascal bằng cách dùng phím F1 và bằng cách

dùng CTRL-F1 (online help).

pdf8 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 6257 | Lượt tải: 1download
Tóm tắt nội dung Bài tập môn Ngôn ngữ lập trình Pascal, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
nhất, số nhỏ nhất, số các số chẵn,số các số lẻ. 
4. DÙNG VÒNG LẶP WHILE: Viết chương trình nhập vào các số nguyên từ 
bàn phím, có kiểm tra dữ liệu nhập (bắt buộc nhập lại tại vị trí nhập trước đó 
nếu nhập sai), chấm dứt nhập bằng cách nhập số không. Xuất ra màn hình tổng 
các số đó, số lớn nhất, số nhỏ nhất, số các số chẵn,số các số lẻ (trừ số 0). 
5. PHỐI HỢP CÁC CẤU TRÚC ĐIỀU KHIỂN VÀ TÍNH TOÁN CÁC VỊ TRÍ 
KẾT XUẤT: 
a) Viết chương trình xuất ra màn hình bảng cửu chương từ bảng nhân 2 đến 
bảng nhân 9. 
b) Viết chương trình nhập vào tọa độ góc trên trái và tọa độ góc dưới phải của 
một hình chữ nhật. Xuất hình chữ nhật đó ra màn hình. 
6. SỬ DỤNG THỦ TỤC VÀ HÀM: 
a) Viết chương trình nhập vào chiều cao lá phướng, xuất ra ngay giữa màn 
hình lá phướng dạng sau đây: 
xxxxxx+ 
xxxxx++ 
xxxx+++ 
xxx++++ 
xx+++++ 
x++++++ 
+++++++ 
b) Viết chương trình xuất ra màn hình N hình chữ nhật (N nhập từ bàn phím) 
tại các vị trí ngẫu nhiên. 
7. XÂY DỰNG CÁC UNIT: Sau khi thực hiện xong bài tập trên đây thì đưa tất 
cả các Procedure và Function đó vào một unit tên là My_Unit. Biên dịch Unit 
đó thành My_Unit.TPU để còn gọi dùng lại về sau. 
 4 
8. SỬ DỤNG ĐỆ QUI: 
a) Viết chương trình nhập vào một số nguyên không âm. Xuất ra màn hình kết 
quả phân tích số đó thành tổng các số Fibonacci. 
b) Viết chương trình tính toán ước số chung lớn nhất và bội số chung nhỏ nhất 
của hai số nguyên không âm (sử dụng đệ qui) 
CHUỖI VÀ MẢNG: 
9. Viết chương trình nhập một xâu kí tự (chuỗi) S chỉ gồm các chữ cái thường 
(không hoa) trong bảng mẫu tự. Hãy lập ra xâu S1 nhận được từ S bằng cách 
sắp xếp lại các kí tự theo vần a, b, c. 
Ví dụ: S=‟xbaqp‟ thì S1=‟abpqx‟ 
10. Viết chương trình cho phép nhập vào một chuỗi và thông báo xem chuỗi đó có 
phải là chuỗi đối xứng không. 
Ví dụ: Chuỗi S=‟AABcdcBAA‟ là một chuỗi đối xứng 
Chuỗi SA=‟AWERTYDFRWA‟ không phải là một chuỗi đối xứng. 
11. Có thể làm cho người ta có một ảo giác dòng chữ chạy xoay vòng trên màn 
hình như sau. Giả sử dòng chữ là “CHAO MUA XUAN-” thì các pha hiển thị 
theo thứ tự một gián cách thời gian nhỏ tại cùng một vị trí màn hình là như 
sau: 
1. CHAO MUA XUAN- 
2. -CHAO MUA XUAN 
3. N-CHAO MUA XUA 
4. AN-CHAO MUA XU 
5. UAN-CHAO MUA X 
6. XUAN-CHAO MUA 
 7. XUAN-CHAO MUA 
8. A XUAN-CHAO MU 
..v.v. 
Viết chương trình cho phép nhập từ bàn phím một chuỗi độ dài 40 và cho dòng chữ 
chạy ngay giữa màn hình từ phải qua trái (hoặc từ trái qua phải giống như trong 
minh hoạ trên) 
12. Viết chương trình cho phép nhập vào từ bàn phím một chuỗi. Ta định nghĩa 
một từ là một dãy liên tục các kí tự khác khoảng trắng, khoảng trắng là dấu 
tách từ duy nhất. Chương trình có nhiệm vụ thông báo ra màn hình các từ khác 
nhau trong chuỗi đã nhập. 
13. Viết chương trình nhập vào một chuỗi và một kí tự. Thông báo ra màn hình số 
kí tự này có trong chuỗi. Kết quả trên màn hình có dạng: 
Chương trình đếm số kí tự có trong chuỗi. 
Nhập chuoi: Hoc tap chuyen can. 
Kí tự: a Kết quả: Có 2 chữ ‘a’. 
Tiếp tuc (Y/N): Y 
 5 
Kí tự: d Kết quả: Không có chữ ‘d’ nào. 
Tiếp tuc (Y/N): N 
14. Viết chương trình cho phép nhập vào một chuỗi và thông báo cho người dùng 
biết chuỗi chứa gồm bao nhiêu chữ cái „A‟, chữ cái „B‟, .v.v. Kết quả trên 
màn hình có dạng: 
Chương trình đếm số kí tự trong chuỗi. 
Nhập vào một chuỗi: Aa Bb Toi di day. 
Ket qua: 1 chu A, 1 chu B, 1 chu T, 1 chu a, 1 chu b, 2 
chu d, .... 
15. (*)1 Viết chương trình cho phép nhập vào một dãy hữu hạn các số nguyên, 
chương trình sẽ thông báo ra: 
a) Tất cả các dãy con tăng rút ra từ dãy này 
b) Dãy con tăng có chiều dài lớn nhất. 
Ví dụ: 
Từ dãy 12 - 4 13 6 8 2 9 10 -3 20 
thì dãy con tăng có chiều dài lớn nhất là: 
 -4 6 8 9 20 
16. Viết chương trình cho phép nhập vào các ma trận vuông kích thước NxN (khai 
báo N như một hằng) và cho phép thực hiện các phép tính: 
a) Cộng hai ma trận 
b) Trừ hai ma trận. 
c) Nhân hai ma trận. 
d) (*) Thông báo ra định thức (Det) tương ứng của ma trận nhập. 
17. Một mảng hai chiều MG2: array[ 0..Max,0..Max] of char; Max là một hằng 
(const). Mảng MG2 được khởi tạo ngẩu nhiên. Duyệt trong toàn bộ mảng xem 
có bao nhiêu chữa cái „A‟ (hoặc „a‟, không phân biệt chữ hoa, chữ thường), 
chữ cái „B‟, .v..v. Thông báo kết quả ra màn hình. 
18. Mảng HOTEN gồm 10 phần tử là các chuỗi độ dài 20. Viết chương trình cho 
phép nhập vào mảng họ tên từ bàn phím. Xuất kết quả ra màn hình. Sau đó sắp 
xếp lại mảng HOTEN theo thứ tự tăng dần từ điển (sắp xếp kiểu Bubble sort). 
Thông báo kết quả sau khi sắp xếp ra màn hình. 
19. Viết chương trình dò trong một mảng MG gồm 20 phần tử kiểu số nguyên 
(mỗi phần tử nhỏ hơn 50) xem có hai phần tử liên tiếp nào mà tổng của chúng 
bằng một số X hay không. Mảng MG được khởi tạo ngẩu nhiên gồm các số 
hoàn toàn khác nhau. Số X được nhập vào từ bàn phím. 
PHỐI HỢP CÁC KIỂU DỮ LIỆU: 
20. Viết chương trình cho phép tạo một file văn bản theo từng dòng tương tự lệnh 
COPY CON của DOS. 
1 Bài/câu có dấu (*) là không bắt buộc. Chỉ dành cho sinh viên có năng lực toán học tốt. 
 6 
21. Viết chương trình cho phép đọc vào một file văn bản. Với mỗi dòng (chuỗi) 
của file văn bản này thực hiện các công việc sau: 
a) Bỏ tất cả kí tự trống dư thừa trước, trong và cuối chuỗi. 
b) Canh lề đầu dòng (indent) N vị trí (N nhập từ bàn phím). 
c) Làm HOA kí tự đầu chuỗi, các kí tự còn lại chuyễn về chữ thường. 
d) Ghi lại văn bản đã hiệu chỉnh lên đĩa với một tên khác. 
e) Thông báo ra màn hình cho biết file mới gồm bao nhiêu dòng, bao 
nhiêu kí tự (không kể kí tự xuống dòng và kí tự khoảng trắng), bao nhiêu 
từ (Một từ là một chuỗi con khác rỗng giới hạn giữa hai kí tự khoảng 
trắng) 
22. Viết chương trình cho phép tạo một file có kiểu, mỗi thành phần của file là 
một record kiểu khai báo như sau 
TYPE 
Nhansu = RECORD 
 Hoten: string; 
 Tuoi:byte; 
 CoQuan:String; 
 Luong:longint; 
 HonPhoi:Boolean; 
 End; 
Chương trình cho phép: 
 a) Tạo file. 
 b) Xem file. 
 c) Thêm vào file một phần tử 
 d) Xóa khỏi file một phần tử. 
 e) Duyệt file để trả lời cho biết các thông tin cần biết về Luong hoặc 
HonPhoi. 
23. Viết chương trình : 
a) Tạo một danh sách (list) có chiều dài có thể tùy ý chứa các Record 
 Ptu = Record 
 St:string; 
 Num:byte; 
 End; 
b) Chứa các thủ tục: Xóa/Thêm một phần tử vào danh sách có sẳn. 
c) Chèn một danh sách vào một danh sách đã có. 
d) Sắp xếp danh sách theo giá trị của Num từ lớn đến nhỏ . 
24. Dựa vào bài 8, viếp một chương trình cho phép nhập vào một đa thức không 
giới hạn bậc. Sau đó cho phép Đơn giản đa thức, Cộng/Trừ/Nhân hai đa thức. 
 7 
25. (*) Như bài 24. Viết thêm phần chia một đa thức cho một nhị thức bậc nhất 
(bằng cách vận dụng sơ đồ Hörner). 
26. Khai báo kiểu dữ liệu như sau đây: 
TYPE 
str20=string [20]; 
str40=string [40]; 
Hocvien= record 
 Hoten:str20; 
 Tuoi:1..120; 
 Phai:boolean; 
 CQCQ:str40; {Cơ quan chủ quản} 
 End; 
HVF=File of Hocvien; 
Viết và tổ chức chương trình dưới dạng một menu cho phép: 
a. Nhập dữ liệu về học viên và lưu trữ dữ liệu đó trên đĩa. 
b. Truy cập và cập nhật thông tin về học viên đã cất trên đĩa. 
c. Sắp xếp lại các thông tin về học viên theo từng tiêu chí (khoá sắp 
xếp – ví dụ: xếp theo tên/ xếp theo tuổi) và ghi lại thành các file dữ 
liệu đã được sắp xếp. 
d. Tim kiếm và in thông tin về một học viên đã có trên đĩa ra màn 
hình và ra máy in.
2
e. In ra màn hình hoặc máy in thông tin về học viên theo một tiêu chí 
chọn lựa nào đó. (Ví dụ thông tin về học viên theo CQCQ, theo độ 
tuổi). 
27. Viết chương trình cho phép mô phỏng lệnh COPY CON của DOS (chú ý thực 
hiện tham số dòng lệnh y như trong môi trường DOS). 
28. Viết chương trình cho phép mô phỏng lệnh TYPE của DOS (chú ý thực hiện 
tham số dòng lệnh y như trong môi trường DOS). 
29. Viết chương trình mô phỏng tiện ích File Split / Merge của NC. 
30. Viết chương trình mô phỏng lệnh REN của DOS (chú ý thực hiện tham số 
dòng lệnh y như trong môi trường DOS). 
31. Viết chương trình mô phỏng lệnh COPYcủa DOS (chú ý thực hiện tham số 
dòng lệnh y như trong môi trường DOS). 
32. Viết chương trình mô phỏng lệnh DEL của DOS (chú ý thực hiện tham số 
dòng lệnh y như trong môi trường DOS). 
33. Mô phỏng chức năng Change Case của MicroSoft Word: Viết chương trình 
cho phép đọc một file văn bản (A) và SAVE lại file đó với một tên khác (B) 
2 Lưu ý: Unit Printer của Turbo Pascal chỉ hỗ trợ xuất ra máy in qua cổng LPT1 
(DB25 connector), không thực hiện được với các máy in hiện nay dùng kết nối 
qua cổng USB. 
 8 
với nội dung gồm tất cả dòng của file (A) đã được chuẩn hóa thành dạng Title 
Case 
(Nếu file A có dòng: „DAY la dONG troNG File„ 
thì dòng tương ứng trong file (B) là: „Day La Dong Trong File„) 
34. Khai báo kiểu dữ liệu như sau: 
TYPE 
Hoso = DataType; {Ở đây DataType là một kiểu dữ liệu trừu tượng nào đó do 
sinh viên tự khai báo} 
DataPtr = ^Node; 
Node = Record 
 Data : Hoso; 
 Next : DataPtr; 
 End; 
VAR 
NhanVien,Tam:DataPtr; 
a) Viết các thủ tục để tạo một danh sách liên kết (linked list). Trong danh 
sách này mỗi nút (node) bao gồm hai field: một field có dữ liệu kiểu 
DataType, field kia là một con trỏ trỏ đến nút kế tiếp. Hãy tạo ra danh sách 
này bằng hai cách sao cho có thể xử lí được: 1) Theo kiểu LIFO (Last In 
First Out). 2) Theo kiểu FIFO (First In First Out). 
b) Viết các thủ tục cho phép đếm số nút / xoá một nút / thêm một nút vào 
danh sách liên kết hiện có. 
c) Viết các thủ tục cho phép nối hai danh sách liên kết với nhau bằng cách 
cho con trỏ của nút cuối cùng của danh sách này chỉ đến nút đầu tiên của 
danh sách kia. 
d) Viết thủ tục cho phép trộn hai danh sách liên kết hiện có: Danh sách mới 
gồm xen kẻ một nút của danh sách này rồi một nút của danh sách kia (Nếu 
một trong hai danh sách ngắn hơn danh sách kia thì sau khi đã dùng hết các 
nút của danh sách ngắn hơn trong xen kẻ thì phần còn lại chỉ gồm các nút 
còn lại của danh sách dài hơn) 
 

File đính kèm:

  • pdfBaiTapPascal.pdf