Trường Đại học Điện lực Tập đoàn Điện lực Việt Nam


Kiểu tập hợp (Set of) 7.4.1. Khái niệm



tải về 1.67 Mb.
trang38/48
Chuyển đổi dữ liệu18.07.2016
Kích1.67 Mb.
#1821
1   ...   34   35   36   37   38   39   40   41   ...   48

7.4. Kiểu tập hợp (Set of)

7.4.1. Khái niệm


Kiểu tập hợp là một kiểu dữ liệu có cấu trúc nhằm thể hiện mô hình dữ liệu tập hợp trong toán học. Nó thể hiện loại dữ liệu có thể xác nhận giá trị không phải chỉ là một phần tử đơn lẻ trong miền xác định không phải chỉ là một phần tử đơn lẻ trong miền xác định mà là một tập hợp nhiều phần tử cùng thuộc một kiểu dữ liệu vô hướng đếm được nào đó.

7.4.2. Cú pháp


Phần mô tả khai báo kiểu tập hợp có cú pháp như sau:

TYPE tên_kiểu_tập_hợp = SET OF tên_kiểu_dữ_liệu_cơ_sở;
Var tên_biến : tên_kiểu_tập_hợp;

Trong đó: tên_kiểu_dữ_liệu_cơ_sở có thể là một kiểu dữ liệu vô hướng đếm được bất kỳ, kể cả kiểu đoạn con, kiểu liệt kê.
Chú ý: Turbo Pascal hạn chế số phần tử có thể của mỗi giá trị kiểu tập hợp là 256

7.4.3. Một số tính chất


- Một giá trị của dữ liệu kiểu tập hợp được thể hiện bằng cách liệt kê mọi phần tử của tập, cách nhau bởi dấu phẩy, đóng trong hai dấu ngoặc vuông.

- Thứ tự liệt kê các phần tử không quan trọng.

- Có thể gán giá trị cho biến tập hợp như thông thường.

- Tập rỗng ký hiệu là [].


7.4.4. Các phép toán trên tập hợp


7.4.4.1. Phép toán quan hệ

Để thực hiện các phép toán quan hệ thì các toán hạng toán hạng phải cùng kiểu. và thực hiện như sau:

- So sánh bằng nhau:

A = B cho kết quả là TRUE nếu A và B hoàn toàn như nhau,

- So sánh khác nhau:

A <> B cho kết quả là FALSE nếu A và B hoàn toàn như nhau

- So sánh nhỏ hơn hay bằng:

A<=B là TRUE nếu A là tập con của B

- So sánh lớn hơn hay bằng:

A>= B là TRUE nếu B là tập con của A.


* Chú ý: không có so sánh nhở hơn chặt (<), lớn hơn chặt (>) đối với kiểu tập hợp. Muốn thể hiện quan hệ “là tập con thực sự” ta phải kết hợp hai điều kiện:

(A<=B) and (A<>B)


7.4.4.2. Phép tìm kiếm (thuộc về)

Để diễn tả một phần tử x có thuộc một tập hợp A hay không ta sử dụng cú pháp:



x in A cho kết quả là TRUE nếu x là một phần tử của A

ngược lại cho kết quả là FALSE


7.4.4.3.Phép hợp, Giao, Hiệu

Để thực hiện các phép hợp, giao, hiệu thì hai toán hạng cũng phải cùng kiểu.

- Phép hợp được ký hiệu bằng dấu +:

A+B = {xi | (xi in A) or (xi in B)}

- Phép giao được ký hiệu bằng dấu *

A* B = {xi | (xi in A) and (xi in B)}

- Phép lấy hiệu được ký hiệu bằng dấu -:

A - B = {xi | (xi in A) and not(xi in B)}


7.4.5. Viết và đọc dữ liệu kiểu tập hợp


Nói chung ta không thể dùng các thủ tục WRITE (WRITELN) và READ (READLN) để viết ra và đọc vào các dữ liệu kiểu tập hợp. Tuy nhiên chúng ta có thể lập trình để thực hiện các thao tác này khi mà các phần tử của tập hợp là các số nguyên hoặc ký tự.

Ví dụ 7.54: Nhập vào n ký tự rồi lựa chọn trong đó các chữ hoa để thành lập một tập hợp và cuối cùng là in ra các ký tự trong tập vừa tạo.

Program vidu_7_54;

VAR Tap_chu_hoa : SET OF 'A'..'Z' ;

i, n :Integer;

Ch :Char;

BEGIN


WRITE(' Nhap so n = '); READLN(n);

Tap_Chu_Hoa :=[]; {Khoi tao Tap_chu_hoa la tap rong }

{Để đọc vào n ký tự bất kỳ }

