Biết đặc trưng của tập hợp Biết sử dụng cỏc phộp toỏn quan hệ, tổ hợp.

Một phần của tài liệu Giao trinh Pascal (Trang 44 - 48)

Trong nhiều bài toỏn, nếu chỉ dựng một kiểu dữ liệu khụng đủ trỡnh bày được thụng tin về một đối tượng. Chẳng hạn, thụng tin về một học sinh thường bao gồm cỏc thụng tin thành phần:Họ và tờn (kiểu xõu kớ tự), điểm học tập (kiểu số), cú đoàn viờn hay khụng?

Để giải quyết bài toỏn này người ta dựng kiểu dữ liệu bản ghi, Bản ghi và cấu trỳc cố định

1. Khỏi niệm kiểu bản ghi

Kiểu dữ liệu bản ghi (RECORD) bao gồm nhiều thụng tin. Mỗi thụng tin thành phần của một bản ghi được gọi là một trường của bản ghi đú. Một bản ghi cú thể cú nhiều trường, cỏc trường cú thể thuộc cỏc kiểu khỏc nhau. Trường của bản ghi cú tờn gọi do người dựng đặt cho nú.

2. Cỏch khai bỏo

Để khai bỏo bản ghi ta dựng từ khoỏ RECORD và END ; giữa hai từ khoỏ này là khai bỏo cỏc trường. Trường được khai bỏo như sau:

Tờn trường : Kiểu của trường;

Nếu cú nhiều trường cựng kiểu thỡ cú thể khai vào một nhúm trường, trong đú cỏc tờn trường được ngăn cỏch nhau bởi dấu phảy (,).

Sau từ khoỏ END kết thỳc khai bỏo bản ghi là dấu chấm phẩy (;).

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

3.1. Mở từng trường

Ta cần truy nhập đến trường nào của bản ghi thỡ ra lệnh cho chương trỡnh bằng cỏch chỉ ra tờn biến bản ghi, tiếp đú là dấu chấm (.) và sau đú là tờn trường mà ta muốn truy nhập.

3.2 Mở tất cả cỏc trường

TP cho phộp truy nhập đến tất cả cỏc trường của bản ghi bằng cỏch dựng cõu lệnh WITH kốm theo DO. Cõu lệnh WITH được viết theo dạng sau:

WITH Biến bản ghi DO Cõu lệnh ;

Trong cõu lệnh sau từ khoỏ DO ta muốn truy nhập đến trường nào của biến bản ghi thỡ chỉ cần viết tờn trường đú.

4. Sử dụng bản ghi cấu trỳc cố định

4.1. Bài toỏn

Ta cần quản lớ n học sinh trong một đợt thi cú 2 mụn (mụn l và mụn 2). Mỗi học sinh được đặc trưng bởi tờn, số bỏo danh, điểm mụn 1, điểm mụn 2 và điểm trung bỡnh. Viết chương trỡnh để mỏy nhận vào từ bàn phớm tờn, số bỏo danh, điểm từng mụn của từng học sinh, sau đú cho mỏy tớnh điểm trung bỡnh cho từng người. Tỡm xem cú bao nhiờu người đạt loại giỏi (điểm trung bỡnh từ 8 trở lờn).

4.2. Thuật giải

Thuật giải QliThi; Hằng giỏ trị bằng 9 N ; Kiểu

Xõu kớ tự Tờn , SBD; Số nguyờn m1 , m2 ; Số thực Tb ; Kết thỳc khai bỏo bản ghi HS;

Biến

Mảng n phần tử kiểu HS TS ; Số nguyờn i , d ;

Bắt đầu

Với i := 1 đến n Làm

vào Ts[i ] .m1; vào Ts[i].m2; Ts[i].tb := (m1+m2) / 2; X.với ; d := 0 ;

Với i := 1 đến n Làm

Nếu Ts[i].tb > = 8 thỡ d := d +1 ; X.nếu X.với ; In d ;

Kết thỳc .

5. Ghi nhớ (adsbygoogle = window.adsbygoogle || []).push({});

5.1. Định nghĩa bản ghi

Định nghĩa kiểu bản ghi bao gồm từ khoỏ record tiếp theo là một danh sỏch cỏc trường và kết thỳc bằng từ khoỏ end kốm theo dấu chấm phẩy (; ).

5.2. Truy nhập vào trường

a. Cỏch thứ nhất

Dựng cõu lệnh WITH . . . DO . . . With biến bản ghi DO cõu lệnh;

Mở tất cả cỏc trường của bản ghi. Trong cõu lệnh sau DO truy nhập đến trường nào thỡ chỉ cần viết tờn của nú. b. Cỏch thứ hai

Nếu khụng dựng cõu lệnh WITH . . . DO . . . thỡ để thõm nhập đến một trường nào đú ta phải viết như sau: tờn biến bản ghi, tiếp theo là dấu chấm (.) và sau dấu chấm là tờn trường ta muốn truy nhập.

Bài tập

1. Hãy so sánh hai kiểu dữ liệu: mảng và bản ghi. Cho biết trong trờng hợp nào có thể mô tả kiểu mảng thay vì phải mô tả kiểu bản ghi. Nêu ví dụ.

2. Khi nào có thể viết gộp các trờng khi khai báo bản ghi. Có mấy cách truy nhập vào một trờng của bản ghi. 3. Toạ độ điểm trên mặt phẳng đợc cho bởi cặp hai số thực tơng ứng với hoành độ và tung độ của điểm đó. a) Miêu tả kiểu bản ghi để biểu diễn toạ độ điểm.

b) Viết chơng trình có sử dụng kiểu bản ghi trong mục a) để thực hiện: Nhập vào từ bàn phím tọa độ ba đỉnh A, B, C của tam giác ABC. Tính và hiển thị ra màn hình toạ độ trọng tâm của tam giác ABC. Tính diện tích của tam giác ABC

4. Viết chơng trình cho máy nhận vào phiếu quản lí của n cuốn sách, mỗi cuốn gồm có tên sách, tên tác giả, tên nhà xuất bản, năm xuất bản, số trang, giá tiền. Sau đó cho hiện lên màn hình tên các sách của Nhà xuất bản Giáo dục.

5. Một cửa hàng bán gạo có 5 mặt hàng gạo nh sau: gạo nếp loại 1, gạo nếp loại 2, gạo tẻ loại 1, gạo tẻ loại 2, gạo tẻ loại 3.

Viết chơng trình yêu cầu MTĐT thông báo số tiền mà khách hàng phải trả, lu ý là một khách hàng có thể mua một hoặc nhiều loại gạo của cửa hàng

Bản ghi cú cấu trỳc biến thiờn

1. Bài toỏn

Lập trỡnh nhận vào mảng một chiều cú n phần tử mà mỗi phần tử là những thụng tin về một hỡnh vuụng, chữ nhật, trũn, tam giỏc gồm tờn, diện tớch, cỏc cạnh hoặc bỏn kớnh. Đếm xem mỗi loại hỡnh cú bao nhiờu? Tớnh tổng diện tớch của cỏc hỡnh.

2. Tư tưởng thuật giải

Ta sẽ khai một mảng cú n phần tử ( n khụng quỏ 20). Mỗi phần tử là một bản ghi cú hai trường đầu là diện tớch và tờn hỡnh. Tiếp đến tuỳ theo tờn hỡnh mà khai cỏc trường để xỏc định hỡnh đú. Khi thực hiện chương trỡnh ta nhận vào tờn hỡnh, tiếp đến tuỳ theo tờn hỡnh mà nhận vào cỏc yếu tố xỏc định hỡnh đú, sau đú tớnh

diện tớch của hỡnh theo cỏc yếu tố vừa nhận được và tăng biến đếm hỡnh đú lờn 1 đơn vị. Việc vào dữ liệu sẽ được kết thỳc khi mỏy nhận vào xõu rỗng hoặc số hỡnh đủ bằng n. Khi kết thỳc vào dữ liệu ta dựng một vũng For To Do để tớnh tổng diện tớch của chỳng.

3. Ghi nhớ

RECORD cú cấu trỳc biến thiờn núi chung sẽ cú 2 phần.

3.1. Phần cố định

