*Lưu ý: Câu lệnh có sử dụng câu lệnh ghép thì phải đặt trong hai từ khóa begin … end; - HS lắng 4/ Tính tổng & tích bằng câu lệnh nghe & trả lặp lời Vd 1: chương trình tính tổng N số tự [r]
Trang 1Tuần : 19
Tiết : 37+38
Ngày soạn: 06/01/2011 Ngày dạy : 07/01/2011 Bài 7: CÂU LỆNH LẶP
I Mục tiêu
1 Kiến thức
- Biết nhu cầu cần có cấu trúc lặp 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 để chỉ dẫn máy tính thực hiện lặp
đi lặp lại công việc nào đó một số lần
- Hiểu lệnh ghép trong Pascal
2 Kỹ Năng
- Rèn luyện kỹ năng phân biệt các hoạt động phụ thuộc vào điều kiện trong
cuộc sống
3 Thái độ
- Tự giác, tích cực, chủ động trong tiết học.
II Chuẩn bị
- GV: Soạn giáo án , SGK…
- HS: Vở ghi, SGK, đọc trước nội dung bài học
III Phương pháp
- Vấn đáp, thuyết trình, trực quan
- Đặt vấn đề, giải quyết vấn đề
IV Hoạt động dạy và học
1 Ổn định lớp tổ chức lớp
- kiểm tra sĩ số lớp
- Ổn định trật tự
2 Kiểm tra bài cũ
- Em hãy mô tả thuật toán tím giá trị lớn nhất của hai số?
Bước 1 : Max:= a (hoặc Max:=b);
Bước 2 : Nếu a < b thì gán Max = b và viết giá trị lớn nhất của hai số là
Max
3 Bài mới
- Trong các tiết học vừa qua em đã được làm quen với một số câu lệnh trong
ngôn ngữ lập trình TuborPascal như lệnh điều kiện, bài học hôm nay giúp
chúng ta tìm hiệu thêm câu lệnh mới
Trang 2HĐ CỦA GV HĐ CỦA
HS
NỘI DUNG
HĐ1: Trong cuộc
sống hằng ngày,
được thực hiện lặp đi
lặp lại nhiều lần
ví dụ: Các ngày trong
tuần các em đều lặp
đi lặp lại hoạt động
buổi sáng đến trường
và buổi trưa trở về
nhà
HS cho thêm một ví
dụ trong thực tế đời
sống hằng ngày lặp
đi lặp lại ?
GV: Khi viết CT
máy tính cũng vậy,
trong nhiều trường
hợp ta cũng phải viết
lặp lại nhiều câu lệnh
chỉ để thực hiện 1
phép tính nhất định
- HS: Lắng nghe, tự ghi bài
Ví dụ: Các
em học bài thì phải đọc
đi đọc lại
cho đến khi thuộc bài
1/ Các công việc phải thực hiện nhiều lần
- Nhiều hoạt động được thực hiện lặp lại nhiều lần
- Có những hoạt đồng thường lặp
đi lặp lại với số lần nhất định và biết trước
- Chúng ta còn lặp lại những công việc với số lần không thể xác định trước
HĐ2: Câu lệnh lặp –
một lệnh thay cho
nhiều lệnh
GV: Mời HS lên
bảng vẽ một hình
vuông cạnh 1 đơn vị
độ dài (20cm) và yêu
cầu cả lớp theo dõi
bạn thực hiện các
thao tác khi vẽ
Yêu cầu 1 HS mô tả
các bước bạn vẽ trên
bảng
Vậy khi bạn vẽ 1
hình vuông được
- HS: lên bảng vẽ, cả lớp theo dõi
2/ Câu lệnh lặp – một lệnh thay cho nhiều lệnh
VD1: Thuật toán mô tả các bước để vẽ
hình vuông
Bước 1: k ← 0 (k là số đoạn thẳng đó
vẽ được)
Bước 2: k ← k+1 Vẽ đoạn thẳng 1 đơn vị độ dài và quay thước 900 sang phải
Bước 3: Nếu k<4 thì quay lại bước 2; ngược lại kết thc
k là biến đếm
Trang 3thực hiện bao nhiêu
thao tác? (HS trả lời
4 thao tác vẽ 4 đoạn
thẳng)
GV: Gợi ý thêm thao
tác quay thước
Các thao tác đó như
thế nào?
GV: Như vậy khi vẽ
hình vuông có những
thao tác lặp đi lặp lại
Thuật toán sau sẽ mô
tả các bước để vẽ
hình vuông
GV: Mô tả thuật toán
trên bảng
GV: Mô tả thuật toán
tính tổng các số tự
nhiên từ 1→ 100
Cấu trúc mô tả thuật
toán như trên gọi là
cấu trúc lặp
- 4 thao tác, Các thao tác giống nhau
VD2: Thuật toán tính thổng
S= 1+2+3+ … + 100
Bước 1: S ← 0; i ← 0
Bước 2: i← i + 1 Bước 3: nếu i ≤ 100, thì S ← S + i v quay lại bước 2; ngược lại kết thúc
i là biến đếm
Mô tả thuật toán trên gọi l cấu trúc lặp Mọi NNLT đều có cách chỉ thị cho máy tính thực hiện cấu trúc lặp chỉ với
1 câu lệnh Đó là câu lệnh lặp
HĐ3: Ví dụ về câu
lệnh lặp
GV: minh họa bẳng
NN Pascal cú pháp
câu lệnh <for … to
… do>
Lưu ý cho hs:
- Biến đếm là biến
đơn có kiểu nguyên
- Giá trị đầu và giá
trị cuối là các biểu
thức có cùng kiểu
với biến đếm và giá
trị cuối phải lớn hơn
giá trị đầu.
- HS: chú ý
bài
3/ Ví dụ về câu lệnh lặp
Cú Pháp câu lệnh lặp với số lần biết trước trong Pascal
for<biến đếm>:= <giá trị đầu> to
<giá trị cuối> do <câu lệnh>
trong đó: for, to, do là các từ khóa
Vd 1: Chươngng trình in ra màn hình
thứ tự lần lặp
var i:integer;
begin
for i:= 1 to 20 do writeln(‘Day la lan lap thu’,i); readln;
end.
Trang 4- HS nhận xét và so
sánh sự khác nhau ở
câu lệnh lặp trong 2
ví dụ trên
GV: Giải thích cho
HS tại sao vd2 trong
câu lệnh lặp cú
begin … end ;
- HS trả lời
- HS nhận xét
Vd2: chương trình ghi nhận vị trí 10 chữ O rơi từ trên xuống
ues crt;
var i:integer;
begin
clrscr;
for i:= 1 to 20 do
begin
writeln(‘O’);
delay(200);
end;
readln;
end.
*Lưu ý: Câu lệnh có sử dụng câu lệnh
ghép thì phải đặt trong hai từ khóa begin … end;
HĐ4: Tính tổng &
tích bằng câu lệnh
lặp
GV: trình bày đoạn
chương trình tính
tổng N số tự nhiên,
với N là số tự nhiên
được nhập từ bàn
phím
Theo CT tính tổng ta
cần khai bao nhiêu
biến? kiểu biến?
Trong 2 biến thì biến
nào có giá trị được
nhập từ bàn phím?
Trong trường hợp dữ
liệu có kiểu nguyên
rất lớn ta dùng
longint
- HS lắng nghe & trả lời
- HS trả lời
2 biến
- N được nhập từ bàn phím
- HS trả lời
4/ Tính tổng & tích bằng câu lệnh lặp
Vd 1: chương trình tính tổng N số tự nhiên đầu tiên, với N là số tự nhiên được nhập từ bàn phím
S = 1+2+3+ … + N
program Tinh_tong;
var N,i:integer;
S:longint;
begin
write(‘Nhap so N = ‘);
readln(N);
S:= 0;
for i:= 1 to N do
S:= S+i;
writeln(‘Tong cua’, N, ‘so tư
nhien dau tien S = ‘, S); readln;
end.
*Kiểu longint có phạm vi từ -231 đến
231 – 1
Vd 2: chương trình tính tích N số tự nhin, với N l số tự nhin được nhập từ bàn phím
N! = 1.2.3….N
Trang 5program Tinh_Giai_Thua;
var N,i:integer;
P:longint;
begin
write(‘Nhap so N = ‘);
readln(N);
P:= 1;
for i:= 1 to N do
P:= P*i;
writeln( N, ‘! = ‘, P);
readln;
end.
HĐ5: Củng cố
1/ Cấu trúc lặp trong
chương trình dng để
làm gì?
Pascal cấu trc lặp với
số lần lặp cho trước
được thể hiện với câu
lệnh nào?
HS: Lấy ví dụ
nghe
4 HƯỚNG DẪN VỀ NHÀ
- Nêu ví dụ trong cuộc sống của em có liên quan đến điều kiện và em thực hiện điều kiện đó như thế nào?
- Hướng dẫn về nhà
- Học bài xem lại các ví dụ, chuẩn bị thực hành 5
V Rút kinh nghiệm
- HS phải biệt phân tích một câu điều kiện trong thực tế
- Xác định được một câu điều kiện
- Chỉ ra được phần điều kiện, phần kết quả
Trang 6Tuần : 20
Tiết : 39+40
Ngày soạn: 09/01/2011 Ngày dạy : 10/01/2011 Bài TH 5: SỬ DỤNG LỆNH LẶP FOR DO
1 Kiến thức
- Hiểu hoạt động của câu lệnh lặp với số lần biết trước for…do trong Pascal
- Hiểu lệnh ghép trong Pascal
2 Kỹ Năng
- Viết được chương trình có sử dụng vòng lặp for…do
- Sử dụng được câu lệnh ghép
- Rèn luyện đọc hiểu chương trình có sử dụng vòng lặp for…do
3 Thái độ
- Có ý thức, kỹ luật, nghiêm túc, trình bày một vấn đề chặt chẽ, rõ ràng.
II Chuẩn bị
- GV: Soạn giáo án , SGK, máy chiếu, phòng máy…
- HS: Vở ghi, SGK, đọc trước nội dung bài học, tìm hiểu một số bài toán và chỉ ra thuật toán
III Phương pháp
- Vấn đáp, thuyết trình, trực quan
- Đặt vấn đề, giải quyết vấn đề
IV Hoạt động dạy và học
1 Ổn định lớp tổ chức lớp
- kiểm tra sĩ số lớp
- Ổn định trật tự
2 Kiểm tra bài cũ
- Nêu cấu trúc câu lệnh lặp đơn, câu lệnh lặp ghép, có biết ý nghĩa của câu lệnh lặp
- Trả lời:
3 Bài mới
- Trong bài học trước em đã được học về câu lệnh lặp, bài học hôm nay giúp chúng ta tìm hiệu thêm câu lệnh lặp sử dụng trong các chương trình như thế nào
Trang 7Hoạt động của GV Hoạt động của HS Nội dung
Bài 1 : Viết CT in ra màn
hình bảng nhân của một số
từ 1 tới 10, số được nhập từ
bàn phím và dừng màn hình
để có thể quan sát kết quả.
? Nêu cách giải?
- Cần nhân 1 số với các số từ
1 đền 10 Gọi số đó là số N
ta sẽ sử dụng vòng lặp xác
định từ giá trị đầu đến giá trị
cuối là bao nhiêu?
? yêu cầu mở rộng: in ra tất
cả bảng cửu chương từ 1 đến
10?
? giá trị N lúc này có phải
nhập nữa không?
?Giá trị N chạy từ bao nhiêu
đến bao nhiêu?
Vậy ta cần một vòng lặp N
từ 1 đến 10
GV: yêu cầu HS làm thành
hai bài khác nhau
? quan sát kết quả nhận
được? Kết quả có dễ dàng
quan sát không?
HS : đọc đề
HS : nêu phương án
HS : từ 1 đến 10
HS : nêu phương án
HS : không
HS : từ 1 đến 10
HS : lập trình và chạy chương trình
HS : sửa theo hướng dẫn của SGK và GV
HS : dịch và chạy chương trình
Bài 1( SGK/62)
a/ Khởi động Turbo Pascal và gõ chương trình
Program bangcuuchuong; uses crt;
var N,i:integer;
begin clrscr;
write('Nhap so N='); readln(N);
writeln;
writeln('Bang nhan ',N); writeln;
for i:=1 to 10 do writeln(N,' x ',i:2,' = ',N*i:3);
readln end
- In toàn bộ bảng cửu chương:
uses crt;
var N,i:integer;
begin clrscr;
writeln('Bang nhan ',N); writeln;
for N:=1 to 10 do for i:=1 to 10 do writeln(N,' x ',i:2,' = ',N*i:3);
readln end
b/ Ý nghĩa của các câu lệnh trong chương trình: Sau khi khai báo cho thư viện
Các biến chương trình thực hiện lệnh xóa màn hình
Đến lệnh nhập N (1 →
Trang 8Bài 2 : Chỉnh sửa chương
trình để làm đẹp kết quả trên
màn hình.
Kết quả của CT nhận được
trong bài 1 có 2 nhược điểm
sau đây :
- Các hàng kết quả sát
nhau nên khó đọc.
- Các hàng kết quả
không được cân đối với hàng
tiêu đề.
Nên sửa CT bằng cách chèn
thêm một hàng trống giữa
các hàng kết quả và đẩy các
hàng sang phải một khoảng
cách nào đó.
? để kết quả trông dễ nhìn ta
sử dụng Câu lệnh GotoXY(a,
b) có tác dụng đưa con trỏ về
cột a , hàng b. WhereX cho
biết số thứ tự của cột và
của hàng đang có con trỏ Ví
con trỏ về vị trí cột 5 của
hàng hiện tại
GV: Giúp HS sửa một số lỗi
Bài 3: Cũng như câu lệnh If ,
có thể dùng câu lệnh For
lồng trong một câu lệnh For
khác khi thực hiện lặp
HS : đọc đề
HS : nêu phương án
Dùng lệnh Writeln; để cách 1 dòng
Lệnh in thông báo Bang nhan của số được nhập vào
Thực hiện lệnh lặp với điều kiện trước, biến I chạy từ 1→10
In kết quả bảng nhân ra Kết thúc chương trình
C/ Chạy CT (Ctrl+F9) ta
nhập lần lượt các giá trị bằng 1, 2,…, 10
Bài 2: (SGK/63)
a/ CT đã chỉnh sửa câu lệnh lặp:
Uses crt;
Var N, i:integer;
Begin Clrscr;
Write (‘Nhap so N=’); Readln (N);
Writeln;
Writeln (‘Bảng nhan
‘,N);
Writeln;
For i:=1 to 10 do Begin
GotoXY (5,whereY); Writeln (N,’x’, i:2,’=’, N*i:3);
Writeln End;
Readln End
b/ Dịch và chạy CT với giá trị gõ vào từ bàn phím Quan sát kết quả nhận được trên màn hình
Bài 3: (SGK/64)
a/ Yêu cầu học sinh tự đọc chương trình, tìm hiểu ý nghĩa của các câu
Trang 9Sử dụng các câu lệnh
màn hình các số từ 0 đến 99
theo dạng bảng như hình
(Hình 38/ 64/SGK).
Bài 4: Tính tổng
S= 1+1/2+1/3+…+1/n
Với n nhập từ bàn phím.
? Bài này tương tự bài nào?
? Công thức tính tổng S được
tính như thế nào?
? Ban đầu giá trị S gán bằng
bao nhiêu?
? Ta dùng biến nào là biến
đếm? Giá trị dầu, giá trị cuối
bằng bao nhiêu?
HS : Trật tự, tập trung quan sát GV hướng dẫn
HS : Trả lời
HS : s:= s+1/(2*n+1)
HS : 0
HS : n
lệnh qua phần gợi ý trong cặp dấu ngoặc nhọn {} b/ Chạy CT:
Sử dụng thêm các câu lệnh GotoXY(a,b) để điều chỉnh bảng kết quả ra giữa màn hình
CT đã chỉnh sữa như sau: Program Tao_bang;
Uses crt;
Var i: byte;
j, X, Y: byte;
Begin Clrscr;
X:=18; Y:=7;
For i:= 0 to 9 do Begin
GotoXY (X,Y);
For j:= 0 to 9 do Write (10*i+j:4); Y:=Y+1;
Writeln;
End;
Readln End
Bài 4: (BT làm thêm)
Program Tinh_tong;
Uses crt;
Var i,n: integer;
s: real;
Begin Clrscr;
Write(' nhap n=');
Readln(n);
s:=0;
For i:= 1 to n do Begin
s:= s+1/(2*n+1); End;
Writeln(' tong la',s:3:2); Readln;
Trang 10Bài 5: In ra màn hình các số
có 4 chữ số mà tổng chữ số
hành trăm và hàng nghìn
bằng tổng các chữ số hàng
chục và hàng đơn vị.
? Nêu phương án giải quyết ?
? Bài toán yêu cầu những
gì ?
? Trước tiên cần phải tách
các số, sau đó kiểm tra điều
kiện tiếp theo ? nêu cách giải
tách các số
Bài 5: Giải bài toán cổ ‘ vừa
gà vừa chó’
? Tổng số gà và chó là bao
nhiêu con?
? Tổng số chân là bao nhiêu?
? Số gà cvà số chó chỉ có thể
trong khoảng từ bao nhiêu
con đến bao nhiêu con?
Ta sẽ cho số chó lần lượt
chạy từ 1 đến 24 tương ứng
với số chó là số gà = 36 –
chó và kiểm rta điều kiện
nếu gà *2 + chó*4 = 100 thì
hiện kết quả tìm được ?Hãy
lập trình theo gợi ý ?
GV : Tìm được kết quả bằng
bao nhiêu ?
HS : Nêu cách giải
HS : Trả lời
HS : Nêu các bước tách số
HS : gà + chó = 36 con
HS : gà *2 + chó*4 = 100
HS : từ 1 đến 24 con vì chỉ
có thể có ít hơn 100 : 4 =
25 con
HS : lập trình, chạy chương trình
Bài 5: (BT làm thêm)
Program In_so_bon_CS; Uses Crt;
Var a,b,c,d,i: Integer;
Begin Clrscr;
Write('cac so thoa man
la = ');
Writeln;
For i:= 1000 to 9999 do Begin
a:= i div 1000;
b:= (i mod 1000) div 100;
c:= (i mod 100) div 10; d:= i mod 10;
If ((b + a) = (d+ c)) then
Write( i,' ' );
End;
Readln;
End
Bài 5: (BT làm thêm)
Program BT_Ga_Cho; Var ga, cho:byte;
Begin For cho:= 1 to 24 do Begin
ga:= 36 - cho;
if( 2*ga + 4*cho = 100) then
writeln('Ga: ', ga, ', Cho: ',cho);
End;
Readln;
End
Trang 11Cũng Cố :
GV : Gọi HS đọc phần tổng
kết
GV : Yêu cầu HS đọc phần
đọc thêm
? Nêu cấu trúc câu lệnh lặp
đơn, câu lệnh lặp ghép, cho
biết ý nghĩa của câu lệnh lặp
? Biến đếm phải có điều kiện
gì khi khai báo biến ?
Hướng đẫn về nhà :
Tập lập trình một số BTVN
của tiết trước, buổi sau sẽ
chữa bài và chạy chương
trình , lập trình bài đọc thêm
để kiểm tra kết quả số Pi
Ôn tập kĩ vòng lặp xác
định, chuẩn bị bài sau học
vòng lặp không xác định
HS : trả lời