FOR i :=1 TO n DO

BEGIN

WRITE('Nhập Ký tự thứ ', i , ' : ' ); READLN(Ch);



{Neu ch la ky tu hoa thi cho no vao Tap_Chu_Hoa}

IF ch=UPCASE(ch) THEN

Tap_Chu_hoa :=Tap_Chu_hoa + [Ch];

END;


{in cac ky tu trong Tap_Chu_hoa ra man hinh }

FOR Ch :='A' TO 'Z' DO

IF Ch IN Tap_Chu_Hoa THEN

WRITE(ch : 4) ;

WRITELN;

READLN;


END.
Ví dụ 7.55: Đếm số kí tự là nguyên âm, là phụ âm trong một dãy kí tự. Để đơn giản ta dùng kí tự số 0 để đánh dấu kết thúc dãy.

Dễ thấy rằng cần phải có hai tập hợp chữ cái là các nguyên âm và các phụ âm để phục vụ cho việc kiểm tra từng kí tự đọc vào. Chương trình cần phải định nghĩa kiểu dữ liệu TapKiTu và hai biến NguyenAm, PhuAm có kiểu là tập hợp bộ chữ cái nh­ư đã nêu trên.


Program vidu_7.55;

Type TapKiTu = Set of Char;

Var NguyenAm, PhuAm: TapKiTu;

ch: char;

So_NguyenAm, So_PhuAm: byte;

Begin


So_NguyenAm:= 0; So_PhuAm:= 0;

NguyenAm:= ['a','e','i','o','u'];

PhuAm:= ['a'..'z'] - NguyenAm;

Write(' cho day ki tu, ket thuc bang so 0: ');

read(ch);

while ch <> '0' do

begin

if ch in NguyenAm then



So_NguyenAm:= So_NguyenAm + 1;

if ch in PhuAm then

So_PhuAm:= So_PhuAm + 1;

read(ch);

end;

Writeln('So nguyen am la: ', So_NguyenAm);



Writeln('So phu am la: ', So_PhuAm);

end.
Ví dụ 7.56: Tìm các số nguyên tố trong khoảng 1..N



Thuật toán sàng Eratosthene.

Phân tích:

Sàng ban đầu chứa toàn bộ dãy số 2 .. N. Bắt đầu từ số nhỏ nhất là 2, ta loại bỏ khỏi sàng tất cả các số là bội số của 2. Số nhỏ nhất còn lại trên sàng sẽ là số nguyên tố thứ nhất là 3. Bỏ số này ra khỏi sàng, ghi nó vào tập số nguyên tố.

Tiếp tục loại bỏ khỏi sàng các số là bội số của các số nguyên tố vừa chọn được. Số nhỏ nhất còn lại trên sàng sẽ là số nguyên tố tiếp theo.

Lặp lại việc này ta sàng dần được hết các số nguyên tố.


Program Sang_Eratosthene ;

Const N=100;

Type Nguyen = 1.. N;

Var NguyenTo, Sang: Set of Nguyen ;

Number: Nguyen ;

I: Integer ;

BEGIN

NguyenTo:= [ ] ;



Sang:= [ 2..N] ;

Number:= 2;

Repeat

While not (Number IN Sang) do



Number:= Number + 1;

NguyenTo:= NguyenTo + [Number] ;

Write ( Number , ' ' );

i:= Number ;

While i <= N do

Begin


Sang:= sang - [i] ;

I:= i + Number ;

End.

Until Sang = [] ;



END.


Каталог: images
images -> Hướng dẫn sử dụng Dropbox Để sử dụng được Dropbox
images -> BÀi thuyết trình cách xáC ĐỊnh và chế ĐỘ pháp lý CỦa các vùng biển theo công ưỚc của liên hiệp quốc về luật biển năM 19821
images -> Céng hßa x· héi chñ nghÜa viÖt nam Độc lập tự do hạnh phúc
images -> Lúa gạo Việt Nam Giới thiệu
images -> Trung Tâm kt tc-đl-cl
images -> Số: 105/2008/QĐ-ttg CỘng hòa xã HỘi chủ nghĩa việt nam độc lập Tự do Hạnh phúc
images -> ChuyêN ĐỀ ĐẠi số TỔ HỢP, XÁc suất kiến thức cơ bản Đại số tổ hợp
images -> BỘ giáo dục và ĐÀo tạo trưỜng đẠi học luật tp. HỒ chí minh dưƠng kim thế nguyên thủ TỤc phá SẢn các tổ chức tín dụng theo pháp luật việt nam
images -> Review of Condor, Sun Grid Engine and pbs

tải về 1.67 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   34   35   36   37   38   39   40   41   ...   48




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương