Giáo trình bài tập Pascal - Phần: Dữ liệu kiểu file

III. FILE VĂN BẢN (TEXT FILE)

3.1. Khai báo

 Var : Text;

 Ví dụ: F:Text;

3.2. Các thủ tục và hàm chỉ tác động trên file dạng text

3.2.1. Thủ tục Append

 Cú pháp: Append(F);

 Chức năng: Mở file đã tồn tại để bổ sung nội dung vào cuối file.

3.2.2. Thủ tục Readln

 Cú pháp: Readln(F,x);

 Chức năng: Đọc một dòng từ vị trí con trỏ file và gán cho biến x. Thực hiện xong, con trỏ file sẽ chuyển về đầu dòng tiếp theo. Biến x có thể nhận các kiểu: Char, String hoặc kiểu số.

 Chú ý: không thể dùng lệnh Readln(F,x)để đọc số nguyên trong một tệp số nguyên.

3.2.3. Thủ tục Writeln

 Cú pháp: Writeln(F, x);

 Chức năng: Ghi giá trị x vào file ở vị trí con trỏ file. Kết thúc thủ tục, con trỏ file sẽ chuyển về đầu dòng sau.

3.2.4. Hàm EOLn

 Cú pháp: EOLn(F);

 Chức năng: Hàm trả về giá trị True nếu con trỏ đang ở cuối một dòng, ngược lại hàm trả về giá trị False.

 

doc5 trang | Chia sẻ: hatranv1 | Lượt xem: 1811 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Giáo trình bài tập Pascal - Phần: Dữ liệu kiểu file, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
DỮ LIỆU KIỂU FILE
I. KHÁI NIỆM:
Để sử dụng thông tin lâu dài ta phải lưu trữ chúng thành các File ( tập tin, tệp ) trên đĩa mềm hoặc đĩa cứng. Do đó File là kiểu dữ liệu có cấu trúc và rất quan trọng. Trong Pascal chia ra 3 loại File:
File có định kiểu.
File không định kiểu.
File văn bản.
Trong giới hạn chương trình, chúng ta chỉ nghiên cứu File văn bản.
II. CÁC THỦ TỤC VÀ HÀM CHUẨN
2.1. Các thủ tục chuẩn
2.1.1. Gán tên file
	Cú pháp: Assign(F, Filename);
	Chức năng: Gán một file trên đĩa có tên là Filename cho biến file F, mọi truy xuất trên file cụ thể được thực hiện thông qua biến file này.
Chú ý:
	Filename bao gồm cả tên ổ đĩa và đường dẫn nếu file không nằm trong ổ đĩa, thư mục hiện thời.
2.1.2. Mở file mới
	Cú pháp: Rewrite(F);
	Chức năng: Tạo file mới có tên đã gán cho biến file F. Nếu file đã có trên đĩa thì mọi dữ liệu trên đó sẽ bị xoá và con trỏ file trỏ ở vị trí đầu tiên của file.
2.1.3. Mở file đã có trên đĩa
	Cú pháp: Reset(F);
	Chức năng: Mở file có tên đã gán cho biến file F. Nếu file chưa có trên đĩa thì chương trình sẽ dừng vì gặp lỗi xuất/nhập. Vì thế người ta phải kiểm tra khi mở file.
Chú ý: Kiểm tra khi mở file: Người ta định hướng kiểm tra lỗi vào ra bằng cách dùng chỉ thị {$I-} và {$I+}vào trước và sau câu lệnh Reset(F). Dùng hàm Ioresult: Word để cho biết kết quả mở file. Nếu Ioresult có giá trị là 0 thì không có lỗi, ngược lại khác 0 thì có lỗi.
Ví dụ:
Program MoFile;
Var Ten_File:String;
F:Text;
Begin
Write(‘Nhập tên File: ‘);readln(Ten_File);
Assign(F,Ten_File);
{$I-} Reset(F); {$I+} 
If Ioresult 0 then 
Begin
writeln(‘Co loi khi truy xuat File : ‘,Ten_File);
Exit;
	End
	 Else Writeln(‘ Khong co loi khi truy xuat File ‘);
End;
2.1.4. Đọc dữ liệu từ file
	Cú pháp: Read(F, x);
	Chức năng: Đọc một phần tử dữ liệu từ file F ở vị trí con trỏ file và gán cho các biến x. 
2.1.5. Ghi dữ liệu lên file
	Cú pháp: Write(F, Value);
	Chức năng: Ghi giá trị Value vào file F tại vị trí hiện thời của con trỏ file.
2.1.6. Đóng file
	Cú pháp: Close(F);
	Chức năng: Cập nhật mọi sửa đổi trên file F và kết thúc mọi thao tác trên file này.
2.2.2. Hàm kiểm tra cuối file
	Cú pháp: EOF(F);
	Chức năng: Hàm trả về giá trị True nếu con trỏ file đang ở cuối file, ngược lại hàm trả về giá trị False.
III. FILE VĂN BẢN (TEXT FILE)
3.1. Khai báo
	Var	: Text;
	Ví dụ: F:Text;
3.2. Các thủ tục và hàm chỉ tác động trên file dạng text
3.2.1. Thủ tục Append
	Cú pháp: Append(F);
	Chức năng: Mở file đã tồn tại để bổ sung nội dung vào cuối file.
3.2.2. Thủ tục Readln
	Cú pháp: Readln(F,x);
	Chức năng: Đọc một dòng từ vị trí con trỏ file và gán cho biến x. Thực hiện xong, con trỏ file sẽ chuyển về đầu dòng tiếp theo. Biến x có thể nhận các kiểu: Char, String hoặc kiểu số. 
	Chú ý: không thể dùng lệnh Readln(F,x)để đọc số nguyên trong một tệp số nguyên.
