Giáo trình Turbo Pascal 7.0
1. THUẬT TOÁN
2. CÁC PHƯỢNG PHÁP BIỂU DIỄN THUẬT TOÁN
3. ĐỘ PHỨC TẠP CỦA THUẬT TOÁN
4.PHÂN LOẠI VẤN ĐỀ - BÀI TOÁN
5. THUẬT TOÁN ĐỆ QUY
6.THUẬT GIẢI
5.1.GIỚI THIỆU NGÔN NGỮ PASCAL
5.2. CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ PASCAL
5.3. CẤU TRÚC CHUNG CỦA CHƯƠNG TRÌNH PASCAL
5.4. SỬ DỤNG PHẦN MỀM TURBO PASCAL
5.5 CÂU HỎI TRẮC NGHIỆM
5.6. BÀI TẬP
6.1. KHÁI NIỆM VỀ KIỂU DỮ LIỆU
6.2. KIỂU SỐ NGUYÊN
6.3. KIỂU SỐ THỰC
6.4. KIỂU KÝ TỰ (CHAR)
6.5. KIỂU LÔGIC (BOOLEAN)
6.6. CHUỖI KÝ TỰ (STRING)
6.7. CÂU HỎI TRẮC NGHIỆM
7.1. HẰNG, BIẾN và BIỂU THỨC
7.2. CÂU LỆNH và LỜI CHÚ GIẢI
7.3.1. NHẬP DỮ LIỆU, THỦ TỤC “READLN”
7.3.2. XUẤT DỮ LIỆU, THỦ TỤC “WRITE” và “WRITELN”
7.4. KIỂU LIỆT KÊ và KIỂU ÐOẠN CON
7.5. CÂU HỎI TRẮC NGHIỆM
7.6. BÀI TẬP
8.1. CÂU LỆNH IF
8.2. CÂU LỆNH CASE
8.3. CÂU HỎI TRẮC NGHIỆM
8.4. BÀI TẬP
9.1. CÂU LỆNH LẶP FOR
9.2. CÂU LỆNH LẶP WHILE
9.3. CÂU LỆNH LẶP REPEAT
9.4. CÂU HỎI TRẮC NGHIỆM
9.5. BÀI TẬP
10.1. MẢNG MỘT CHIỀU
10.2. MẢNG HAI CHIỀU (MA TRẬN)
10.3. CÂU HỎI TRẮC NGHIỆM
10.4. BÀI TẬP
11.1. CÁC VÍ DỤ NÂNG CAO VỀ CÂU LỆNH LẶP
11.2. CÁC VÍ DỤ NÂNG CAO VỀ MẢNG
11.3. KIỂU CHUỖI KÝ TỰ
11.4. CÂU HỎI TRẮC NGHIỆM
11.5. BÀI TẬP
12.1. KHÁI NIỆM VỀ CHƯƠNG TRÌNH CON
12.2. HÀM (FUNCTION)
12.3. THỦ TỤC (PROCEDURE)
12.4. CÂU HỎI TRẮC NGHIỆM
12.5. BÀI TẬP
13.1. THAM SỐ TRỊ VÀ THAM SỐ BIẾN
13.2. PHẠM VI TÁC DỤNG CỦA CÁC KHAI BÁO
13.3. SỰ THAM KHẢO TRƯỚC và SỰ ÐỆ QUI
13.4. CÂU HỎI TRẮC NGHIỆM
13.5. BÀI TẬP
14.1 KIỂU BẢN GHI
14.2. CÁC VÍ DỤ VỀ BẢN GHI
14.3. CÂU HỎI TRẮC NGHIỆM
14.4 .BÀI TẬP
15.1. KIỂU TẬP HỢP
15.2. DỮ LIỆU KIỂU TẬP TIN
15.3. CÂU HỎI TRẮC NGHIỆM
15.4. BÀI TẬP
p tin đã có, trước tiên ta phải mở tập tin bằng lệnh Reset. Sau đó đọc dữ liệu bằng thủ tục Read hay Readln. Nếu mở tập tin bằng Rewrite hoặc Append thì không thể đọc được bằng Read và Readln. Nếu mở tập tin bằng Reset thì không thể ghi được bằng Write hay Writeln. Ghi dữ liệu vào tập tin văn bản : Thủ tục WRITE( biếntậptin, bt1, bt2, ..., btN) : cho phép tuần tự ghi các gía trị của các biểu thức bt1, bt2, .. btN vào tập tin văn bản. Các biểu thức bt1, bt2, .. btN phải thuộc kiểu đơn giản chuẩn ( nguyên, thực, ký tự, lôgic) hay kiểu chuỗi, và chúng không cần phải có kiểu giống nhau. Ví dụ : Write(F, 3, 10:4, ‘a’:2, ‘Text’, 4.5:6:2); sẽ ghi vào tập tin thành dãy như sau ( Dấu ~ hiểu là một ký tự trắng): 3~~10~aText~~4.50 Chương trình dưới đây sẽ tạo tập tin văn bản T1.TXT : Program VIDU; Var F: Text; A : Integer; B : Real; Begin A:=100; B:=1234.5; Assign(F, ’T1.TXT’); Rewrite(F); Write(F, ‘Ket qua=’ :10, A:5, B:7:2); Close(F); End. Nội dung của tập tin T1.TXT là : ~~Ket qua=~~100~123.45 Như vậy, cách ghi dữ liệu vào tập tin văn bản hoàn toàn giống như khi in dữ liệu lên màn hình. Thủ tục WRITELN cũng có công dụng như WRITE, nhưng ghi xong dữ liệu thì đưa con trỏ tập tin xuống dòng dưới. Ðặc biệt, lệnh Writeln(F); không ghi gì cả, chỉ đưa con trỏ tập tin xuống dòng. Nội dung của các tập tin văn bản tạo bằng Pascal hoàn toàn có thể xem được bằng lệnh Type của MSDOS, bằng Norton hay bằng chính Turbo Pascal, ... Ðọc dữ liệu của tập tin văn bản : Thủ tục READ( biếntậptin, biến1, biến2, ..., biếnN) đọc tuần tự các gía trị từ tập tin và gán cho các biến. Các biến1, biến2, ..., biếnN phải có kiểu dữ liệu phù hợp vơí dữ liệu cần đọc tại vị trí tương ứng trong tập tin. Ví dụ: Nếu tập tin T1.TXT có nội dung như sau: ~~Ket qua=~~100~123.45 thì để đọc lại các dữ liệu này, ta phải khai báo: Var St :String[10]; i: Integer ; Z : Real; Và dùng các lệnh: Reset(F); Read(F, St, i, Z); Gía trị của St, i, Z sẽ là: St=’~~Ket qua=’, i=100, Z=123.45. Nếu khai báo St có kiểu String[9] thì sẽ bị lỗi vì sau khi đọc xong 9 ký tự đầu, máy sẽ đọc tiếp gía trị =~~100 cho biến nguyên i, nhưng vì gía trị này bắt đầu là dấu = nên không đổi ra số nguyên được. Thủ tục READLN(biếntậptin, biến1, biến2, ..., biếnN ) đọc dữ liệu cho các biế? xong sẽ đưa trỏ tập tin xuống đầu dòng dưới. Ðặc biệt, lệnh READLN( biếntậptin); không đọc gì cả, chỉ đưa con trỏ tập tin xuống dòng. Chú ý Hàm Eof(F) cũng dùng được cho tập tin văn bản, ngoài ra còn có hàm EOLN(F) cho kết qủa là True hoặc False tùy theo con trỏ tập tin có đang ở cuối dòng hay không. Khi Eof(F)=True thì Eoln(F) cũng có gía trị là True. Thủ tục Seek và các hàm FileSize, FilePos không dùng cho tập tin văn bản. Các tập tin văn bản ngầm định: Trong Pascal có hai biến tập tin văn bản đã được khai báo sẵn là Input và Output , tức là máy đã ngầm khai báo : Var Input , Output : Text ; Input thường là bàn phím còn Output thường là màn hình. Lệnh Readln(Input, x); được viết tắt thành Readln( x) ; Lệnh Writeln(Output, x); được viết tắt thành Writeln(x); Máy in cũng là một tập tin văn bản, được ngầm khai báo với tên là LST. Ðể in các biểu thức bt1, bt2, ..., btN ra máy in, ta phải khai báo sử dụng thư viện chuẩn PRINTER, và dùng lệnh : Write(LST, bt1, bt2, ... , btN); So sánh tập tin văn bản với tập tin định kiểu: Các tập tin có định kiểu cho phép vừa đọc vừa ghi và truy nhập trực tiếp vào từng phần tử gần giống như thao tác với mảng. Các tập tin văn bản không cho phép đồng thời đọc, ghi và chỉ có thể đọc hoặc ghi tuần tự, nhưng cho phép ta có thể xem, sửa trực tiếp một cách dễ dàng bằng các hệ soạn thảo văn bản đơn giản, như NC hay chính Turbo Pascal. Ví dụ 15.5: Cho tập tin văn bản tên là T2.TXT và có nội dung là: dong=6 cot =7 0 8 8 -2 6 11 1 8 0 2 0 7 0 2 8 2 0 11 12 9 3 -2 0 11 0 -7 9 4 6 7 12 -7 0 6 5 11 0 9 9 6 0 6 Hãy đọc tập tin này đưa vào một ma trận A và in ma trận A lên màn hình. Số dòng và số cột của ma trận A được ghi ở hai dòng đầu tiên trong tập tin T2.TXT. Program VIDU15_5; { vi du ve File Van ban } uses crt; Type MANG = array[1..20,1..20] of integer ; Var A : MANG; N, M : integer; F : Text; Procedure Nhap; Var i,j : Byte; st: string[5]; Begin Assign(F, 'T2.TXT'); Reset(F); Readln(F, St, N); Readln(F, St, M); For i:=1 to N do begin For j:=1 to M do Read(F, A[i,j]); Readln(F); end; Close(F); End; Procedure InMatran; Var i, j : Integer; Begin For i:=1 to N do begin for j:=1 to M do write( A[i,j]:4); writeln; end; End; BEGIN Clrscr; Nhap; InMatran; Readln; END. 15.3. CÂU HỎI TRẮC NGHIỆM Câu 1: Khai báo nào đúng : a) Type T = Set of Real; b) Type T = Set of Integer; c) Type T = Set of String ; d) Type T = Set of 0..9 ; Câu 2: Khai báo nào sai : a) Var T : Set of Char ; b) Var T : Set of -10..300 ; c) Var T : Set of ‘A’..’z’ ; d) Var T : Set of Boolean ; Câu 3: Tổng của [1..5] + [3..10, 20] là tập hợp nào: a) [1..10, 20] b) [1..5] c) [1..20] d) [3..5] Câu 4: Hiệu của hai tập hợp [10..15]-[4..12] là tập hợp nào: a) [4..15] b) [13..15] c) [4..10] d) [10..12] Câu 5: Cho khai báo: Var T : Set of Char ; ch : Char ; Sau khi thực hiện các lệnh: T:=[‘A’.. ‘D’] * [‘A’.. ‘Z’]; For ch:=’A’ to ‘F’ do T:=T+[ch] ; Tập T sẽ là: a) [‘A’..’D’] b) [‘A’..’Z’] c) [‘A’..’F’] d) [‘C’..’F’] Câu 6: Cho khai báo : Var F: File of Integer ; i , j , k :Integer ; Chọn câu có các lệnh đều đúng : a) Assign( F, T1.DAT ); Rewrite(F); Write(F, i, j, k ); b) Assign(F, ‘T1.DAT’ ); Rewrite(F); Write(F, i+ j+ k ); c) Assign(F); Rewrite( F, ‘T1.DAT’ ); Write(F, i, j, k ); d) Assign(F, ‘T1.DAT’ ); Rewrite(F); Write(F, i, j, k ); Câu 7: Khi chạy chương trình : Var F : File of Char; ch : Char; Begin Assign(F, ‘tt.txt’); Rewrite(F); For ch:=’A’ to ‘F’ do Write(F, ch); Seek(F, 4); Read(F, ch); Write(ch); Close(F); End. Kết quả in ra là: a) E b) F c) C d) D Câu 8: Cho khai báo: Var F : TEXT ; Sau khi thực hiện các lệnh: Assign(F, ‘tt1.txt’); Rewrite(F); Write(F, 123+456); Close(F); Nội dung của tập tin tt1.txt sẽ là: a) 123+456 b) 123456 c) 579 d) 123 456 Câu 9: Cho F1 là biến tập tin có định kiểu và F2 là biến tập tin văn bản. Lệnh nào không dùng được : a) Seek( F1, 0); b) Seek(F2, 0); c) Write( Filesize(F1) ) ; d) Write( FilePos(F1) ) ; Câu 10: Cho TT2.TXT là tập tin văn bản có nội dung là : Turbo Pascal 6.0 Khi chạy chương trình : Var F : Text; St : String[20]; Begin Assign(F, ‘tt2.txt’); Reset(F); Read(F, St); Write(St); Close(F); End. sẽ in ra chữ : a) Turbo Pascal 6.0 b) Turbo c) Pascal 6.0 d) Turbo Pascal 15.4. BÀI TẬP Câu 1) Nhập một chuỗi St, xây dựng ba tập hợp: S1 là tập các chữ hoa có trong St S2 là tập các chữ thường có trong St S3 là tập các chữ số có trong St In các gía trị của mỗi tập S1, S2, S3 trên một dòng. Câu 2) Nhập vào một mảng A1, A2, ..., A10 các số nguyên dương < 10. Hãy in các gía trị của mảng này theo thứ tự tăng dần sao cho các phần tử trùng nhau chỉ được in một lần. Ví dụ : cho mảng 1, 6, 4,1, 9, 6, 6, 0, 3, 9 , in ra: 0,1, 3, 4, 6, 9 ( Hướng dẫn : xây dựng tập hợp gồm các phần tử của mảng A ) Câu 3) Viết chương trình thực hiện trò chơi sau: Người chơi nhập một số k trong phạm vi từ 1 đến 9 Tạo một tập S gồm ba số ngẫu nhiên trong phạm vi từ 1 đến 9 Kiểm tra xem k có thuộc tập S không?. Nếu thuộc thì người chơi thắng, ngược lại là thua. In k và tập S lên màn hình. Hướng dẫn: Trong thư viện CRT có hàm Random(n) trả về một số ngẫu nhiên j thuộc phạm vi: 0 ? j < n . Câu 4) Mỗi phân số được mô tả như sau : Type Phanso = Record tu, mau : Integer; end; Nhập hai phân số từ bàn phím, tạo một tập tin chứa hai phân số đó và hai phân số là tổng, hiệu của chúng. Ðọc bốn phân số đó từ tập tin và in lên màn hình. Câu 5) Nhập số nguyên dương N (0<N< 20 ) và một dãy N số nguyên : A1, A2, ..., AN . Ghi dãy số đó vào tập tin DL.DAT. Ðếm trong tập tin DL.DAT có bao nhiêu số chẵn. Ðọc các số lẻ từ tập DL.DAT và in lên màn hình. Câu 6) Ðể quản lý Họ tên , các điểm Toán, Lý và Ðiểm trung bình của sinh viên, ta mô tả kiểu Ksvien như sau : Type Ksvien= Record Hoten: String[20]; Toan, Ly, Dtb : Real; end; Hãy nhập một danh sách sinh viên gồm Họ tên, điểm Toán và điểm Lý, rồi tính Ðiểm trung bình: Dtb:=(Toán+Lý)/2, lưu vào tập tin QLY.DAT. Quá trình nhập kết thúc khi nhập Họ tên là rỗng ( tức không nhập gì cả, cứ Enter). Ðọc danh sách sinh viên từ tập tin QLY.DAT và in danh sách lên màn hình. Chép danh sách sinh viên vào tập QLY.IDX sao cho các phần tử của QLY.IDX được sắp xếp theo trật tự giảm của điểm trung bình. Ðọc dữ liệu của tập tin QLY.IDX và ghi vào tập tin văn bản tên là QLY.TXT theo dạng : STT Họ và tên Ðiểm trung bình 1 Nguyen Van Tuan 8.5 2 Pham Thi Mai 8.0 L L L Câu 7) Dùng hệ soạn thảo của Turbo Pascal để tạo một tập tin văn bản có tên là MT.DAT chứa hai ma trận vuông cấp 3 là A và B có các phần tử là các số nguyên. Lấy dữ liệu từ tập tin MT.DAT để tính ma trận C=A+B. Ghi ma trận C vào cuối tập tin MT.DAT. Ðọc các ma trận A, B, C từ tập tin MT.DAT và in lên màn hình.
File đính kèm:
- Giáo trình Turbo Pascal 7.0.doc