Bài giảng Ngôn ngữ lập trình Pascal: Chương 10 - Kiểu dữ liệu có cấu trúc
Số trang: 23
Loại file: pdf
Dung lượng: 53.68 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng Ngôn ngữ lập trình Pascal: Chương 10 - Kiểu dữ liệu có cấu trúc bao gồm những nội dung về kiểu dữ liệu có cấu trúc như kiểu mảng, sắp xếp mảng, mảng nhiều chiều, xâu ký tự String. Với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu hữu ích.
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình Pascal: Chương 10 - Kiểu dữ liệu có cấu trúc Chương 10 Cấu trúc dữ liệu: kiểu mảng Kiểu dữ liệu có cấu trúc: Được xây dựng từ các kiểu cơ sở Cách thức truy nhập vào từng phần tử Có 4 kiểu dữ liệu có cấu trúc: ARRAY, SET, RECORD, FILE 10.1 Kiểu dữ liệu có cấu trúc: kiểu mảngTYPE Kiểu_mảng T = ARRAY [Kiểu_Chỉ_dẫn KCD] OF kiểu_phần_tử KPT; T = ARRAY [KCD] OF KPT;VAR A: Kiểu_Mảng_T; 10.2Thí dụ 10.1TYPE AI = ARRAY[1..10] OF INTEGER; AC = ARRAY[1..5] OF CHAR; Color = (Red, Blue, Green, White, Black);VAR A, B, C: AI; X, Y: AC; M1, M2: ARRAY [-3 .. 5] OF REAL; MC: ARRAY [A .. Z] OF INTEGER; MM: ARRAY [COLOR] OF BOOLEAN; 10.3 Thí dụ 10.2Writeln( Vao so lieu cho mang B : ); FOR I:=1 TO 5 DO Begin Write( B[, I, ] = ); READLN( B[I] ); End; Vao so lieu cho mang B: B[1] =2 B[2] =12 B[3] =612 B[4] =2 B[5] =34 Bài tập: Cộng hai ma trận C=A+B 10.4VAR I: Integer; CH : CHAR; MC : ARRAY [A..Z] OF INTEGER;BEGIN (* Xóa mảng đếm MC về không *) FOR CH := A TO Z DO MC[Ch] := 0; (* Đọc 100 kí tự từ bàn phím và đếm *) FOR I:=1 TO 100 DO Begin Readln(CH); CH:=UpCase(CH); Hãy cải tiến MC[Ch] := MC[Ch] + 1; (* Đếm *) End; (* Chỉ in ra kết quả đã xuất hiện *) FOR CH := A TO Z DO IF MC[CH]> 0 then Writeln(So chu ,Ch, = , MC[Ch]:4); 10.5END. Sắp xếp mảngPROGRAM SAP_XEP;CONST N = 5;VAR MI: ARRAY[1..N] OF INTEGER; T: Integer; { T: biến Trung gian } I, J: INTEGER;BEGIN (* Đọc các số cần xếp vào mảng MI *) FOR I:=1 TO N DO BEGIN Write( M[,I,] = ); Readln(MI[i]); 10.6 END; (* Sắp xếp *) M[1] = -1 FOR I:=1 TO N-1 DO M[2] = 456 FOR J:=I+1 TO N DO M[3] = 34 BEGIN M[4] = -312 IF MI[I >MI[J] THEN M[5] = -56 BEGIN T := MI[I]; SAU KHI SAP XEP : MI[I]:= MI[J]; -312 -56 -1 34 456 MI[J]:= T; END; END; (* In ra kết quả *) Writeln; Writeln( SAU KHI SAP XEP :); FOR I:=1 TO N DO Write(MI[I]:6);END. 10.7 Mảng nhiều chiềuThí dụ 10.6TYPE PT: ARRAY [1..5] OF REAL; Color = (Red, Blue, Green, White, Black);VAR MPT: ARRAY [1..3] OF PT; Z: ARRAY [1..3, A..C] OF COLOR; 10.8TYPE Color = (Red, Blue, Green, White, Black);VAR Z: ARRAY [1..3, A..D] OF COLOR; Cột A B C D 1Hàng 2 3Truy nhập vào một phần tử mảng A[i, Ch] 10.9 A[2, D] := Red;VAR MPT: ARRAY[1..3, 1..5] OF REAL; Cột 1 2 3 4 5 1 2.12 3.23 4.23 5.23 6.78Hàng 2 3.23 1.22 23.5 65.3 99.2 3 34.2 56.5 12.0 2.22 5.01 Xem thí dụ nhân 2 ma trận C=A*B; N Cij Aik * Bkj k 1 10.10CONST N = 3; Phay = ,; (* Hằng kí tự: Dấu phẩy *)VAR A, B, C: ARRAY[1..N, 1..N] OF INTEGER; I, J, K : Integer;BEGIN (* Đọc vào giá trị của ma trận A *) FOR I:=1 TO N DO (* Chỉ số hàng *) FOR J:=1 TO N DO (* Chỉ số cột *) BEGIN Write( A[,I, Phay ,J,] = ); Readln(A[I,J]); END;(* Đọc vào giá trị của ma trận B: tương tự *) 10.11(* Nhân hai ma trận vuông cấp N:C=A*B *)FOR I:=1 TO N DO FOR J:=1 TO N DO BEGIN C[I, J] := 0; FOR K:=1 TO N DO C[I,J] := C[I,J] + A[I,K] * B[K,J]; END;(*In kết quả, theo kiểu viết ma trận *)Writeln( Tich cua hai ma tran = ); FOR I:=1 TO N DO Begin FOR J:=1 TO N DO Write(C[I,J]:5); Writeln; End;END. 10.12 Bài tậpHãy cải tiến chương trình nhân ma trận:a. Đọc cả một hàng số liệu.b. Tạo số ngẫu nhiên để nạp vào ma trận thử, khỏi phải đọc số liệu.1. Viết chương trình giải hệ phương trình tuyến tính 2 ẩn dùng ma trận để chứa các hệ số: a11.x + a12.y = c1 a21.x + a22.y = c2 Hãy chuyển sang hệ 3 phương trình. 10.133. Tạo ma trận X[10, 10]. a. Hãy lập chương trình tạo ra 100 giá trị ngẫu nhiên nằm trong khoảng giá trị từ 1..10. b. Tính tổng của tất cả các phần tử nằm trên đường chéo chính. c. Tính tổng bình phưng các số trên hàng chẵn. d. Tính tổng căn bậc hai các số ở cột lẻ. e. Có bao nhiêu phần tử của ma trận có giá trị nằm trong dải 4..6. 10.14 Xâu kí tự: String STRING [Độ_dài_cực_đại];Thí dụ 11.1VAR FileName: String[20]; Line: String[80]; 10.15Thí dụ 11.2 FileName := VIDU.PAS;0 1 2 3 4 5 6 7 8 9 10 ... 20 V I D U . P A S * * * * Độ dài hiện tại của xâu kí tự, CHR(8)Hàm độ dài xâu FileName là Length(FileName)Truy nhập vào từng phần tử:If 3 < Length(FileName) then Writeln(Kí tự thứ 3 là , FileName[3]); 10.16 Cộng các kí tự FileName := A:\ + FileName; cho kết quả FileName= A:\VIDU.PAS So sánh hai xâu kí tự Vidu < ViDu là TRUE ABC < BBC là TRUE Ghi, đọc xâu kí tự Writeln(St); Readln(St) 10.17 Mảng xâu kí tự Danh sách lớp họcVAR SV: ARRAY[1..240] OF String[25]; Hãy viết CT đọc vào danh sách lớp và in ra máy in danh sách đó. ...
Nội dung trích xuất từ tài liệu:
Bài giảng Ngôn ngữ lập trình Pascal: Chương 10 - Kiểu dữ liệu có cấu trúc Chương 10 Cấu trúc dữ liệu: kiểu mảng Kiểu dữ liệu có cấu trúc: Được xây dựng từ các kiểu cơ sở Cách thức truy nhập vào từng phần tử Có 4 kiểu dữ liệu có cấu trúc: ARRAY, SET, RECORD, FILE 10.1 Kiểu dữ liệu có cấu trúc: kiểu mảngTYPE Kiểu_mảng T = ARRAY [Kiểu_Chỉ_dẫn KCD] OF kiểu_phần_tử KPT; T = ARRAY [KCD] OF KPT;VAR A: Kiểu_Mảng_T; 10.2Thí dụ 10.1TYPE AI = ARRAY[1..10] OF INTEGER; AC = ARRAY[1..5] OF CHAR; Color = (Red, Blue, Green, White, Black);VAR A, B, C: AI; X, Y: AC; M1, M2: ARRAY [-3 .. 5] OF REAL; MC: ARRAY [A .. Z] OF INTEGER; MM: ARRAY [COLOR] OF BOOLEAN; 10.3 Thí dụ 10.2Writeln( Vao so lieu cho mang B : ); FOR I:=1 TO 5 DO Begin Write( B[, I, ] = ); READLN( B[I] ); End; Vao so lieu cho mang B: B[1] =2 B[2] =12 B[3] =612 B[4] =2 B[5] =34 Bài tập: Cộng hai ma trận C=A+B 10.4VAR I: Integer; CH : CHAR; MC : ARRAY [A..Z] OF INTEGER;BEGIN (* Xóa mảng đếm MC về không *) FOR CH := A TO Z DO MC[Ch] := 0; (* Đọc 100 kí tự từ bàn phím và đếm *) FOR I:=1 TO 100 DO Begin Readln(CH); CH:=UpCase(CH); Hãy cải tiến MC[Ch] := MC[Ch] + 1; (* Đếm *) End; (* Chỉ in ra kết quả đã xuất hiện *) FOR CH := A TO Z DO IF MC[CH]> 0 then Writeln(So chu ,Ch, = , MC[Ch]:4); 10.5END. Sắp xếp mảngPROGRAM SAP_XEP;CONST N = 5;VAR MI: ARRAY[1..N] OF INTEGER; T: Integer; { T: biến Trung gian } I, J: INTEGER;BEGIN (* Đọc các số cần xếp vào mảng MI *) FOR I:=1 TO N DO BEGIN Write( M[,I,] = ); Readln(MI[i]); 10.6 END; (* Sắp xếp *) M[1] = -1 FOR I:=1 TO N-1 DO M[2] = 456 FOR J:=I+1 TO N DO M[3] = 34 BEGIN M[4] = -312 IF MI[I >MI[J] THEN M[5] = -56 BEGIN T := MI[I]; SAU KHI SAP XEP : MI[I]:= MI[J]; -312 -56 -1 34 456 MI[J]:= T; END; END; (* In ra kết quả *) Writeln; Writeln( SAU KHI SAP XEP :); FOR I:=1 TO N DO Write(MI[I]:6);END. 10.7 Mảng nhiều chiềuThí dụ 10.6TYPE PT: ARRAY [1..5] OF REAL; Color = (Red, Blue, Green, White, Black);VAR MPT: ARRAY [1..3] OF PT; Z: ARRAY [1..3, A..C] OF COLOR; 10.8TYPE Color = (Red, Blue, Green, White, Black);VAR Z: ARRAY [1..3, A..D] OF COLOR; Cột A B C D 1Hàng 2 3Truy nhập vào một phần tử mảng A[i, Ch] 10.9 A[2, D] := Red;VAR MPT: ARRAY[1..3, 1..5] OF REAL; Cột 1 2 3 4 5 1 2.12 3.23 4.23 5.23 6.78Hàng 2 3.23 1.22 23.5 65.3 99.2 3 34.2 56.5 12.0 2.22 5.01 Xem thí dụ nhân 2 ma trận C=A*B; N Cij Aik * Bkj k 1 10.10CONST N = 3; Phay = ,; (* Hằng kí tự: Dấu phẩy *)VAR A, B, C: ARRAY[1..N, 1..N] OF INTEGER; I, J, K : Integer;BEGIN (* Đọc vào giá trị của ma trận A *) FOR I:=1 TO N DO (* Chỉ số hàng *) FOR J:=1 TO N DO (* Chỉ số cột *) BEGIN Write( A[,I, Phay ,J,] = ); Readln(A[I,J]); END;(* Đọc vào giá trị của ma trận B: tương tự *) 10.11(* Nhân hai ma trận vuông cấp N:C=A*B *)FOR I:=1 TO N DO FOR J:=1 TO N DO BEGIN C[I, J] := 0; FOR K:=1 TO N DO C[I,J] := C[I,J] + A[I,K] * B[K,J]; END;(*In kết quả, theo kiểu viết ma trận *)Writeln( Tich cua hai ma tran = ); FOR I:=1 TO N DO Begin FOR J:=1 TO N DO Write(C[I,J]:5); Writeln; End;END. 10.12 Bài tậpHãy cải tiến chương trình nhân ma trận:a. Đọc cả một hàng số liệu.b. Tạo số ngẫu nhiên để nạp vào ma trận thử, khỏi phải đọc số liệu.1. Viết chương trình giải hệ phương trình tuyến tính 2 ẩn dùng ma trận để chứa các hệ số: a11.x + a12.y = c1 a21.x + a22.y = c2 Hãy chuyển sang hệ 3 phương trình. 10.133. Tạo ma trận X[10, 10]. a. Hãy lập chương trình tạo ra 100 giá trị ngẫu nhiên nằm trong khoảng giá trị từ 1..10. b. Tính tổng của tất cả các phần tử nằm trên đường chéo chính. c. Tính tổng bình phưng các số trên hàng chẵn. d. Tính tổng căn bậc hai các số ở cột lẻ. e. Có bao nhiêu phần tử của ma trận có giá trị nằm trong dải 4..6. 10.14 Xâu kí tự: String STRING [Độ_dài_cực_đại];Thí dụ 11.1VAR FileName: String[20]; Line: String[80]; 10.15Thí dụ 11.2 FileName := VIDU.PAS;0 1 2 3 4 5 6 7 8 9 10 ... 20 V I D U . P A S * * * * Độ dài hiện tại của xâu kí tự, CHR(8)Hàm độ dài xâu FileName là Length(FileName)Truy nhập vào từng phần tử:If 3 < Length(FileName) then Writeln(Kí tự thứ 3 là , FileName[3]); 10.16 Cộng các kí tự FileName := A:\ + FileName; cho kết quả FileName= A:\VIDU.PAS So sánh hai xâu kí tự Vidu < ViDu là TRUE ABC < BBC là TRUE Ghi, đọc xâu kí tự Writeln(St); Readln(St) 10.17 Mảng xâu kí tự Danh sách lớp họcVAR SV: ARRAY[1..240] OF String[25]; Hãy viết CT đọc vào danh sách lớp và in ra máy in danh sách đó. ...
Tìm kiếm theo từ khóa liên quan:
Ngôn ngữ lập trình Pascal Bài giảng Ngôn ngữ lập trình Pascal Kiểu dữ liệu có cấu trúc Sắp xếp mảng Mảng nhiều chiều Xâu ký tự StringGợi ý tài liệu liên quan:
-
Giáo trình Tin học đại cương: Phần 2 - ĐH Kinh tế Quốc Dân
278 trang 62 0 0 -
Ngôn ngữ lập trình C++ - PGS.TS Trần Đình Quế
186 trang 32 0 0 -
Nội dung ôn tập học kì 2 môn Tin học lớp 8 năm 2022-2023 - Phòng GD&ĐT TP. Bà Rịa
9 trang 30 0 0 -
Đề thi tuyển sinh vào lớp 10 THPT chuyên môn Tin học năm 2022-2023 - Sở GD&ĐT Hà Tĩnh
2 trang 29 0 0 -
Đề thi học kì 1 môn Tin học lớp 8 năm 2022-2023 có đáp án - Trường THCS Nguyễn Trung Trực, Châu Đức
7 trang 28 0 0 -
48 trang 28 0 0
-
16 trang 27 0 0
-
29 trang 27 0 0
-
Bài giảng Cơ sở lập trình - ĐH Thương Mại
0 trang 26 0 0 -
12 trang 25 0 0