3.2.3. Thủ tục Writeln
	Cú pháp: Writeln(F, x);
	Chức năng: Ghi giá trị x vào file ở vị trí con trỏ file. Kết thúc thủ tục, con trỏ file sẽ chuyển về đầu dòng sau.
3.2.4. Hàm EOLn
	Cú pháp: EOLn(F);
	Chức năng: Hàm trả về giá trị True nếu con trỏ đang ở cuối một dòng, ngược lại hàm trả về giá trị False.
Chú ý:
Sau đây là các thao tác cơ bản khi xuất nhập file:
Ghi dữ liệu vào file
Đọc dữ liệu từ file
ASSIGN(f,FileName);
REWRITE(f);
...
WRITE(f,value);
...
CLOSE(f);
ASSIGN(f,FileName);
RESET(f);
...
While Not EOF(f) Do
 Begin
 READ(f,x);
 ...
 End;
...
CLOSE(f);
BÀI TẬP.
Bài tập 1: Viết chương trình đọc các số nguyên trong một File text và gán các số nguyên đó vào mảng A. (File text gồm các số nguyên đã lưu ở ổ cứng).
Var f:Text;
 tenfile:String;
 A:Array[1..100] of integer;
 i,n:integer;
Begin
 Write(' Nhap ten file du lieu : ');
 Readln(tenfile);
 Assign(f,tenfile);
 {$I-} Reset(f); {$I+}
 If Ioresult0 then
 Begin
 Writeln(' Khong co tap tin co ten : ',tenfile);
 Halt(1);
 End;
 n:=0;
 While Not EOF(f) do
 Begin
 While Not EOLN(f) do
 	Begin
 	 inc(n);Read(F,a[n]); 
 	End;
 	Readln(f);
 End;
 Close(f);
 Writeln;
 If n>0 then
 Begin
 Write('A = ');
 For i:=1 to n do write(a[i],' ');
 End;
 Readln;
End.
Bài tập 2: Viết chương trình đọc và đếm số lượng số nguyên trong một File text.
Bài tập 3: Viết chương trình tạo ra một File text có tên DULIEU.INP gồm các số nguyên. Tính tổng các số nguyên trên một hàng. Kết quả lưu vào File text có tên DULIEU.OUT, trong đó mỗi tổng được ghi trên một hàng.
Chẳng hạn
DULIEU.INP	Þ	DULIEU.OUT
6 5	 11
3 6 8 12 2	 31
7 5 6 10 6	34
8 2 4 5 1	20
Bài tập 3: Viết chương trình sắp xếp các số nguyên trong một File text theo thứ tự tăng dần.
Bài tập 4: 	Viết chương trình thực hiện các công việc sau:
Đọc 2 file text số nguyên và sắp xếp chúng theo thứ tự tăng dần. 
Hãy nối 2 file đó lại với nhau thành file thứ 3 sao cho file mới vẫn có thứ tự tăng dần.
Gợi ý:
- Câu a) dùng hai mảng A,B để ghi các số nguyên có trong 2 file rồi sắp xếp theo mảng A,B.
- Câu b) có thể làm theo hướng dẫn sau:
Dùng thêm 1 mảng C và ta tiến hành như sau:
Dùng 2 chỉ số i,j để duyệt qua các phần tử của 2 mảng A, B và k là chỉ số cho mảng C.
Trong khi (i<=m) và (j<=n) thì: 
	 {Tức là khi đồng thời cả 2 dãy A, B đều chưa duyệt hết}
	+ Nếu A[i]>B[j] thì: C[k]:=A[i]; i:=i+1;
	+ Ngược lại: C[k]:=B[j]; j:=j+1;
Nếu dãy nào hết trước thì đem phần còn lại của dãy kia bổ sung vào cuối dãy C.
BÀI TẬP TỰ GIẢI
Bài tập 1:	Viết chương trình thực hiện các công việc sau:
Tạo ra 2 file số nguyên và sắp xếp chúng theo thứ tự tăng dần. 
Hãy nối 2 file đó lại với nhau thành file thứ 3 sao cho file mới vẫn có thứ tự tăng dần.
Bài tập 2: Cho 2 mảng số nguyên: Mảng A có m phần tử, mảng B có n phần tử.
	a/ Sắp xếp lại các mảng đó theo thứ tự giảm dần.
	b/ Trộn 2 mảng đó lại thành mảng C sao cho mảng C vẫn có thứ tự giảm dần (Không được xếp lại mảng C).
Bài tập 3:	Cho đa thức P(x) = a0 + a1x + a2x2 + ... + anxn
	Trong đó n là bậc của đa thức và a0, a1, ... , an là các hệ số của đa thức được lưu trong một file văn bản với qui ước sau:
	- Dòng đầu của file văn bản chứa bậc của đa thức và giá trị của x.
	- Dòng tiếp theo chứa các hệ số của đa thức.
	Ví dụ: P(x) = 3 + 2x - 5x2 + 4x3 , x = 2.5 sẽ được lưu trong file văn bản như sau:
	3	2.5
	3	2	-5	 4
	Viết chương trình đọc file văn bản trên để lấy các số liệu rồi tính giá trị của đa thức.
Gợi ý:
	- Tổ chức mảng để lưu đa thức.
	- Viết thủ tục để đọc file text lưu vào mảng.
Bài tập 4: Viết chương trình tạo ra hai tập tin lưu các số kiểu word mà các số trong mỗi file đã được sắp thứ tự tăng dần. Hãy tạo tập tin mới chứa tất cả các số của 2 tập tin trên sao cho thứ tự tăng dần vẫn được duy trì.
Chú ý: Không được dùng mảng.

File đính kèm:

  • docgiao_trinh_bai_tap_pascal_phan_du_lieu_kieu_file.doc
Giáo án liên quan