0
Tải bản đầy đủ (.pdf) (49 trang)

Khai báo kiểu và gán dữ liệu vào tập hợp

Một phần của tài liệu CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC (Trang 39 -42 )

- Ghit ệp không ñị nh kiểu

b. Khai báo kiểu và gán dữ liệu vào tập hợp

ðể mô tả kiểu tập hợp, Pascal dùng từ khoá Set of tiếp ñó là kiu d liu cơ bản của các phần tử tạo nên tập hợp. Cách viết kiểu dữ liệu này phải tuân theo những quy ñịnh mà Pascal ñã thiết kế:

* Với Pascal 7.0 số phần tử không quá 256 và số thứ tự của các phần tử phải tăng dần * Kiểu dữ liệu cơ bản của các phần tử của tập hợp có thể viết tường minh hoặc thông qua các giá trị cụ thể. Ví dụ : Type a = set of Char; b = set of Byte; c = set of 1..100; d = set of 'a' .. 'z';

Maytinh = set of (Compact, Mitac, IBM, CMS);

Trong ví dụ trên kiểu dữ liệu của các phần tử của tập hợp a, b ñược khai báo tường minh, a là tập các ký tự, b là tập các số nguyên. Kiểu dữ liệu các phần tử của tập c và d ñược xác lập qua các giá trị viết sau SET OF, tập c sẽ là tập các số nguyên trong khoảng từ 1 ñến 100, tập d là tập các chứa các chữ cái thường còn Maytinh là tập hợp của 4 phần tửñã liệt kê.

ðể thấy rõ hơn chúng ta xét ví dụ sau:

Ví d 2.24

Program Taphop1; Uses crt;

Type

mau= set of (xanh, hong, tim, vang, den, nau); sn1 = set of 0..100;

sn2 = 100..200; chucai1 = set of 'a'..'z'; chucai2 = set of 'A'..'Z'; Kytu = set of Char; Var

a,b:mau; b1:sn1;

b2 : set of sn2; c :chucai1; d:chucai2; e:kytu; i,j,k:word; tl : set of boolean; BEGIN clrscr; i:=300; j:=160; k:=i+j; a:=[xanh.. vang]; b:=[tim,nau]; b1:=[15,255,i+j,i*j]; b2:=[1, 200, 155, 123, 145]; c:=['z','à','k'];

d:=[‘2’, ‘3’,'4']; tl:=[true,false]; readln;

END.

Ví dụ 2.24 khai báo năm kiểu tập hợp là Mau, Sn1, Chucai1, Chucai2, Kytu còn Sn2

là kiểu dữ liệu ñoạn con. Biến a thuộc kiểu tập hợp MAU, biến B1 và B2 thuộc kiểu tập hợp số nguyên, biến c và d thuộc kiểu tập hợp chữ cái, biến e thuộc kiểu ký tự còn biến Tl thuộc kiểu boolean. Các phép gán trong ví dụ sẽ xác ñịnh một số tập hợp, chẳng hạn câu lệnh

a:=[xanh, hong, den, tim];

xác ñịnh tập hợp a gồm các phần tử xanh, hong, den, tim. e:=['0'..'9', 'a'..'z'];

xác ñịnh tập hợp e gồm 10 ký tự 0, 1,...9 và 26 ký tự 'a', 'b', ... 'z'

Khi khai báo kiu tp hp cn chú ý mt sốñiu sau ñây:

* Th nhât: Thứ tự các phần tử trong tập hợp luôn theo chiều tăng dần, nếu chúng ta khai báo:

sn1 = set of 200..100; hoặc

chucai = set of 'z' .. 'a';

thì Pascal sẽ thông báo lỗi: Lower bound greater than upper bound.

* Th hai: Kiểu dữ liệu của các phần tử mặc dù có thể là số nguyên song khi khai báo lại chỉ có thể là kiêủ Byte.

Lệnh SN0 = set of Byte; là ñúng

Các lệnh khai báo sau là sai:

SN1 = set of Word; SN2 = set of Integer; SN3 = set of Shortint;

Lỗi mà Pascal thông báo là:

Error 23: Set base type out of Range

* Th ba: Những gía trị mà chúng ta khai báo sau từ khoá SET OF sẽ dẫn tới một

trong hai khả năng:

- Nếu là khai báo kiểu liệt kê, kiểu Boolean thì ñây chính là các giá trị mà tập hợp có thể nhận. Trở lại ví dụ 2.24 các phép gán

a:=[xanh, tim, luc]; tl:=[tru, fal];

sẽ bị báo lỗi vì phần tử "luc" không có trong danh sách liệt kê của màu, còn Tru và Fal

- Với những kiểu còn lại (nguyên, ký tự, ñoạn con) những khai báo sau từ khoá Set of không phải là giá tr ca các phn tử của tập hợp mà là th tự của các phần tửñó, Kiu ca các d liu ñó sẽ cho biết các phần tử của tập hợp sẽ phải thuộc kiểu gì Ví d: 2.25 Type sn1 = set of 0..100; {các phần tử tập hợp phải là số nguyên} kytu = set of char; {các phần tử tập hợp phải thuộc kiểu ký tự} Var

a : sn1; b : kytu; ...

Với khai báo như trong ví dụ 2.25 chúng ta không thể dùng phép gán:

b := ['a', 12, 'c']; ( các phần tử của tập b phải là số ) c:= [1, 2, 100]; ( các phần tử của tập c phải là ký tự )

* Th tư: Không ñược gán trực tiếp các số nguyên có giá trị lớn hơn 255, ví dụ phép gán

b2:=[100, 200, 256]; sẽ bị báo lỗi Error 76: Constant out of Range

* Thứ tư: Các phần tử trong tập hợp có thể là hằng, biến hay biểu thức. Nếu là tập số nguyên thì giá trị các biến hay biểu thức trong phép gán có thể lớn hơn 255

Trong ví dụ 2.25 phép gán sau không bị báo lỗi

i:=300; j:=160; k:=i+j; b1:=[15,255,i+j,i*j];

3.2 Phân loi tp hp

Một phần của tài liệu CÁC KIỂU DỮ LIỆU CÓ CẤU TRÚC (Trang 39 -42 )

×