Gồm cỏc trường dt, ten. Phần này là đặc điểm chung của mọi hỡnh. Trong cỏc trường ở phần này ta lấy ra một trường đỏnh dấu ( trường ten ở vớ dụ trờn) để bỏo tiếp đến là phần thay đổi. Trường đỏnh đấu được đặt giữa hai từ khoỏ CASE ... OF

4.2. Phần thay đổi

- Phần thay đổi luụn luụn đặt sau phần cố định vỡ trường đỏnh dấu ở cuối phần cố định. (Tuy nhiờn phần thay đổi cú thể lại chứa RECORD khỏc cú cấu trỳc thay đổi , nghĩa là ta lại cú một trường thay đổi thứ hai khỏc nằm trong một trường thay đổi. Đú là RECORD cú nhiều mức thay đổi.

4.3. Lưu trữ dữ liệu ở phần thay đổi

Để hiểu sõu hơn và kỹ hơn cấu trỳc RECORD biến thiờn, ta nghiờn cứu cỏch sắp xếp bộ nhớ của phần thay đổi. Chương trỡnh dịch sẽ dành bộ nhớ tương ứng với trường cần cú số ụ nhớ nhiều nhất trong phần biến đổi.

Bài tập

1. Viết chương trỡnh ghi lờn đĩa những khối lập phương, hỡnh hộp chữ nhật, hỡnh trụ, hỡnh chúp tam giỏc đều, mỗi hỡnh được đặc trưng bởi tờn, thể tớch, cỏc kớch thước. (adsbygoogle = window.adsbygoogle || []).push({});

2. Để quản lý nhõn sự, phũng tổ chức dựng cỏc trường sau: họ tờn, tuổi, lương, địa chỉ, nghề nghiệp. Ở trường nghề nghiệp cú những thụng tin bổ xung như sau:

_ cụng nhõn: ngành gỡ, thợ bậc mấy. _ kỹ sư: ngành gỡ, trỡnh độ chuyờn mụn. _ bỏc sỹ: chuyờn khoa.

_ cỏ biệt: khụng ghi gỡ thờm.

Lập trỡnh để cỏc thụng tin của từng người lờn đĩa.

Tập hợp

1. Những kiến thức chung về tập hợp

1.1. Định nghĩa kiểu tập hợp

SET OF kiểu phần tử ;

Cỏc phần tử của một tập hợp trong tin học phải thuộc cựng một kiểu, gọi là kiểu cơ sở. Mỗi tập hợp cú khụng quỏ 256 phần tử (số phần tử của một tập hợp tuỳ thuộc vào chương trỡnh dịch).

1.2. Biểu diễn tập hợp

Một cỏch biểu diễn tập hợp là liệt kờ cỏc phần tử cỏch nhau bởi dấu phẩy, tất cả nằm trong cặp dấu ngoặc vuụng (mở múc vuụng và đúng múc vuụng).

Vớ dụ tập rỗng được viết là [] , tập gồm số 6, số 2 , số 9,10, 11,12, 17 được viết là [6 , 2 , 9 .. 12 , 3*5 +2 ]

1.3. Một số phộp toỏn

Giả sử A và B là hai tập hợp.

a. Những phộp toỏn giữa hai tập hợp

- Giao của hai tập hợp

A*B là tập hợp gồm cỏc phần tử thuộc cả A và B - Hợp của hai tập hợp

A + B là tập hợp gồm cỏc phần tử thuộc A hoặc thuộc B - Hiệu của hai tập hợp

A - B là tập hợp gồm cỏc phần tử thuộc A và khụng thuộc B

b. Những phộp toỏn cho giỏ trị logic

- Phộp thuộc Toỏn tử IN

Toỏn tử IN kiểm tra một phần tử cú thuộc một tập hợp hay khụng. x IN A cho giỏ trị True nếu x thuộc A, ngược lại cho giỏ trị False. - Những phộp toỏn quan hệ

=, <>,<= Kiểm tra sự bằng nhau, khỏc nhau, bao nhau của hai tập hợp.

M := Biểu thức tập hợp

Biểu thức tập hợp và biến tập hợp M phải cựng kiểu

2. Ghi nhớ

2.1. Miền xỏc định cỏc phần tử của tập hợp Chỳ ý rằng ta khụng thể khai bỏo như dưới đõy:

Var A : set of integer ; B : set of 200 .. 300 ; C : Set of -20 .. 15 ; Lớ do vi phạm là cú phần tử nằm ngoài đoạn từ 0 đến 255.

2.2. Thứ tự phần tử

Tập hợp khụng phõn biệt thứ tự cỏc phần tử (adsbygoogle = window.adsbygoogle || []).push({});

3.4. Phộp gỏn

Hai tập hợp cựng kiểu cú thể gỏn cho nhau.

4. Áp dụng

4.1. Bài toỏn

Ta xột tập hợp cỏc bạn ở một tổ cú tờn là Mai, Mận, Mơ, Thược Dược, Đồng Tiền, Hồng, Huệ, Lớ, Lan, Nhài. Tham gia văn nghệ cú 2 tiết mục mỳa và hỏt. Cú bạn tham gia một trong hai tiết mục, cú bạn tham gia cả hai, cú bạn khụng tham gia tiết mục nào. Lập chương trỡnh để khi hỏi một bạn nào đú mỏy sẽ trả lời bạn đú tham gia cả mỳa và hỏt hay chỉ tham gia một tiết mục nào đú hoặc khụng tham gia văn nghệ.

4.2. Thuật giải

Thuật giải VănNghệ ; Kiểu

Kiểu liệt kờ

(Mai, Man, Mo, Hong, Hue, Thuoc_Duoc, Dong_Tien, Nhai, Li, Lan) DanhSach ; Biến

Tập hợp nhận phần tử thuộc kiểu DanhSach ds, mua, hat, m_h, van_nghe, ktgvn ; Xõu kớ tự QD ;

DanhSach ten ;

Mảng chỉ số là DanhSach, phần tử là xõu kớ tự MT ; Bắt đầu

mt[Mai] := 'Mai'; mt[Nhai] := 'Nhai'; mt[Mo] := 'Mo'; mt[Man] := 'Man'; mt[Hue] := 'Hue'; mt[Li] := 'Li'; mt[Hong] := 'Hong';

mt[Thuoc_Duoc] := 'Thuoc Duoc'; mt[Lan] := 'Lan'; mt[Dong_Tien] := 'Dong Tien';

ds := [Mai .. Lan] ; mua := [Mai, Man, Mo, Thuoc_Duoc, Dong_Tien]; hat := [Hong, Hue, Dong_Tien, Thuoc_Duoc];

van_nghe:= mua hợp hat ; m_h:= mua giao hat; ktgvn:= ds trừ van_nghe; vào qd;

Với ten := Mai đến Lan Làm

nếu mt[ten] = qd thỡ kiểm tra xem ten thuộc tập nào mà thụng bỏo cõu trả lời tương ứng với ý nghĩa đó qui định cho tập đú

cũn trường hợp mt[ten] <> qd thỡ thụng bỏo MTĐT khụng quản lý bạn qd x nếu

x với Kết thỳc.

Bài tập

1. Viết chương trỡnh cho mỏy nhận vào một tập hợp cú 30 phần tử là những số nguyờn trong khoảng từ 0 đến 255, khỏc nhau từng đụi một. Sau khi nhận vào từ bàn phớm, mỏy in ra cỏc phần tử đú theo thứ tự tăng dần. 2. Cho hai phương trỡnh sau:

x2 - 26x + 168 = 0 (1) x3 - 28x2 + 255x - 756 = 0 (2)

Tỡm cỏc nghiệm nguyờn dương khụng lớn hơn 20 của: - Từng phương trỡnh.

- Tuyển hai phương trỡnh trờn.

Tỡm cỏc số nguyờn dương khụng lớn hơn 20 khụng là nghiệm của tuyển hai phương trỡnh trờn.

. Viết chương trỡnh cho MTĐT in ra cỏc số nguyờn tố nhỏ hơn 255 theo thuật giải sàng ERATHOSTENE bằng cỏch dựng một tập hợp chứa cỏc số nguyờn từ 1 đến 255 (gọi là sàng). Mỗi khi loại bỏ phần tử nào thỡ dựng phộp hiệu loại bỏ phần tử đú ra khỏi sàng. Cuối cựng, những phần tử cũn lại trờn sàng là những số nguyờn tố.

Một phần của tài liệu Giao trinh Pascal (Trang 44 - 48)