• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
266
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
7
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Tiết 1
  • 2. Nhập vào nhiệt độ(trung bình) của mỗi ngày trong tuần, tính và Nhập vào nhiệt độ(trung bình) của mỗi ngày trong tuần, tính và đưa ra màn hình nhiệt độ trung bình của tuần và số lượng ngày đưa ra màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình của tuần. trong tuần có nhiệt độ cao hơn nhiệt độ trung bình của tuần. Hãy xác định INPUT và OUTPUT của bài toán ? Input: Nhiệt độ 7 ngày trong tuần. Output: Nhiệt độ trung bình của tuần, số ngày có nhiệt độ cao hơn nhiệt độ trung bình.
  • 3. Code trang 53/54 Program vd1; Uses crt; Var t1,t2,t3,t4,t5,t6,t7,tb : real; dem : integer; BEGIN Clrscr; write(‘ Nhap vao nhiet do 7 ngay : ’); readln(t1,t2,t3,t4,t5,t6,t7); tb : = (t1+t2+t3+t4+t5+t6+t7)/ 7; dem : = 0 ; if (t1>tb) then dem := dem + 1; if (t2>tb) then dem := dem + 1; if (t3>tb) then dem := dem + 1; if (t4>tb) then dem := dem + 1; if (t5>tb) then dem := dem + 1; if (t6>tb) then dem := dem + 1; if (t7>tb) then dem : = dem + 1; W riteln(‘ Nhiet do trung binh trong tuan = ‘,tb : 6 : 2); W riteln(‘ so ngay co nhiet do cao hon nhiet do tb ‘, dem); R eadln; END.
  • 4. Có real; bao nhiêu biến được khai báo trong chường trình ? 7Các biến: t1, …,t7 thể hiện các ngày ực (real)nào? Kiểu của các biến đó giá trị thế nào? tuần dem dùng làm gì? Biến 7 câu lệnh IF trong chương trình thực hiện việc gì? gày, hiệt
  • 5. Xem kỹ lai nhá! Program vd1; Uses crt; Var t1,t2,t3,t4,t5,t6,t7,tb : real; dem : integer; BEGIN Clrscr; write(‘ Nhap vao nhiet do 7 ngay : ’); readln(t1,t2,t3,t4,t5,t6,t7); tb : = (t1+t2+t3+t4+t5+t6+t7)/ 7; dem : = 0 ; if (t1>tb) then dem := dem + 1; if (t2>tb) then dem := dem + 1; if (t3>tb) then dem := dem + 1; if (t4>tb) then dem := dem + 1; if (t5>tb) then dem := dem + 1; if (t6>tb) then dem := dem + 1; if (t7>tb) then dem : = dem + 1; W riteln(‘ Nhiet do trung binh trong tuan = ‘,tb : 6 : 2); W riteln(‘ so ngay co nhiet do cao hon nhiet do tb ‘, dem); R eadln; END.
  • 6. Vậy khi nếu muốn tính Vậy khi nếu muốn tính bài toán trên với N ngày bài toán trên với N ngày lớn( N=366) thì sẽ gặp lớn( N=366) thì sẽ gặp khó khăn gì ? khó khăn gì ?
  • 7. Khái Niệm: Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu ,, Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu mảng được đặt tên và mỗi phần tử được mang một chỉ số. mảng được đặt tên và mỗi phần tử được mang một chỉ số. Ví Dụ : Nhập Nhiệt Độ 7 Ngày trong tuần A 15 15 20 20 28 28 22 22 17 17 30 30 25 25 Trong đó:  Tên mảng : A  Số phần tử của mảng : 7  Kiểu dữ liệu của các phần tử : Kiểu Nguyên  Khi tham chiếu đến một phần tử thứ i ta viết :A[i] Ví Dụ : A[4]=22
  • 8. Khái Niệm: Để mô tả mảng 1 chiều ta cần xác dịnh kiểu của các phần tử và cách đánh số của các phần tử đó Với mảng một chiều ta cần quan tâm: • Tên kiểu mảng một chiều. • Số lượng phần tử. • Kiểu dữ liệu của phần tử. • Cách khai báo biến mảng. • Cách tham chiếu đến phần tử.
  • 9. Khai Báo Khai báo kiểu mảng một chiều: type <Tên kiểu mảng >= array[<kiểu chỉ số>] of <kiểu phần tử>; Trong đó:  Array là từ khóa để khai báo báo mảng  type: là từ khoá được dùng khi định nghĩa kiểu dữ liệu mới.  <Tên kiểu mảng>: là tên của kiểu mảng do chúng ta tự đặt (lưu ý: theo qui tắc đặt tên biến trong Pascal)  <Kiểu chỉ số>: thường là một đoạn số nguyên liên tục có dạng n1..n2 với n1, n2 là các hằng hoặc biểu thức nguyên xác định chỉ số đầu và chỉ số cuối (n1≤ n2)  <Kiểu phần tử>: kiểu dữ liệu của từng phần tử mảng (cũng là kiểu dữ liệu của mảng)
  • 10. Khai báo kiểu mảng một chiều: Ví dụ: Các khai báo KIỂU mảng 1 chiều hợp lệ type ArrayInt = array [1..300] of integer; ArrayInt = array [-n+1..n+1] of boolean; (n là hằng số) ArrInt= array [-100..0] of integer; Ví dụ: Các khai báo KIỂU mảng 1 chiều không hợp lệ type ArrayReal = array [1.5..300] of integer; ArrayBoolean = array [-n+1…n +1] of boolean; ArrInt = array [100..0] of integer;
  • 11. Cú pháp khai báo 1 biến thuộc kiểu dữ liệu chuẩn trong Passcal
  • 12. Chỉ ra phần khai báo mảng trong phần khi báo của chương trình đươc đưa ra ở đầu bài với số ngày N là 365 ngày? Ý nghĩa của các khai báo trên? Dòng 4: Khai báo kiểu mảng một chiều gồm Max số thực. Dòng 5 : Khai báo biến mảng Nhietdo qua kiểu mảng
  • 13. 3. Khai báo biến kiểu mảng một chiều: a. Khai báo trực tiếp ( khai báo tường minh) var <Tên biến mảng>: array [ <Kiểu chỉ số>] of <Kiểu phần tử >; Trong đó:  <Tên biến>: do người lập trình đặt, đúng theo cú pháp đặt tên biến của Pascal  <Kiểu Chỉ số>: thường là một đoạn số nguyên liên tục n1..n2, không là kiểu số thực.  <Kiểu phần tử>: kiểu dữ liệu của các phần tử trong mảng
  • 14. 3. Khai báo biến kiểu mảng một chiều: a. Khai báo trực tiếp ( khai báo tường minh) Ví dụ 1: khai báo mảng 8 phần tử kiểu số nguyên Var SoNguyen : array[1..8] of integer; SoNguyen 12 23 34 25 16 70 8 1 1 2 3 4 5 6 7 8
  • 15. 3. Khai báo biến kiểu mảng một chiều: a. Khai báo trực tiếp ( khai báo tường minh) Ví dụ 2: khai báo mảng 10 phần tử kiểu kí tự. Var Kitu : array[1..10] of char; Kitu ‘M’ ‘A’ ‘N’ ‘C’ ‘I’ ‘E’ ‘S’ ‘T’ ‘E’ ‘R’ 1 2 3 4 5 6 7 8 9 10
  • 16. 3. Khai báo biến kiểu mảng một chiều:Khai báo trực tiếp ( khai báo tường minh) a. Ví dụ 3: Var A : array[‘a’..’i’] of integer; A 11 21 31 41 51 61 71 81 91 ‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘g’ ‘h’ ‘i’
  • 17. 3. Khai báo biến kiểu mảng một chiều: a. Khai báo trực tiếp ( khai báo tường minh) Ví dụ 4: Var B : array[-5..2] of boolean; B true true false false true false true false -5 -4 -3 -2 -1 0 1 2
  • 18. Khai báo biến kiểu mảng một chiều Khai báo gián tiếp ( khai báo không tường minh) (tt) type <Tên kiểu mảng> = array[<Kiểu chỉ số>] of < kiểu phần tử>; var <Tên biến>: <Tên kiểu mảng>; Trong đó:  <Tên kiểu mảng>: định nghĩa mảng một chiều, do người lập trình tự đặt.  <Chỉ số>: là danh sách chỉ số để truy cập đến phần tử của mảng.  <Kiểu phần tử>: là kiểu dữ liệu của phần tử mảng.  <Tên biến>: là biến thuộc kiểu mảng vừa khai báo. Chỉ số đầu và chỉ số cuối thường là các hằng số hoặc biểu thức nguyên Chỉ số đầu <= chỉ số cuối Giữa 2 chỉ số là ..
  • 19. Khai báo biến kiểu mảng một chiều Khai báo gián tiếp ( khai báo không tường minh) (tt) Ví dụ : type ArrayInt= array [1..100] of integer; A: ArrayInt; -Trước tiên, chúng ta định nghĩa ra mảng một chiều ArrayInt gồm có 100 phần tử thuộc kiểu số nguyên - Sau đó, khai báo biến A thuộc kiểu mảng ArrayInt
  • 20. Khai báo biến kiểu mảng một chiều Khai báo gián tiếp ( khai báo không tường minh) (tt) Ví dụ: type HocSinh = array [1..30] of String; var HS: HocSinh; - Trước tiên, định nghĩa mảng Hocsinh là mảng một chiều có 30 phần tử thuộc kiểu chuỗi ký tự (String). - Sau đó, khai báo biến HS thuộc kiểu mảng HocSinh.
  • 21. Truy xuất đến phần tử của mảng 1 chiều Mỗi phần tử của mảng được truy xuất theo tên của biến và chỉ số của chúng nằm trong dấu ngoặc vuông ([ ]) •Cách truy xuất phần tử: Tên mảng[vị trí]; •Ví dụ: Var B : array[ 1..8] of integer; B Vị trí 10 23 -5 -5 9 43 33 17 59 1 2 3 4 5 6 7 8 B[3]= B[7]= Chú ý: Thường sử dụng câu lệnh for-do để thực hiện thao tác nhập/xuất với biến mảng.
  • 22. Program vd1; Uses crt; Var Khai báo mảng một chiều A: Array[1..366] of integer; i,n,dem: integer; S,TB : real ; BEGIN Clrscr; write(‘ Nhap vao so ngay : ’) ; readln(n) ; S := 0 ; For i := 1 to n do Nhập mảng một chiều Begin write(‘ Nhap nhiet do ngay thu ‘,i,’ : ‘) ; Tính tổng readln(A[i]) ; S:=S+A[i] ; End; TB := S/ ; dem := 0 ; n Đếm số phần tử thỏa mãn For i := 1 to n do If A[i]>TB Then dem := dem+1; điều kiện. W riteln(‘ Nhiet do trung binh ’ ,n,’ ngay = ‘,TB : 6 : 2) ; W riteln(‘ So ngay co nhiet do cao hon nhiet do TB la: ‘, dem) ; Readln ; END.
  • 23. Thao tác xử lý mảng 1 chiều Ví Dụ : Nhập Nhiệt Độ N Ngày trong tuần A 17 17 20 20 18 18 21 21 19 19 17 17 19 19 N=7 Nhập mảng 1 chiều Các Bước Các Bước  Nhập số phần tử của mảng  Nhập vào giá trị của các phần tử trong mảng(A[i]) Thể hiện bằng pascal Thể hiện bằng pascal -Write(‘nhap vao so ngay:’); Readln; -For i:=1 to n do begin write(‘nhiet do ngay thu’,i,’:’); Readln(A[i]); end;
  • 24. Thao tác xử lý mảng 1 chiều In ra màn hình mảng 1 chiều Thông báo Writeln(‘Mang vua nhap:’); In giá trị của phần tử For i:=1 to n do Write(A[i]:5); Kết quả in ra màn hình Mảng vừa nhập : 17 20 18 21 19 17 19
  • 25. Thao tác xử lý mảng 1 chiều Thao tác xử lý khác  Đếm số ngày có nhiệt độ cao hơn nhiệt độ TB của tuần. i A[] Dem = 0 1 3 2 20 20 0 +1 18 18 1 17 17 1 -Dem:=0; For i:=1 to n do if A[i]>TB then dem:=dem+1; 4 21 21 5 19 19 2 +1 3 +1 6 17 17 7 19 19 3 4 +1 TB = 18.7
  • 26. Hãy nhớ  Mảng 1 chiều là 1 dãy hữu hạn các phần tử cùng kiểu  Khai báo : tên mảng , chỉ số đầu chỉ số cuối , kiểu phần tử  Tham chiếu phần tử mảng : Tenbienmang[chisophantu]  Nhiều thao tác xử lý mảng dùng cấu trúc lặp FOR..TO..Do
  • 27. Tiết 1 2
  • 28. Một số ví dụ Ví dụ 1 : Tìm phần tử lớn nhất của một dãy số nguyên . Input : Số nguyên dương N và dãy số A1, A2, ….., AN Output : Chỉ số và giá trị của số lớn nhất trong dãy Ý tưởng : + Đặt số A1 là số lớn nhất (max) + Cho i lặp từ 2 đến N, nếu A[i]> thì đổi max = A[i] vả lưu lại vị trí i .
  • 29. MAX Quả này lớn nhất Quả này lớn mới lớn nhất Không !Quả này lớn mới lớn nhất
  • 30. Các em hãy cho biết các việc chính cần thực hiện trong chương trình là gì? - Cho biết số ptử của mảng A. - Nhập giá trị cho các ptử của mảng A. - Xuất ra giá trị Max là phần tử thứ mấy. Cho biết các biến chính cần sử dụng là gì? - Mảng A - Các biến đơn: N, i, Max, csmax Viết phần khai báo các biến đó? Var a : array[1..250] of integer ; n,i,max,csmax : Integer ;
  • 31. Thuật toán 1. NhËp n vµ d·y a1,...,an; Bằng Pascal Write(‘ Nhap vao so luong phan tu:’); Readln(n); For i:=1 to n do begin write(‘ Phan tu thu ’ ,i, ’ = ’); readln(a[i]) end; 2. Max ← a1 ; i ← 1; Max:=a[1]; csmax:=1; 3. NÕu i>N ®­a ra MAX vµ chØ sè i => KÕt thóc; For i :=2 to n do 4. NÕu a[i]>max th× max←a[i], i ← i+1 => quay l¹i b­íc 3. IF a[i]>max then begin max:=a[i]; csmax:=i; end;
  • 32. Code chương trình : Program vd1; Uses crt; Khai báo const Nmax =250; type Arrint =array[1..Nmax] of integer; Max:=A[1] ; csmax :=1 ; For 1:= 2 to N do if A[i] > Max then begin Max:=A[i]; csmax :=1; end; Writeln(‘Gia tri cua pt max : ’, Max); Writeln(‘Chi so cua pt max : ’, csmax); Readln End kiểm tra lần lượt tất cả các phần tử của mảng từ A[1] đến A[n] Var N,I,Max,csmax : integer A: ArrInt; begin Clrscr; write(‘ Nhap so luong phan tu cua dayso, n = '); readln(n); for i:=i to n do (*nhap cac phan tu *) begin write ('phan tu thu ;,i,' ='); readln(A[i]); end; Tạo giá trị cho các phần tử của mảng A
  • 33. Chương trình chạy và cho kết quả sau : Nhap vao so phan tu cua day so : Phan tu thu 1 = Phan tu thu 2 = Phan tu thu 3 = 15 Phan tu thu 4 = 25 Phan tu thu 5 = 18 Phan tu thu 6 = 12 Phan tu thu 7 = 19 20 16 Gia tri cua phan tu Max : 25 Chi so cua phan tu Max : 4 7
  • 34. Tiết 1 3
  • 35. Ví dụ 2: Sắp xếp dãy số nguyên bằng thuật toán tráo đổi Input: Số nguyên dương N (N<= 250) và dãy A gồm N số nguyên dương A1, A2, …, AN, mỗi số đều không vượt quá 500. Output: Dãy số A đã được sắp xếp thành dãy không giảm (chương trình SGK). Ở lớp 10 ta đã xây dựng thuật toán cho bài toán này rồi. Các bạn hãy nhắc lại thuật toán ??? Là thuật toán tráo đổi kiểu nổi bọt từ trên xuống
  • 36. Giả sử : Mỗi phần tử được xem như một bọt nước Trọng lượng của bọt nước thứ I là giá trị của A[i] Lượt 1: 2: 3 2 9 7 6 I chạy từ đầu dãy đến vị trí >Ichạy từ đầu dãy đến vị trí [cuối dãy - 1] [cuối dãy – 2] (bỏ qua phần Khi a[i]> từ cuối) a[i+1] tức là bọt nước trên nặng hơn bọt nước dưới > Sau lượt thứ 2 bọt nước có => bọt nước trên chìm xuống và trọng lượng lớn thứ 2 nằm bọt nước dưới nổi lên (tráo đổi sát trên bọt nước lớn vị trí) >Quá trình duyệt , tráo đổi được lập đi lập lại cho đến Sau lượt thứ nhất , bọt khi chỉ còn duyệt hai phần tử nước được dãy không giảm và thu có trọng lượng lớn nhất sẽ chìm xuống đáy
  • 37. 1 Sè phÇn tö ë c¸c l­ît duyÖt (j) sÏ gi¶m tõ n xuèng hai phÇn tö. Các em hãy cho biết trong pascal nhận xét 1 được thực hiện bằng lệnh gì 2 T¹i mçi l­ît duyÖt: - Cho i ch¹y tõ 1 ®Õn sè phÇn tö -1, nÕu A[i]>A[i+1] th× tr¸o ®æi vÞ trÝ A[i] vµ A[i+1] th«ng qua biÕn trung gian (Tg). For j := n downto 2 do For i := 1 to j-1 do IF A[i]>A[i+1] then Begin Tg := A[i]; A[i] := A[i+1]; A[i+1]:=Tg; end;
  • 38. Code chương trình : Program vd2; Uses crt; Khai báo const Nmax =250; type Arrint =array[1..Nmax] of integer; Var N,i,j,t: integer; begin Clrscr; write(‘ Nhap so luong phan tu cua day so, n = '); readln(n); for i:=i to n do (*nhap cac phan tu *) begin write ('phan tu thu ;,i,' ='); readln(A[i]); end; for j:=n downto 2 do for i:=1 to j-1 do if A[i]> A [i+1] them Begin t:=A[i]; A[i];=A[i+1]; A[i+1]:=t; end ; writeln(' day so duoc sap xep la: '); for i:=1 to N do wirte A[i]:4); readln end ; (Xử lý mảng thuật nổi bọt *trao doi A[i] va A[i=1]*) Tạo giá trị cho các phần tử của mảng
  • 39. Ví dụ 3: tìm kiếm nhị phân Input: dãy A la dãy tăng gồm N (N<=250) số nguyên dương A1,A2,.....,Anvaf số nguyên k. Output: Chỉ số i mà Ai=k hoặc thông báo "khong tim thay " nếu không co sô hạng của dãy A có giá trị bằng K.
  • 40. C¸ch 1: T×m kiÕm tuÇn tù Lần lượt từ số hạng thứ nhất ,so sánh giá trị số hạng đang xét với k cho đến khi gặp được số hạng bằng k , hoặc dạy đã được xét hết và không có số hạng nào có giá trị bằng k Các em hãy Tim_thay := false; nêu cách giải For i := 1 to n do bài toán trên Từ ý tưởng trên hãy IF A[i] = k then viết đoạn chương trình PASCAL đề Begin Tim_thay:=true; tìm số hạng của dãy cs:=i; có giá trị bằng k? break; end; IF tim_thay then writeln(‘Chi so tim duoc: ’,i) else writeln(‘Khong tim thay’);
  • 41. C¸ch 2: T×m kiÕm nhÞ ph©n Với k =21 và dãy A gồm 10 số hạng như sau A 2 4 5 6 9 21 22 30 31 33 i 1 2 3 4 5 6 7 8 9 10 Lượt thứ nhất : agiữa là a5 = 9; 9 < 21 Vùng tìm kiếm thu hẹp trong phạm vi từ a6 a10; Lượt thứ hai : agiữa là a8 = 30; 30 > 21 Vùng tìm kiếm thu hẹp trong phạm vi từ a6 a7; Lượt thứ ba : agiữa là a6 = 21; 21= 21 Vậy chỉ số cần tìm là i = 6.
  • 42. Vì dãy A là dãy tăng , ta thực hiện thu hẹp nhanh phạm vi tìm kiếm bằng cách so sánh k với A[giua] và xét các trường hợp - A[giua]=k  Tìm thấy chỉ số giữa và kết thúc; - A[giua]>k  Thu hẹp về phía bên trái (Cuối = Giữa - 1); - A[giua]<k  Thu hẹp về phía bên phải (Đầu = Giữa + 1); Quá trình trên được lặp lại chừng nào còn tìm thấy hoặc Dau <= Cuoi Dau:=1; Cuoi:=n; tim_thay:=false; while ( Dau<= Cuoi) or AND (tim_thay) do Begin Giua:= (Dau+Cuoi) div 2; IF A[giua] = k then Tim_thay :=true else IF (A[Giua]>k) then Cuoi := Giua – 1 else Dau := Giua +1; end; IF Tim_thay then W riteln(‘ Chi so tim duoc la : ’,Giua) Else W riteln(‘Khong tim thay’);
  • 43. Code chương trình : begin write (phan tu thu ',i'='); readln (a[i]); uses crt; end ; const; write ('nhap gia tri k ='); Nmax =250; readln(k0; type arrint =array [1..Nmax] of integer; dau:= 1; cuoi : =N; tim_thay: = false ; var while (dau<= cuoi) and not (tim_thay) do n,i,k : integer; begin giua:=(dau +cuoi) div 2; dau, cuoi, giua: integer if A [giua] =k then A:arrint; tim_thay:= true tim_thay: boolean; else begin clrscr; write('nhap so luong phan tu cua day so, n if A [giua]>k them cuoi :=giua -1 elsc dau:=giua +1; ='); end ; readln(n0; if tim_thay them wrieln (chi so tim duoc writeln('nhap cac pham tu cua day so la:',giua) tang:'); else writeln ('khong tim thay'); for i: =1 to n do readln end ; program TK-nhiphan;
  • 44. Tiết 1 4
  • 45. Kiểu mảng 2 chiều a. Khái niệm : Là mảng một chiều mà mỗi phần tử của nó là mảng một chiều 1 Ví dụ : A Trong đó :  Tên mảng : A 2 3 4 1 1 4 7 6 2 9 2 8 3 3 5 3 9 7  Mảng gồm: 3 dòng 4 cột  Kiểu dữ liệu của các phần từ : kiểu nguyên  Khi tham chiếu đến phần tử ở dòng i cột j ta viết : A[i,j]. Ví dụ :A[2,3]= 8.
  • 46. b. Khai báo mảng 2 chiều : * Cách 1: Khai báo gián tiếp TYPE < tên kiểu mảng> = array[kiểu chỉ số hàng , kiều chỉ số cột] of <kiểu phần tử>; Var <ds biến mảng> : <tên kiểu mảng>; Ví dụ : TYPE Bang = array[1..9,1..9] of integer; Var A: Bang; * Cách 2 : Khai báo trực tiếp Var < Ds biến mảng> : array[kiểu chỉ số hàng , kiều chỉ số cột] of <kiểu phần tử>; Ví dụ : Var Bang: array[1..9,1..9] of integer; Var A,B: array[1..20,1..30] of real;
  • 47. c. Thao tác xử lý mảng 2 chiều 1 2 3 4 Các bước 1. Nhập số dòng (n) và số cột (m) 1 4 7 6 9 2 8 3 3 A 1 2 Nhập mảng 2 chiều 5 3 9 7 Bằng Pascal Write(‘ Nhap vao so dong, cot:’); Readln(n,m); 2.Nhập giá trị của các phần tử trong mảng (A[i,j]). For i:= 1 to n do For j:=1 to m do Begin write(‘A[’,i,j,’ ] = ’ ); readln(A[i,j]); end;
  • 48. d. In mảng 2 chiều 1.Thông báo Writeln(‘ Mang vua nhap : ’); 2.In giá trị của các phần tử For i:=1 to n do Begin Kết quả in ra màn hình For j:=1 to m do Write(A[i,j],’ ’); Writeln; Mang vua nhap: 1 4 7 6 9 2 8 3 5 3 9 7 end; Các thao tác xử lý mảng 2 chiều thường dùng hai câu lệnh FOR … DO lồng nhau
  • 49. E . Các thao tác xử lý khác : Vì dụ : Tính và in ra màn hình bảng cửu chương Tính Quan sát bảng cửu chương ta thấy : For i :=1 to 9 do A[2,5]=2 x 5 = 10 For j:=1 to 9 do A[i,j]=i* j A[5,8]=5 x 8 = 40 A[i,j] := i*j; In ra màn hình For i :=1 to 9 do Begin For j:=1 to 9 do write(A[i,j]:5); writeln; writeln; End; 1 2 3 4 5 Viết chương trình 2 4 6 8 10 hoàn chỉnh cho ví 3 6 9 12 15 dụ này 6 7 8 9 12 14 16 18 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81