You are on page 1of 4

BÀI 11: KIỂU BẢN GHI – RECORD

I. Khái niệm:
Để tạo một kiểu dữ liệu mới với các phần tử có kiểu dữ liệu khác nhau có liên kết với nhau, người ta
định nghĩa ra kiểu bản ghi (RECORD). Tóm lại kiểu bản ghi dung để mô tả một đối tượng nào đó mà
nó bao gồm các thuộc tình.
Ví dụ: Để môt tả thông tin của Học Sinh(HS) chúng ta cần phải xác định: Tên HS, tuổi, ngày sinh, lớp
… và các thuộc tính này có thể nhận các kiểu dữ liệu khác nhau.
II. Mô tả kiểu RECORD
Cú pháp:
TYPE <tên kiểu RECORD> = RECORD
<field 1>: <data field 1>;
<field 2>: < data field 2>;

<field n>: < data field n>;


END;
Ví dụ:
TYPE HocSinh = RECORD
Ten : String;
Lop : String[5];
Tuoi : integer;
Diem : real;
END
III. Truy xuất đến kiểu RECORD
Để truy xuất đến một trường(field) nào đó của biến kiểu RECORD ta phải truy xuất thông qua tên biến
kiểu RECORD, sau đó chấm(.) tên trường của RECORD đó.
Ví dụ: Trong trường hợp khai báo trên, ta cần khai báo một biến HS có kiểu học sinh như sau:
Var HS : Hocsinh;
Bây giờ ta có thể nhập tên cho học sinh ta viết như sau: readln(HS.ten)
Hay xuất điểm của học sinh đó ra màn hình ta viết như sau: writeln(HS.diem);
Ngoài rat a có thể truy xuất đến các thuộc tính của kiểu RECORD bằng lệnh WITH như sau:
WITH HS DO BEGIN
Write(‘nhap ten hs ‘);readln(ten);
Write(‘nhap tuoi hs ‘);readln(tuoi);
Write(‘nhap tiem hs ‘);readln(diem);
END;
BÀI 12: KIỂU TẬP TIN

I. Khái niệm vè tập tin


Tập tin hay tệp văn bản là một tập hợp các dữ liệu có lien quan với nhau và có cùng kiểu được nhóm
lại với nhau tạo thành một dãy. Chúng thường được chứa trong một thiết bị nhớ ngoài của máy tính
như: đĩa mềm, đĩa cứng, băng từ…với một cái tên nào đó.
Hay nói các khác, tập tin là nơi lưu trữ thông tin trên máy tính.
Trong tiếng anh Từ tập tin có nghĩa là FILE.
Trong Pascal tập tin được chia thành các loại: tập tin Văn bản, tập tin định kiểu và tập tin không định
kiểu.
Tập tin là một dạng kiểu dữ liệu có cấu trúc.
Ta có thể định nghĩa một tập tin T với kiểu phần tử của nó là số nguyên như sau:
TYPE
T = FILE OF INTEGER;
Cú pháp chung:
TYPE <Kiểu tập tin> = FILE OF <Kiểu phần tử>;
Ví dụ: TYPE F = FILE OF REAL;
II. Cấu trúc và phân loại tập tin
Các phanà tử của mảng hay bản ghi có thể truy cập tùy ý thong qua tên biến và chỉ số phần tử của nó.
Các phần tử của tệp không có tên và việc truy cập không thể tùy tiện, các phần tử này được sắp xếp
thành một dãy và tại một thời điểm chương trình có thể truy nhập vào môt phần tử của tập tin thong
qua giá trị của một biến đệm hay còn gọi là con trỏ(của sổ ) tập tin.
Có những lệnh để làm thay đổi, hay dịch chuyển con trỏ tập tin đến một vị trí nào đó. Mỗi tập tin được
kết thúc bằng một dấu hiệu đắc biệt báo hiệu hết tập tin đó là EOF(f). hàm này sẽ kiểm tra con trỏ tập
tin có đang ở vị trí cuối hay không và sẽ trả về TRUE nếu là ở cuối.
Có 2 loại tệp tin đó là Tập tin truy cập trực tiếp và tập tin truy cập tuần tự.
III. Mở tập tin mới để cất dữ liệu:
Mở tập tin để ghi:
ASSIGN(<biển file>,<tên file>)
REWRITE(<biến file>)
Ví dụ: ASSIGN(f1,’songuyen.dat’);
REWRITE(f1);

Ghi dữ liệu vào tập tin:


