Chương II Các kiểu dữ liệu có cấu trúc 1.2 Khai báo

Một phần của tài liệu KTLT (Trang 50 - 68)

V. Kiểu dữ liệu có cấu trúc 5.1 Tệp định kiểu

Chương II Các kiểu dữ liệu có cấu trúc 1.2 Khai báo

1.2. Khai báo  Type bangluong = Record STT: Integer; Hoten: String[25]; Ngaysinh: String[10];

Hso, Luong, BHXH, Tong: Real; End;

 Bộ nhớ dành cho các trường: STT: 4, Hoten: 26, Ngaysinh: 11, Hso: 4, Luong: 4, BHXH: 4, Tong: 4

 Write(Sizeof(bangluong)) = 65 (Bytes)  Ví dụ tổng hợp

Chương II Các kiểu dữ liệu có cấu trúc

1.2. Khai báo

 Pascal cho phép khai báo trực tiếp biến kiểu bản ghi

 Cú pháp:

Var Tên_biến: Record

Tên_trường1: Kiểu_dl; Tên_trường2: Kiểu_dl; ……… End;

Chương II Các kiểu dữ liệu có cấu trúc

1.3. Truy nhập vào các trường của bản ghi

 <Tên_biến>.<Tên_trg_mẹ>.<Tên_trg_con>…. 1.4. Câu lệnh With..Do

 Cú pháp: With <Tên_biến_BG> Do <Các lệnh>;

Chương II Các kiểu dữ liệu có cấu trúc

1.5. Bản ghi có cấu trúc thay đổi a. Xây dựng kiểu dữ liệu

 Đối tượng mà thuộc tính bao gồm:

 Thuộc tính chung cho mọi xuất hiện

 Thuộc tính riêng cho 1 số xuất hiện đặc biệt  Ví dụ

Chương II Các kiểu dữ liệu có cấu trúc

1.5. Bản ghi có cấu trúc thay đổi b. Các bước định nghĩa

 Khai báo thuộc tính chung trước

 TT phân loại gồm 1 hoặc 1 số chỉ tiêu phân loại, các chỉ tiêu của thuộc tính phân loại phải đặt trong cặp dấu ()

 Sử dụng toán tử Case..of để phân loại

 Có thể khai báo tên 1 số trường thay đổi hoặc khai báo 1 bản ghi con với cấu trúc thay đổi

Chương II Các kiểu dữ liệu có cấu trúc

1.5. Bản ghi có cấu trúc thay đổi b. Các bước định nghĩa

 Trường cùng kiểu dữ liệu, tên trường cách nhau bởi dấu phẩy

 Dữ liệu trường phân loại phải thuộc kiểu đơn giản: nguyên, thực, logic, chuỗi, liệt kê, khoảng con

 Để phân loại dùng Case of (không có End)

Chương II Các kiểu dữ liệu có cấu trúc

1.5. Bản ghi có cấu trúc thay đổi c. Nhận xét

 Trong 1 kiểu record, trường cố định khai báo trước, trường phân loại khai báo sau

 Mỗi kiểu record có cấu trúc thay đổi chỉ được phép có duy nhất 1 trường phân loại, không thể có 2 toán tử case…of ngang hàng khi khai báo

 Bên trong trường phân loại có thể chưa các trường phân loại khác

 Ví dụ khai báo lỗi

Chương II Các kiểu dữ liệu có cấu trúc

1.5. Bản ghi có cấu trúc thay đổi c. Nhận xét

 Truy nhập vào các trường cố định của bản ghi giống như bản ghi thường

 Không dùng phép gán hoặc nhập dữ liệu từ bàn phím cho các trường phân loại

Chương II Các kiểu dữ liệu có cấu trúc

2. Dữ liệu kiểu tệp 2.1. Khái niệm

 Tệp là một dãy các phần tử có cùng kiểu được sắp xếp một cách tuần tự

 Tệp có kiểu

 Tệp văn bản

 Tệp không kiểu

Chương II Các kiểu dữ liệu có cấu trúc

2.2. Tệp văn bản a. Khai báo

 Var biến_tệp: TEXT; b. Truy nhập

 Assign(biến_tệp, đường dẫn\Tên_tệp);

 Reset(biến_tệp); -> mở đọc

 Rewrite(biến_tệp); -> mở ghi mới

Chương II Các kiểu dữ liệu có cấu trúc

2.2. Tệp văn bản

c. Ghi dữ liệu vào tệp

Write(biến_tệp, giá_trị1, giá_trị2,…);

 Writeln(biến_tệp, giá_trị1, giá_trị2,…);

 Sự khác nhau giữa Write và Writeln

 Write: Ghi dữ liệu liên tục trên các ô nhớ

 Writeln: Đưa vào cuối dòng các kí tự điều khiển CR, LF

d. Đóng tệp

 Close(biến_tệp); -> đưa thêm vào cuối tệp dấu hiệu kết thúc EOF

Chương II Các kiểu dữ liệu có cấu trúc

e. Ví dụ

Chương II Các kiểu dữ liệu có cấu trúc

2.3. Tệp có kiểu

 Tệp mà mọi phần tử có cùng độ dài và cùng kiểu (nguyên, thực, kí tự, chuỗi, mảng hoặc bản ghi)

a. Đọc và ghi

 Ghi dữ liệu vào tệp

Write(biến_tệp, biến1, biến2,…);

 Đọc tệp

Read(biến_tệp, biến1, biến2,…);

 Biến1, biến2, …, biếnn có kiểu dữ liệu cùng với kiểu của phần tử của tệp

Chương II Các kiểu dữ liệu có cấu trúc

b. Truy nhập tệp

 Seek(biến_tệp,i); -> Đưa con trỏ tệp trỏ tại phần tử thứ i+1 của tệp c. Các hàm xử lý tệp  Filesize(biến_tệp);  Filepos(biến_tệp);  Eof(biến_tệp) d. Ví dụ

Chương II Các kiểu dữ liệu có cấu trúc

2.4 Tệp không kiểu a. Khai báo biến tệp

 Var biến_tệp: File; b. Mở tệp  Mở ghi: Assign(biến_tệp, tên_tệp); Rewrite(biến_tệp, n);  Mở đọc: Assign(biến_tệp, tên_tệp); Reset(biến_tệp, n);

Chương II Các kiểu dữ liệu có cấu trúc

2.4 Tệp không kiểu

 Trong đó:

 n là độ dài tính theo Byte do NLT quy định

 n = 1, mỗi phần tử 1byte (Byte, char)

 n = 2, mỗi phần tử 2Byte (Integer, Word)  n = 6, 6 byte (Real)

Chương II Các kiểu dữ liệu có cấu trúc

2.4 Tệp không kiểu

c. Đọc và ghi tệp không định kiểu

 Đọc tệp không định kiểu

 BlockRead(biến_tệp, biến_nhớ, i, j);

 Đọc từng khối (vùng nhớ lưu trữ dữ liệu), khối có thể là 1 biến, 1 chuỗi, 1 bản ghi hay 1 mảng

 Biến_nhớ: Có cùng kiểu với các phần tử của tệp, biến_nhớ đóng vai trò vùng nhớ đệm

 i: Số phần từ quy định cho mỗi lần đọc

 j: Biến kiểu Word dùng để ghi lại số phần tử đã được đọc

Chương II Các kiểu dữ liệu có cấu trúc

c. Đọc và ghi tệp không định kiểu

 Ghi tệp không định kiểu

 BlockWrite(biến_tệp, biến_nhớ, i); d. Truy nhập tệp không định kiểu

 Dùng thủ tục Seek(biến_tệp, n); -> Truy nhập phần tử thứ n+1 của tệp

Một phần của tài liệu KTLT (Trang 50 - 68)