Giáo án Tin học 8 - Bài 8: Lặp với số lần biết trước

A. MỤC TIÊU:

1. Kiến thức:

- Hiểu 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.

- Hiểu 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:

- Rèn luyện kĩ năng sử dụng các câu lệnh trong Pascal

3. Thái độ:

- Thái độ học tập nghiêm túc, yêu thích môn học

4. Năng lực:

- Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào câu lệnh While.do trong tin học

- Diễn tả thuật toán cấu trúc lặp, tránh lỗi lặp vô hạn.

B. PHƯƠNG PHÁP

- Thuyết trình, vấn đáp

- Giải quyết vấn đề

 

doc 6 trang Người đăng nguyenphuong Ngày đăng 06/01/2016 Lượt xem 6125Lượt tải 1 Download
Bạn đang xem tài liệu "Giáo án Tin học 8 - Bài 8: Lặp với số lần biết trước", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Ngày soạn: 10/02/2015 	Tiết 49	Bài 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tiết 1)
A. MỤC TIÊU:
1. Kiến thức:
- Hiểu 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.
- Hiểu 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:
- Rèn luyện kĩ năng sử dụng các câu lệnh trong Pascal
3. Thái độ:	
- Thái độ học tập nghiêm túc, yêu thích môn học
4. Năng lực:
- Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào câu lệnh While..do trong tin học
- Diễn tả thuật toán cấu trúc lặp, tránh lỗi lặp vô hạn.
B. PHƯƠNG PHÁP
- Thuyết trình, vấn đáp
- Giải quyết vấn đề
C. PHƯƠNG TIỆN DẠY HỌC:
1. Chuẩn bị của giáo viên:
- SGK, giáo án, tài liệu tham khảo
- Phòng thực hành, máy tính cài sẵn phần mềm, phân nhóm học tập.
2. Chuẩn bị của học sinh:
- SGK, vở ghi chép, dụng cụ học tập.
D. HOẠT ĐỘNG DẠY HỌC:
Tổ chức lớp (1 phút)
Ổn định tổ chức. Kiểm tra sĩ số và tác phong của học sinh.
Kiểm tra bài cũ. (Không thực hiện)
III. Bài mới:
Đặt vấn đề: Với bài toán trên, trong Turbo Pascal ta sử dụng vòng lặp fortodo thì 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 fortodo, 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 quyết bài toán này chúng ta đi tìm hiểu bài mới.
Triển khai bài:
Hoạt động của Giáo viên và Học sinh
Nội dung 
Hoạt động1: Tìm hiểu các hoạt động lặp với số lần chưa biết trước (20 phút)
* GV: Yêu cầu HS nghiên cứu SGK và cho các ví dụ về các hoạt động hằng ngày có liên quan đến câu lệnh lặp chưa biết trước
* HS: Làm theo yêu cầu của GV 
* GV: Đưa ra ví dụ: Một ngày chủ nhật Long gọi điện cho Trang. Không có ai nhấc máy. Long quyết định gọi lại thêm 1 lần nữa. Như vậy Long đã biết trước là mình sẽ lặp lại gọi điện thêm 2 lần. Một ngày khác, Long quyết định cứ 10 phút gọi điện một lần cho Trang cho đến khi có người bắt máy. Vậy lần này Long sẽ lặp lại việc gọi điện mấy lần.
* HS: Trả lời 
* GV: Điều kiện để kết thúc hoạt động lặp đó là gì?
* HS: Trả lời 
* GV: Tiếp tục yêu cầu HS tìm hiểu ví dụ sau: 
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?
* GV: Tìm hiểu các bước của thuật toán trong ví dụ này
* HS: Suy nghĩ và trả lời theo yêu cầu của GV
* GV: Giới thiệu cấu trúc lặp với số lần chưa biết trước.
* HS: Chú ý nghe giảng
1. Các hoạt động lặp với số lần chưa biết trước 
Ví dụ 1: Một ngày chủ nhật Long gọi điện cho Trang. Không có ai nhấc máy. Long quyết định gọi lại thêm 1 lần nữa. Như vậy Long đã biết trước là mình sẽ lặp lại gọi điện thêm 2 lần. Một ngày khác, Long quyết định cứ 10 phút gọi điện một lần cho Trang cho đến khi có người bắt máy.
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?
Thuật toán:
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.
* Nhận xét: Cách mô tả hoạt động lặp trong các ví dụ trên được gọi là cấu trúc lặp với số lần chưa biết trước. Trong NNLT Pascal, để thể hiện cấu trúc lặp với số lần chưa biết trước, ta sử dụng câu lệnh lặp với số lần chưa biết trước While...do. 
Hoạt động 2: Tìm hiểu lệnh lặp với số lần không biết trước (18 phút)
* GV: Đưa ra cú pháp về lệnh lặp với số lần chưa biết trước
 While do ;
* HS: Chú ý nghe giảng và ghi vở
* GV: Giảng: Điều kiện? Câu lệnh?
* HS: Trả lời
* GV: Nhận xét
* GV: Nêu sơ đồ khối của câu lệnh
* HS: Chú ý nghe và ghi vở
* GV: Yêu cầu học sinh nghiên cứu SGK => Nêu hoạt động của câu lệnh.
2. Lệnh lặp với số lần chưa biết trước:
a. Cú pháp
 While do ;
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.
b. Sơ đồ khối
c. Hoạt động
- 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 câu 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
 IV. Củng cố :(5 phút)
- Giáo viên hệ thống lại nội dung kiến thức
- Yêu cầu học sinh lấy thêm một số ví dụ về các hoạt động lặp với số lần chưa biết trước.
 V. Dặn dò: (1 phút)
 - Học bài ở vở kết hợp SGK