Thủ túc WRITE sẽ ghi các giá trị mới vào tập tin, sau khi ghi xong thì con trỏ tự động nhảy đến phần
tử tiếp theo.
Cú pháp: WRITE(<biến file>,<các giá trị cần đặt>);
Sau khi ghi xong chúng ta phải thực hiện thao tác đóng tập tin lại bằng lệnh
CLOSE(<biến file>);
Ví dụ: program createfile;
Var i:integer;
F: file of integer;
BEGIN
ASSIGN(f,’songuyen.txt’);
REWRITE(f);
For i:=1 to 100 do write(f,i);
Close(f);
READLN;
END.
IV. Đọc dữ liệu từ tập tin đã có:
Muốn sử dụng một tập tin đã có trước tiên ta phải mớ nó ra,
Mở tập tin để đọc:
ASSIGN(<biển file>,<tên file>)
RESET(<biến file>)
Việc đọc các phần tử của tệp được sử dụng thông qua thủ tục READ
READ(<biến file>,<các biến>);
Lệnh để đọc dữ liệu tại vị trí con trỏ tập tin, đọc xong con trỏ(cửa sổ) tập tin tự động chuyển đến phần
tử tiếp theo.
V. Truy cập trực tiếp
Để truy cập trực tiếp vào các phần tử của tập tin ta có thể sử dụng thủ tục đẻ định vị con trỏ đến một vị
trí nào đó:
Cú pháp: SEEK(<biến file>,<vị trí>)
VI. Các thủ tục và hàm xử lý tập tin
1/ FILESIZE(<biến file>) Cho số phần tử của tập tin
2/ FILEPOS(<biến file>) Cho vị trí hiện hành của con trỏ tập tin
3/ ERASE(<biến file>) Xóa tập tin
4/ RENAME(<biến file>,<tên file>) Đổi tên tập tin
VII. Tập tin văn bản
Trong pascal có một kiểu tập tin đã được định nghĩa trước đó là kiểu tập tin văn bản, được khai báo
với tên chuẩn TEXT.
Ví dụ: khai báo 2 biến f1, f2 kiểu tập tin văn bản
Var f1, f2 : TEXT;
Các phần tử của tập tin văn bản là các ký tự, tuy nhiên tập tin văn bản(FILE TEXT) khác với tập tin có
cấu trúc kiểu Char( FILE OF CHAR) ở chỗ tập tin văn bản được tổ chức thành từng dòng, độ dài mỗi
dòng khác nhau và có dấu hiệu kết thúc dòng (End Of Line) EOL. Đó là cặp ký tự xuống dòng có mã
ASCII = 13 và về đầu dòng có mã ASCII = 10.
Ví dụ:
CHAO CAC BAN
12345678
HET
Như vậy các tập tin như: *.TXT, *.PAS, *.BAT, *.C là các tập tin văn bản.
Do việc tổ chức thành từng dòng nên tập tin văn bản ta có thể đọc hay ghi từng dòng thông qua câu
lệnh readln, writeln.
1. Ghi vào tập tin văn bản:
Chúng ta có thể ghi các giá trị kiểu : real, integer, string… vào tập tin văn bản bằng lệnh write, hoặc
writeln:
Có 3 dạng ghi tập tin văn bản:
Write(<biến file>, gt1, gt2,..,gtn).
Writeln(<biến file>, gt1, gt2,..,gtn).
Writeln(<biến file>).
Thủ tục Write(<biến file>, gt1, gt2,..,gtn). Sẽ ghi các giá trị gt1, gt2,..,gtn vào tập tin văn bản, các giá
trị gt1, gt2,..,gtn không nhất thiết phải cùng kiểu dữ liệu và nó chỉ chấp nhận những kiểu dữ liệu sơ
cấp.
Thủ tục Writeln(<biến file>, gt1, gt2,..,gtn) Giống như Write(<biến file>, gt1, gt2,..,gtn) nhưng sau khi
ghi xong con trỏ tập tin tự động xuống dòng.
Thủ tục Writeln() dùng để đưa dấu hiệu kết thúc dòng vào tập tin để báo hiệu kết thúc dòng đó
2. Đọc dữ liệu từ tập tin văn bản:
Chúng ta có thể đọc không những các giá trị kiểu ký tự từ tập tin văn bản mà còn đọc các giá trị kiểu :
real, integer, string… từ tập tin văn bản bằng lệnh read, hoặc readln:
Có 3 dạng ghi tập tin văn bản:
Read(<biến file>, val1, val2,..,valn).
Readln(<biến file>, val1, val2,..,valn).
Readln(<biến file>).
Trong đó val1, val2,…,valn là các biến thuộc kiểu sơ cấp chuẩn.
Hàm EOLN(F) sẽ kiểm tra đến vị trí kết thúc dòng hay chưa
Dấu hiệu kết thúc tập tin văn bản được ký hiệu EOF và quy ước với ký tự có mã 26 (CTRL + Z)
Để kiểm tra kết thúc tập tin chưa ta phải thực hiên
WHILE NOT EOF(F) DO
BEGIN
READLN(<biến file>, val1, val2,..,valn)
…………………………………………� �..
END;
Chú ý: Thủ tục SEEK, hàm FILESIZE, FILEPOS không áp dụng cho tập tin văn bản.
VIII. Tập tin không định kiểu
Tập tin không định kiểu là một tập tin đặc biệt, được định nghĩa trong PASCAL, đó là một tập tin
không nói rõ bản chất.

Tập tin không định kiểu được khai báo bằng từ khóa FILE.

You might also like