Giáo án Tin học 11 - Bài 10: Cấu trúc lặp (tiết 2)

Giáo án Tin học 11 - Bài 10: Cấu trúc lặp (tiết 2)

I.Mục đích, yêu cầu

1. Kiến thức:

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

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

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

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 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.

 

doc 11 trang Người đăng quocviet Lượt xem 3145Lượt tải 5 Download
Bạn đang xem tài liệu "Giáo án Tin học 11 - Bài 10: Cấu trúc lặp (tiết 2)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Bài 10	 CẤU TRÚC LẶP ( TIẾT 2)
Ngày soạn	 :
Ngày dạy :
Người soạn : Phạm Thị Hường
GV hướng dẫn : Nguyễn Văn Trường
I.Mục đích, yêu cầu
1. Kiến thức:
- Biết được ý nghĩa của cấu trúc lặp có số lần chưa xác định.
- Biết được cấu trúc chung của lệnh lặp While – do trong ngôn ngữ lập trình Pascal.
- Biết được sự thực hiện của máy khi gặp lệnh While - do
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 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.Nội dung
Thời gian dự kiến :
Nội dung
Thời gian (phút)
 ổn định tổ chức lớp
1
Kiểm tra bài cũ
5
 Bài mới (mục 3)
 Lặp với số lần chưa biết trước và câu lệnh While-do 37
 Đặt vấn đề:
1
Bài toán gợi nhu cầu cần có câu lệnh
2
a) Cấu trúc câu lệnh:
3
b) Hoạt động của câu lệnh
4
c) ý nghĩa của câu lệnh
1
d) áp dụng câu lệnh vào các ví dụ.
25
Củng cố dặn dò
3
1. ổn định tổ chức lớp 
Lớp: 	Sĩ số:
Vắng:	Có phép:	 Không phép:
2. Kiểm tra bài cũ 
GV:
Câu 1. Viết cấu trúc câu lệnh For-do ở cả hai dạng, giải thích các thành phần trong câu lệnh đó. 
Câu 2. Sử dụng câu lệnh For-do để viết đoạn chương trình in ra các số chẵn trong đoạn từ 1 đến 100. 
HS: Lên bảng trả lời câu hỏi của giáo viên.
GV: - Nhận xét câu trả lời của HS và khẳng định câu trả lời đúng.
- Cho điểm HS.
Đáp án và biểu điểm:
Câu 1: (7 điểm).
* Cấu trúc câu lệnh For-do ở hai dạng (4đ):
- Dạng lặp tiến: 
for := to do ;
- Dạng lặp lùi: 
for := downto do ;
* Các thành phần trong câu lệnh (3đ):
- For, to, downto, do: là các từ khoá.
- Biến đếm là biến đơn giản và thường có kiểu nguỵên
- Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm và giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
- Câu lệnh là câu lệnh đơn hay câu lệnh ghép.
Câu 2: (3 điểm).
Đoạn câu lệnh như sau:
For i:=1 to 100 do
If (i mod 2= 0 ) then write( i:4);
3. Bài mới 
 * Đặt vấn đề: 
Ở tiết trước cô đã đề cập rằng: Cấu trúc lặp dùng để mô tả thao tác lặp và được phân thành hai loại: lặp với số lần biết trước (xác định số lần lặp) và lặp với số lần chưa biết trước biết trước (chưa xác định số lần lặp). Để mô tả cấu trúc lặp với số lần biết trước Pascal cung cấp cho chúng ta câu lệnh For-do (đã học ở tiết trước). Để mô tả cấu trúc lặp với số lần chưa biết trước, Pascal cung cấp cho chúng ta câu lệnh có tên là While-do. Vậy câu lệnh While-do có cấu trúc và hoạt động như thế nào chúng ta cùng tìm hiểu tiếp bài học hôm nay
Hoạt động của thầy
Hoạt động của trò
3. Lặp với số lần chưa biết trước và câu lệnh While-do
Hỏi: Em hiểu thế nào là lặp với số lần chưa biết trước?
- Đưa ra bài toán: Tính tổng 2 (ở tiết 1 đã giới thiệu).
S = 1/a + 1/ (a+1) +1/(a+2)+...+ 1/(a+N) +... cho đến khi 1/(a+N) <0,0001
Hỏi: Bài toán này khác với bài toán tính tổng 1 ntn?
Hỏi: Có thể hiện sự lặp lại không? lặp bao nhiêu lần ?
Hỏi: Lặp đến khi nào thì thôi?
Hỏi: Xuất phát S được gán giá trị 1/a, trước khi cộng thêm vào S một số hạng tiếp theo ta phải làm gì?
Hỏi: Sau mỗi lần tăng N lên thì sẽ làm thay đổi cái gì?
Kết luận: Như vậy việc tính tổng S cần phải tiến hành lặp lại việc kiểm tra ĐK, tăng giá trị cho biến N và cộng thêm số hạng mới vào mà không biết trước số lần lặp là bao nhiêu.Việc lặp chỉ kết thúc khi một ĐK cho trước được thoả mãn.
 Để giải quyết những bài toán có dạng như trên một cách thuận tiện thì cần thiết phải có một câu lệnh mới Ỵ câu lệnh While-do.
Câu lệnh While-do
a) Cấu trúc câu lệnh:
While do 
Trong đó:
While, do: là các từ khoá.
Điều kiện: là biểu tức logic hoặc biểt thức quan hệ .
Câu lệnh (lệnh cần lặp): là một câu lệnh đơn hoặc ghép.
Hỏi : Dựa vào cấu trúc câu lệnh một em hãy cho biết máy sẽ thực hiện tính ĐK trước hay thực hiện lệnh cần lặp trước?
b) Hoạt động của câu lệnh:
- Đầu tiên biểu thức ĐK được tính giá trị, sau đó ĐK này được kiểm tra :
 + Nếu ngay từ đầu biểu thức ĐK đã nhận giá trị False thì câu lệnh không được thực hiện lần nào.
+ Nếu ĐK nhận giá trị True thì thực hiện công việc (một lần).
 Mỗi lần thực hiện công việc có thể sẽ làm thay đổi giá trị của đk, đến một lúc nào đó đk lặp không còn đúng nữa thì cấu trúc lặp sẽ kết thúc.
Hỏi: Em nào có thể lên bảng vẽ sơ đồ khối thể hiện sự hoạt động của câu lệnh While-do
Ví dụ: Cho đoạn chương trình sau:
a:=5; b:=2;
While (ab) Do begin
 a:=a+1; b:=b+2; 
