Integer; (* biến địa phương trùng tên *) I := 7;

Một phần của tài liệu dphfffgfgfgf (Trang 27 - 31)

I := 7; writeln ( I : 6); (*---*) BEGIN END. I := 5; writeln ( I : 6); DiaPhuong; writeln( I : 6);

Bài 12: 12:

KIỂU DỮ LIỆU CÓ CẤU TRÚC: TẬP HỢP(SET) (SET)

I./ K I ỂU TẬP H ỢP VÀ CÁC PHÉP TOÁN:1./ Kiểu tập hợp: 1./ Kiểu tập hợp:

a. Đ ặ t vấ n đề:

- Trong các số nguyên, có các tập hợp như: “tập hợp các số chẵn”, “ tập hợp các số lẽ ”, “tập hợp các số nguyên tố”.

- Các tháng trong năm(1..12), ta có các tập hợp: + Các tháng dài ngày: [1,3,5,7,8,10,12] + Các tháng mùa mưa: [4..10]

+Các tháng mùa khô: [1..3, 11, 12]

Vậy một tập hợp bao gồm một số các đối tượng nào đó có cùng bản chất, Pascal đưa ra một kiểu dữ liệu có cấu trúc gọi là kiểu tập hợp để biểu diễn cho khái niệm này.

b. Mô tả kiểu và khai báo b i ến k i ểu tập h ợp :

_ Mô tả kiểu:

TYPE

Tên kiểu tập hợp = SET OF < kiểu cơ sở>

_ Khai báo biến:

VAR

Tên biến: SET OF <kiểu cơ sở>

Trong đó:

<Kiểu cơ sở>: phải là kiểu cơ sở có thứ tự nằm trong khoảng 0-->255 (các kiểu chuẩn Byte, Char, Boolean, hoặc kiểu miền con)

Giá trị kiểu tập hợp là một tập hợp các phần tử kiểu cơ sở được viết trong 2 dấu [ và ] Ví d ụ:

TYPE

VAR

Ví dụ:

Ví dụ:

chucai= SET OF Char; chuso= SET OF 0..9;

ngay=(Hai, Ba, Tu, Nam, Sau, Bay, ChuNhat); so= 0..100;

kitu:chucai;

A,B,C: SET OF so;

Ngaytrongtuan: SET OF ngay;

2./

Các phép tóan trên kiểu tập h ợp: a. Phép gán:

kitu:= [ ]; {tập hợp rỗng: không có phần tử } kitu:= [‘A’..’D’,’M’,’P‘];

Ngaytrong tuan:= [Ba, Sau];

b. Phép hợp: Kí hiệu: + Kí hiệu: +

--> Cho tập mới có các phần tử thuộc cả 2 tập

A:= [3,5]; B:= [4..6,10,45];

Ví d ụ:

Ví dụ:

Ví dụ:

c. Phép giao:Kí hiệu: * Kí hiệu: *

--> Cho tập mới có các phần tử nằm chung ở 2 tập

C:=A*B; {Tập C sẽ là [4,5] }

d. Phép hiệu: Kí hiệu: - Kí hiệu: -

--> Cho tập mới có các phần tử thuộc tập thứ 1 nhưng không thuộc tập thứ 2

C:=A-B; {Tập C sẽ là [ 3] } C:=B-A; {Tập C sẽ là [ 6, 10 ,45] }

e. Phép thu ộc : Sử dụng từ khóa IN

--> Cho kết quả : True hoặc False VAR

chu: char; Giả sử ta có:

chu:=‘B’; Vậy:

chu IN chucai; { cho giá trị TRUE }

‘X’ IN kitu; { cho giá trị FALSE }

f. Các phép so s á nh: < > , = , > = , < =II./ VÍ DỤ: II./ VÍ DỤ:

Bài 1: Đọc vào N kí tự để xây dựng một tập kí tự Alphabet. Xem trong số N kí tự đưa vào có các loại kí tự

nào được gõ vào, sau đó in kết quả. Ví d ụ: N = 4

Nhập vào : a Xuất ra: A

c C

A a Ý tư ởng:

_ Bài tập thể hiện cách nhập và xuất cho kiểu dữ liệu tập hợp. _ Nhập: N, các phần tử trong tập Alphabet

