Kiểu liệt kê được định nghĩa bằng cách liệt kê tất cả các giá trị của kiểu thông qua các tên do người lập trình đặt ra và danh sách các giá trị trên được đặt trong cặp ngoặc đơn ( ).
4 Ví dụ:
Type Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat); Viec = (DiHoc, LamBai, ThiNghiem, Nghi);
Khi đó, ta có thể khai báo biến như sau:
Var HomQua, HomNay : Days; Lam : Viec;
Hoặc ta có thể khai báo trực tiếp với mô tả kiểu dữ liệu như sau:
Var GioiTinh : (Nam, Nu);
Color : (Red, Blue, Green, White, Black);
ÖChú ý:
(1). Có thể thực hiện phép gán trên các trị kiểu liệt kê, ví dụ:
Lam := Nghi; Color := Blue;
(2). Các giá trị của các kiểu liệt kê có thể so sánh với nhau theo quy định: Giá trị đứng trước nhỏ hơn giá trị đứng sau. Ta chỉ sử dụng toán tử so sánh cho kiểu liệt kê và cũng là toán tử duy nhất dùng cho kiểu này.
4 Ví dụ: Theo như khai báo trên, nếu so sánh Thu < Fri cho kết quả True, hoặc Red >= Blue cho kết quả False.
(3). Các hàm chuẩn áp cho kiểu liệt kê:
- Hàm ORD: Cho thứ tự trị của đối số trong kiểu liệt kê.
4 Ví dụ: theo như khai báo trên, ORD(Sun) = 0, ORD(Mon) = 1.
Trang 3 5
4 Ví dụ: theo như khai báo trên, PRED(Sat) = Fri, PRED(LamBai) = DiHoc. PRED(Sun) ð lỗi chương trình.
- Hàm SUCC: Cho trị đi sau đối số trong kiểu liệt kê.
4 Ví dụ: theo như khai báo trên, SUCC(Fri) = Sat. SUCC(Sat) ð lỗi chương trình. (4). Không thể nhập, xuất đối với dữ liệu kiểu liệt kê. Giá trị thuộc kiểu liệt kê thường được dùng để làm chỉ số cho vòng lặp FOR, các trường hợp lựa chọn trong lệnh CASE, chỉ số cho các mảng (Array).
4 Ví dụ: Chương trình đổi thứ trong tuần ra số. Chủ nhật ứng với số 0, Thứ hai ứng với số 1,...
Type
Thu = (ChuNhat, ThuHai, ThuBa, ThuTu, ThuNam, ThuSau, ThuBay); Var
Ngay : Thu; Begin
Writeln( ‘ Chuong trinh doi thu ra so ‘ ); For Ngay := ChuNhat to ThuBay do Write(Ord(Ngay));
Readln; End.