PHẦN III NGÔN NGỮ LẬP TRÌNH PASCAL -1
Chương 2 CÁC KIỂU DỮ LIỆU VÀ CÁCH KHAI BÁO – BIỂU THỨC
III. Các kiểu dữ liệu có cấu trúc – Cách khai báo
1. Khái niệm : Trong Turbo Pascal có 6 kiểu dữ liệu có cấu trúc: Array, Set, Record, File, String, Pointer. Muốn làm việc với các dữ liệu này, trước tiên phải khai báo tường minh chúng, một số loại có thể khai báo trực tiếp như Array, String, còn một số khác phải khai báo gián tiếp (mô tả cấu trúc – mô tả kiểu của dữ liệu trước khi khai báo chúng qua
từ khóa Type).
2. Khai báo - mô tả kiểu:
Để mô tả một kiểu dữ liệu mới do người lập trình tự tạo dùng từ khóa TYPE có cấu trúc như sau:
TYPE
Tên kiểu = Mô tả cấu trúc
Ví dụ: Type
Thang = [1..12] ;
VT = array [1.. 50] of Real ;
Hoso = Record
HT : string [25] ;
NS: integer;
LT : array [1.. 30 ] of real ;
End;
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm
3. Kiểu mảng (Array):
Khái niệm:
- Mảng là loại dữ liệu có cấu trúc, là một tập hợp các phần tử có cùng kiểu dữ liệu. Mỗi mảng có một tên chung và các chỉ số để phân biệt giữa các phần tử mảng. Mảng có thể
là 1 chiều véc tơ), 2 chiều (ma trận) hoặc n chiều.
- Cũng như các biến khác, khi sử dụng mảng, phải khai báo, tuy nhiên, khác với các biến đơn, ngoài việc khai báo tên, kiểu của biến mảng còn phải khai báo số chiều, kích thước mỗi chiều của mảng để máy dành sẵn bộ nhớ cho các mảng. Mảng có thể khai báo trực tiếp trong Var hoặc khai báo gián tiếp qua Type.
- Các chỉ số của phần tử mảng phải đặt trong cặp ngoặc vuông [ ]; Chỉ số mảng phải
là số nguyên , có thể là các hằng, biến, biểu thức đơn giản. Các chỉ số ngăn cách nhau bởi dấu phẩy. Ví dụ A[i], C[i, j], B[1] ; HT [i+1] ;
- Tên và chỉ số mảng có thể viết hoa hoặc chữ thường (như nhau)
Cách khai báo mảng:
- Khai báo trực tiếp:
Var Danh_sách_biến_mảng : array [n1 .. n2, m1.. m2, ..] of kiểu_phần_tử ;
Trong đó n1,m1 là các chỉ số đầu, n2,m2 là các chỉ số cuối của mảng. Kiểu phần tử phải là một trong các kiểu đơn giản chuẩn hoặc kiểu mới (thì phải khai báo trước đó).
Ví dụ : Var A,B : array [ 1.. 30 ] of real; HT: array [ 1.. 50 ] of string [20];
C: array [ 1.. 30, 1..5 ] of integer ;
- Khai báo gián tiếp:
Type Kiểu_mảng = array [n1 .. n2, m1.. m2, ..] of kiểu_phần_tử ; Var Danh_sách_biến_mảng : Kiểu_mảng ;
Ví dụ : Type
VT1 = array [ 1.. 30 ] of real; VT2 = array [ 1.. 50 ] of string [20];
VT3 = array [ 1.. 30, 1..5 ] of integer ;
HS = record
HT, DC, Lop : string ; Diem: real ;
End;
Var A,B : VT1 ; HT :VT2 ; C: VT3;
DSSV : HS;
4. Dữ liệu kiểu bản ghi
Khái niệm:
- Bản ghi (Record) là dữ liệu có cấu trúc trong đó mỗi bản ghi có thể có nhiều trường (Field), mỗi trường có thể có kiểu dữ liệu và cấu trức khác nhau (đơn, mảng, bản ghi).
- Bản ghi có thể là đơn (1 bản ghi) hoặc tập hợp với nhau trong một mảng, trong đó mỗi phần tử mảng là một bản ghi.
- Bản ghi có thể lồng nhau: trong các trường của bản ghi lại có thể có bản ghi con.
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm
Bộ môn Tin học Xây dựng 11
- Trước khi sử dụng bản ghi dưới dạng biến (đơn, mảng) , phải khai báo hay mô tả cấu trúc bản ghi qua từ khóa Type.
- Tên của kiểu và tên trường bản ghi cũng tuân theo cách đặt tên thông thường của Pascal.
Cách khai báo - mô tả cấu trúc bản ghi:
Type Tên_bản ghi = Record Tên trường 1 : Kiểu ; Tên trường 2 : Kiểu ; . . .
Tên trường n : Kiểu ; End;
Ví dụ:
Khai báo gián tiếp
Type
HosoCB = record
Hoten : string [30] ;
Diachi : string [ 50 ] ;
Gioi_tinh : Char ;
SPthang: array [1.. 12] of integer ;
Luong : real ;
End;
Var Canbo: HosoCB ;
DS: array [ 1..50] of HosoCB ;
Khai báo trực tiếp Var Canbo: record Hoten : string [30] ; Diachi : string [ 50 ] ; Gioi_tinh : Char ; SPthang: array [ 1.. 12 ] of integer ; Luong : real ;
End;
5. Dữ liệu kiểu tập hợp
Khái niệm: Tập hợp là một số phần tử có cùng một số tính chất nào đó, có thể là các
số tự nhiên, hoặc một trong các kiểu dữ liệu vô hướng (trừ kiểu thực –Real). Trong tập hợp không có phần tử trống. Số lượng phần tử cực đại trong tập tùy thuộc vào cấu hình máy (với Turbo Pascal là 256). Một tập được đặt trong cặp ngoặc vuông [ ]. Các thành phần của tập ngăn cách nhau bởi dấu phẩy (,).
Khai báo : tập cũng có thể khai báo trực tiếp hoặc gián tiếp qua từ khóa SET OF
Khai báo trực tiếp
Var
Danh_sách_biến: SET OF < kiểu vô hướng>
Khai báo gián tiếp
Type Tên_kiểu = SET OF < kiểu vô hướng> Var
Danh_sách_biến: Tên_kiểu
Ví dụ
Giáo trình Nhập môn Tin học: Phần III – Ngôn ngữ lập trình Pascal - 1 GVC: Đào Tăng Kiệm
Type
T1 = Set of 5..10 ; T2 = Set of 7.. 15 Var Mon _BB: T1 ; Mon_TC :T2 ;
Các phép tính với tập: Tập có thể tham gia các phép toán số học như : phép gán, phép hợp (+), hiệu (-), giao (*) và các phép tính so sánh (<, >, = >= ….),
Ví dụ : Phép gán : T:= T1 kết quả : tập T giống hệt T1
Phép hợp : A:= T1+ T2 kết quả A [5 .. 15] : các phần tử thuộc T1 hoặc T2
Phép hiệu: B:= T1- T2 kết quả B [5,6] : các phần tử thuộc T1không thuộc T2 Phép hợp : C:= T1* T2 kết quả C [7 .. 10] : các phần tử thuộc cả T1 và T2
Phép so sánh T1= T2 kết quả : Sai – False
Phép so sánh T1> T2 kết quả : Sai - False
Phép so sánh T1< T2 kết quả : Đúng – True vì T1 là tập con của T2