Giáo trình Ngôn ngữ lập trình Pascal - Lê Mạnh Thạnh (Phần 2)
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Ngôn ngữ lập trình Pascal - Lê Mạnh Thạnh (Phần 2)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- giao_trinh_ngon_ngu_lap_trinh_pascal_le_manh_thanh_phan_2.pdf
Nội dung text: Giáo trình Ngôn ngữ lập trình Pascal - Lê Mạnh Thạnh (Phần 2)
- Ch−ơng 6 Kiểu tập hợp và kiểu mảng 6.1. Kiểu tập hợp (Set Type) 6.1.1. Định nghĩa – Dữ liệu kiểu tập hợp là một tập hợp của những dữ liệu cùng thuộc một kiểu vô h−ớng đếm đ−ợc (kiểu cơ sở của kiểu tập hợp). – Một kiểu tập hợp đ−ợc định nghĩa bởi dạng sau: TYPE = SET OF ; trong đó là tên của kiểu dữ liệu cần định nghĩa là tên hoặc là định nghĩa một kiểu dữ liệu nào đó gọi là kiểu cơ sở. Ví dụ 1. Sau đây là các ví dụ về định nghĩa kiểu dữ liệu tập hợp và mô tả biến thuộc kiểu dữ liệu đó: Type Chu_so = Set Of 0 9 ; Chu_cai_lon = Set Of ‘A’ ’Z’; Var So: chu_so; Chu : Chu_cai_lon; Mau : Set Of (Xanh, Vang, Tim); – Nếu là kiểu nguyên thì giá trị cần phải nằm trong đoạn 0 đến 255. – Hằng kiểu tập hợp đ−ợc biểu diễn d−ới dạng liệt kê các phần tử nằm trong 2 dấu ngoặc vuông [ ]. Chẳng hạn, [‘A’,‘D’,‘E’] , [3, 5 , . . , 9] là các hằng kiểu tập hợp. – Hằng tập hợp rỗng đ−ợc kí hiệu bởi [ ]. – Biến tập hợp cho phép có từ 0 đến 255 phần tử. Có thể sử dụng phép gán đối với các biến kiểu tập hợp. Chẳng hạn, chúng ta có các phép gán sau đây: so:=[1,2,7]; Chu:= [ ]; Mau:= [Vang,Tim,Xanh]; 52
- 6.1.2. Các phép toán trên tập hợp a. Phép toán quan hệ – Phép toán = (bằng) cho giá trị true nếu 2 tập hợp bằng nhau. – Phép toán = (lớn hơn hoặc bằng): A>=B cho giá trị true nếu B là tập con của A. Chú ý. Để kiểm tra tập hợp A có thật sự nằm trong tập hợp B hay không ta sử dụng phép toán AND nh− trong câu lệnh sau đây: if (A<>B) AND (A<=B) then Write (‘A la tap hop con thuc su cua B’); b. Phép toán IN – Dùng để xét xem một phần tử nào đó có nằm trong tập hợp không? Nếu phần tử đó có trong tập hợp thì phép toán sẽ trả về giá trị True, ng−ợc lại trả về giá trị False. Ví dụ 2. ‘C’ In [‘A’,’C’,’D’] cho giá trị True. ‘E’ In [‘A’,’C’,’D’] cho giá trị False. c. Các phép toán hợp, giao, hiệu Gọi A,B là hai dữ liệu cùng kiểu tập hợp – A+B là hợp của A và B (tập hợp các phần tử thuộc A và thuộc B). – A*B là giao của A và B (tập hợp các phần tử thuộc và thuộc B). – A-B là hiệu của A và B (tập hợp các phần tử thuộc A và không thuộc B). Chẳng hạn, nếu A=[1,3,9], B=[9,2,5] thì A+B có giá trị là [1,2,3,5,9], A*B có giá trị là [9], A- B có giá trị là [1,3]. Ví dụ 3. Ch−ơng trình d−ới đây nhập vào một chữ cái và xác định xem chữ cái đó là nguyên âm hay phụ âm? Use Crt; Var Chucai, nguyenam: Set of Char; Ch: char; Begin Chucai:=[‘A’ ’Z’, ‘a’, ’z’]; nguyenam:=[‘A’,’E’,’I’,’O’,’U’]; 53
- Repeat Clrscr; Write(‘Nhap mot chu cai:’); readln (ch); Until ch In chucai; If Upcase(Ch) In Nguyenam Then Writeln(Ch,’La Nguyen am’) Else Writeln (Ch, ‘La Phu am’); Readln; End. 6.2. Kiểu mảng (Array Type) 6.2.1. Khái niệm kiểu mảng (Array) Mảng là một kiểu cấu trúc dữ liệu đ−ợc dùng để l−u trữ nhiều phần tử dữ liệu cùng kiểu cùng tính chất nào đó trong cùng một tên chung. Các thành phần của mảng đ−ợc xác định thông qua truy xuất các chỉ số của nó. Chẳng hạn, mảng a một chiều gồm 5 phần tử đ−ợc phân bố nh− sau: a[1] a[2] a[3] a[4] a[5] Mảng cũng có thể có nhiều chiều, có nghĩa là mỗi một phần tử của mảng đ−ợc xác định bởi một bộ nhiều hơn một chỉ số. Chẳng hạn, để l−u trữ các mảng n hàng, m cột ta có thể sử dụng mảng hai chiều a có nìm phần tử. Phần tử ở dòng i cột j của bảng là a[i,j]. 6.2.2. Khai báo mảng một chiều Dạng định nghĩa kiểu mảng: TYPE = ARRAY [ ] OF ; trong đó là một tên định nghĩa kiểu mảng, là một kiểu vô h−ớng đếm đ−ợc có hữu hạn phần tử, là kiểu dữ liệu của các phần tử của mảng. Để khai báo biến kiểu mảng ta có thể sử dụng một trong hai cách: • Cách 1. VAR : ; • Cách 2. VAR : ARRAY[ ] OF ; trong đó là một tên đ−ợc dùng để đặt cho mảng cần khai báo. 54