Bài 10: Cấu Trúc Lặp(While - Do) - 123doc

Kiến thức - Biết được ý nghĩa của cấu trúc lặp có số lần lặp chưa xác định.. - Biết được cấu trúc chung của lệnh lặp While trong ngôn ngữ Pascal.. - Biết được sự thực hiện của máy khi gặ

Trang 1

Ngày soạn: 22

Ngày giảng: 24

Tiết theo PPCT: 15

§10 CẤU TRÚC LẶP (Tiết 3)

I - Mục tiêu bài học

1 Kiến thức

- Biết được ý nghĩa của cấu trúc lặp có số lần lặp chưa xác định

- Biết được cấu trúc chung của lệnh lặp While trong ngôn ngữ Pascal

- Biết được sự thực hiện của máy khi gặp lệnh lặp While

2 Kĩ năng

- Phân biệt được sự giống và khác nhau giữa cấu trúc lặp For và While

- Sử dụng đúng lệnh lặp While trong lập trình

- Bước đầu biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết được một số bài toán đơn giản

II – Phương pháp, phương tiện dạy học

- Phương pháp: Thuyết trình, giảng giải, đàm thoại

- Phương tiện: sgk, máy chiếu

III - Tiến trình bài học

1 Ổn định tổ chức lớp

- Lớp:

- Sĩ số:

- Lí do vắng:

2 Kiểm tra bài cũ

3 Nội dung bài mới

? Sự khác nhau của bài toán này với bài

toán đã viết ở tiết trước?

? Lặp bao nhiêu lần?

? Bài toán dừng lặp khi nào?

3 Lặp với số lần chưa biết trước và câu lệnh While – do

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

S=

a

1 +

1

1 +

a + 2

1 +

a + +a+N

1

+ cho đến khi

N

a+

1

<0,0001 thì dừng

Thuật toán Tong_2:

Trang 2

? Trong thuật toán trên có những bước nào

lặp đi lặp lại nhiều lần?

- Bước 2 đến bước 4

Như vậy, việc lặp lại số lần chưa biết

trước sẽ được kết thúc khi điều kiện cho

trước được thoả mãn

Câu lệnh sau từ khoá Do sẽ được thực

hiện khi biểu thức điều kiện còn nhận giá trị

True Biểu thức điều kiện được tính trước

khi thực hiện câu lệnh, nhưng nếu ngay từ

đầu biểu thức điều kiện đã nhận giá trị

False thì câu lệnh không được thực hiện.

? Ý nghĩa của câu lệnh While – do?

? Vậy trường hợp btđk luôn nhận giá trị

True thì câu lệnh được thực hiện mãi gọi là

gi?

- Lặp vô hạn

? bài toán sử dụng những biến nào? Kiểu

dữ liệu?

B1: S:=

a

1

; N:=0;

B2:Nếu

N

a+

1

<0,0001 thì chuyển đến B5 ;

B3:N:=N+1;

B4:S:=S+

N

a+

1

;

B5:Đưa S ra màn hình rồi kết thúc

Để mô tả cấu trúc lặp như vậy,Pascal dùng câu lệnh while-do có dạng:

While <điều kiện> do <câu lệnh>;

Trong đó:- Điều kiện là biểu thức logic;

- Câu lệnh là 1 câu lệnh đơn hoặc lệnh ghép

* Ý nghĩa của câu lệnh While – do:

Câu lệnh sau từ khoá Do còn được thực

hiện khi btđk còn đúng, sau đó quay lại kiểm tra điều kiện

Ví dụ 1:

Chương trình tính Tong_2:

Program Bai_toan;

Trang 3

? Xác định Input? Output của bài toán?

- Input: 2 số nguyên M, N

- Output: ƯCLN

? Bài toán dừng lặp khi nào?

- Khi M = N

? Điều kiện để tiếp tục lặp là gì?

- Điều kiện: m<>n

? Các lệnh cần lặp lại là gì?

- Lệnh cần lặp:M:=M - N; hoặc N:= N-M;

? Những biến được sử dụng trong bài toán?

Kiểu dữ liệu?

Uses Crt;

Var a,N:Integer;

S:Real;

BEGIN Clrscr;

Write(‘Nhap gia tri cua a = ‘); Readln(a);

S:=1/a;N:=1;

WHILE 1/(a+N)>=0.0001 DO BEGIN

N:=N+1;

S:=S+1/(a+N);

END;

Writeln(‘Gia tri cua tong S = ‘, S:8:3); Readln;

END.

Ví dụ 2:

Nhập vào 2 số nguyên dương M, N Tìm ƯCLN của 2 số đó

Thuật toán:

B1: Nhập M,N;

B2 : Nếu M = N thì lấy giá trị chung này làm UCLN, chuyển B

B3: Nếu M>N thì M:=M-N, ngược lại thì N:=N-M;

B4: Quay lại B2 B5: Đưa ra ƯCLN rồi kết thúc

Chương trình thể hiện thuật toán Tìm ƯCLN

Program UCLN;

Uses Crt;

Trang 4

Var M,N:Integer;

BEGIN Clrscr;

Write(‘Nhap gia tri cua M = ‘); Readln(M);

Write(‘Nhap gia tri cua N = ‘); Readln(N);

WHILE M<>N DO

IF M> N THEN M:=M – N ELSE

N:= N – M;

Writeln(‘UCLN =’, M);

Readln;

END.

Chú ý: SGK – Tr.48

IV - Củng cố

- Cấu trúc và hoạt động của câu lệnh While – Do

- Câu hỏi củng cố:

Có thể dùng câu lệnh While – do thay thế cho câu lệnh for – do được không? Nếu

được hãy thực hiện điều đó với chương trình Tong_1a

Trả lời:

Có thể thay thế đoạn chương trình chứa câu lệnh for – do (dạng tiến) bằng đoạn chương trình chứa câu lệnh While – do như sau:

i:= <giá trị đầu>;

While (i<=giá trị cuối) do

Begin <Câu lệnh>;

<tăng i lên 1 đơn vị>;

end;

Program UCLN;

Uses Crt;

Var a,N:Integer;

S:Real;

BEGIN Clrscr;

Write(‘Nhap gia tri cua a = ‘);

Readln(a);

S:=1/a;N:=1;

Trang 5

WHILE N < 100 DO

BEGIN

N:=N+1;

S:=S+1/(a+N);

END;

Writeln(‘Gia tri cua tong S = ‘, S:8:3);

Readln;

END.

Từ khóa » Câu Lệnh While Trong Pascal Dùng để Diễn Tả