Bài 9: Làm việc với dãy số
D. Tiến trình tiết dạy
3. Tìm giá trị lớn nhất và nhỏ nhất của dãy số
Tìm giá trị lớn nhất ( Max ) của dãy số nguyên nhập từ bàn phím
Thuật toán
Bước 1: Nhập N và dãy A1, … , An; Bước 2: Max ← A1;
Bước 3: Với i từ 2 đến N thực hiện: Nếu Max
< A1 thì Max ← Ai;
Bước 4: Đưa ra màn hình giá trị Max rồi kết thúc
Ví dụ 3: (SGK)/ Tr 78.
chương trình
Program MaxMin;
Uses crt;
Var i, n, Max, Min : integer;
cần khai báo thêm các biến nào nữa ?
- GV: Trình bày phần khai báo chương trình …
- HS đọc ví dụ 3.
+ HS: …trước hết ta khai báo biến N.
+ Cần khai báo thêm biến i làm biến đếm cho các lệnh lặp, biến Max và Min để lưu số lớn nhất, nhỏ nhất.
- HS theo dõi
- GV cho HS đọc phần ghi nhớ.
A : array [1..100] of integer;
{Phần thân chương trình sẽ tương tự dưới đây:}
Begin Clrscr;
Write ( ‘ Hay nhap do dai cua day so, N = ‘);
readln (n);
Writeln ( Nhap cac phan tu cua day so: m’);
For i:= 1 to n do Begin
Write ( ‘ a[ , i , ] = ‘); readln (a[ i ] );
End;
Max:= a[1]; Min:= a[1];
For i:= 2 to n do
Begin if Max < a[ i ] then Max:= a[ i ];
if Min < a[ i ] then Min:= a[ i ];
End;
Write ( ‘ So lon nhat la Max = ‘ Max);
Write ( ‘ So nho nhat la Min = ‘ Min);
readln (n);
End.
GHI NHỚ: (SGK)/ Tr 79.
Củng cố - Nhận xét rút kinh nghiệm giờ học Về nhà - Học sinh về nhà ụn bài
- Làm các Câu hỏi và BTcòn lại: sgk/ Tr 79;
- Chuẩn bị tiết sau: Bài tập.
Ngày soạn :22/3/2009
Ngày dạy : 8A : 8B :
8C : 8D : 8E :
TuÇn 29 TiÕt 58:
bài tập
A. Mục tiêu :
- Học sinh củng cố khỏi niệm mảng một chiều:
khai báo mảng, nhập, in, truy cập các phần tử của mảng;
- RÌn kü n¨ng x©y dùng thuật toán tìm số lớn nhất, nhỏ nhất của một dãy số.
---
- Thái độ học tập nghiêm túc, tích cực làm các bài tập thực hành.
B. Chuẩn bị : 1. Giáo viên :
- Tài liệu, GA điện tử.
- Đồ dùng dạy học nh máy tính kết nối projector,...
2. Học sinh :
- Đọc trớc bài C. Phương pháp:
Vấn đỏp, thuyết trỡnh, hoạt động nhóm.
D. Tiến trình tiết dạy : I. ổn định tổ chức lớp :
Kiểm tra sĩ số : 8A: ...8B:... 8C...8D...8E ...
II. Kiểm tra bài cũ : Không KT III. Dạy bài mới :
“Có thể xem biến mảng là một biến đợc tạo từ nhiều biến có cùng kiểu, nhng chỉ dới một tên duy nhất.” Phát biểu đó đúng hay sai?
Hãy nêu các lợi ích của việc sử dụng biến mảng trong chơng tr×nh?
Các khai báo biến mảng sau đây trong Pascal đúng hay sai:
varX:Array[10,13] Of Integer;
var X: Array[5..10.5] Of Real;
varX:Array[3.4..4.8]OfInteger;
var X: Array[10..1] Of Integer;
var X: Array[4..10] Of Real;
Câu lệnh khai báo mảng sau đây có đợc máy tính thực hiện không?
var N: integer;
A: array[1..N] of real;
Viết chơng trình Pascal sử dụng mảng để nhập từ bàn phím các phần tử của một dãy số. Độ dài của dãy cũng đợc nhập từ bàn phÝm.
1. §óng.
2. Lợi ích chính của việc sử dụng biến mảng là rút gọn việc viết chơng trình, có thể sử dụng câu lệnh lặp để thay nhiều câu lệnh. Ngoài ra chúng ta còn có thể lu trữ và xử lí nhiều dữ liệu có nội dung liên quan đến nhau một cách hiệu quả.
3. Đáp án a) Sai. Phải thay dấu phảy bằng hai dÊu chÊm;
b) và c) Sai, vì giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải là số nguyên;
d) Sai, vì giá trị đâu của chỉ số mảng phải nhỏ hơn hoặc bằng chỉ số cuối;
e) §óng.
4. Không. Giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải đợc xác định trong phần khai báo chơng trình.
5. Chơng trình có thể nh sau:
uses crt;
var N, i: integer;
A: array[1..100] of real;
begin clrscr;
write(’Nhap so phan tu cua mang, n= ’);
readln(n);
for i:=1 to n do begin
write(’Nhap gia tri ’,i,’cua mang, a[’,i,’]= ’);
read(a[i]) end;
end.
Đoạn chơng trình sau dùng để sắp xếp lại dãy số đợc ghi trong mảng A[i], i = 1,2,..., N, theo thứ tù t¨ng dÇn:
For i:=1 to N do For j:=i to N do If A[i] > A[j] then
Begin Tg:=A[i]; A[i]:=A[j];
A[j]:=Tg; End;
Hãy kiểm tra tính đúng
đắn của đoạn chơng trình trên.
Hãy viết chơng trình nhập 5 số ngyên từ bàn phím và ghi ra màn hình số lớn nhất trong 5 số đó theo hai cách: không sử dụng biến mảng và sử dụng biến mảng.
Viết chơng trình sử dụng biến mảng để tính giá trị trung bình của tổng N số nguyên đợc nhập vào từ bàn phím.
6. §óng.
7. a) Nếu không sử dụng biến mảng, chơng trình có thể dài nh sau:
uses crt;
var So_1, So_2, So_3, So_4, So_5, Max:
integer;
begin clrscr;
write('Nhap so thu nhat: '); readln(So_1);
write('Nhap so thu hai: '); readln(So_2);
write('Nhap so thu ba: '); readln(So_3);
write('Nhap so thu tu: '); readln(So_4);
write('Nhap so thu nam: '); readln(So_5);
Max:=So_1;
If Max<So_2 then Max:=So_2;
If Max<So_3 then Max:=So_3;
If Max<So_4 then Max:=So_4;
If Max<So_5 then Max:=So_5;
writeln('So lon nhat: ',Max);
end.b) Nếu sử dụng biến mảng, chơng trình chỉ ngắn gọn nh sau:
uses crt;
var i, Max: integer;
A: array[1..5] of integer;
begin clrscr;
for i:=1 to 5 do
begin write('Nhap so thu ',i,':'); readln(A[i]) end;Max:=a[1];
for i:=2 to 5 do If Max<a[i] then Max:=a[i];
writeln('So lon nhat: ',Max);
end.
8/uses crt;
var N, i: integer;
TB: real;
A: array[1..100] of real;
begin clrscr;
write(’Nhap so phan tu cua mang, n= ’);
read(n);
for i:=1 to n do begin
write(’Nhap gia tri ’,i,’cua mang, a[’,i,’]= ’);
readln(a[i]) end;
TB:=0;
for i:=1 to n do TB:=TB+a[i];
---
Viết chơng trình sử dụng biến mảng để tính giá trị trung bình của tổng N số nguyên đợc nhập vào từ bàn phím.
Chơng trình nhập n số nguyên từ bàn phím và tính tổng các số d-
ơng:
TB:=TB/n;
write(’Trung binh bang ’,TB);
end.
9/ uses crt;
var n,k,S: integer;
X: array[1..1000] of integer;
begin clrscr;
write('Nhap so tu nhien n: '); readln(n);
for k:=1 to n do
begin write('Nhap X[',k,']='); readln(X[k]) end;S:=0;
for k:=1 to n do
if X[k]>0 then S:=S+X[k];
writeln('Tong cac duong S=',S);
readln;
end.
Củng cố - Nhận xét rút kinh nghiệm giờ bài tập.
Về nhà - Học sinh về nhà ụn bài Ngày soạn :23/3/2009
Ngày dạy : 8A : 8B :
8C : 8D : 8E :
TuÇn 30 TiÕt 59:
bài thực hành 7
xử lý dãy số trong chơng trình (T1)
A. Mục tiêu :
• Thực hành khai báo và sử dụng các biến mảng ;
• Ôn luyện cách sử dụng câu lệnh lặp if...then, for...do;
• Củng cố kĩ năng đọc, hiểu và chỉnh sửa chương trình.
• Hiểu và viết được chương trình với thuật toán tìm giá trị lớn nhất, nhỏ nhất của một dãy số, tính tổng dãy số.
B. Chuẩn bị : 1. Giáo viên :
- Tài liệu, GA điện tử.
- Đồ dùng dạy học nh máy tính kết nối projector,...
2. Học sinh :
- Đọc trớc bài C. Phương pháp:
Vấn đỏp, thuyết trỡnh, hoạt động nhóm.
D. Tiến trình tiết dạy : I. ổn định tổ chức lớp :
Kiểm tra sĩ số : 8A: ...8B:... 8C...8D...8E ...
II. Kiểm tra bài cũ : Không KT III. Dạy bài mới :
Chương trình tìm giá trị nhỏ nhất trong dãy số nguyên P_Min ?
HS chia nhóm làm thực hành.
Viết chơng trình nhập điểm của các bạn trong lớp. Sau đó in ra màn hình số bạn
đạt kết quả học tập loại giỏi, khá, TB và kém.Tiêu chuẩn:
- Loại giỏi: 8.0 trở lên - Loại khá: 6.5 đến 7.9 - Loại TB: 5.0 đến 6.4 - Loại kém: dới 5.0
HS chia nhóm làm thực hành.
GV gợi ý:
- Dùng câu lệnh if…then…
Bài 1:
Program P_Min;
Var
i, n, Min : integer;
A: array[1..100] of integer;
Begin
write('Hay nhap do dai cua day so, N = '); readln(n);
writeln('Nhap cac phan tu cua day so:');
For i:=1 to n do Begin
write('a[',i,']='); readln(a[i]);
End;
Min:=a[1];
for i:=2 to n do if Min>a[i] then Min:=a[i];
write('So nho nhat la Min = ',Min);
readln;
Bài 2: End.
Program Phan_loai;
uses crt;
Var
i, n, G, Kh, TB, K: integer;
A: array[1..100] of real;
Begin clrscr;
write('nhap so HS trong lop, n= ');
readln(n);
writeln('Nhap diem :');
For i:=1 to n do Begin
write(i,' . '); readln(a[i]);
End;
G:=0; Kh:= 0; TB:= 0; K:= 0;
for i:=1 to n do
---
Begin
if a[i] >= 8.0 then G:= G + 1;
if a[i] <5.0 then K:= K + 1;
if (a[i] <8.0 ) and (a[i] >=6.5) then Kh:= Kh + 1;
if (a[i] >= 5 ) and (a[i] < 6.5) then TB:= TB + 1;
end;
writeln(' Ket qua hoc tap: ');
writeln(G, ' ban hoc gioi ');
writeln(Kh, ' ban hoc kha ');
writeln(TB, ' ban hoc trung binh');
writeln(K, ' ban hoc kem ');
readln;
End.
Củng cố - Nhận xét rút kinh nghiệm giờ học Về nhà - Học sinh về nhà ụn bài
Ngày soạn :23/3/2009
Ngày dạy : 8A : 8B :
8C : 8D : 8E :
TuÇn 30 TiÕt 60:
bài thực hành 7
xử lý dãy số trong chơng trình (T1)
A. Mục tiêu :
• Thực hành khai báo và sử dụng các biến mảng ;
• Ôn luyện cách sử dụng câu lệnh lặp if...then, for...do;
• Củng cố kĩ năng đọc, hiểu và chỉnh sửa chương trình.
• Hiểu và viết được chương trình với thuật toán tìm giá trị lớn nhất, nhỏ nhất của một dãy số, tính tổng dãy số.
B. Chuẩn bị : 1. Giáo viên :
- Tài liệu, GA điện tử.
- Đồ dùng dạy học nh máy tính kết nối projector,...
2. Học sinh :
- Đọc trớc bài C. Phương pháp:
Vấn đỏp, thuyết trỡnh, hoạt động nhóm.
D. Tiến trình tiết dạy : I. ổn định tổ chức lớp :
Kiểm tra sĩ số : 8A: ...8B:... 8C...8D...8E ...
II. Kiểm tra bài cũ : Không KT III. Dạy bài mới :
Chương trình tính tổng dãy số, in ra màn hình dãy số vừa nhập.
HS chia nhóm làm thực hành.
Bổ sung và chỉnh sửa chơng trình trong BT2 (tiết 59 ) để nhập 2 loại
điểm Toán và Ngữ văn của các bạn.
Sau đó in ra màn hình :
a/ điểm TB của mỗi bạn trong lớp theo công thức:
Điểm TB = (Điểm toán + điểm v¨n)/2
b/ Điểm TB của cả lớp theo từng môn Toán và Ngữ văn
HS chia nhóm làm thực hành.
Bài 1:
Program P_Sum;
Var
i, n, Sum : integer;
A: array[1..100] of integer;
Begin
write('Hay nhap do dai cua day so, N = ');
readln(n);
writeln('Nhap cac phan tu cua day so:');
For i:=1 to n do Begin
write('a[',i,']='); readln(a[i]);
End;
Sum:=0;
for i:=1 to n do Sum:= Sum + a[i];
write('Day so vua nhap la: ');
for i:=1 to n do write(a[i], ' ');
writeln;
write('Tong day so la = ',Sum);
readln;
Bài 2: End.
Program Xep_loai;
uses crt;
Var
i, n: integer;
TBtoan, TBvan: real;
diemT, diemV: array[1..100] of real;
Begin clrscr;
writeln('Diem TB : ');
For i:=1 to n do
write(i,' . ',(diemT[i] + diemV[i])/2:3:1);
TBtoan: =0; TBvan: =0;
For i:=1 to n do Begin
TBtoan: = TBtoan + diemT[i] ;
---
TBvan: = TBvan + diemV[i] ; end;
TBtoan: = TBtoan /n;
TBvan: = TBvan /n;
writeln('Diem TB mon Toan : ',TBtoan :3:2);
writeln('Diem TB mon Van: ',TBvan :3:2);
readln;
End.
Củng cố - Nhận xét rút kinh nghiệm giờ học Về nhà - Học sinh về nhà ụn bài
- Đọc trớc bài: Quan sát hình không gian với phần mềm yenka
Ngày soạn :1/4/2009
Ngày dạy : 8A : 8B :
8C : 8D : 8E :
TuÇn 31 TiÕt 61: