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í
Trang 1Tuần 26 Ngày soạn: 23/02/09
Tiết 49
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;
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
2 Kỹ năng
Viết chương trình Pascal dùng câu lệnh lặp while do… để thể hiệncấu trúc lặp với
số lần chưa biết trước
Vận dụng được: cấu trúc lặp với số lần chưa biết trước để mô tả thuật toán, câu lệnh lặp với số lần chưa biết trước để viết chương trình trong Pascal
Vận dụng thành thạo: kiến thức, kỹ năng, tri thức, phương pháp được học vào giải bài tập
3 Tư duy và thái độ
Cẩn thận, chính xác
Tập trung cao độ, nghiêm túc trong giờ học
Phát triển tư duy suy luận logic, trí tưởng tượng và tạo được hứng thú trong học tập
II - PHƯƠNG PHÁP
Gợi mở vấn đáp thông qua hoạt động điều khiển
III CHUẨN BỊ
1 Giáo viên: Giáo trình, bảng phụ, máy tính, máy chiếu (nếu có).
2 Học sinh: Kiến thức cũ, sách, vở.
IV - TIẾN TRÌNH BÀI GIẢNG
1 - ỔN ĐỊNH
2 - KIỂM TRA BÀI CŨ:
- Nêu câu hỏi - Nghe, hiểu Câu hỏi : Nêu cú pháp câu lệnh lặp với số lần chưa
biết trước trong Pascal? Câu lệnh lặp này được
Trang 2- Gọi một HS lên
bảng
- Gọi HS nhận xét
- Nhận xét cho
điểm
và tìm câu trả lời
- Lên bảng trả lời câu hỏi kiểm tra bài cũ
- Nhận xét câu trả lời của bạn
thực hiện như thế nào?
Trả lời:
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>;
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 thúc Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
3 - BÀI MỚI
*
Đ ặt vấn đ ề vào bài mới: Các em đã biết câu lệnh lặp với số lần chưa biết trước trong Pascal, để hiểu thêm về câu lệnh này chúng ta cùng tìm hiểu thêm một số ví dụ
1 Các hoạt động lặp với
số lần chưa biết trước
- Y/c hs đọc ví dụ 1 sgk/67
- Phân tích ví dụ
- Y/c hs đọc ví dụ 2 sgk/67
- Phân tích ví dụ
- Hướng dẫn hs xây dựng thuật
toán
- Chạy tay cho học sinh xem
(Chỉ nên chạy tay thử từ 1 đến
10)
- Giới thiệu sơ đồ khối
- Nêu nhận xét
- 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
- Đọc ví dụ sgk
- Chú ý lắng nghe
- Đọc ví dụ sgk
- Chú ý lắng nghe
- Nghe giáo viên hướng dẫn, sau đó
tự xây dựng thuật toán
- Chú ý nghe
- Ghi vở ví dụ 2
- Quan sát
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?
Giải :
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 :
Trang 3ta xét câu lệnh và ví dụ trong TP
* 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
- Giới thiệu cú pháp lệnh
while … do ….;
- Treo bảng phụ viết sẵn ví dụ 3
Chú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 ?
- Treo bảng phụ giới thiệu
chương trình mẫu sgk,
- Chạy tay cho học sinh xem
- Chú ý nghe và ghi chép
- Đọc ví dụ 3 (bảng phụ)
- Quan sát
- Chú ý nghe và tự chạy tay lại
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 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
Với giá trị nào của n ( n>o ) thì
1
n < 0.005 hoặc 1
n < 0.003?
Chương trình dưới đây tính số n
nhỏ nhất để 1
n nhỏ hơn một sai số cho trước :
uses crt;
var x: real;
n: integer;
const sai_so=0.003;
begin
Trang 4-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
máy tính )
- Cho học sinh chạy chương trình
trên máy
- Yêu cầu hs thay điều kiện
sai_so = 0.003 thành 0.002 ;
0.001 ; 0.005 ;
-Thực hiện
- Thực hiện
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.
4 - CỦNG CỐ
-Nêu câu hỏi
- Gọi HS đứng tại chỗ trả lời
- Nhận xét và cho đáp án
đúng
- Nghe, hiểu
và tìm câu trả lời
- Đứng tại chỗ trả lời
Nêu cú pháp câu lệnh lặp chưa biết trước
số lần lặp trong Pascal?
Trả lời:
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
5 - HƯỚNG DẪN VỀ NHÀ
- Qua bài học HS cần:
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 while do… trong Pascal
Viết chương trình Pascal dùng câu lệnh lặp while do… để thể hiệncấu trúc lặp với
số lần chưa biết trước
Vận dụng được: cấu trúc lặp với số lần chưa biết trước để mô tả thuật toán, câu lệnh lặp với số lần chưa biết trước để viết chương trình trong Pascal
Vận dụng thành thạo: kiến thức, kỹ năng, tri thức, phương pháp được học vào giải bài tập
- Bài tập về nhà: bài 1,2 trang 71
- Hướng dẫn bài tập về nhà: bài 1,2 trang 71
- Ôn lại bài, chuẩn bị trước cho phần tiếp theo
Trang 5V - RÚT KINH NGHIỆM:
Trang 6
Tuần 26 Ngày soạn: 25/02/09
Môn học: Tin học 8
Bài 8 : LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (TT)
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;
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
2 Kỹ năng
Viết chương trình Pascal dùng câu lệnh lặp while do… để thể hiệncấu trúc lặp với
số lần chưa biết trước
Vận dụng được: cấu trúc lặp với số lần chưa biết trước để mô tả thuật toán, câu lệnh lặp với số lần chưa biết trước để viết chương trình trong Pascal
Vận dụng thành thạo: kiến thức, kỹ năng, tri thức, phương pháp được học vào giải bài tập
3 Tư duy và thái độ
Cẩn thận, chính xác
Tập trung cao độ, nghiêm túc trong giờ học
Phát triển tư duy suy luận logic, trí tưởng tượng và tạo được hứng thú trong học tập
II - PHƯƠNG PHÁP
Gợi mở vấn đáp thông qua hoạt động điều khiển
III CHUẨN BỊ
1 Giáo viên: Giáo trình, bảng phụ, máy tính, máy chiếu (nếu có).
2 Học sinh: Kiến thức cũ, sách, vở.
IV - TIẾN TRÌNH BÀI GIẢNG
1 - ỔN ĐỊNH
2 - KIỂM TRA BÀI CŨ:
- Nêu câu hỏi - Nghe, hiểu Câu hỏi : Nêu cú pháp câu lệnh lặp với số lần chưa
Trang 7- Gọi một HS lên
bảng
- Gọi HS nhận xét
- Nhận xét cho
điểm
và tìm câu trả lời
- Lên bảng trả lời câu hỏi kiểm tra bài cũ
- Nhận xét câu trả lời của bạn
biết trước trong Pascal? Câu lệnh lặp này được thực hiện như thế nào?
Trả lời:
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>;
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 thúc Nếu điều kiện đúng, thực hiện câu lệnh và quay lại bước 1.
3 - BÀI MỚI
*
Đ ặt vấn đ ề vào bài mới: Các em đã biết câu lệnh lặp với số lần chưa biết trước trong Pascal, để hiểu thêm về câu lệnh này chúng ta cùng tìm hiểu thêm một số ví dụ
2 Ví dụ về lệnh lặp với số lần
chưa biết trước(tt)
- Đưa ra bài toán: tính tổng Tn=
1+2+3+…+n sao cho Tn nhỏ nhất
lớn hơn 20
? Thuật toán?
- Mô ph ng thu t toánỏng thuật toán ật toán
Bước 1 2 3 4 5 6
T n <=20 Đ Đ Đ Đ Đ Đ S
- Chiếu chương trình của bài
toán trên cho HS quan sát
var S,n: integer;
begin
S:=0; n:=0;
while S<=20 do
begin n:=n+1; S:=S+n end;
writeln('So n nho nhat de tong > 20 la ',n);
writeln('Tong dau tien > 20 la ',S);
end.
- Giải thích từng dòng lệnh
- Tương tự, yêu cầu HS viết
chương trình thể hiện thuật toán
tính số n trong ví dụ 2
- Yêu cầu HS chạy chương trình
- Nghe hiểu yêu cầu bài toán
- Đưa ra thuật toán
- Quan sát
- Quan sát
- Viết chương trình
2 Ví dụ về lệnh lặp với số lần chưa biết trước(tt):
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:=0;
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 8- Chạy chương trình này, ta nhận
được giá trị ntn?
- Gọi HS đọc ví dụ 5 sgk trang
69
- Cho học sinh quan sát chương
trình trong TP viết bằng câu lệnh
for do
- Chạy chương trình cho HS
quan sát
- Cho học sinh quan sát chương
trình trong TP viết bằng câu lệnh
while do
- Chạy chương trình cho HS
quan sát
- Hai chương trình trên cho kết
quả như thế nào?
? Ví dụ này cho thấy điều gì?
- Chạy chương trình trên máy tính
- Ta sẽ nhận được
n = 45 và tổng
đầu tiên lớn hơn
1000 là 1035
- Đọc ví dụ 5 sgk trang 69
- Quan sát
- Quan sát
- Giống nhau
- 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
Ví dụ 5 Viết chương trình tính
tổng 1 1 1 1
T
Giải :
- 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);
- Sử dụng lệnh lặp while…do: 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
3 Lặp vô hạn lần – Lỗi lập
trình cần tránh
- Sử dụng Turbo Pascal 7.0 chạy
đoạn chương trình:
var a:integer;
begin
a:=5;
while a<6 do writeln('A');
end.
- Trong chương trình trên, giá trị
biến a bằng mấy? Có thay đổi
không?
- Điều kiện a<6 ntn?
- Quan sát chương trình lặp vô tận
- Giá trị biến a không thay đổi, luôn bằng 5
- Điều kiện a<6 luôn luôn đúng
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
Trang 9- Lệnh Writeln(‘A’) ntn?
- 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"
- Ở chương trình trên, em cần có
một câu lệnh để tăng biến a lên
một đơn vị sau mỗi vòng lặp
- Sửa chương trình trên máy tính
bằng cách thêm một câu lệnh để
thay đổi biến a sao cho phép so
sánh a<6 trở thành sai cho HS
quan sát
- Ví dụ
var a:integer;
begin
a:=5;
while a<6 do begin writeln('A');
a:=7 end;
end.
- Lệnh Writeln(‘A’)
luôn được thực hiện
- Một HS lên bảng
vẽ, cả lớp theo dõi
- Quan sát
vòng lặp không bao giờ kết thúc
4 - CỦNG CỐ
- Chiếu hoặc treo bảng phụ
viết sẵn bài tập 5 SGK trang
71
- Gọi HS đứng tại chỗ làm bài
- Đọc, hiểu và tìm câu trả lời
- Đứng tại chỗ trả lời
Bài tập 5 SGK trang 71 Hãy chỉ ra lỗi trong các câu lệnh sau đây:
a) X:=10; while X:=10 do X:=X+5;
b) X:=10; while X=10 do X=X+5;
c) S:=0; n:=0; while S<=10 do n:=n+1; S:=S+n;
Trả lời:
a) Thừa dấu hai chấm trong điều kiện; b) Thiếu dấu hai chấm trong câu lệnh
gán;
Trang 10- Nhận xét và cho đáp án
đúng
c) Thiếu các từ khóa begin và end
trước và sau các lệnh n:=n+1; S:=S+n,
do đó vòng lặp trở thành vô tận
5 - HƯỚNG DẪN VỀ NHÀ
- Qua bài học HS cần:
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 while do… trong Pascal
Viết chương trình Pascal dùng câu lệnh lặp while do… để thể hiệncấu trúc lặp với
số lần chưa biết trước
Vận dụng được: cấu trúc lặp với số lần chưa biết trước để mô tả thuật toán, câu lệnh lặp với số lần chưa biết trước để viết chương trình trong Pascal
Vận dụng thành thạo: kiến thức, kỹ năng, tri thức, phương pháp được học vào giải bài tập
- Bài tập về nhà: bài 3,4 trang 71
- Hướng dẫn bài tập về nhà: bài 3,4 trang 71
- Ôn lại bài, chuẩn bị trước cho bài thực hành 6 : Sử dụng lệnh lặp while do
V - RÚT KINH NGHIỆM: