* Nhận xét : Để viết chương trình chỉ dẫn máy tính thực hiện các hoạt động lặp như trong các ví dụ trên, ta có thể sử dụng câu lệnh có dạng lặp với số lần chưa biết trước 2.. Ví dụ về lệ[r]
Trang 1Tuaàn : 20 – Tieát 39,40
Ngày dạy :
Bài 7: CÂU LỆNH LẶP.
I/ Mục tiêu:
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 hoạt động của câu lệnh với số lần biết trước for do trong Pascal
Viết đúng được lệnh for do trong một số tình huống đơn giản
Hiểu lệnh ghép trong Pascal
Thái độ nghiêm túc cẩn thận
II/ Chuẩn bị:
Gv: Tài liệu tin lớp 8
HS: SGK tin 8, vở ghi
III/ Tổ chức hoạt động dạy và học
1/Ổn định :
2 Kiểm tra bài cũ
3 Bài mới
Hoạt động 1: Các công việc phải thực hiện nhiều lần
GV: giới thiệu : Trong cuộc sống hằng ngày,
nhiều hoạt động đượ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à
- Các em học bài thì phải đọc đi đọc lại
nhiều lần cho đến khi thuộc bài
HS lắng nghe
GV: Hãy cho thêm một vài ví dụ trong thực tế
trong đời sống hằng ngày mà ta phải thực hiện
các thao tác được lặp đi lặp nhiều lần?
Hs cho ví dụ
Gv: Khi viết chương trình 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
1 Các công việc phải thực hiện nhiều lần
( SGK)
Hoạt động 2: Câu lệnh lặp – một lệnh thay cho nhiều lệnh
Gv: Gọi 1 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 trên bảng
2/ Câu lệnh lặp – một lệnh thay cho nhiều lệnh
Trang 2HS: 1hs lên bảng vẽ, cả lớp theo dõi
GV: 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 đã thực hiện bao
nhiêu thao tác? (hs có thể chỉ trả lời 4 thao tác là
vẽ 4 đoạn thẳng)
HS: trả lời (4 thao tác)
GV: Gợi ý thêm thao tác quay thước
Các thao tác đó như thế nào?
HS: trả lời : Các thao tác giống nhau
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
GV: Cấu trúc mô tả thuật toán như trên gọi là
cấu trúc lặp
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 thúc
k là biến đếm
Vd2: Thuật toán tính
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 ngôn ngữ lập trình đề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
Hoạt động3: Ví dụ về câu lệnh lặp
Gv: minh họa bẳng ngôn ngữ Pascal cú pháp câu
lệnh for … to … do
HS: Quan sát, lắng nghe, ghi nhận
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;
- câu lệnh có thể là câu lệnh đơn giản
hay câu lệnh ghép
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: Chuong trình in ra màn hình thứ
tự lần lặp
var i:integer;
begin
for i:= 1 to 20 do
Trang 3GV: Cho hs nhận xét và so sánh sự khác nhau ở
câu lệnh lặp trong hai vd trên?
HS: Nhận xét
Gv: Giải thích cho học tại sao vd2 trong câu
lệnh lặp có begin … end
HS: Quan sát, lắng nghe
writeln(‘Day la lan lap
thu’,i);
readln;
end.
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
Hoạt động 4:Tính tổng và 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 (Pascal)
Theo công thức tính tổng ta cần khai bao nhiêu
biến? kiểu biến?
HS: trả lời
GV: Trong 2 biến thì biến nào có giá trị được
nhập từ bàn phím?
4 Tính tổng và 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.
Trang 4GV: Trong trường hợp dữ liệu có kiểu nguyên
rất lớn ta dùng longint
*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ự nhiên, với N là số tự nhiên được nhập từ bàn phím
N! = 1.2.3….N
program 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.
IV Củng cố, hướng dẫn học ở nhà
1 Củng cố
- Hãy cho một vài ví dụ trong thực tế trong đời sống hằng ngày mà ta phải thực
hiện các thao tác được lặp đi lặp nhiều lần?
- ThÕ nµo lµ cÊu tróc lÆp?
- Cấu trúc lặp trong chương trình dùng để làm gì?
- Trong ngôn ngữ lập trình Pascal cấu trúc lặp với số lần lặp cho trước được thể hiện với câu lệnh nào?
2 Hướng dẫn học
- Học bài ,xem lại các ví dụ, chuẩn bị bài tập
Tuaàn : 21 – Tieát 41,42
Trang 5Ngày dạy :
BÀI TẬP
I Mục tiờu
Củng cố lại kiến thức trong bài 7 về cõu lệnh lặp thụng qua việc làm bài tập tại lớp
và ở nhà của HS
Thỏi độ nghiờm tỳccẩn thận
II Chuẩn bị :
GV: SGK
HS: Vở ghi, vở bài tập, SGK, SBT
III Tổ chức hoạt động dạy và học
1 Ổn định
2 Kiểm tra bài cũ
- Cấu trỳc lặp trong chương trỡnh dựng để làm gỡ?
- Trong ngụn ngữ lập trỡnh Pascal cấu trỳc lặp với số lần lặp cho trước được thể hiện với cõu lệnh nào?
3 Bài mới
GV: Nờu cầu hỏi
Khi thực hiện câu lệnh lặp, chương trình
kiểm tra một điều kiện Với lệnh lặp
for <biến đếm> := <giá trị đầu> to
<giá trị cuối> do <câu lệnh>;
của Pascal, điều kiện cần phải kiểm tra là gì?
HS: Trả lời
GV: Nờu BT :
Bài 1: Sau khi thực hiện đoạn chương trỡnh
trờn giỏ trị của J là bao nhiờu ?
J:=0;
for i:=0 to 5 j:=j+2;
HS: Trả lời
GV:
Chương trình Pascal sau đây thực hiện gì?
var i: integer;
begin
for i:=1 to 1000 do;
end.
HS: trả lời
GV: yờu cầu HS làm BT 3( SGK)
Bài 5: (SGK) Cỏc cõu lệnh Pascal sau cú
hợp lệ khụng ? vỡ sao ?
Bài 1:
Sau khi thực hiện đoạn chương trỡnh trờn giỏ trị của j là 12
Bài 2:
Đoạn chương trỡnh àny khụng thực hiện
gỡ cả
Bài 3:
Trang 6a) for i:=100 to 1 do writeln(‘A’);
b) for i:=1.5 to 10.5 do writeln(‘A’);
c) for i=1 to 10 do writeln(‘A’);
d) for i:=1 to 10 do writeln(‘A’);
d) var x:real; begin for x:=1 to 10 do
writeln(‘A’); end
GV: Nêu BT
Bài 3: Hãy mô tả thuật toán để tính tổng sau
đây ?
1.3 2.4 3.5 ( 2)
A
n n
HS: Thảo luận, trả lời
GV: nhận xét, sửa sai
GV: nêu BT : Viết thuật toán và chương trình
tính luỹ thừa bậc n của x
HS: Thảo luậu theo đôi bạn viết thuật toán ,
chương trình trình bày thuật toán ,
chương trình
GV: nhận xét, sửa sai
Trả lời:
Trừ d), tất cả các câu lệnh đều không hợp
lệ:
a) Giá trị đầu phải nhỏ hơn giá trị cuối; b) Các giá trị đầu và giá trị cuối phải là số
nguyên;
c) Thiếu dấu hai chấm khi gán giá trị đầu; d) Thừa dấu chấm phẩy thứ nhất, nếu như
ta muốn lặp lại câu lệnh writeln('A') mười
lần, ngược lại câu lệnh là hợp lệ;
e) Biến x đã được khai báo như là biến có
dữ liệu kiểu số thực và vì thế không thể dùng để xác định giá trị đầu và giá trị cuối trong câu lệnh lặp
Bài 4:
Thuật toán tính tổng
A =
) 1 (
1
5 3
1 4 2
1 3 1
1
n n
Bước 1 Gán A 0, i 1
Bước 2 A 1
( 2)
i i .
Bước 3 i i + 1
Bước 4 Nếu i n, quay lại bước 2 Bước 5 Ghi kết quả A và kết thúc
thuật toán
Bài 5:
Bài 1 Thuật toán:
Bước 1 Nhập các số n và x
Bước 2 A 1, i 0 (A là biến lưu luỹ thừa bậc n của x)
Bước 3 i i + 1, A A.x
Bước 4 Nếu i < n, quay lại bước 3 Bước 5 Thông báo kết quả A là luỹ
thừa bậc n của x và kết thúc
thuật toán
Chương trình Pascal có thể như sau:
var n,i,x: integer; a: longint;
begin
write('Nhap x='); readln(x);
Trang 7write('Nhap n='); readln(n); A:=1;
for i:=1 to n do A:=A*X;
writeln(x,' mu ',n,' bang ',A);
end.
IV Củng cố, hướng dẫn học ở nhà
1 Củng cố
2 Hướng dẫn học
- Học bài
- Làm lại cácbài tập
- Xem trước nội dung bài thực hành 5, giờ sau thực hành tại phòng máy
Tuaàn : 22 – Tieát 43,44
Trang 8Ngày dạy :
Bài thực hành 5: Sử dụng lệnh lặp for …do
I Mục tiêu:
- Vận dụng kiến thức của vòng lặp for… do, câu lệnh ghép để viết chương trình, tìm hiểu
câu lệnh gotoxy(), where<>, lệnh for lồng trong for
- Viết chương trình có sử dụng vòng lặp for … do;
Sử dụng câu lệnh ghép trong chương trình;
Rèn luyện kỹ năng đọc hiểu chương trình có sử dụng vòng lặp for … do
- Thái độ học tập nghiêm túc, tích cực làm các bài thực hành
II Chuẩn bị của GV, HS
GV: - Giáo án, SGK, phòng máy, phần mềm pascal
HS: - SGK, vở ghi, bút
III Tổ chức hoạt động dạy và học
1 Ổn định
2 Kiểm tra bài cũ
Hãy nêu cấu trúc câu lệnh lặp ? Cho ví dụ minh hoạ?
3 Bài mới: Chúng ta đã nghiên cứu lý thuyết về vòng lặp for … do để biết vòng lặp
chạy như thế nào thì hôm nay chúng ta cùng nhau đi vào tiết thực hành Giáo viên ghi tên bài học lên bảng
Hoạt động 1: Viết chương trình cho các bài tập đã cho về nhà.
GV: yêu cầu HS viết chương trỡnh : ”Tính tổng
của n số tự nhiên đầu tiên”vào máy
- HS: gõ chương trình, chạy thử chương trình,
và báo cáo kết quả
- GV: Hỗ trợ học sinh trong quá trình thực
hành
- Sau khi kết quả chạy chương trình đã
đúng, gv yêu cầu học sinh chữa bài của mình
đã làm ở nhà cho đúng theo chương trình đã
chạy
GV: yờu cầu HS: Viết chương trình tìm xem có
Bài 1: Tính tổng của n số tự nhiên đầu tiên
Program tinh_tong;
Uses crt;
Var i, n: integer; tong: longin; Begin
Clrscr;
Tong:=0;
Writeln(‘Nhap vao so n’); readln(n);
For i:=1 to n do Tong: = Tong+i;
Writeln(‘Tong của’, n,’so tu nhien dautien la’,tong);
Readln;
End
2 Viết chương trình tìm xem có bao nhiêu
số dương trong n số nhập vào từ bàn phím
Trang 9bao nhiêu số dương trong n số nhập vào từ bàn
phím
HS: Viết chương trỡnh
GV: Quan sỏt, hướng dẫn , sửa sai cho HS
Program tinh_so_cac_so_duong;
Uses crt;
Var i,A, dem, n: integer; Begin
Clrscr;
Dem:=0;
Writeln(‘Nhap vao so n’); readln(n); For i:=1 to n do
begin writeln(‘nhap vao so thu’,i); readln(A);
if A>0 then dem:=dem+1;
end;
Writeln(‘So cac so duong la’,dem); Readln;
End
Hoạt động 2: Bảng cửu chương.
- GV: Đưa ra nội dung của bài toán
- HS: Nghiên cứu bài toán, tìm input và
output
- GV: yêu cầu học sinh đọc hiểu chương
trình
- HS: đọc, phân tích câu lệnh tìm hiểu hoạt
động của chương trình
- GV: yêu cầu một học sinh đứng tại vị trí
trình bày hoạt động của chương trình, các
nhóm khác cùng tham gia phân tích
- HS: tham gia hoạt động của giáo viên
- GV: yêu cầu học sinh lập bảng hoạt động
của chương trình theo mẫu:
Giả sử N=2:
Bước i i<=10 Writeln(n,’.’,i,’=’,n*i)
- HS: các nhóm lập bảng và đại diện nhóm
báo cáo kết quả
- GV: nhận xét
- GV: cho chương trình chạy trên máy, yêu
cầu học sinh quan sát kết quả
HS: Thực hiện
Bài 2: Viết chương trình in ra màn hình
bảng nhân của một số từ 1 đến 9, và dừng màn hình để có thể quan sát kết quả Program Bang_cuu_chuong;
Uses crt;
Var i, n: integer; Begin
Clrscr;
Writeln(‘Nhap vao so n’); readln(n); Writeln(‘Bang nha’,n);
Writeln;
For i:=1 to 10 do Writeln(n,’x’,i:2,’=’,n*i:3);
Readln;
End
Hoạt động 3: Làm đẹp màn hình kết quả bằng lệnh gotoxy, where
- Giáo viên cho chạy kết quả của bài thực
hành Bang_cuu_chuong Yêu cầu học
Bài 2 sgk (T63) a) Giới thiệu lệnh gotoxy(), wherex
Trang 10sinh quan sát kết quả và nhận xét
khoảng cách giữa các hàng, cột
- HS: quan sát và đưa ra nhận xét
- ? Có cách nào để khoảng cách giữa các
hàng và các cột tăng lên?
- GV: Giới thiệu câu lệnh gotoxy và
where
- GV: yêu cầu học sinh mở chương trình
Bang_cuu_chương và sửa lại chương
trình theo bài trên màn hình của giáo
viên
- HS: gõ chương trình vào máy, sửa lỗi
chính tả, chạy chương trình, quan sát kết
quả
- GV: yêu cầu học sinh quan sát kết quả
và so sánh với kết quả của chương trinh
khi chưa dùng lệnh gotoxy(5, wherey)
- HS: quan sát và nhận xét
- Gotoxy(a,b) Trong đó: a là chỉ số cột, b là chỉ số hàng
- ý nghĩa của câu lệnh là đưa con trỏ về cột a hàng b
- Wherex: cho biết số thứ tự của cột, wherey cho biết số thứ tự của hàng
* Lưu ý: Phải khai báo thư viện crt trước khi sử dụng hai lệnh trên
a) Chỉnh sửa chương trình như sau:
Program Bang_cuu_chuong;
Uses crt;
Var i, n: integer; Begin
Clrscr;
Writeln(‘Nhap vao so n’); readln(n);
Writeln(‘Bang nha’,n);
Writeln;
For i:=1 to 10 do begin
gotoxy(5, wherey);
Writeln(n,’x’,i:2,’=’,n*i:3);
Readln;
End
Hoạt động 4: sử dụng lệnh For lồng trong for
- GV: giới thiệu cấu trúc lệnh for lồng,
hướng dẫn học sinh cách sử dụng lệnh
- HS: ghi chép cấu trúc và lĩnh hội
- GV: đưa nội dung chương trình bài thực
hành 3 lên màn hình, yêu cầu học sinh
đọc chương trình, tìm hiểu hoạt động
của chương trình
- HS: hoạt động theo nhóm, tìm hiểu hoạt
Bài 3 SGK (T64)
a) Câu lệnh for lồng trong for
- For<biến đếm1:= giá trị đầu> to
<giá trị cuối> do
For<biến đếm 2:=giá trị đầu> to
<giá trị cuối> do
< câu lệnh>;
Program Tao_bang;
Trang 11động của chương trinh, đại diện của
nhóm báo cáo kết quả thảo luận
- GV: cho chạy chương trình
- HS : quan sát kết quả trên màn hình
Uses crt;
Var i,j: byte; Begin
Clrscr;
For i:=1 to 9 do Begin
For j:=0 to 9 do Writeln(10*i+j:4);
Writeln;
End;
Readln;
End
IV Củng cố , hướng dẫn học ở nhà
1 Củng cố
TỔNG KẾT
1 Cấu trúc lặp với số lần lặp biết trước được thể hiện bằng câu lệnh Pascal for…do
2 Giống như các câu lệnh rẽ nhánh if…then, các câu lệnh for…do cũng có thể lồng trong nhau Khi đó các <biến đếm> trong các câu lệnh lặp phải khác nhau.
3 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à WhereY cho biết số thứ tự của hàng đang có con trỏ
4 Có thể kết hợp câu lệnh GotoXY(a,b) với các hàm chuẩn WhereX và WhereY để
điều khiển vị trí của con trỏ trên màn hình
2 Hướng dẫn học
-Nhận xét rút kinh nghiệm giờ thực hành
- Y/c học sinh về nhà sử dụng lệnh gotoxy để chỉnh sửa lại bài thực hành số 3 cho kết quả
in ra màn hình đẹp
Tuaàn : 23 – Tieỏt 45,46
Trang 12Ngày dạy :
Bài 8: LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC I.Mục tiêu:
1.Kiến thức
- 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;
2 Kĩ năng
- Nhận biết được đâu là hoạt động lặp với số lần chưa biêt trước.
3 Thái độ
- Nghiêm túc trong quá trình nghiên cứu và thực hành
II Chuẩn bị
GV: SGK, máy chiếu, phim trong các ví dụ về chương trình
HS: Xem trước bài ở nhà
III Tổ chức hoạt động dạy và học
1 Ổn định
2 Kiểm tra bài cũ
Viết thuật toán tính tổng 100 số tự nhiên đầu tiên 1,2,3,…,99,100
Trả lời
Bước 1 SUM 0; i 0.
Bước 2 i i + 1.
Bước 3 Nếu i ≤ 100, thì SUM SUM + i và quay lại bước 2.
Bước 4 Thông báo kết quả và kết thúc thuật toán.
3 Bài mới
Hđ 1
GV : y/c hs đọc ví dụ 1sgk/67
HS : 2-3 hs đọc ví dụ sgk
GV : Phân tích ví dụ
HS : chú ý lắng nghe
GV : Hướng dẫn hs xây dựng thuật toán
HV : Nghe giáo viên hướng dẫn, sau đó tự
xây dựng thuật toán
GV : Chạy tay cho học sinh xem ( Chỉ nên
chạy tay thử từ 1 đến 10 )
Hs : Chú ý nghe
Hs ghi vở ví dụ 2
1 Các hoạt động lặp với số lần chưa biết trước
a/ Ví dụ 1(sgk).
b/ Ví dụ 2 : Nếu cộng lần lượt n số tự nhiên
đầu tiên (n = 1, 2, 3, ), Cần cộng bao nhiêu số
tự nhiên đầu tiên để ta nhận được tổng T n nhỏ nhất lớn hơn 1000?