_ Xuất: Các kí tự đã gõ (không phân biệt chữ hoa chữ thường) _ Các biến: N,i: integer

kitu : char

Alphabet: SET OF ‘A’..’Z’ _ Giải thuật: + Alphabet=[ ]; + Nhập N; + Lặp i = 1 tới N làm: - Đọc kí tự - Đổi kí tự nhập thành chữ hoa - Cộng dồn vào tập Alphabet Cuối lặp

+Lặp kitu = ‘A’ tới ‘Z’ làm:

Nếu kitu IN Alphabet thì : Xuất ( kí tự ) Cuối lặp

C

h ư ơ ng trình:

PROGRAM DOCCHU; TYPE

BEGIN Alphabet: chuhoa; N, i : integer; kitu: char; Alphabet:= [ ] ; write(‘Nhap N : ‘); readln(N); For i:=1 to N do BEGIN END.

write(‘Nhap ki tu thu’ , i , ‘: ‘) ; readln(kitu); writeln; kitu:= UPCASE(kitu);

Alphabet:= Alphabet+kitu; END;

writeln(‘Cac chu da go vao trong tap Alphabet la:’); For kitu:=‘A’ to ‘Z’ do

If (kitu IN Alphabet ) then writeln(kitu);

Bài 2: Tìm các số nguyên tố không vượt quá N ( với N<255). Áp dụng giải thuật sàng “ Eratosthène” Ý tư ởng:

_ Tìm một tập hợp các số nguyên tố trong phạm vi từ 1 đến N. _ Số nguyên tố là : + số nguyên dương >1

+ chỉ chia hết cho 1 và cho chính nó.

_ Xuất phát từ 1 tập các số nguyên từ 1--> N, mỗi lần gặp một số nguyên tố, ta sẽ loại trừ ra khỏi tập này tất cả các số là bội của số nguyên tố này.

_ Các biến: Tapchuaxet, Tapsongto: SET OF Byte N, sodangxet, tmp: integer

_ Gi ải th u ật :

+ Tapchuaxet = [2..N] { Tập số sẽ được xét} + Tapsongto = [ ] { ban đầu rỗng }

+ sodangxet = 2; { bắt đầu xét từ số 2} + Lặp:

- Trong khi ( sodangxet <=N) và NOT(sodangxet IN Tapchuaxet) Làm: Tăng sodangxet lên 1

Cuối lặp

- Tapsongto= Tapsongto+ [sodangxet] - tmp= sodangxet

- Trong khi ( tmp <=N) Làm:

_ Tapchuaxet= Tapchuaxet- [sodangxet] _ tmp = tmp + sodangxet

Cuối lặp

Cho đến khi : Tapchuaxet = [ ]

+ Xuất các số nguyên tố trong Tapsongto

Bài 13: 13:

I./ Đ Ặ T V ẤN ĐỀ:

KIỂU DỮ LIỆU CÓ CẤU TRÚC: MẪU TIN(RECORD) (RECORD)

+ Chúng ta đã học về các kiểu dữ liệu có cấu trúc như mảng (Array), kiểu tập hợp (SET), các kiểu này ao gồm một số thành phần cùng thuộc một kiểu nhất định. VD: các phần tử của một Array[1..100] of Integer là các số

nguyên Integer.

VD: Thông tin về một học sinh gồm các thành phần: - Họ Tên học sinh (kiểu chuỗi)

- Phái (kiểu Boolean) - Năm sinh (kiểu chuỗi) - Nơi sinh (kiểu chuỗi) - Điểm trung bình (kiểu số)

Turbo Pascal cho phép sử dụng kiểu dữ liệu mẫu tin hay còn gọi kiểu bản ghi (record) để trình bày thông tin về các đối tượng có các thông tin thành phần phức tạp như vậy.

Mỗi thông tin thành phần được gọi là một trường (Field).

Mỗi một mẫu tin (Record) có thể nhiều trường, các trường có thể thuộc các kiểu khác nhau và mỗi trường có tên gọi riêng.

II.

/ REC O R D :1./ Định ngh ĩ a:

Một phần của tài liệu dphfffgfgfgf (Trang 27 - 31)