-GV: Đặt vấn đề “Giả sử để lưu nhiều dữ liệu có liên quan với nhau bằng một tên biến duy nhất, đánh số thứ tự cho các giá trị đó, sử dụng qui luật tăng giảm của số thứ tự và vài câu lệnh[r]
Trang 1Tuần 31 Ngày soạn:
Bài 9: Làm việc với dãy số
I./ Mục đích yêu cầu:
-Về kiến thức:
+ Hs biết được khái niệm mảng
+ Hs hiểu được thuật tốn tìm số lớn nhất của dãy
+ Hs hiểu được thuật tốn tìm nhỏ nhất của dãy
-Về kỹ năng:
+ Hs biết cách khai báo mảng, nhập, in, truy cập các phần tử của mảng
+ Hs viết được đoạn chương trình cĩ sử dụng biến mảng ở bài tốn đơn giản
-Về thái độ: tích cực tìm hiểu cách làm việc với dãy, cẩn thận khi viết chương trình
II./ Chuẩn bị:
- GV: Máy chiếu, máy tính
- HS: Sgk, chuẩn bị trước bài 9 “Làm việc với dãy số”
III./ Lưu ý sư phạm:
- GV chuẩn bị ví dụ thực tế về tổ chức thơng tin dạng dãy số, mơ hình và tính ứng dụng của dãy số
IV./ Kiểm tra bài cũ: (5 phút)
-GV yêu cầu 1 hs lên trả lời các câu hỏi
1./ Viết câu lệnh lặp với số lần xác định và số lần chưa biết trước?
2./ Chạy từng bước câu lệnh lặp và cho biết giá trị của biến A khi thực hiện xong đoạn chương trình sau ?
A:= 0; i:= 3;
While i<=7 do
Begin
A:=A+i*i+(i+1)*(i+1);
i:=i+2;
end;
-GV nhận xét và cho điểm, nhận xét quá trình chuẩn bị ở nhà bài 9 “Làm việc với dãy số”
V./ Dạy học bài mới:
Hoạt động của giáo viên Hoạt động của hs Nội dung bài học
HĐ1 : Dãy số và biến mảng (20 phút)
-GV: Yêu cầu hs đọc sgk/75, nhận xét và trả lời :
1./ Để nhập điểm cho nhiều hs ta phải sử dụng
nhiều biến, em liệt kê những khĩ khăn khi phải
sử dụng nhiều biến cĩ cùng tên và cùng kiểu dữ
liệu để nhập điểm cho nhiều học sinh?
2./ Cĩ cách nào giải quyết vấn đề trên khơng?
Em hiểu như thế nào về vấn đề vừa nêu ?
-GV: Nhấn mạnh các ý:
+ “Khai báo và nhập dữ liệu mỗi câu lệnh tương
ứng với điểm của một HS”
+ Số học sinh càng nhiều thì đoạn khai báo và
đọc dữ liệu càng dài
+Việc so sánh các điểm đã nhập cịn khĩ khăn
hơn
1 Dãy số và biến mảng:
*VD1/ sgk75
Trang 2+Ta cần nhớ hết tên các biến đã khai báo trong
khi lập trình và rất khó tránh khỏi nhầm lẫn, sai
sót
-GV: Đặt vấn đề “Giả sử để lưu nhiều dữ liệu có
liên quan với nhau bằng một tên biến duy nhất,
đánh số thứ tự cho các giá trị đó, sử dụng qui
luật tăng giảm của số thứ tự và vài câu lệnh lặp
để xử lý dữ liệu một cách đơn giản hơn”
Để giải quyết các vấn đề trên hầu hết các ngôn
ngữ lập trình đều có một kiểu dữ liệu gọi là kiểu
mảng
Dữ liệu kiểu mảng là một tập hợp hữu hạn các
phần tử có thứ tự, mọi phần tử đều có cùng một
kiểu dữ liệu, gọi là kiểu của phần tử Việc sắp
thứ tự được thực hiện bằng cách gán cho mỗi
phần tử một chỉ số
-GV: Var Diem_1, Diem_2, Diem_3, … : real;
Read (Diem_1) ; Read (Diem_2) ; Read
(Diem_3) ; …
-GV: có thể sử dụng quy luật tăng hay giảm của
“số thứ tự” và một vài câu lệnh lặp để xử lí dữ
liệu một cách đơn giản:
+ Với i = 1 đến 100: Hãy nhập Diem_i;
+ Với i = 1 đến 100: Hãy so sánh Max với
Diem_i;
HĐ2 : Ví dụ về biến mảng (40 phút)
- GV nhận xét :
+ Cách khai báo biến mảng trong các ngôn ngữ
lập trình có thể khác nhau, nhưng luôn cần chỉ
rõ: tên biến mảng, số lượng phần tử, kiểu dữ liệu
chung của các phần tử.
+ Dùng một câu lệnh lặp, có thể thay rất nhiều
câu lệnh nhập và in dữ liệu ra màn hình
+ Để so sánh điểm của mỗi HS với một giá trị
nào đó, ta cũng chỉ cần một câu lệnh lặp
+ Để xử lí đồng thời các loai điểm của từng môn
học, ta có thể khai báo nhiều mảng
+ Khi một mảng đó được khai báo, có thể làm
việc với các phần tử của nó như: gán giá trị, đọc
giá trị và thực hiện các tính toán với các giá trị
đó
-GV hướng dẫn hs tìm hiểu lại thuật toán tìm giá
trị lớn nhất, nhỏ nhất của dãy số nguyên(học ở
Bài 5 )
-GV giải thích về thuật toán tìm giá trị lớn nhất
của dãy số nguyên … Sau đó cho HS nhắc lại
+Cho HS thảo luận, chỉnh sửa thuật toán trên để
tỡm ra số nhỏ nhất
* Dữ liệu kiểu mảng: Là một tập hợp hữu hạn các phần tử có thứ
tự, mọi phần tử đều có cùng một kiểu dữ liệu gọi là kiểu của phần tử Việc sắp xếp thứ tự thực hiện bằng cách gán cho mỗi phần tử một chỉ số:
+ Biến mảng thực chất là các biến có cùng tên khác chỉ số và cùng kiểu dữ liệu
+ Giá trị của biến mảng là một mảng
2 Ví dụ về biến mảng:
*VD/sgk76:
Var chieucao:array[1 50] of real; Var Tuoi:array[21 80] of integer;
*Cách khai báo mảng trongPascal:
Tên_mảng : array [<chỉ số đầu>
<chỉ số cuối>] of <kiểu dữ liệu >;
Trong đó:
+ Chỉ số đầu và chỉ số cuối: là 2 số nguyên hoặc biểu thức nguyên (Chỉ số
đầu chỉ số cuối );
+ Kiểu dữ liệu: integer hoặc
real
* VD2/sgk76
- Khai báo biến mảng Diem như
sau:
Var Diem : array [1 50] of real;
- Dựng một câu lệnh lặp For i:= 1 to 50 do readln( Diem [ i ]);
- Để so sánh điểm của mỗi HS với một giá trị nào đó
For i:= 1 to 50 do
If Diem[i]>8.0 then writeln (‘Gioi’);
- Để xử lí đồng thời các loai điểm => khai báo nhiều mảng:
Var DiemToan : array [1 50] of real; Var DiemVan : array [1 50] of real; Var DiemLi : array [1 50] of real;
Hoặc:
Trang 3HĐ3 : Tìm giá trị lớn nhất và nhỏ nhất của
dãy số (15 phút)
-GV cho HS đọc ví dụ 3:
+ Để nhập các số nguyên sẽ được nhập vào,
trước hết phải làm gì ?
+Sau khi khai báo N, biến lưu các số được nhập
vào như là các phần tử của một biến mảng A
Ngồi ra, 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: …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 đọc ví dụ 3
- HS theo dõi
Var DiemToan, DiemVan, DiemLi : array [1 50] of real;
- Khi một mảng đĩ được khai
báo, cĩ thể : gán giá trị, đọc giá trị và thực hiện các tính tốn với các giá trị đĩ A[1]:=5; A[2]:= 8;
hoặc nhập dữ liệu từ bàn phím bằng câu lệnh:
For i:= 1 to 5 do readln ( A [ i ] );
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 tốn
Bước 1: Nhập N và dĩy A 1 , … , A n ; Bước 2: Max A 1 ;
Bước 3: Với i từ 2 đến N thực hiện: Nếu Max < A 1 thử Max A i ; 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 minh họa:
Program MaxMin;
Uses crt;
Var i, n, Max, Min : integer;
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 day N = ‘); readln (n);
writeln(‘Nhap cac pt day so:’);
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.
HĐ4: Củng cố, dặn dò: (10 phút)
-GV: Hãy nêu lợi ích của việc sử dụng biến mảng trong chương trình?
-GV: Trả lời các câu hỏi 2,3/sgk79
-GV: BTVN 4,5/sgk79, xem và học bài 9 “Làm việc với dãy số”
V./ Rút kinh nghiệm tiết dạy