+) Hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước. +) Biết sửa lỗi và viết được chương trình một số bài toán cơ bản. Giáo viên: Soạn bài, đọc tài liệu tham khảoù, dung cu day[r]
Trang 1Ngày soạn:
Ngày dạy:
Tiết 53
BÀI TẬP
I Mục tiêu:
+) Biết nhu cầu cần cĩ cấu trúc lặp với số lần chưa biết trước trong ngơn ngữ lập
trình;
+) Biết ngơn ngữ lập trình dùng cấu trúc lặp với số lần chưa biết trước để chỉ dẫn
máy tính thực hiện lặp đi lặp lại cơng việc đến khi một điều kiện nào đĩ được
thoả mãn;
+) Hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước
+) Biết sửa lỗi và viết được chương trình một số bài tốn cơ bản
II
Chuẩn bị :
1 Giáo viên: Soạn bài, đọc tài liệu tham khảó, dung cu day học.
2 Học sinh: Đọc trước bài, làm các bài tập, dụng cụ học tập.
III Tiến trình tiết dạy:
1 Ổn định tổ chức lớp: - Kiển tra sĩ số:
2 Kiểm tra bài cũ: - Kiểm tra việc chuẩn bị bài ở nhà của học sinh trong
vở
3 Dạy bài mới:
Hoạt động 1: Nhắc lại kiến thức về lệnh lặp
Gv: Cho HS làm bài tập 2:
? Hãy phát biểu sự khác biệt giữa
câu lệnh lặp với số lần lặp cho trước
và câu lệnh lặp với số lần lặp chưa
biết trước.
HS: Trả lời yêu cầu của GV
Bài tập 2:
+) Như tên gọi của nĩ, câu lệnh lặp với số lần lặp cho trước chỉ thị cho máy tính thực hiện một lệnh hoặc một nhĩm lệnh với số lần đã được xác định từ trước, cịn với câu lệnh lặp với số lần lặp chưa biết trước thì số lần lặp chưa được xác định trước
+) Trong câu lệnh lặp với số lần cho trước, điều kiện là giá trị của một biến đếm cĩ giá trị nguyên đã đạt được giá trị lớn nhất hay chưa, cịn trong câu lệnh lặp với số lần lặp chưa biết trước, điều kiện tổng quát hơn nhiều, cĩ thể là kiểm tra một giá trị của một số thực, cũng cĩ thể là một điều kiện tổng quát khác, ví dụ như một số cĩ chia hết cho 3 hay khơng,
+) Trong câu lệnh lặp với số lần cho trước, câu lệnh được thực hiện ít nhất một lần, sau đĩ
kiểm tra điều kiện Trong câu lệnh lặp với số lần chưa xác định trước, trước hết điều kiện
Trang 2được kiểm tra Nếu điều kiện được thỏa mãn,
câu lệnh mới được thực hiện Do đó có thể có trường hợp câu lệnh hoàn toàn không được
thực hiện
Hoạt động 2: HS làm bài tập trong SGK
GV: Hướng dẫn HS làm bài tập 3
+) Hãy tìm hiểu các thuật toán sau
đây và cho biết khi thực hiện thuật
toán, máy tính sẽ bao nhiêu vòng lặp?
Khi kết thúc, giá trị của S bằng bao
nhiêu? Viết chương trình Pascal thể
hiện các thuật toán đó!
a) Thuật toán 1
Bước 1 S 10, x 0.5.
Bước 2 Nếu S 5.2, chuyển tới
bước 4
Bước 3 S S x và quay lại bước 2.
Bước 4 Thông báo S và kết thúc
thuật toán
b) Thuật toán 2
Bước 1 S 10, n 0.
Bước 2 Nếu S ≥ 10, chuyển tới bước
4
Bước 3 n n + 3, S S n quay lại
bước 2
Bước 4 Thông báo S và kết thúc
thuật toán
Cho nhận xét của em!
Bài 3:
a) Thuật toán 1: 10 vòng lặp được thực hiện Khi kết thúc thuật toán S = 5.0 Đoạn chương
trình Pascal tương ứng:
S:=10; x:=0.5;
while S>5.2 do S:=S-x; writeln(S);
b) Thuật toán 2: Không vòng lặp nào được
thực hiện vì ngay từ đầu điều kiện đã không được thỏa mãn nên các bước 2 và 3 bị bỏ qua
S = 10 khi kết thúc thuật toán Đoạn chương
trình Pascal tương ứng:
S:=10; n:=0;
while S<10 do begin n:=n+3; S:=S-n end;
writeln(S);
Nhận xét: Trong các thuật toán và chương trình
trên, điều kiện được kiểm tra trước khi các bước lặp được thực hiện Do đó nếu điều kiện không được thỏa mãn ngay từ đầu, các bước lặp sẽ bị bỏ qua Điều này đặc biệt đúng đối với câu lệnh lặp while do
4./ Hướng dẫn về nhà:
Xem lại các bài đã làm, làm tiếp các bài còn lại, tiết sau làm tiếp các dạng BT
Ngày soạn:5/03/2012
Ngày dạy: 7/03/2012
Tiết 54
KIỂM TRA 1 TIẾT
Trang 3I./ Mục tiêu
- Hs vận dụng được các kiến thức đã được học vào làm bài tập
- Hs nghiêm túc làm bài kiểm tra
II./ Chuẩn bị
GV: Phiếu kiểm tra
HS: Học bài chuẩn bị cho tiết kiểm tra
III./ Nội dung kiểm tra
1 Kiểm tra sĩ số
2 Kiểm tra
Câu 1: (3điểm)
Nêu sự khác biệt giữa câu lệnh lặp với số lần biết trước và câu lệnh lặp với
số lần chưa biết trước?
Câu 2: (3 điểm)
Chương trình Pascal sau đây thực hiện hoạt động nào?Hãy giải thích hoạt động?
Program bài_2;
Var i:integer;
Begin
For i:=1 to 1000 do;
End
Câu 3: (4 điểm)
Em hãy viết chương trình tính tích của N số tự nhiên đầu tiên.( sử dụng câu lệnh lặp While do )
ĐÁP ÁN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
……… Ngày soạn: /03/2012
Ngày giảng: /03/2012
Tiết 55
LÀM VIỆC VỚI DÃY SỐ I.Mục tiêu:
Trang 4- Làm quen với việc 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 for do
- Củng cố các kĩ năng đọc, hiểu và chỉnh sửa chương trình
II.Chuẩn bị của GV, HS
1 Chuẩn bị của GV:Giáo án máy chiếu
2 Chuẩn bị của HS:đò dùng học tập
III Trọng tâm:
Biết dãy số, mảng, cấu trúc khai báo mảng và vận dụng mảng
IV Tiến trình lên lớp:
1 Ổn định lớp : kiểm tra lớp
2.Kiểm tra bài cũ:
3 Bài mới:
Hoạt động của giáo viên và học sinh Nội dung
HĐ 1: Tìm hiểu về dãy số và biến mảng
- GV: yêu cầu HS đọc ví dụ 1
- GV: Ví dụ như trong Pascal ta cần nhiều câu
lệnh khai báo và nhập dữ liệu dạng sau đây, mỗi
câu lệnh tương ứng với điểm của một học sinh
Read(Diem_3);
Giả sử chúng ta có thể lưu nhiều dữ liệu có liên
quan với nhau (như Diem_1, Diem_2, Diem_3, ở
trên) bằng một biến duy nhất và đánh "số thứ tự"
cho các giá trị đó, ta 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 hơn, chẳng hạn:
Với i = 1 đến 50: hãy nhập Diem_i;
Với i = 1 đến 50: hãy so sánh Max với Diem_i;
Từ hai ví dụ trên, có thể thấy
Hình 41 Sau khi một mảng đã được khai báo, chúng ta có
thể làm việc với các phần tử của nó như làm việc
với một biến thông thường 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ị đó.
Ví dụ 2 cũng cho thấy rằng, chúng ta gán giá
trị, đọc giá trị và tính toán với các giá trị của một
phần tử trong biến mảng thông qua chỉ số tương
ứng của phần tử đó Chẳng hạn, trong câu lệnh trên
Diem[i] là phần tử thứ i của biến mảng Diem.
1,
Dãy số và biến mảng
Ví dụ 1 Giả sử chúng ta cần viết
chương trình nhập điểm kiểm tra của các học sinh trong một lớp và sau đó in
ra màn hình điểm số cao nhất Vì mỗi biến chỉ có thể lưu một giá trị duy nhất,
để có thể nhập điểm và so sánh chúng,
ta cần sử dụng nhiều biến, mỗi biến cho một học sinh.
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ố:
Khi khai báo một biến có kiểu dữ liệu là kiểu mảng, biến đó được gọi
là biến mảng
Giá trị của biến mảng là một mảng, tức một dãy số (số nguyên, hoặc số thực) có thứ tự, mỗi số là giá trị của biến thành phần tương ứng.
HĐ2: Ví dụ về biến mảng
- GV: Để làm việc với các dãy số nguyên hay
2.Ví dụ về biến mảng
Cách khai báo mảng trong Pascal
Trang 5số thực, chúng ta phải khai báo biến mảng có
kiểu tương ứng trong phần khai báo của chương
trình
- GV: Cách khai báo đơn giản một biến mảng
trong ngôn ngữ Pascal như sau:
var Chieucao: array[1 50] of real;
var Tuoi: array[21 80] of integer;
Với câu lệnh thứ nhất, ta đã khai báo một
biến có tên Chieucao gồm 50 phần tử, mỗi phần
tử là biến có kiểu số thực Với câu lệnh khai
báo thứ hai, ta có biến Tuoi gồm 60 phần tử (từ
21 đến 80) có kiểu số nguyên
Cách khai báo và sử dụng biến mảng như trên
có lợi gì?
Trước hết, có thể thay rất nhiều câu lệnh nhập
và in dữ liệu ra màn hình bằng một câu lệnh
lặp Chẳng hạn, ta có thể viết
để nhập điểm của các học sinh Thay vì phải
viết 50 câu lệnh khai báo và 50 câu lệnh nhập,
ta chỉ cần viết hai câu lệnh là đủ và kết quả đạt
được là như nhau
Ta còn có thể sử dụng biến mảng một cách rất
hiệu quả trong xử lí dữ liệu Để so sánh
điểm của mỗi học sinh với một giá trị nào đó, ta
cũng chỉ cần một câu lệnh lặp, chẳng hạn
Điều này giúp tiết kiệm rất nhiều thời gian và
công sức viết chương trình
Hơn nữa, mỗi học sinh có thể có nhiều điểm
theo từng môn học: điểm Toán, điểm Văn,
điểm Lí, Để xử lí đồng thời các loại điểm
này, ta có thể khai báo nhiều biến mảng:
Khi đó, ta cũng có thể xử lí điểm thi của một
học sinh cụ thể (ví dụ như tính điểm trung bình
của Lan, tính điểm cao nhất của Châu, ) hoặc
tính điểm trung bình của cả lớp,
như sau:
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à hai số nguyên hoặc biểu thức nguyên thoả mãn chỉ số đầu ≤ chỉ số cuối và kiểu dữ liệu có thể là integer hoặc real
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ử
Ví dụ 2 Tiếp tục với ví dụ 1, thay vì khai báo các biến Diem_1, Diem_2, Diem_3, để lưu điểm số của các học sinh, ta khai báo biến mảng Diem như sau:
var Diem: array[1 50] of real;
For i:=1 to 50 do readln(Diem[i]); For i:=1 to 50 do
if Diem[i]>8.0 then writeln('Gioi'); var DiemToan: array[1 50] of real; var DiemVan: array[1 50] of real; var DiemLi: array[1 50] of real; hay
var DiemToan, DiemVan, DiemLi: array[1 50] of real;
Nhập giỏ trị cho biến mảng:
-Gỏn trực tiếp bằng lệnh gỏn: vớ dụ:
A[1] := 8, A[2] := 9.5.
-hoặc nhập dữ liệu từ bàn phím bằng câu lệnh lặp:
for i := 1 to 5 do readln(a[i])
*viết ra màn hỡnh những điểm số lớn hơn hoặc bằng 9
For i:=1 to 50 do
if Diem[i] >= 9 then
writeln(Diem[i]);
Tiết 2
Hoạt động của giáo viên và học sinh Nội dung
HĐ 3: Tìm giá trị lớn nhất và nhỏ nhất của dãy số
Trang 6Gv đưa ra thuật toán tìm Max của dãy số
nguyên
được nhập vào từ bàn phím
Học sinh đọc và nghiên cứu tìm hiểu ý
nghĩa từng câu lệnh trong chương trình
Trong chương trình này, chúng ta hãy lưu
ý điểm sau: Số tối đa các phần tử của
mảng (còn gọi là kích thước của mảng)
phải được khai báo bằng một số cụ thể (ở
đây là 100, mặc dù số các số nhập vào
sau này có thể nhỏ hơn nhiều so với 100).
y/c hs đọc ghi nhớ (sgk)
3: Tìm giá trị lớn nhất và nhỏ nhất của dãy số
Ví dụ 3 Viết chương trình nhập N số nguyên từ bàn phím và in ra màn hình số nhỏ nhất và số lớn nhất N cũng được nhập
từ bàn phím (sgk) Thuật toỏn tỡm Max của dóy số nguyờn nhập từ bàn phớm như sau:
Bước 1 Nhập N và dóy A1 , , An
Bước 2 Max A1
Bước 3 Lần lượt gán giá trị từ 2 đến
N cho i Với mỗi giỏ trị của i
thỡ thực hiện: Nếu Max <Ai thỡ MaxAi
Bước 4 Đưa ra màn hỡnh giỏ trị Max
rồi kết thỳc.
viết câu lệnh thực hiện các bước nhập N, nhập các phần tử của mảng, tỡm Max, in Max ra màn hỡnh.
program P_Max;
Var
i, N, Max : integer;
A: array[1 100] of integer;
Begin
{Nhap N}
write('Hay nhap do dai cua day so, N ='); readln(N);
{Nhap day so}
writeln('Nhap cac phan tu cua day so:');
For i:=1 to N do Begin
write('a[',i,']='); readln(a[i]);
End;
{Tim Max}
Max:=a[1];
for i:=2 to n do if Max<a[i] then
Max:=a[i];
{Hien thi Max ra man hinh}
write('So lon nhat la Max = ',Max);
readln;
End.
Ghi nhớ(sgk/79)
4 Củng cố:
Bài tập 2sgk Hãy tìm lỗi trong các câu lệnh sau:
a)Lỗi dấu , giữa chỉ số đầu và chỉ số cuối
Trang 7b) lỗi chỉ số cuối là số thực
c)chỉ số đầu và chi số cuối phải là 2 số nguyên
Bài 4 sgk
5 Dặn dị, hướng dẫn học sinh học tập ở nhà:
Học bài và xem trước nội dung bài thự hành 7
ơn lại bài và làm các câu hỏi 1, 2, 3, 4 trang 79 Sgk
V Rỳt kinh nghiệm
Ngày soạn: /03/2012 Ngày dạy: /03/2012 Tiết 57 BÀI TẬP I Mục tiêu: +) Biết nhu cầu cần sử dụng biến mảng trong ngơn ngữ lập trình; +) Biết ngơn ngữ lập trình dùng biến mảng để thay thế cho nhiều câu lệnh nhập và in dữ liệu len màn hình, sử lí dữ liệu. II Chuẩn bị : 1 Giáo viên: Soạn bài, đọc tài liệu tham khảó, dung cụ day học 2 Học sinh: Đọc trước bài, làm các bài tập, dụng cụ học tập. III Trọng tâm :
Trang 8Củng cố lại các kiến thức đã học : biến mảng và làm một vài bài tập để rèn luyện
kĩ năng.
IV Tiến trình tiết dạy:
1 Ổn định tổ chức lớp: - Kiểm tra sĩ số:
2 Kiểm tra bài cũ: -
1 Hãy nêu cấu trúc của khai bào biến mảng ?
Trả lời : Tên mảng : array[<chỉ số đầu> <chỉ số cuối>] of <kiểu dữ liệu> ;
3 Dạy bài mới:
Hoạt động 1: Nhắc lại kiến thức về biến mảng
Gv: Cho HS làm bài tập 1:
? 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?
HS: Trả lời yêu cầu của GV.
Gv: Cho Hs làm bài tập 3
“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,
nhưng chỉ dưới một tên duy nhất”.
? Phát biểu trên đúng hay sai?
Bài tập 1
+) Sử dụng biến mảng trong chương trình giúp cho việc viết chương trình được ngán gọn và dẽ dàng hơn
+) Sử dụng biến mảng và câu lệnh lặp có thể thay thế cho nhiều câu lệnh nhập và in dữ liệu lên màn hình, và trong việc sử lý dữ liệu
Bài tập 3
“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, nhưng chỉ dưới một tên duy nhất”.
Phát biểu đó là đúng.
Hoạt động 2: HS làm bài tập trong SGK (79)
? Em hãy nhắc lại khi khai báo biến
mảng ta cần chú ý những điểm gì?
HS: Khi khai báo biến mảng ta cần chú
ý:
- Phải khai báo rõ tên biến mảng
- Chỉ số đầu <= chỉ số cuối và phải
có giá trị nguyên, ta cần khai báo
rõ số lượng các phần tử của
mảng.
- Chỉ rõ kiểu dữ liệu chung của
mảng.
GV: Hướng dẫn HS làm bài tập 2.
GV: hướng dẫn học sinh làm bài 4
Câu lệnh sau MT có thực hiện được hay
không?
Var N: integer
A: array[1 N] of real;
Bài 2:
a) Var X: Array[10,13] of Integer;
Khai báo trên là sai vì chỉ số đầu và chỉ số cuối cách nhau bởi dấu “ ”
b) Var X: Array[5 10.5] of Integer;
Khai báo trên là sai vì chỉ số đầu và chỉ số cuối phải là chỉ số nguyên.
c) Var X: Array[3.4 4.8] of Integer;
Khai báo trên là sai vì chỉ số đầu và chỉ số cuối phải là chỉ số nguyên.
d) Var X: Array[10 1] of Integer;
Khai báo trên là sai vì chỉ số đầu phải nhỏ hơn hoặc bằng chỉ số cuối.
e) Var X: Array[4 10] of Integer;
Khai báo trên là đúng.
Bài 4:
Với câu lệnh trên máy tính sẽ không thực hiện được vì không chỉ rõ chỉ số cuối
Trang 94./ Củng cố và hướng dẫn về nhà:
- Học lại cú pháp khai báo biến mảng
- Xem lại các bài đã làm, làm tiếp các bài còn lại, tiết sau làm tiếp các dạng BT
V Rút kinh nghiệm:
Ngày soạn: Ngày dạy: Tiết: 58 Bài thực hành 6 Xử lý dãy số trong chương trình (T1) I Mục tiêu: - Biết lựa chọn biến mảng phù hợp với tình huống cụ thể - Rèn luyện kĩ năng về khai báo, sử dụng biến - Rèn luyện khả năng đọc chương trình - Biết vai trò của việc kết hợp các cấu trúc điều khiển II Chuẩn bị: GV: Soạn bài, đọc tài liệu tham khảo, phòng may HS: Xem lại bài học trước, xem bài trước ở nhà, dụng cụ học tập. III Trọng tâm :
Củng cố lại các kiến thức đã học : biến mảng và làm một vài bài tập để rèn luyện
kĩ năng.
IV Tiến trình tiết dạy:
1./ Ổn định lớp
2./ Kiểm tra bài cũ: Không kiểm tra
3./ Bài mới:
Trang 10Hoạt động của GV Nội dung
Hoạt động 1: Học sinh làm bài tập 1
GV: yêu cầu HS làm bài 1:
Viết chương trình sử dụng biến mảng để
nhập điểm của các bạn trong lớp, sau đó in
ra nàm hình số bạn đã đạt loại giỏi, khá,
trung bình và kém.
HS: Chú ý theo giõi.
GV: hướng dẫn:
a) Mô tả thuật toán của chương trình, các
biến dự định sẽ sử dụng và kiểu của
chúng.
b) Gõ chương trình vào trong máy.
HS: Thực hiện làm trên máy:
GV: Yêu cầu:
c) Đọc và tìm hiểu ý nghĩa của từng câu
lệnh Dịch chương trình và sửa lỗi, nếu có.
Chạy chương trình với các bộ dữ liệu được
gõ từ bàn phím và kiểm tra kết quả nhận
được.
HS: Chú ý để thực hiện.
Bài 1:
Viết chương trình sử dụng biến mảng để nhập điểm của các bạn trong lớp, sau đó in
ra nàm hình số bạn đã đạt loại giỏi, khá, trung bình và kém.
Chương trình trong SGK-80
Hoạt động 2: Học sinh thực hành trên máy
GV: Nêu các lỗi cần chú ý nếu có của HS
trong lúc thực hành.
GV: Nhắc lại những điều cần chú ý khi sử
dụng bién mảng.
Tiết 2.
Hoạt động 1: Học sinh làm bài tập 1
GV yêu cầu HS làm bài tập 2:
Bổ sung và chỉnh sửa chương trình trong
bài 1 để nhập hai loại điểm Toán và ngữ
văn của các bạn sau đó in ra màn hình
điểm trung bình của mỗi bạn trong lớp.
GV: Hướng dẫn:
a) Đọc và tìm hiểu ý nghĩa của từng câu
lệnh trong chương trình
b) Gõ, dịch và chạy thử chương trình với
một vài độ chính xác khác nhau.
HS thực hiện trên máy tính:
Bài 2:
Bổ sung và chỉnh sửa chương trình trong bài 1 để nhập hai loại điểm Toán và ngữ văn của các bạn sau đó in ra màn hình điểm trung bình của mỗi bạn trong lớp
Chương trình trong SGK
Hoạt động 2: Học sinh thực hành trên máy