Giúp HS biết ngôn ngữ lập trình dùng cấy trúc lặp với số lần chưa biết trước để chỉ dẫn cho máy tính thực hiện lặp đi lặp lại một công việc cho đề khi điều hiện nào đó được thỏa mãn.. [r]
Trang 1Trường THCS Thống Nhất
Ngày soạn:18-02-2009
Ngày dạy:
Lớp dạy:
Tiết dạy:
GVHD:
GSTT: Nguyễn Thanh Tùng
Bài dạy:
Bài 8: Lặp với số lần chưa biết trước
I/ Mục đích-Yêu cầu
Giúp HS biết được 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
Giúp HS biết ngôn ngữ lập trình dùng cấy trúc lặp với số lần chưa biết trước để chỉ dẫn cho máy tính thực hiện lặp đi lặp lại một công việc cho đề khi điều hiện nào đó được thỏa mãn
Hiểu được 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
Biết cách vận dụng While do hoặc For do để giải bài tập một cách linh hoạt
Oân lại một số kiến thức như khai báo biến, rèn luyện khả năng đọc-hiểu chương trình
II/ Chuẩn bị:
Giáo viên: Giáo án, lưu đồ thuật giải, bài giải hoàn chỉnh
Học sinh: Xem bài trước Sách giáo khoa
Phương pháp: Đàm thoại kết hợp trực quan sinh động
Dụng cụ, thiết bị: Đèn chiếu, máy tính, lưu đồ, giáo án Máy có cài sẵn Turbo Pascal
III/ Nội dung lên lớp:
Hoạt động 1: Oån định lớp
Hoạt động 2: Kiểm tra bài cũ
1/ Hãy cho biết tác dụng của lệnh lặp với số lần biết trước?
2/ Nêu cú pháp và ý nghĩa của lệnh lặp For…do?
Hoạt động 3: Vào nội dung bài mới
* Giới thiệu cho
Hs biết ngoài cấu
trúc lặp với số lần
lặp biết trước, các
ngôn ngữ lặp trình
còn có các lệnh lặp
với số lần lặp chưa
biết trước Ghi tên
bài dạy lên bảng
* Chú ý lắng nghe bài giảng, ghi chepù
Bài 8: Lặp Với Số Lần Chưa Biết
Trước.
Trang 2* Yêu cầu học
sinh đọc víù dụ 1
-Phân tích, đặt câu
hỏi về ví dụ 1 để
cho Hs thấy được
điều kiện để kết
thúc hoạt động gọi
điện thoại của
Long cho Trang
-Đưa thêm một số
ví dụ trong cuôc
sống tương tự ví dụ
1 Yêu cầu HS xác
định điều kiện
dừng
* Yêu cầu HS đọc
ví dụ 2
-Đặt câu hỏi cho
HS: "Trong trường
hợp này để quyết
định thực hiện
phép cộng với số
tiếp theo hay dừng
ta phải làm gì?"
Kiểm tra đáp án
của HS
-Yêu cầu HS xây
dựng thuật toán
của ví dụ này một
cách cụ thể bằng
ngôn ngữ tự nhiên
Kiểm tra và chỉnh
sửa lại đáp án của
HS
* Đọc ví dụ 1 và suy nghĩ
-Chú ý lắng nghe, ghi chép
-Trả lời các câu hỏi của giáo viên
-Chú ý, suy nghĩ trả lời các câu hỏi của giáo viên
* Đọc ví dụ 2
-Chú ý lắng nghe, ghi chép Trả yêu cầu của GV
-Chú ý lắng nghe, ghi chép Trả lời câu hỏi của giáo viên Xây dựng thuật toán
-Chú ý lắng nghe,
1 Các hoạt động lặp với số lần chưa biết trước:
Ví dụ: SGK.Trang 67
Điều kiện dừng: Có người nhấc máy.
Ví dụ 2: Nếu cộng lần lượt n số đầu tiên
(n=1,2,3,….), ta sẽ được kết quả T1=1, T2=1+2, T3=1+2+3,… tăng dần 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?
-Câu hỏi: Trong trường hợp này để
quyết định thực hiện phép cộng với số tiếp theo hay dừng ta phải làm gì?
-Đáp án: Từng bước kiểm tra tổng đã
lớn hơn 1000 hay chưa
Thuật toán: Kí hiệu S là tổng cần tìm
Bước 1: S0, n0
Bước 2: nếu S<=1000, nn+1; Ngược lại, chuyển tới bước 4
Bước 3: SS+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
Để giải bài toán trên ta thực hiện lặp
đi lặp lại với số lần chưa biết trước, phụ
Trang 3-Giải thích cho HS
hiểu rõ về thuật
toán vừa rồi
-Đưa ra lưu đồ về
lặp với số lần chưa
biết trước và giải
thích cho HS hiểu
ý nghĩa của lệnh
lặp này
* Chuyển sang nội
dung thứ 2 của bài
Trình bày cho Hs
biết được cấu trúc
của lệnh lặp với số
lần chưa biết trước
trong Pascal
-Hướng dẫn Hs
ghi chép
-Chú ý lắng nghe, ghi chép
* Chú ý lắng nghe, ghi bài
-Theo dõi bài giảng, thực hiện
thuộc vào điều kiện (S<=1000) và chỉ dừng lại khi điều kiện đó sai
Việc lặp lại một nhóm các hoạt động với số lần chưa biết trước phụ thuộc vào một điều kiện cụ thể có được thỏa mãn hay không Để viết chương trình cho máy tính thực hiện các hoạt động như ví dụ trên ta có thể sử dụng lệnh lặp với số lần chưa biết trước Các ngôn ngữ lặp trình đều có hỗ trợ câu lệnh này, Pascal cũng không ngoại lệ
2 Ví dụ về lệnh lặp với số lần chưa biết.
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à một câu lệnh đơn
hay câu lệnh ghép
Cách thực hiện:
Kiểm tra điều kiện
Nếu điều kiện sai, câu lệnh sẽ được 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 buớc 1
Chương trình Ví dụ 2:
Program Vidu2;
Uses crt;
Điều kiện
Câu lệnh
Sai
Đúng
Trang 4Viết chương trình
hoàn chỉnh của ví
dụ 2
-Giải thích lại từng
câu lệnh của
chương trình Chạy
chương trình, sau
đó thay đổi điều
kiện cho HS nhận
thấy sự khác biệt
* Yêu cầu Hs đọc
ví dụ 5 Trang 69
SGK
-Yêu cầu Hs thực
hiện giải bài toán
với lệnh For…do
Theo dõi HS
theo theo yêu cầu của GV, ghi chép
-Chú ý lắng nghe, theo dõi chương trình
* Đọc ví dụ 5, suy nghĩ
-Thực hiện theo yêu cầu của GV
-Thực hiện
Var S,n:Integer;
Begin Clrscr;
S:=0;
N:=0;
While S<=1000 do Begin
S:=S+n;
N:=n+1;
End;
Writeln('So n nho nhat de tong>1000 la ',n,': ');
Writeln(' Tong dau tien la: ',S);
Readln;
End
Ví dụ 5.Trang 69(SGK)
Để viết chương trình tính tổng T=1+1/2+1/3+…+1/100 với lệnh lặp for…do
Với For:
Program Vidu5;
Uses crt;
Var T,i:Integer;
Begin T:=0;
For i:=1 to 100 do T:=T+1/I;
Writeln(T);
Readln;
End
Với while:
Program Vidu5;
Uses crt;
Var T,i:Integer;
Trang 5-Yêu cầu HS chỉnh
sửa lại Ví dụ này
với lệnh lặp While
do
-Giải thích cho học
sinh hiểu ý nghĩa
các câu lệnh trong
chương trình Làm
cho Hs thấy được
lệnh lặp for…do có
thể được thay thế
bởi lệnh while…do
* Chuyển sang nội
dung tiếp theo
-Đưa ra chương
trình trong SGK
Yêu cầu HS giải
thích từng câu
lệnh
-Qua ví dụ cho HS
thấy đuợc lỗi lặp
trình với lặp vô
hạn lần Chú ý cho
Hs cần tránh trong
quá trình viết
chương trình
chuyển đổi
-Chú ý lắng nghe, ghi chép
* Chú ý theo dõi, ghi chép
-Chú ý theo dõi, trả lời các yêu cầu của giáo viên
-Chú ý theo dõi, ghi chép bài
Begin T:=0;
i:=0;
while i<=100 do begin
T:=T+1/I;
I:=i+1;
End;
Writeln(T);
Readln;
End
-Như vậy chúng ta có thể sử dụng lệnh lặp while…do thay cho For…do
3 Lặp vô hạn lần-Lỗi lập trình cần tránh.
Ví dụ:
Var a:integer;
Begin A:=5;
While a<6 do Writeln('A');
End;
Giá trị biến a luôn luôn bằng 5 điều kiện a<6 luôn luôn đúng cho nên chương trình luôn được thực hiện Đây là lỗi lặp vô hạn lần
Khắc phục: điểu kiện trong câu lệnh
phải được thay đổi từ đúng sang sai Chí có thế chương trình mới không rơi vào những vòng lặp vô tận
Hoạt động 4: Củng cố:
Yêu cầu Hs trình bày ý nghĩa lệnh lặp với số lần chưa biết được
Trang 6 Yêu cầu HS trình bày lệnh lặp While…do.
Hoạt động 5: Hướng dẫn về nhà
Huớng dẫn trả lời câu1, câu2 trang 71
Hướng dẫn bài 3,4,5 SGK
IV/ Rút kinh nghiệm tiết dạy:
Ưu điểm: Khuyết điểm:
GVHD