1. Trang chủ
  2. » Giáo án - Bài giảng

Bài 8. Lắp với số lần chưa biết trước.

5 1,9K 4

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 269 KB

Nội dung

Lặp với số lần chưa biết trước I.Mục tiêu:: + 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

Trang 1

Dạy Lớp: 8B; 8C; 8D Ngày soạn: 11/01/2009.

Tiết PPCT: 41 + 42 Ngày dạy: /01/2009

Bài 8 Lặp với số lần chưa biết trước

I.Mục tiêu::

+ 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

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 Tiến trình bài giảng

1 Ổn định ớp

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.

G : Đặt vấn đề

Với bài toán trên, trong TP ta sử dụng vòng lặp for…to…do 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 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

3 Bài m i ới

+ G : y/c hs đọc ví dụ 1sgk/67

+ Hs : 2-3 hs đọc ví dụ sgk

+ G : Phân tích ví dụ

+ Hs : Chú ý lắng nghe

+ G : y/c hs đọc ví dụ 1sgk/67

+ Hs : 2-3 hs đọc ví dụ sgk

+ G : Phân tích ví dụ

+ Hs : chú ý lắng nghe

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?

Trang 2

+ G : Hướng dẫn hs xây dựng

thuật toán

+ Hs : Nghe giáo viên hướng

dẫn, sau đó tự xây dựng thuật

toán

+ G : 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

+ G : Giới thiệu sơ đồ khối

+ G : Nêu nhận xét

+ G : 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

+ G : Giới thiệu cú pháp lệnh

while … do ….;

+ hs : chú ý nghe và ghi chép

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 :

* 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

Trang 3

+ G : Xét 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 ?

( Gv đưa phim trong ví dụ 3 )

+ Hs : Đọc ví dụ 3 ( Phim trong)

+ G : giới thiệu chương trình

mẫu sgk ( Giáo viên in chương

trình mẫu trên phim trong )

+ Hs : quan sát

+ G : Chạy tay cho học sinh

xem

+ Hs : chú ý nghe và tự chạy tay

lại

+ G : 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

+ G : Cho học sinh chạy chương

trình trên máy

+ Hs : thực hiện

+ G : 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

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

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.

Tiết 2

+ G : Y/c hs nhắc lại cú pháp

câu lệnh lặp với số lần chưa biết

Trang 4

trước

+ H : trả lời

+ G : 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

Xét ví dụ 4

+ G : Cho học sinh quan sát

phim trong chương trình

+ Hs : quan sát

+ G : Chạy tay cho học sinh

xem

+ Hs : chú ý nghe và tự chạy tay

lại

+ G : Yêu cầu học sinh mở máy

tính và mở chương trình ví dụ 4

( 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

+ G : Cho học sinh chạy chương

trình trên máy

+ Hs : thực hiện

+ G : 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

+ G : giới thiệu ví dụ 5 sgk

Viết chương trình tính tổng

T     

+ G : Cho học sinh quan sát

phim trong chương trình

+ Hs : quan sát

+ G : Chạy tay ( cả hai chương

trình ) cho học sinh xem

+ Hs : chú ý nghe và tự chạy tay

lại

+ G : so sánh kết quả khi chạy

hai chương trình

+ Hs : Kết quả bằng nhau

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.

Ví dụ 5 Viết chương trình tính tổng

T     

Giải :

Để viết chương trình tính tổng

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);

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ó

Trang 5

+ G : 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

+ G : Giới thiệu phần 3

+ G : 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

+ G : Chẳng hạn, chương trình

dưới đây sẽ lặp lại vô tận:

var a:integer;

begin

a:=5;

while a<6 do writeln('A');

end.

+ Hs : Quan sát

+ G : 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"

+ Hs : Chú ý nghe

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

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

4 Củng cố

- Ghi nhớ sgk

- Làm bài tập 2,3a,bài 5 SGK/71

IV Rút kinh nghiệm

Ngày đăng: 01/07/2014, 16:00

TỪ KHÓA LIÊN QUAN

w