BƯỚC 2: Xác định yêu cầu, kiến thức, kỹ năng, thái độ 1 Kiến thức : Giúp HS - 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
Trang 1CHỦ ĐỀ : LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
GIÁ
BƯỚC 1: NỘI DUNG CẦN KIỂM TRA ĐÁNH GIÁ
Lặp với số lần chưa biết trước
BƯỚC 2: Xác định yêu cầu, kiến thức, kỹ năng, thái độ
1) Kiến thức : Giúp HS
- 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:
- Hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước while do…
trong Pascal
3) Thái độ:
- Thái độ học tập nghiêm túc, tích cực làm các dạng bài tập ứng dụng
Nội dung Loại Nhận biết Thông hiểu Vận dụng thấp Vận dụng cao
Lặp với số lần
chưa biết trước
Lý thuyết
HS mô tả
cú pháp câu lệnh lặp với số lần chưa biết trước,
ý nghĩa của câu lệnh lặp với số lần chưa biết trước
HS chỉ ra và giải thích được ý nghĩa của cú pháp câu lệnh lặp với số lần chưa biết trước
HS vận dụng câu lệnh lặp với
số lần chưa biết trước vào giải một số bài toán đơn giản
Thực hành
HS biết cách sử dụng câu lệnh lặp với số lần chưa biết trước
Biết sử dụng câu lệnh lặp với số lần chưa biết trước trong việc viết chương trình
Trang 2Nội dung câu hỏi Loại Nhận biết Thông
hiểu
Vận dụng thấp Vận dụng cao
1a, Em hãy lấy ví
dụ về một số việc
hàng ngày của
em
1b, Qua những ví
dụ các bạn vừa
lấy ra trên bảng
thì những công
việc nào chúng ta
đã biết trước số
lần lặp đi lặp lại
và công việc nào
chúng ta chưa biết
số lần lặp lại của
nó?
1c, em hãy giải
thích thuật toán
và sơ đồ khối ở ví
dụ 2
Lý thuyết
HS biết được thể nào là công việc lặp
đi lặp lại nhiều lần mà chưa biết được số lần lặp
HS biết xây dựng thuật toán và vẽ sơ
đồ khối
2a? Như vậy ta có
cú pháp câu lệnh
lặp với số lần
chưa biết trước
em hãy cho biết
“điều kiện” trong
cú pháp là gì?
2b Nhắc lại ý
nghĩa của câu
lệnh lặp với số lần
chưa biết trước?
2c ? Em hãy đọc
ví dụ 3 và phân
tích đề bài
2d Em hãy lên
chạy chương trình
và thay điều kiện
Lý thuyết
HS biết được điều kiện trong
cú pháp
HS nắm bắt được ý nghĩa của câu lệnh lặp với số lần chưa biết trước While<điều kiện> do <câu lệnh>;
HS hiểu được cách
sử dụng câu lệnh lặp với
số lần chưa biết trước trong viết chương trình
Hs hiểu được cách
sử dụng câu lệnh lặp với
số lần chưa biết trước
HS vận dụng được câu lệnh lặp với số lần chưa biết trước
để giải quyết bài toán
Trang 3sai_so = 0.003
thành 0.002 ;
0.001 ; 0.005 ;
2e Em hãy đọc ví
dụ 4 và thực hiện
trên máy rồi sau
đó cho biết khi
chạy chương trình
này, ta nhận được
giá trị ntn?
2f.Với ví dụ 4 ta
có thể sự dụng
câu lệnh for
to do được
rằng chúng ta
có thể sử dụng câu lệnh
while…do
thay cho câu lệnh for…do
Hs biết vận dụng câu lệnh lặp để giải quyết bài toán
HS nắm được cách chạy chương trình và biết được kết quả đúng
3.a Như thể nào
là lặp vô hạn ?
Lý thuyết
Thực hành
HS biết được lặp vô hạn là gì
HS hiểu được một
số lỗi lập trình cần tránh
HS biết được một số lỗi lập trình cần tránh
để vận dụng vào giải quyết bài toán
II.GIÁO ÁN CHÚ ĐỀ:
BÀI 8 LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
Trang 4I.MỤC TIÊU
1) Kiến thức : Giúp HS
- 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:
- Hiểu hoạt động của câu lệnh lặp với số lần chưa biết trước while do…
trong Pascal
3) Thái độ:
- Thái độ học tập nghiêm túc, tích cực làm các dạng bài tập ứng dụng
II CHUẨN BỊ
1 GV :: Giáo án, máy chiếu, máy tính
2 HS: Sách, vở đọc trước bài ở nhà
III TIẾN TRÌNH LÊN LỚP
1 Ổn định:
- ổn định lớp ,kiểm tra sĩ số
2 Bài cũ:
3 Bài mới:
a Đặt vấn đề:
Với bài toán trên, trong TP ta sử dụng vòng lặp for…to…do sẽ thực hiện
dễ dàng Nhưng nếu ta thay số 100 bởi n ( tính tổng n số tự nhiên đầu
tiên ) thì ta sẽ gặp nhiều khó khăn trong việc sử dụng vòng lặp for…to…
do bởi lúc này số lần lặp không biết trước Vậy ta phải làm như thế nào ?
Giới thiệu bài mới
b Triển khai bài:
Hoạt động 1 Các hoạt động lặp với số
lần chưa biết trước
Gv : : y/c hs đọc ví dụ 1sgk/67
Gv : : Phân tích ví dụ
Hs : 2-3 hs đọc ví dụ sgk
Hs : Chú ý lắng nghe
Gv : : Hướng dẫn hs xây dựng thuật toán
Hs : Chú ý nghe
Gv : : Chạy tay cho học sinh
xem ( Chỉ nên chạy tay thử từ 1 đến 10 )
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 Tn nhỏ nhất lớn hơn 1000?
+ Hs : Nghe giáo viên hướng dẫn, sau
đó tự xây dựng thuật toán
Giải :
Trang 5Hs ghi vở ví dụ 2
Gv : : Giới thiệu sơ đồ khối
Hoạt động 2: Ví dụ về lệnh lặp với số
lần chưa biết trước
Gv : : Nêu nhận xét
Gv : : Có thể sử dụng lệnh lặp với số lần
lặp chưa biết trước trong các chương
trình lập trình Sau đây ta xét câu lệnh
và ví dụ trong TP
Gv : : Giới thiệu cú pháp lệnh
while … do ….;
Gv : : xét ví dụ 3
Kí hiệu S là tổng cần tìm và ta có thuật
toán như sau:
+ Bước 1 S ← 0, n ← 0
+ Bước 2 Nếu S ≤ 1000, n ← n + 1;
ngược lại chuyển tới bước 4
+ Bước 3 S ← S + n và quay lại bước
2
+ Bước 4 In kết quả : S và n là số tự
nhiên nhỏ nhất sao cho S > 1000 Kết
thúc thuật toán
* Ta có sơ đồ khối :
* 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ệnh lặp với số lần chưa biết trước
Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng:
while <điều kiện> do <câu
lệnh>;
trong đó:
- điều kiện thường là một phép
so sánh;
- câu lệnh có thể là câu lệnh đơn
giản hay câu lệnh ghép
Câu lệnh lặp này được thực hiện như sau:
Bước 1 : Kiểm tra điều kiện.
Bước 2 : Nếu điều kiện SAI, câu lệnh sẽ
bị bỏ qua và việc thực hiện lệnh lặp kết
Trang 6Chúng ta biết rằng, nếu n càng lớn thì
1
n
càng nhỏ, nhưng luôn luôn lớn hơn 0
Với giỏ trị nào của n thỡ
1
n < 0.005 hoặc
1
n < 0.003 ?
Gv : đưa phim trong ví dụ 3 )
Gv : : giới thiệu chương trình mẫu sgk
( GV in chương trinh mẫu trên
Gv : : Chạy tay cho học sinh xem
Gv : : Yêu cầu học sinh mở máy tính và
mở chương trình ví dụ 3 ( giáo viên
chuẩn bị chương trình mẫu và đưa lên
các máy )
Hs : thực hiện
Gv : : Cho học sinh chạy chương trình
trên máy
G : Yêu cầu hs thay điều kiện sai_so =
0.003 thành 0.002 ; 0.001 ; 0.005 ;
trình Pascal dưới đây thể hiện thuật
toán tính số n trong ví dụ 2
+ - Gv : : ta tiếp tục xét các ví dụ mà
trong chương trình có câu lệnh với số lần
lặp chưa biết trước
thúc Nếu điều kiện đúng, thực hiện câu
lệnh và quay lại bước 1.
Ví dụ 3
+ Hs : Đọc ví dụ 3 + Hs : quan sát
Với giá trị nào của n ( n>o ) thì <
0.005 hoặc < 0.003? Chương trình dưới
đây tính số n nhỏ nhất để nhỏ hơn một
sai số cho trước :
uses crt;
var x: real;
n: integer;
const sai_so=0.003;
begin
clrscr;
x:=1; n:=1;
while x>=sai_so do begin n:=n+1;
x:=1/n end;
writeln('So n nho nhat de 1/n < ',sai_so:5:4, 'la ',n);
readln
end.
Ví dụ 4 Chương trình Pascal dưới đây
thể hiện thuật toán tính số n trong ví dụ
2:
var S,n: integer;
begin
S:=0; n:=1;
while S<=1000 do begin n:=n+1; S:=S+n end;
writeln('So n nho nhat de tong >
1000 la ',n);
writeln('Tong dau tien > 1000 la ',S);
end.
Trang 7+ Hs : chú ý nghe
+ Hs : thực hiện
+ - Gv : : Chạy tay cho học sinh xem
+ - Gv : : Cho học sinh chạy chương
trình trên máy
+ - Gv : : chạy chương trình này, ta nhận
được giá trị ntn?
+ Hs : Nếu chạy chương trình này ta sẽ
nhận được n = 45 và tổng đầu tiên lớn
hơn 1000 là 1034
Ví dụ 5 Viết chương trình tính tổng
+ Hs : quan sát
Để viết chương trình tính tổng ta có thể
sử dụng lệnh lặp với số lần lặp biết trước
for…do:
T:=0;
for i:=1 to 100 do T:=T+1/i;
writeln(T);
+ Hs : chú ý nghe và tự chạy tay lại
+ Hs : Kết quả bằng nhau
Nếu sử dụng lệnh lặp while…do, đoạn
chương trình dưới đây cũng cho cùng
một kết quả:
T:=0;
i:=1;
while i<=100 do begin T:=T+1/i; i:=i+1
end;
writeln(T);
* Nhận xét : Ví dụ này cho thấy rằng
chúng ta có thể sử dụng câu lệnh
while…do thay cho câu lệnh for…do.
Viết chương trình tính tổng
+ - Gv : : Cho học sinh quan sát
+ - Gv : : Chạy tay ( cả hai chương
trình ) cho học sinh xem
+ - Gv : : so sánh kết quả khi chạy hai
chương trình
+ - Gv : : Ví dụ này cho thấy rằng chúng
ta có thể sử dụng câu lệnh while…do
thay cho câu lệnh for…do
Hoạt động 4: Lặp vô hạn lần – Lỗi lập
3 Lặp vô hạn lần – Lỗi lập trình cần tránh
Khi viết chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc
+ Hs : Chú ý nghe
Trang 8trình cần tránh
+ - Gv : : Giới thiệu phần 3
+ - Gv : : Khi viết chương trình sử dụng
cấu trúc lặp cần chú ý tránh tạo nên vòng
lặp không bao giờ kết thúc
+ Hs : Chú ý nghe
+ - Gv : : Chẳng hạn, chương trình dưới
đây sẽ lặp lại vô tận:
+ - Gv : : Trong chương trình trên, giá
trị của biến a luôn luôn bằng 5, điều kiện
a<6 luôn luôn đúng nên lệnh writeln('A')
luôn được thực hiện
Do vậy, khi thực hiện vòng lặp, điều
kiện trong câu lệnh phải được thay đổi để
sớm hay muộn giá trị của điều kiện được
chuyển từ đúng sang sai Chỉ như thế
chương trình mới không "rơi" vào những
"vòng lặp vô tận"
var a:integer;
begin
a:=5;
while a<6 do writeln('A');
end.
4 Củng cố:
- Giáo viên hệ thống lại toàn bộ kiến thức đã học
5 Dặn dò:
- Học bài theo sách giáo khoa và vở ghi
- Làm bài tập 1, 2, 3 SGK trang71
Đọc trước mục 3,4 sách giáo khoa
IV.RÚT KINH NGHIỆM: