Đọc tệp truy nhập trực tiếp và xử lớ

Một phần của tài liệu Giao trinh Pascal (Trang 42 - 44)

- Sao chộp được thụng tin từ đĩa này sang đĩa khỏc.

3.Đọc tệp truy nhập trực tiếp và xử lớ

3.1. Bài toỏn.

Hóy viết chương trỡnh đọc tệp đó ghi ở phần trờn và cú thể sửa chữa những chỗ cần thiết. Sau đú ghi phần tử cú sửa chữa lờn chớnh vị trớ cũ của nú ở tệp đó cú trờn đĩa.

3.2. hướng dẫn

Sau khi đọc hoặc ghi một thành phần của tệp thỡ cửa sổ tệp tự động chuyển đến thành phần tiếp theo bờn phải. Do đú nếu cú sửa chữa, để ghi thành phần cú sửa chữa lờn tệp đỳng vị trớ cũ của thành phần đú trờn tệp, ta phải đẩy cửa sổ tệp về bờn trỏi một vị trớ. Hàm FilePos (biến tệp) cho số hiệu hiện thời của cửa sổ tệp. Muốn chuyển cửa sổ tệp về bờn trỏi một vị trớ ta dựng thủ tục Seek(Biến tệp, FilePos(biến tệp) – 1).

4. Ghi nhớ

4.1. Khai bỏo tệp truy nhập trực tiếp

a. Khai bỏo qua kiểu

TYPE kiểu tệp = FILE of kiểu thành phần ; VAR biến tệp: kiểu tệp ;

b. Khai bỏo trực tiếp trong khai bỏo biến

VAR biến tệp : FILE OF kiểu thành phần ;

WRITE (Biến tệp , Danh sỏch biến); Cỏc biến trong danh sỏch ngăn cỏch nhau bởi dấu phảy (,).

4.3. Thủ tục đọc tệp truy nhập trực tiếp

READ (Biến tệp , Danh sỏch biến);

4.4. Hàm xỏc định số hiệu thành phần của tệp mà cửa sổ tệp đang trỏ.

FILEPOS (biến tệp) 4.5. Hàm xỏc định số lượng thành phần của tệp FILESIZE(biến tệp)) ; 4.6. Thủ tục chuyển dịch cửa sổ tệp a. Chuyển cửa sổ tệp đến thành phần n SEEK (biến tệp, n) ;

Trong đú n là một biểu thức nhận giỏ trị kiểu số nguyờn.

b. Chuyển cửa sổ tệp về cuối tệp

SEEK (biến tệp, FILESIZE(biến tệp)) ;

Chuyển cửa sổ tệp về cuối tệp để ghi tiếp vào tệp truy nhập trực tiếp.

4.7. Thủ tục cắt bỏ cỏc thành phần cuối tệp

TRUNCATE (biến tệp) ;

Cắt bỏ cỏc thành phần tớnh từ vị trớ cửa sổ tệp hiện tại đến hết tệp. Vị trớ hiện tại của cửa sổ tệp sẽ là vị trớ cuối tệp.

5. Áp dụng

5.1. Áp dụng 1

Viết chương trỡnh đọc tệp quản lớ xe ụ tụ đó cú trờn đĩa, ghi những người cú địa chỉ ở phố nào đú lờn một tệp mới (tờn phố được nạp vào từ bàn phớm).

Program XuLiQuanLyoto ; Uses crt ;

Type Xau = String[22] ; dk = array[1..3] of Xau ; Var xe : dk ; ten : Xau ; tep1 , tep2 : file of dk ; Begin Clrscr ;

Write(' Cho biet ten tep can doc ' ) ; Readln(ten) ; Assign (tep1 , ten) ; Reset(tep1) ;

Write(' Cho biet ten tep can ghi ' ) ; Readln(ten) ; Assign (tep2 , ten) ; Rewrite(tep2) ;

Write(' Cho biet ten pho can ghi ' ) ; Readln(ten) ; While Not Eof (tep1) Do

Begin (adsbygoogle = window.adsbygoogle || []).push({});

read (tep1 , xe) ;

If Pos (ten , xe[2]) <> 0 Then Write (tep2 , xe) ; End ; Close (tep1) ; Close (tep2) ; End.

Bài tập

1.Trong mặt phẳng toạ độ Đề Cỏc, mỗi vũng trũn được xỏc định bởi toạ độ tõm và bỏn kớnh. Một bộ ba số thực (X, Y, R) xỏc định một vũng trũn cú toạ độ tõm (X, Y) và bỏn kớnh R. Viết chương trỡnh ghi lờn đĩa những đường trũn cú ba tham số được gừ vào từ bàn phớm.

2. Viết chương trỡnh đọc từ tệp những đường trũn được ghi trờn đĩa với ba tham số (X, Y, R). a. Tớnh tổng diện tớch của cỏc đường trũn trờn.

b. Tớnh độ dài đường gấp khỳc nối từ tõm hỡnh trũn thứ nhất lần lượt qua tõm hỡnh trũn thứ hai, ... , đến tõm hỡnh trũn cuối cựng đó ghi trờn tệp.

3. Viết chương trỡnh ghi lờn đĩa tệp truy nhập trực tiếp F cú thành phần là số nguuyờn dương. Số được nhập vào từ bàn phớm.Việc nhập số sẽ kết thỳc khi mỏy nhận được số 0.

4. Viết chương trỡnh đọc cỏc số từ tệp truy nhập trực tiếp F đó ghi ở bài 3 xuống bộ nhớ, xột từng số đọc xuống nếu số đú là số nguyờn tố thỡ ghi nú lờn tệp truy nhập trực tiếp G.

Một phần của tài liệu Giao trinh Pascal (Trang 42 - 44)