Ngày soạn:././ Ngày dạy:../../
Bài tập
(T23, 24)
I. Mục đích - yêu cầu.
- Củng cố lại các kiến thức về mảng.
- Chữa các bài tập trong sách giáo khoa, rèn kĩ năng phân tích bài toán, kĩ năng vận
dụng lý thuyết vào bài tập.
- Trang bị các kiến thức cớ bản cho các giờ thực hành tiếp sắp tới.
II. Lên lớp
1. ổ n định lớp
Lớp Sĩ số Vắng Có phép
11A .. ..
11A .. ..
11A .. ..
11A .. ..
2. Bài mới
Nội dung Hoạt động của gv và hs
* Cú pháp khai báo
+ Mảng một chiều:
- Khai báo trực tiếp
Var <tên biến mảng>:array[kiểu chỉ sô]
of <kiểu phần tử>;
- Khai báo gián tiếp:
Type <tên kiểu mảng>=array[kiểu chỉ
số] of <kiểu phần tử>;
Var <tên biến mảng>:<tên kiểu mảng>;
+ Mảng hai chiều:
- Khai báo trực tiếp
Var <tên biến mảng>:array[kiểu chỉ sô
hàng,kiểu chỉ số cột] of <kiểu phần tử>;
- Khai báo gián tiếp:
Gv: Nhắc lại các kiến thức cơ bản của
bài: cách khai bao biến mảng, mục
đích, ý nghĩa của các thành phần.
Gv: Ghi lên bảng cách khai báo mảng
một chiều, mảng hai chiều
66
Ngày soạn:././ Ngày dạy:../../
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 <tên biến mảng>:<tên kiểu mảng>;
Bài 5: Sách giáo khoa
+ Input: N, và dãy số a
1
, a
2
,..,a
n
+ Output: dãy số trên có phải là cấp số
cộng hay không.
* Chơng trình chuẩn
Program b5;
Uses crt;
Var A:array[1..1000] of integer;
D, i: integer;
Begin
Writeln(moi ban nhap so phan tu);
Readln(n);
For i:= 1 to n do
Begin
Write(ban nhap vao so hang thu,i,:);
Write(A[,i,]=);
Readln(a[i]);
End;
Gv: Giải đáp các thắc mắc về các câu
hỏi lý thuyết trong sách giáo khoa và
sách bài tập.
Gv: yêu cầu học sinh xác định bài
toán.
Gv: Thế nào là một cấp số cộng ?
Hs: Trả lời.
Gv: giả sử ta có
D= A[1] A[2]
=> dãy trên là cấp số cộng nếu thoả
mãn điều kiện:
A[i] = A[1] + (i-1)d
Gv: Gọi học sinh lên làm bài tập
Gv: Nhận xét những mặt đợc và những
mặt cha đợc trong cách trình bày của
67
Ngày soạn:././ Ngày dạy:../../
D:=A[2]-A[1];
For i:=3 to n do
If A[i] - A[i-1]<> d then
Writeln(day so tren khong la day so
cong)
Else
Writeln(day so tren la cap so cong);
For i:=1 to n do
Write(A[i]:4);
Readln;
End.
Bài 6:
+ Input: Số N và dãy số nguyên a
1
,a
2
,,a
n
+ Output: - Số lợng số chẵn, lẻ trong dãy
- Số lợng số nguyên trong dãy.
Program b6;
Uses crt;
Var a: array[1..1000] of integer;
học sinh.
Gv: Yêu cầu học sinh xác định bài
toán? Xây dựng ý tởng giải bài toán.
Gv: Biểu thức điều kiện nào để kiểm
tra một số là số chẵn hay lẻ ?
Hs: Trả lời
Gv: Đa ra câu lệnh sau:
If a[i] mod 2 = then writeln( day la so
chan)
Else writeln( day la so le);
- Để làm đợc việc trên thì ta phải duyệt
từ đầu dãy đễn cuối dãy số, nên ta
dùng lệnh: For do
- Khi điều kiện trên thoả mãn thì đó là
số chẵn ngợc lại thì là số lẻ. Nh vậy ta
sẽ dùng 2 biến: Sc, Sl để đếm số chẵn,
số lẻ khi điều kiện thoả mãn
68
Ngày soạn:././ Ngày dạy:../../
Sc, sl, i, j, nt, n, t: integer;
Begin
Clrscr;
Writeln( moi ban nhap so phan tu cua
day); Readln(n);
For i:=1 to n do
Begin
Write(moi ban nhap phan tu thu,i,=);
Readln(a[i]);
End;
Write( day so vua nhap la:);
For i:=1 to n do Write(a[i]:4);
Sc:=0; Sl:=0;
For i:=1 to n do
If a[i] mod 2 = 0 then sc:=sc+1
Else sl:= sl+1;
Writeln( trong day co ,sc, so chan);
Writeln(trong day co ,sl, so le);
Nt:=0;
For i:=1 to n do
Begin
T:=0;
For j:=2 to a[i] div 2 do
If a[i] mod j = 0 then t:= t + 1;
If t=0 then
Begin
Writeln( So ,a[i], la so nguyen to);
Nt:=nt+1;
End;
End;
Writeln( trong day co ,nt, so nguyen
to);
Readln;
End.
Bài 7:
Gv: Ta có thể kết hợp ý b) vào đoạn
chơng trình này không?
Hs: Đợc.
Gv: Phân tích những nét chung giữa
hai ý.
Gv: Em nào có thể nếu cho thầy thuật
toán kiểm tra một số N có phải là số
nguyên tố hay không?
Hs: Trả lời
Gv: Nhận xét, đối tợng trong thuật
toán là một số nguyên, trong bài tập
này đó là kiểm tra một dãy các số
nguyên.
Gv: Đa ra chơng trình mẫu, giải thích
ý nghĩa của từng biến, từng câu lệnh
có trong chơng trình.
69
Ngày soạn:././ Ngày dạy:../../
Program b7;
Var n, i: Integer;
F, F1, F2: integer;
Begin
Writeln(Tim so hang n cua day Phi bo
na xi, N = );
Readln(n);
F1:= 1;
F2:=1;
For i:= 3 to n do
Begin
F:= f1+ f2;
F1:= f2;
F2:= f;
End;
Writeln(f);
Readln;
End.
Bài 8: Cho mảng hai chiều m, n gồm các
số nguyên. Hãy viết chơng trình đa ra tổng
các phần tử của từng hàng.
+ Input:
+ Output:
* Chơng trình mẫu:
Program b8;
Uses crt;
Var ma:array[1..100, 1..100] of integer;
J, i, m, n, t: integer;
70
Ngày soạn:././ Ngày dạy:../../
Begin
Write( moi ban nhap so hang m = );
Readln(m);
Write( moi ban nhap so cot n = );
Readln(n);
For i:= 1 to m do
For j:= 1 to n do
Begin
Write( moi ban nhap phan tu
a[,i,,,j, ] = );
Readln(a[i,j]);
End;
For i:= 1 to m do
Begin
For j:= 1 to n do
Write(a[i,j]: 4);
Writeln;
End;
For I:= 1 to m do
Begin
T:=0;
For j:=1 to n do t:= t+ a[i,j];
Writeln(tong hang thu ,i, la :, t:4);
End;
Readln;
End.
Bài 9: Cho mảng hai chiều m, n gồm các
số nguyên. Viết chơng trình tìm giá trị lớn
nhất nhỏ nhất của mảng.
+ Input: Mảng 2 chiều m,n
+ Output: Max, Min
* Chơng trình mẫu
Gv: Giải thích ý nghĩa của từng câu
lệnh, từng vòng For - do
Gv: Chúng ta đã có thuật toán tìm giá
trị lớn nhất, nhỏ nhất đối với mảng
một chiều. Tơng tự nh vậy ta có thể
vận dụng đối với mảng 2 chiều.
Ta sử dụng 2 biến: Max. Min
71