Giáo án Tin học 11 - Bài 10: Cấu trúc lặp

A. MỤC ĐÍCH VÀ YÊU CẦU

 1. Mục đích:

- Học sinh hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.

- Hiểu cấu trúc lặp với số lần lặp biết trước.

 2. Yêu cầu:

- Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể.

- Biết cách mô tả thuật toán trong một số bài toán đơn giản.

B. PHƯƠNG PHÁP GIẢNG DẠY

 - Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.

 - Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.

C. KIẾN THỨC TRỌNG TÂM

 Trong bài này cần cung cấp cho học sinh các kiến thức sau:

- Khái niệm lặp trong thuật toán.

- Cấu trúc lặp với số lần đã biết trước, câu lệnh lặp FOR-DO.

D. PHƯƠNG TIỆN DẠY HỌC

- Bảng đen, phấn trắng.

- Máy chiếu đa năng.

 

doc16 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 16323 | Lượt tải: 3download
Tóm tắt nội dung Giáo án Tin học 11 - Bài 10: Cấu trúc lặp, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ng cuộc sống tự nhiên. Bây giờ ta sẽ xem xét 2 VD trong toán học trong SGK.
- Từ 2 bài toán trên em nào cho thầy biết bài thứ nhất lặp cộng bao nhiêu lần? Và xuất phát từ số hạng nào, tại số hạng này N bằng bao nhiêu?
- Còn đối với bài toán 2 lặp cộng bao nhiêu lần? Và xuất phát từ số hạng nào, tại số hạng này N bằng bao nhiêu?
=> Như vậy đối với bài toán 1 phép lặp giới hạn 100 lần, bài toán 2 phép lặp là không biết trước, nó thực hiện lặp cộng cho đến khi thỏa mãn điều kiện thì kết thúc.
- Bài học hôm nay ta nghiên cứu về phép lặp đã biết trước số lần lặp tương ứng với cấu trúc câu lệnh FOR-DO.
- Em nào có thể nêu ý tưởng thuật toán để giải bài toán 1.
- Ta có 2 cách để viết thuật toán giải bài toán 1. Đó là lặp tiến và lặp lùi.
- Em nào có thể trình bày thuật toán dưới dạng sơ đồ khối. 
- Em nào có thể nhận xét về hai dạng lặp trên nó có điểm giống và khác nhau ở chỗ nào?
- Em nào cho thầy biết tương ứng với 2 dạng lặp trên thì ngôn ngữ lập trình Pascal đã cung cấp cho chúng ta câu lệnh nào?
- Đó là câu lệnh FOR-DO dùng để mô tả cho hai dạng lặp ở trên.
- Em nào có thể nêu cách thức hoạt động của câu lệnh FOR-DO?
- Câu lệnh FOR-DO được áp dụng trong bước mấy của 2 dạng thuật toán trên?
- Em nào có thể viết chương trình tương ứng với 2 dạng thuật toán đó.
Áp dụng vào thuật toán hoặc chương trình em nào có thể thực hiện chạy chương trình với a=2
- VD2: GV giúp học sinh tìm hiểu thuật toán, cài đặt chương trình và kiểm thử bằng các bộ test.
Học sinh theo dỏi, ghi chép bài học.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và làm bài
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Câu lệnh lặp dạng tiến: FOR := TO DO ;
- Câu lệnh lặp dạng lùi: FOR := DOWNTO DO ;
2. Bài tập về nhà:
	1. Viết chương trình nhập số nguyên dương N từ bàn phím và thực hiện các công việc sau:
Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ trong phạm vi từ 1 đến N.
Tính tổng giá trị các số chẵn, số lẻ.
2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím
 	a) .
Dùng While - Do
S:=0; i:=1;
	While i<=N Do
	Begin
	S:=S+i;
	i:=i+1;
	End;
Dùng FOR - Do
S:=0;
	For i:=1 to N do S:=S+i;
	b) 
	Gợi ý: 
s:= 0;
dau:=1;
for i:=1 to n do
 begin
 s:=s+i*dau;
 dau:=-dau;
 end;
	c)
BÀI 10: CẤU TRÚC LẶP
A. MỤC ĐÍCH VÀ YÊU CẦU
	1. Mục đích:
- Học sinh hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.
- Hiểu cấu trúc lặp với số lần lặp chưa biết trước, kiểm tra điều kiện trước khi lặp.
	2. Yêu cầu:
- Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể.
- Biết cách mô tả thuật toán trong một số bài toán đơn giản.
B. PHƯƠNG PHÁP GIẢNG DẠY
	- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
	- Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.
C. KIẾN THỨC TRỌNG TÂM
 Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Lặp với số lần chưa biết trước, câu lệnh lặp While - Do
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ (15ph)
1. Nêu cấu trúc câu lệnh lặp với số lần biết trước. Tại sao trong câu lệnh lặp FOR-DO người ta không cần câu lệnh thay đổi giá trị của biến chỉ số.
 2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím
 	a) .
	b)
F. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC	
Thời gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò
10 ph
10 ph
10 ph
BÀI 10: CẤU TRÚC LẶP (tiết 14)
Cho và . Tính giá trị S
Bài 2: 
Cho đến khi 
3. Lặp với số lần chưa biết trước và câu lệnh WHILE-DO
Thuật toán liệt kê:
B1: Nhập a;
B2: S:=1/a; N:=0;
B3: Nếu 1/(a+N)<0,0001 → B6;
B4: N:=N+1;
B5: S:=S+1/(a+N) → B2;
B6: In S
Cú pháp câu lệnh lặp:
While do ;
* Trong đó:
- ĐK: Điều kiện là biểu thức logic;
- Câu lệnh:Làcâu lệnhđơn hoặc ghép.
Thuật toán theo sơ đồ khối:
Chương trình:
Program tong_2;
Var 	a, n : Integer;
	S : Real;
Begin
	Write(‘nhap a= ’); Readln(a);
	S:=1/a;
	N:=0;
	While 1/(a+N)>=0.0001 Do 
	Begin
	N := N + 1;
	S := S + 1/(a+N);
	End;
	Writeln(‘tong S cua bai toan 2 la ’, S:10:2);
	Readln;
End.
VD1: Tìm ƯCLN của 2 số nguyên dương M và N.
*Ý tưởng:
- Nhập và kiểm tra 2 số M và N, nếu M=N thì ƯCLN là M. Nếu không thực hiện vòng lặp gán M=M-N nếu M>N và ngược lại, cho đến khi M=N
*Thuật toán:
*Chương trình:
Program UCLN;
Var m,n : Integer;
Begin
 Write(‘Nhap m va n: ’); readln(m,n);
 While mn do
 If m > n then m := m - n 
 Else n := n – m;
 Writeln(‘UCLN = ’, M);
 Readln
End.
- Ghi bài học lên bảng.
- Bài trước các em đã tìm hiểu khái niệm về lặp và lặp với số lần biết trước, bài học hôm nay ta sang phần tiếp theo là lặp với số lần chưa biết trước, ta sẽ làm việc trên bài toán 2 trong bài này số lần lặp N là chưa biết.
- Em nào có thể nêu ý tưởng giải bài toán 2?
- Em nào có thể viết thuật toán giải bài toán 2 bằng phương pháp liệt kê?
- Theo em lặp với số lần chưa biết trước có mấy dạng?
- Lặp với số lần chưa biết trước có 2 dạng:
Dạng 1:
Trong khi còn đúng thì thực hiện .
Dạng 2:
Thực hiện trong khi còn đúng.
- Ở dạng 1: Đầu tiên kiểm tra và tính giá trị của ĐK, nếu ĐK còn đúng thì thực hiện công việc và chỉ thực hiện 1 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ên đến một lúc nào đó ĐK lặp không còn đúng nữa và vòng lặp sẽ được kết thúc.
- Theo em ĐK lặp trong bài toán 2 là gì và khi nào thì kết thúc lặp? 
- Như vậy thuật toán của bài toán 2 áp dụng phương pháp lặp dạng 1. Nó kiểm tra ĐK 1/(a+N)<0,0001 trước khi thực hiện công việc lặp.
- Tương ứng với dạng 1 em nào cho biết câu lệnh lặp trong Pascal là gì?
- Theo sơ đồ khối vòng lặp While – Do thể hiện trong những bước nào?
- Theo cấu trúc lặp trong Pascal, em nào có thể viết chương trình giải bài toán 2 theo dạng 1?
- Em hãy thực hiện phép lặp với a = 9995.
B1: Nhập a = 5;
B2: Gán N=0;
B3: Thực hiện lặp:
1/9995 > 0.0001:
N:=0+1=1; 
S:=1/9995+1/(9996) → B3
1/9996 > 0.0001:
N:=1+1=2; 
S:=1/9995+1/(9996) +1/(9997) → B3
1/9996>0.0001:
N:=2+1=3; 
S:=1/9995+1/(9996) +1/(9997) +1/(9998) → B3
…….
1/10000 = 0.0001:
N:=4+1=6; 
S:=1/9995+1/(9996) +1/(9997) + 1/(9998) + 1/(9999) + 1/(10000) + 1/(10001) → B3
1/10001 < 0.0001→ B6
 Kết thúc
- Ta xem xét tiếp 2 VD sau:
VD1: Tìm ƯCLN của 2 số nguyên dương M và N.
- Em nào có thể nêu ý tưởng thực hiện bài toán?
- Em nào viết được thuật toán?
- Em nào viết chương trình thực hiện thuật trên.
- Em nào có thể thực hiện chương trình trên bằng bộ test: M=28, N=12.
Học sinh theo dỏi, ghi chép bài học.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và trả lời.
Học sinh theo dỏi, ghi chép và làm bài
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
	- Ý nghĩa sử dụng câu lệnh lặp với số lần chưa biết trước While – Do.
	- Câu lệnh lặp While – Do.
2. Bài tập về nhà:
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.
Cho số thực a. Tìm số nguyên dương N nhỏ nhất thỏa mãn:
Gợi ý: Cách 1: Dùng vòng lặp vô hạn
S := 1; N := 1;
While true do {cho vòng lặp vô hạn vì đk luôn đúng}
	Begin
	If s>a then break;
	Inc(n);
	S := s + 1/n;
	End;
Cách 2: Không dùng vòng lặp vô hạn
S := 1; N := 1;
While s<=a do {cho vòng lặp giới hạn đến s=a}
	Begin
	Inc(n);
	S := s + 1/n;
	End;
BÀI TẬP VÀ THỰC HÀNH 2
A. MỤC ĐÍCH VÀ YÊU CẦU
	1. Mục đích:
- Học sinh làm quen với công cụ hiệu chỉnh chương trình.
- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).
- Thực hành các bài tập sử dụng vòng lặp biết trước và chưa biết trước.
	2. Yêu cầu:
- Học sinh biết xây dựng chương trình cấu trúc rẽ nhánh, lặp.
B. PHƯƠNG PHÁP GIẢNG DẠY
	- Giúp HS làm quen với cấu trúc rẽ nhánh thông qua các bài tập từ đơn giản đến phức tạp.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Phòng máy thực hành.
E. NỘI DUNG GIẢNG DẠY
Câu 1: Bài toán Bộ số Pi-ta-go:
Nêu bài toán.
Nêu ý tưởng giải bài toán.
Xây dựng chương trình.
Thực hiện chương trình trên máy tính.
Thực hiện theo các bước hướng dẫn thực hành trong sách giáo khoa.
Câu 2: Viết chương trình tính giá trị của hàm:
Nếu 
Nếu , 
Nếu , 
a) 
Program tinhGTBT;
Var x, y, z: real;
	Begin 
	Write(‘nhap x, y: ’);readln(x,y);
	Z:= sqr(x) + sqr(y);
	If z<=1 then writeln(‘z=’, z:10:2)
	Else
	If (z>1) and (y>=x) then writeln(‘z= ’,x+y:10:2)
	Else
	If y<x then writeln(‘z=’, 0.5:6:2);
	Readln
	End.
Nếu điểm (x,y) thuộc hình tròn bán kính r (r>0), tâm (a,b).
Trong các trường hợp còn lại
b)
Gợi ý: If (sqr(x-a) + sqr(y-b)) <= sqr(r) then Z := abs(x) + abs(y)
	Else Z := x+y;
Bài 3: Viết chương trình tính các tổng sau, với N được nhập từ bàn phím:
a)
b) 
Gợi ý:
a) 	S := 0;
	For i := 1 to N do S := S + sqr(i);
b) S := 0;
 For i := 1 to N do S := S + 1/sqr(i);
Câu 4: Lập trình giải bài toán sau: Nhập số nguyên dương N từ bàn phím. Tìm số nguyên k nhỏ nhất thỏa mãn điều kiện 3k > N. Đưa ra màn hình giá trị k và 3k.
Chú ý: 
Gợi ý: 	k := 0; S := 1;
	While S <= N do
	Begin
	Inc(k);
	S := exp(k*ln(3));
	End;
Câu 5: Viết chương trình nhập số nguyên và kiểm tra số vừa nhập là số chẵn hay số lẻ.
Gợi ý: Nếu N mod 2 = 0 thì N là số chẵn, ngược lại là số lẻ.
Câu 6: Viết chương trình giải phương trình bậc nhất ax + b = 0
Chương trình:
Var a,b,x : real;
Begin
	Write('a = '); Readln(a);
	Write('b = '); Readln(b);
	If a = 0 Then 	
	If b = 0 Then 
	Writeln('Phuong trinh co vo so nghiem')
	Else 
	Writeln('Phuong trinh vo nghiem')
	Else 
	Begin
	x:= -b/a;
	Writeln('Phuong trinh co nghiem la :',x:6:2);
	End;
	Readln;
End.

File đính kèm:

  • docGiáo án Tin học 11 - Bài 10_Cấu trúc lặp.doc