— — —»@@&??«— — —
Ngày soạn: 10/02/2015 	Tiết 50	Bài 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC (tiết 2)
A. MỤC TIÊU:
1. Kiến thức:
- HS biết lựa chọn câu lệnh lặp với số lần chưa biết trước hoặc câu lệnh lặp với số lần biết trước phù hợp cho từng tình huống cụ thể.
2. Kỹ năng:
- Rèn luyện kĩ năng khai báo và sử dụng biến trong các câu lệnh trong Pascal.
- Rèn luyện khả năng đọc hiểu chương trình.
- Biết vai trò của việc kết hợp các cấu trúc điều khiển.
3. Thái độ:	
- Thái độ học tập nghiêm túc, yêu thích môn học.
4. Năng lực:
- Mô hình hóa các tình huống thực tiễn xảy ra phụ thuộc vào câu lệnh While..do trong tin học.
- Diễn tả thuật toán cấu trúc lặp, tránh lỗi lặp vô hạn.
B. PHƯƠNG PHÁP:
- Thuyết trình, vấn đáp - Giải quyết vấn đề.
C. PHƯƠNG TIỆN DẠY HỌC:
1. Chuẩn bị của giáo viên:
- SGK, giáo án, tài liệu tham khảo.
- Phòng thực hành, máy tính cài sẵn phần mềm, phân nhóm học tập.
2. Chuẩn bị của học sinh:
- SGK, vở ghi chép, dụng cụ học tập.
D. HOẠT ĐỘNG DẠY HỌC:
Ổn định lớp: (1’ ) Ổn định tổ chức. Kiểm tra sĩ số và tác phong của học sinh.
Kiểm tra bài cũ: (5’)
Nêu cú pháp về câu lệnh lặp với số lần chưa biết trước?
Trong câu lệnh While..do điều kiện để thoát khỏi vòng lặp là gì?
III. Bài mới:
Đặt vấn đề: Tiết trước chúng ta đã tìm hiểu cú pháp của câu lệnh lặp với số lần chưa biết trước. Hôm nay chúng ta sẽ vận dụng để giải quyết một số bài toán và tìm hiểu hiện tượng lặp vô hạn lần trong ngôn ngữ Pascal.
Triển khai bài:
Hoạt động của GV - HS
Nội dung kiến thức
Hoạt động 1: Các ví dụ về câu lệnh lặp While..do (20’)
- Trước khi đi tìm hiểu cú pháp của câu lệnh lặp với số lần chưa biết trứơc GV gọi HS nhắc lại cú pháp của câu lệnh lặp với số lần biết trước.
- HS trả lời.
- GV: Chốt ý:
- GV: Xét ví dụ 3 .
- GV: Chúng ta biết rằng, nếu n càng lớn thì càng nhỏ, nhưng luôn luôn lớn hơn 0. Với giá trị nào của n thì < 0.005 hoặc < 0.003 ? 
- GV cho HS đọc ví dụ 3 trong SGK.
- 2 – 3 HS đọc ví dụ 3
- GV: Giới thiệu chương trình mẫu sgk ( Giáo viên in chương trình mẫu trên)
- HS: Quan sát. 
- GV: Chạy tay cho học sinh xem.
- HS: Chú ý nghe và tự chạy tay lại. 
- 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 .
- HS: Thực hiện.
- GV: Yêu cầu hs thay điều kiện sai_so = 0.003 thành 0.002 ; 0.001 ; 0.005 ; ...
- HS: thực hiện 
- GV yêu cầu HS đọc ví dụ 4.
- HS đọc ví dụ 4.
- GV: Cho học sinh quan sát chương trình 
- HS quan sát chương trình
- GV: Chạy tay cho học sinh xem chương trình mẫu 
- HS: Chú ý nghe và tự chạy tay lại 
- GV: Cho học sinh chạy chương trình trên máy.
- HS thực hiện yêu cầu.
- 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.
- GV: Giới thiệu ví dụ 5.
- GV: Cho học sinh quan sát chương trình 
- HS quan sát 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 whiledo thay cho câu lệnh fordo.
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 do ;
Ví dụ 3: 
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 
 S:=S+n; n:=n+1; 
 end;
writeln('So n nho nhat de tong > 1000 la ',n);
writeln('Tong dau tien > 1000 la ',S);
end.
Ví dụ 5: Viết chương trình tính tổng 
Hoạt động 2: Lặp vô hạn lần – Lỗi lập trình cần tránh (10’)
-GV: Nêu ví dụ.
-GV: Em hãy cho biết kết quả của đoạn chương trình trên?
- HS trả lời: 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.
GV: lệnh writeln('A') được thực hiện mãi mãi, k bao giờ ngừng, hiện tượng đó gọi là lặp vô hạn lần.
 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. 
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.
- 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".
IV. Củng cố :(5 phút)
- Giáo viên hệ thống lại nội dung kiến thức
- Yêu cầu học sinh làm bài tập 3(a,b) trang 70 SGK.
Bài 3:
9 vòng lặp được thực hiện. Khi kết thúc S=5.0
Chương trình tương ứng:
S:=10;x:=0.5;
While S < 10 do
	S:=S-x;
Write(s);
Không vòng lặp nào được thực hiện. S=10;
Chương trình tương ứng:
S:=10; n:=0;
While S < 10 do
	Begin n:=n+3; 	S:=S-n; end;
Write(s);
V. Dặn dò: (1 phút)
 - Học bài ở vở kết hợp SGK.
 - Bài tập 4,5 SGK.
 - Xem trước bài thực hành 6. 
— — —»@@&??«— — —

Tài liệu đính kèm:

  • docBài 8. Lặp với số lần biết trước.doc