end;
GV giải thích cho HS sự hoạt động câu lệnh trong VD như sau:
ĐK
True
True
True
False
a
6
7
8
X
b
4
6
8
X
Sau khi thực hiện xong vòng lặp trên thì giá trị của a = 8 và b = 8.
c) ý nghĩa câu lệnh:
- Câu lệnh viết sau từ khoá Do sẽ còn được thực hiện khi biểu thức ĐK còn nhận giá trị True.
Hỏi : Nếu ta thay đổi câu lệnh trên thành a:=a+1; b:=b+1 thì sẽ thế nào?
?? Như vậy khi gặp phải trường hợp này ta phải xử lý như thế nào ?
* Chú ý: 
- Trong trường hợp nếu khi thực hiện công việc mà giá trị của đk cứ luôn cho ta giá trị True thì cấu trúc lặp sẽ kéo dài mãi (ta gọi là vòng lặp vô hạn). 
- Khi chạy chương trình trên máy tính , để thoát khỏi vòng lặp vô hạn ta có thể ấn tổ hợp phím Ctrl+Break hoặc Ctrl+Alt+Del. Sau đó sửa lại chương trình bằng cách đưa thêm câu lệnh rẽ nhánh : If then Exit ;
hoặc: If then Break ;
để thoát khỏi vòng lặp.( Sau này vào giờ bài tập và thực hành cô sẽ nói thêm)
Hỏi: So sánh câu lệnh For-do và câu lệnh While-do?
d) Áp dụng câu lệnh vào các ví dụ.
VD1: Quay trở lại bài toán tính tổng 2.
Hỏi: Em nào có thể trình bày Input và Output của bài toán trên?
Hỏi: Em nào có thể liệt kê các bước để giải bài toán trên.
Hỏi: Em nào có thể lên bảng vẽ sơ đồ khối thể hiện các bước để giải bài toán trên.
- Gọi HS nhận xét.
- Nhận xét bài làm của HS và sửa chữa, bổ sung nếu cần.
* Gợi ý để HS viết chương trình thể hiện thuật toán:
Hỏi: Quan sát sơ đồ khối ta thấy có sự lặp lại những công việc gì? 
Hỏi: Phải sử dụng câu lệnh nào để thể hiện việc lặp lại đó?
Hỏi: Biểu thức điều kiện sử dụng trong câu lệnh While-do ở đây là gì?
ð Nếu như vậy thì sẽ có nghĩa là trong khi 1/(a+N) < 0.0001 thì thực hiện B3 và B4? Điều này mâu thuẫn với thuật toán ở trên. Phải sửa lại thế nào cho đúng?
Hỏi: Cần nhập vào từ bàn phím giá trị nào?
Hỏi: Chương trình có bao nhiêu biến sẽ thay đổi giá trị, kiểu dữ liệu của các biến 
ra sao? 
Hỏi: Như vậy câu lệnh sau từ khoá ỎdoÕ phải là câu lênh đơn hay câu lệnh ghép?
Hỏi : Em nào có thể viết đoạn chương trình thể hiện câu lệnh While-do?
- Yêu cầu các HS còn lại tự viết chương trình vào vở.
GV: Từ sự tổng hợp các ý như trên cô có chương trình thể hiện bài toán trên như sau:
Program Tong2;
Var S :real; N: Interger;
Begin
Write(‘Nhap a>2’); readln(a);
S := 1/a;
N:= 0;
While Not ((1/(a+N) < 0.0001) do
begin
N:=N+1;
S:=S+1/(a+N);
end;
Writeln(‘Tong S cần tìm là’, S :8:2);
readln
End.
VD2: Đưa ra bài toán tìm UCLN của hai số nguyên dương M, N.
Hỏi: Một em nhắc lại thuật toán tìm UCLN bằng PP liệt kê đã được học ở lớp 10?
- Vẽ sơ đồ khối lên bảng, yêu cầu một HS lên hoàn thiện sơ đồ. 
- Nhận xét sự trình bày của HS, chỉnh sửa bổ sung nếu cần thiết.
- Gợi ý cho HS viết chương trình:
Đưa ra 1 VD cụ thể tìm ƯCLN của 2 số 12 và 15
m
n
m>n?
n>m?
m=n?
UCLN=m
12
15
true
12
3
true
9
3
true
6
3
true
3
3
true, UCLN=3
Hỏi: Quan sát sơ đồ khối ta thấy có sự lặp lại những công việc gì? 
Hỏi: Cần lặp lại bao nhiêu lần?
Hỏi: Như vậy phải sử dụng câu lệnh nào để thể hiện điêù này?
- Yêu cầu HS viết chương trình hoàn thiện bài toán ở nhà.
- Lặp với số lần chưa biết trước là thực hiện lặp lại một công việc nào đó mà không biết được phải qua bao nhiêu lần.
- Chú ý lắng nghe, suy nghĩ để trả lời.
- Bài trước: biết trước N
- Bài này: chưa biết N, nhưng cho đk giới hạn để tính S.
- Có sự lặp lại nhưng chưa xác định được số lần lặp.
- Khi thoả mãn 1/(a+N) < 0.0001
- Phải kiểm tra 1/(a+N), nếu thoả ĐK thì dừng, nếu chưa thì cộng tiếp vào S một số hạng nữa.
- Biến N làm thay đổi giá trị của biểu thức 1/(a+N) và giá trị S.
- Lắng nghe và ghi nhận.
- Ghi bài
- Máy sẽ tính ĐK trước rồi thực hiện câu lệnh sau.
- HS vẽ sơ đồ khối:
Câu lệnh
Điều kiện
Sai
Đúng
- Quan sát, theo dõi sự giải thích của GV và ghi bài
- Biểu thức ĐK sẽ luôn nhận giá trị True vì ban đầu ab mà a tăng lên 1 thì b cũng tăng lên 1. Câu lệnh sau từ khoá Do sẽ luôn được thực hiện.
- Suy nghĩ.
- Ghi bài.
- Giống nhau: Đều là câu thể hiện cấu trúc lặp.
- Khác nhau: Câu lệnh For-do là câu lệnh thực hiện cấu trúc lặp XĐ trước số lần lặp, còn câu lệnh While-do là câu lệnh thực hiện cấu trúc lặp chưa XĐ trước số lần lặp.
- HS trình bày:
Input: Số nguyên a>2
Output: Đưa ra tổng S khi 1/(a+N) < 0,0001
- HS trình bày:
B1: S ß 1/a; N ß 0;
B2: Nếu 1/(a+N) < 0,0001 thì chuyển đến bước 5;
B3: N ß N + 1;
B4: S ß S + 1/(a+N)
rồi quay lại B2
B5: Đưa ra tổng S rồi kết thúc.
- HS vẽ sơ đồ khối.
S ß1/a;
N ß0;
1/(a+N) < 0.0001?
Đưa ra S rồi kết thúc
NßN+1;
SßS+1/(1+N);
Nhập a
Đ
S
- HS nhận xét.
- Quan sát và đối chiếu kết quả
- Lặp lại việc kiểm tra điều kiện và việc thực hiện bước 3 và bước 4.
- Phải sử dụng câu lệnh While-do
- BTĐK: 1/(a+N) < 0.0001 
- HS sửa lại: Not (1/(a+N)) < 0.0001
- Cần nhập vào giá trị a.
- Có 2 biến thay đổi giá trị trong quá trình tính tổng là: S (có kiểu thực) và N (có kiểu nguyên).
- Câu lệnh ghép.
- Thể hiện:
While Not (1/(a+N) < 0.0001) do
begin
N:=N+1;
S:=S+1/(a+N);
end;
- HS quan sát lắng nghe GV giải thích chương trình và đối chiếu với chương trình của mình.
- Lắng nghe, ghi đề bài.
- Nhắc lại thuật toán:
B1: Nhập M,N;
B2: Nếu M = N thì lấy UCLN là M ( hoặc N) rồi chuyển đến B5;
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 UCLN rồi kết thúc
- Điền vào sơ đồ khối theo đúng SGK.
- Tập trung theo dõi để thấy được những công việc cần thực hiện
- Lặp lại việc kiểm tra ĐK là M N và việc tính M := M - N hoặc N:=N- M tương ứng tuỳ theo M>N hay N>M.
- Chưa biết phải lặp bao nhiêu lần.
- Câu lệnh WhileỴdo
4) Củng cố, dặn dò.
* Những nội dung đã học:
- ý nghĩa của cấu trúc lặp với số lần chưa XĐ.
- Cấu trúc chung của câu lệnh While-do trong ngôn ngữ l;ập trình Pascal.
- Sơ đồ thực hiện của lệnh lăp While.
- Sự hoạt động (thực hiện) của máy tính khi gặp lệnh While-do.
* Câu hỏi và bài tập về nhà:
- Viết lại chương trình tính tổng 2 với ĐK: phải kiểm tra giá trị a nhập vào (phải khác 0)
- Xem thêm một câu lệnh lặp khác nữa là câu lệnh Repeat – Until ở trang 132, so sánh với câu lệnh While-do.
- Xem nội dung bài tập và thực hành số 2, SGK tr 49.
- Viết chương trình thể hiện bài toán sau:
Một người có số tiền là 500 000đ ,ông ta gửi tiết kiệm ở ngân hàng với lãi xuất mỗi tháng là 1,5%. Hỏi sau bao nhiêu tháng nữa ông ta sẽ có số tiền lớn gấp đôi số tiền ban đầu.
5) Rút kinh nghiệm

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

  • docBai 10 tiet 2Lop 11.doc