Giáo trình dạy học Ngôn ngữ lập trình Pascal (tiếp theo)

51 740 5
Giáo trình dạy học Ngôn ngữ lập trình Pascal  (tiếp theo)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phần 3- Ngôn ngữ lập trình Pascal ngôn ngữ lập trình pascal (tip theo) Chơng 11 Kiểu tập hợp kiểu mảng 11.1 Kiểu tập hợp (set type) 11.1.1 Định nghĩa khai báo : Dữ liệu kiểu tập hợp tập hợp liệu thuộc kiểu vô hớng đếm đợc Một kiểu tập hợp đợc định nghĩa dạng sau : TYPE Tên_kiểu = SET OF kiểu_phần_tử; kiểu_phần_tử kiểu liệu phần tử tập hợp Khai báo biến kiểu tập hợp : Cách : Khai báo qua tên kiểu đà đợc định nghĩa : Ví dô 1: Type Chu_so = Set of 9; Chu_cai_lon = Set of 'A' 'Z'; Var TapA : Chu_so; TapH : Chu_cai_lon; C¸ch : Khai b¸o trùc tiÕp : VÝ dô : Var TapS : Set Of Byte; T1, T2 : Set Of (Xanh,Vang,Tim); Ghi chó :  Biến tập hợp cho phép có tối đa 256 phần tử Nếu kiểu_cơ_sở kiểu nguyên giá trị phải nằm đoạn từ đến 255 Chẳng hạn, Víi khai b¸o : Type Tap_so = Set of 100 256; Khi dịch máy thông báo lỗi : Set base type out of range  H»ng kiĨu tËp hỵp đợc biểu diễn dới dạng liệt kê phần tử nằm hai dấu ngoặc vuông [ ] Chẳng hạn : ['A','D','E'], [3,5 8] (tập số nguyên 3, 5, 6, 7, 8) kiểu tập hợp (Vị trí phần tử tập hợp ý nghĩa : [1,2]=[2,1]) Tập hợp rỗng đợc kí hiệu [] Có thể thực phép gán biến kiểu tập hợp Ví dụ : Với biến đợc khai báo ví dụ trên, ta cã thĨ g¸n : TapA := [1,2,7]; TapH := []; {Tập hợp rỗng} T1 := [Vang,Tim]; 11.1.2 Các phép toán tập hợp : 54 Giáo trình tin học đại cơng Phép toán quan hệ : - Phép toán = (bằng) : Cho giá trị True tập hợp - Phép toán (khác) : Cho giá trị True tập hợp khác - Phép toán = B cho giá trị True B tập A Chú ý : Không có phép toán < (nhỏ hơn) > (lớn hơn) Để kiĨm tra tËp hỵp A cã thËt sù n»m tập hợp B không ta sử dụng phép toán AND nh câu lệnh sau : If (AB) and (A0) and (n a[j] then { đổi chỗ a[j-1] a[j] } 59 Phần 3- Ngôn ngữ lập tr×nh Pascal Begin Tam := a[j-1]; a[j-1] := a[j]; a[j] := Tam; End; (* In kÕt qu¶ *) Writeln('D·y sau đà xếp : '); For i:=1 to N Write(a[i]:6); Readln; End Giải thuật xếp viết theo vòng lặp REPEAT nh sau: i := 2; Repeat doi := false; For j := N downto i if a[j-1] > a[j] then Begin Doi :=true; Tam := a[j-1]; a[j-1] := a[j]; a[j] := Tam; End; i:=i+1; Until Not Doi; {doi lµ biÕn Boolean } Kết chạy chơng trình hình : PP BUBBLE SORT SAP XEP MANG THANH DAY TANG DAN - a[1] = 44 a[2] = 55 a[3] = 12 a[4] = 42 a[5] = 94 a[6] = 18 a[7] = a[8] = 67         D·y sau ®· s¾p xÕp : 12 18 42 44 55 67 94 Ta có giải thuật tơng tự cho việc xếp mảng theo thứ tự giảm dần Bài toán : Tìm kiếm phần tử mảng đà đợc có thứ tự Giải thuật Binary Search (Tìm kiếm nhị phân) : Giả sử ta có mảng đà xếp theo thứ tự tăng dần, cần tìm phần tử x có mảng không ? Giải thuật đợc thực nh sau : Bớc 1: Phạm vi tìm kiếm toàn mảng 60 Giáo trình tin học đại cơng Bớc 2: Lấy phần tử phạm vi cần tìm kiếm (gọi y) so sánh với x Nếu x = y giải thuật kết thúc thông báo đà tìm thấy Nếu x < y phạm vi tìm kiếm phần tử nằm trớc y Nếu x > y phạm vi tìm kiếm phần tử nằm sau y Bớc 3: Nếu tồn phạm vi tìm kiếm lặp lại bớc 2, ngợc lại thông báo không tìm thấy, giải thuật kết thúc không thành công Sau ví dụ minh hoạ ý tởng giải thuật : Cần tìm phần tử x = mảng : l 5* 10 12 15 j r l j r 3* 4 10 l j ==> T×m thÊy r * Chơng trình minh hoạ Program BINARY_SEARCH; Uses Crt; Const N = 8; Var a : Array[1 N] Of Integer; l,r,i,j : Byte; x : Integer; Timco : Boolean; Begin Clrscr; Writeln('Nhap day theo thu tu tang : '); For i:=1 to N Begin Write('Phan tu thu ',i,': '); Readln(a[i]); End; Writeln(' * * *'); Write('Nhap x = '); Readln(x); Timco:=False; l:=1; r:=n; {l, r cho phạm vi tìm kiếm} While Not(Timco) and (l x then r:=j-1; If a[j] = x then Timco:=True; End; Writeln(' '); If Timco then Write('Da tim co phan tu thu ',j,' bang ',x) Else Write('Khong co phan tu nao day bang ',x); End 61 12 15 Phần 3- Ngôn ngữ lập trình Pascal 11.2.2 Mảng hai chiều (ma trận) : Định nghĩa mảng hai chiều : Mảng hai chiều, gọi ma trận, mở rộng trực tiếp mảng chiều Một kiểu mảng hai chiều đợc định nghĩa dạng sau : TYPE tên_kiểu_mảng = ARRAY[ n1 n2, m1 m2 ] OF kiểu_phần_tử; Trong : n1, n2 (n1 n2) xác định phạm vi số thứ nhất, gọi số dòng Tơng tự m1, m2 (m1 m2) xác định phạm vi số thø hai, gäi lµ chØ sè cét  Gièng nh mảng chiều, kiểu liệu số không đợc kiểu thực hay chuỗi Ví dụ 13 : Type mang1 = Array[1 2, 2] Of Integer; mang2 = Array[’a’ ’c’,1 3] Of String[10]; Khai b¸o mảng hai chiều : Cách : Khai báo thông qua kiểu mảng hai chiều đà đợc định nghĩa : Ví dụ 14 : Với hai kiểu mảng đà đợc định nghĩa ví dụ 13, khai b¸o : Var X : mang1; Y : mang2; KÕt ta nhận đợc hai mảng hai chiều : - Mảng X gồm phần tử kiểu liệu nguyên : X[1,0], X[1,1], X[1,2] X[2,0], X[2,1], X[2,2] - Mảng Y gồm phần tử kiểu chuỗi String[10] : Y[‘a’,1], Y[‘a’,2], Y[‘a’,3] Y[‘b’,1], Y[‘b’,2], Y[‘b’,3] Y[‘c’,1], Y[‘c’,2], Y[‘c’,3] C¸ch : Khai b¸o trùc tiÕp : VÝ dơ 15 : Hai mảng X Y ví dụ 14 đợc khai báo trực tiếp nh sau : Var X : Array[1 2,0 2] Of Integer; Y : Array[a c,1 3] Of String[10]; Các thao tác mảng hai chiều : Để xác định phần tử mảng hai chiều, ta viết : tên_biến_mảng[chỉ_số_1, chỉ_số_2] VÝ dơ 16 : Víi hai m¶ng X, Y ë vÝ dơ 14, ta cã thĨ dïng c¸c lƯnh g¸n sau : X[1,0] := 5; X[2,1] := X[1,1] - 20; 62 Giáo trình tin học đại cơng Y[a,1] :=TOAN; Để nhập liệu cho mảng hai chiều, ta phải dùng hai vòng lặp duyệt theo hai số, chẳng hạn muốn nhập liệu cho mảng X vÝ dô 1, ta viÕt : For i:=1 to for j:=0 to Begin Write(’NhËp phÇn tư hàng ,i, cột ,j, : ); Readln(X[i,j]); End; Để in mảng X lên hình, trình bày giống nh cách viết ma trận, hàng in dòng, ta dïng lÖnh : For i:=1 to Begin {in hµng thø i} for j:=0 to write(X[i,j]:3); {xuống dòng, chuẩn bị in dòng tiếp theo} Writeln; End; Ví dụ 17 : Viết chơng trình đọc số liệu vào bảng chiều tính in tổng cột tổng bảng Program Vidu_17; Uses Crt; Type Matrix = Array[1 3,1 4] Of Integer; Var a : Matrix; i : 3; j: 4; tong_cot, tong: Integer; Begin Clrscr; (* NhËp sè liệu vào bảng *) For i:=1 to (* Vòng lặp cho hàng (chiều thứ 1) *) For j:=1 to (* Vòng lặp cho cột (chiỊu thø 2) *) Begin Write('H·y cho biÕt phÇn tư a[', i , ',' , j ,'] = '); Readln(a[i,j]); End; (* Tính in tổng *) Tong:=0; For j:=1 to Begin Tong_cot:=0; For i:=1 to Tong_cot:=Tong_cot + a[i,j]; Writeln('Tổng số cột ',j,' lµ: ',Tong_cot); Tong:=Tong + Tong_cot; 63 ... chơng trình tạo in hình ma trận đơn vị cấp 10 [11.11] Viết chơng trình nhập vào từ bàn phím ma trận vuông xuất hình tổng phần tử đờng chéo 65 Phần 3- Ngôn ngữ lập trình Pascal Chơng 12 Chơng trình. .. Phần 3- Ngôn ngữ lập trình Pascal - LastMode=-1; {Khi khai TextMode(LastMode) Chơng trình tự động text xem mode hình trớc lấy mode khai cho Chơng trình Điều đặc biệt thuận lợi ta muốn Chơng trình. .. riêng rẽ chơng trình (sub-routine hay sub-program) Các lập trình viên làm việc độc lập với chơng trình con, ngời quản lý chung cần tập hợp sử dụng chơng trình để phát triển chơng trình Phơng pháp

Ngày đăng: 05/07/2013, 01:26

Hình ảnh liên quan

In danh sách lên màn hình, mỗi học sinh trên một dòng, gồ m: họ tên, dtb, kết quả xếp loại, và in số học sinh có điểm trung bình 10 - Giáo trình dạy học Ngôn ngữ lập trình Pascal  (tiếp theo)

n.

danh sách lên màn hình, mỗi học sinh trên một dòng, gồ m: họ tên, dtb, kết quả xếp loại, và in số học sinh có điểm trung bình 10 Xem tại trang 13 của tài liệu.
Ví dụ 8: Nhập vào từ bàn phím một dãy các số nguyên rồi xuất ra màn hình - Giáo trình dạy học Ngôn ngữ lập trình Pascal  (tiếp theo)

d.

ụ 8: Nhập vào từ bàn phím một dãy các số nguyên rồi xuất ra màn hình Xem tại trang 20 của tài liệu.
 NORMVIDE O: Khôi phục thuộc tính màn hình mặc định theo các thuộc tính đã hiện hữu ở vị trí cursor khi thực hiện chơng trình. - Giáo trình dạy học Ngôn ngữ lập trình Pascal  (tiếp theo)

h.

ôi phục thuộc tính màn hình mặc định theo các thuộc tính đã hiện hữu ở vị trí cursor khi thực hiện chơng trình Xem tại trang 22 của tài liệu.
Trong thực tế, chúng ta thờng sử dụng các bảng danh sách, biểu bảng thống kê có các nội dung khác nhau, chẳng hạn bảng danh sách học viên nh dới đây : - Giáo trình dạy học Ngôn ngữ lập trình Pascal  (tiếp theo)

rong.

thực tế, chúng ta thờng sử dụng các bảng danh sách, biểu bảng thống kê có các nội dung khác nhau, chẳng hạn bảng danh sách học viên nh dới đây : Xem tại trang 34 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan