Bài 11. Kiểu mảng
Chia sẻ bởi Ngô Nguyễn Thanh Duy |
Ngày 10/05/2019 |
57
Chia sẻ tài liệu: Bài 11. Kiểu mảng thuộc Tin học 11
Nội dung tài liệu:
Bài 11 (tt)
mảng hai chiều
Là bảng các phần tử cùng kiểu
A
Trong đó:
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.
? Tên mảng: A;
? Mảng gồm: 3 dòng 4 cột;
Ví dụ:
? Kiểu dữ liệu của các phần tử: Kiểu nguyên;
7
9
3
5
3
8
2
9
6
7
4
1
1 2 3 4
1
2
3
a. Khái niệm
b. Khai báo mảng hai chiều
* Cách 1: Khai báo trực tiếp
Var < tên biến mảng> : array[Kiểu chỉ số dòng,kiểu chỉ số cột] of;
Var A,B: array[1..20,1..30] of real;
Ví dụ: Var Bang: array[1..9,1..9] of integer;
* Cách 2: Khai báo gián tiếp
TYPE < tên kiểu mảng> = array[kiểu chỉ số dòng,kiểu chỉ số cột] of;
Var : ;
Ví dụ: TYPE Bang = array[1..9,1..9] of integer;
Var A: Bang;
* Tham chiếu tới một phần tử của mảng hai chiều:
[chỉ số dòng, chỉ số cột]
Ví dụ: Tham chiếu tới phần tử ở hàng thứ 5, cột thứ 9 của mảng A được viết như sau: A[5.9]
c. Một số thao tác:
1. NhËp sè dßng (n) vµ sè cét (m).
Write(‘ Nhap vao so dong, cot:’);
Readln(n,m);
2. Nhập vào 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;
Các bước:
Thể hiện bằng pascal
1. Nhập mảng hai chiều
A
7
9
3
5
3
8
2
9
6
7
4
1
2. In mảng hai chiều
Writeln(‘ Mang vua nhap : ’);
For i:=1 to n do
Begin
For j:=1 to m do Write(A[i,j],’ ’);
Writeln;
end;
Mang vua nhap:
1 4 7 6
9 2 8 3
5 3 9 7
1. Th«ng b¸o
2. In gi¸ trÞ cña c¸c phÇn tö
Kết quả in ra màn hình:
Các thao tác xử lí mảng hai chiều thường dùng hai câu lệnh FOR...do lồng nhau.
For i :=1 to 9 do
For j:=1 to 9 do
A[i,j] := i*j;
c. Một số ví dụ:
Ví dụ1: Tính và in ra màn hình bảng nhân.
For i :=1 to 9 do
Begin
For j:=1 to 9 do write(A[i,j]:5);
writeln; writeln;
End;
Bây giờ các em hãy viết chương trình hoàn chỉnh
cho bài toán ví dụ.
* Tính
* IN ra màn hình
Quan sát bảng nhân ta thấy:
A[2,5]=2 x 5 = 10
A[5,8]=5 x 8 = 40
A[i,j]=i*j
Ví dụ2: Nhập vào mảng hai chiều B gồm 5 hàng và 7 cột với các phần tử là các số nguyên và một số nguyên k. Xuất ra màn hình các phần tử của mảng có giá trị nhỏ hơn k.
?Nhập các phần tử:
for i:=1 to 5 do
begin
for j:=1 to 7 do
begin
write(`b[`,i,`,`,j,‘]= `);
readln(b[i,j]);
end;
writeln;
end;
?Nhập số nguyên k:
d:=0;
writeln(`Danh sach cac phan tu mang nho hon `,k,` la: `);
for i:=1 to 5 do
for j:=1 to 7 do
if b[i,j] < k then
begin
writeln(`b[`,i,`,`,j,`]= `,b[i,j]);
d:=d+1;
end;
if d=0 then
write(`Khong co phan tu nao nho hon `,k);
?Xuất kết quả:
write(`Nhap vao gia tri k= `);
readln(k);
Đếm các phần tử < k
Hãy nhớ!
? Mảng hai chiều là mảng một chiều mà mỗi phần tử của nó lại là mảng một chiều.
? Khai báo: tên mảng, kiểu chỉ số dòng, kiểu chỉ số cột, kiểu phần tử.
? Tham chiếu phần tử mảng:
Tên biến mảng[cs dòng,cs cột]
? Thao tác xử lí thường dùng cấu trúc hai câu lệnh FOR . DO lồng nhau.
20 19
25 18
12 16
Var
A:ARRAY[1..10,1..10] OF integer;
A[1,3] = 19
mảng hai chiều
Là bảng các phần tử cùng kiểu
A
Trong đó:
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.
? Tên mảng: A;
? Mảng gồm: 3 dòng 4 cột;
Ví dụ:
? Kiểu dữ liệu của các phần tử: Kiểu nguyên;
7
9
3
5
3
8
2
9
6
7
4
1
1 2 3 4
1
2
3
a. Khái niệm
b. Khai báo mảng hai chiều
* Cách 1: Khai báo trực tiếp
Var < tên biến mảng> : array[Kiểu chỉ số dòng,kiểu chỉ số cột] of
Var A,B: array[1..20,1..30] of real;
Ví dụ: Var Bang: array[1..9,1..9] of integer;
* Cách 2: Khai báo gián tiếp
TYPE < tên kiểu mảng> = array[kiểu chỉ số dòng,kiểu chỉ số cột] of
Var
Ví dụ: TYPE Bang = array[1..9,1..9] of integer;
Var A: Bang;
* Tham chiếu tới một phần tử của mảng hai chiều:
Ví dụ: Tham chiếu tới phần tử ở hàng thứ 5, cột thứ 9 của mảng A được viết như sau: A[5.9]
c. Một số thao tác:
1. NhËp sè dßng (n) vµ sè cét (m).
Write(‘ Nhap vao so dong, cot:’);
Readln(n,m);
2. Nhập vào 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;
Các bước:
Thể hiện bằng pascal
1. Nhập mảng hai chiều
A
7
9
3
5
3
8
2
9
6
7
4
1
2. In mảng hai chiều
Writeln(‘ Mang vua nhap : ’);
For i:=1 to n do
Begin
For j:=1 to m do Write(A[i,j],’ ’);
Writeln;
end;
Mang vua nhap:
1 4 7 6
9 2 8 3
5 3 9 7
1. Th«ng b¸o
2. In gi¸ trÞ cña c¸c phÇn tö
Kết quả in ra màn hình:
Các thao tác xử lí mảng hai chiều thường dùng hai câu lệnh FOR...do lồng nhau.
For i :=1 to 9 do
For j:=1 to 9 do
A[i,j] := i*j;
c. Một số ví dụ:
Ví dụ1: Tính và in ra màn hình bảng nhân.
For i :=1 to 9 do
Begin
For j:=1 to 9 do write(A[i,j]:5);
writeln; writeln;
End;
Bây giờ các em hãy viết chương trình hoàn chỉnh
cho bài toán ví dụ.
* Tính
* IN ra màn hình
Quan sát bảng nhân ta thấy:
A[2,5]=2 x 5 = 10
A[5,8]=5 x 8 = 40
A[i,j]=i*j
Ví dụ2: Nhập vào mảng hai chiều B gồm 5 hàng và 7 cột với các phần tử là các số nguyên và một số nguyên k. Xuất ra màn hình các phần tử của mảng có giá trị nhỏ hơn k.
?Nhập các phần tử:
for i:=1 to 5 do
begin
for j:=1 to 7 do
begin
write(`b[`,i,`,`,j,‘]= `);
readln(b[i,j]);
end;
writeln;
end;
?Nhập số nguyên k:
d:=0;
writeln(`Danh sach cac phan tu mang nho hon `,k,` la: `);
for i:=1 to 5 do
for j:=1 to 7 do
if b[i,j] < k then
begin
writeln(`b[`,i,`,`,j,`]= `,b[i,j]);
d:=d+1;
end;
if d=0 then
write(`Khong co phan tu nao nho hon `,k);
?Xuất kết quả:
write(`Nhap vao gia tri k= `);
readln(k);
Đếm các phần tử < k
Hãy nhớ!
? Mảng hai chiều là mảng một chiều mà mỗi phần tử của nó lại là mảng một chiều.
? Khai báo: tên mảng, kiểu chỉ số dòng, kiểu chỉ số cột, kiểu phần tử.
? Tham chiếu phần tử mảng:
Tên biến mảng[cs dòng,cs cột]
? Thao tác xử lí thường dùng cấu trúc hai câu lệnh FOR . DO lồng nhau.
20 19
25 18
12 16
Var
A:ARRAY[1..10,1..10] OF integer;
A[1,3] = 19
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Ngô Nguyễn Thanh Duy
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)