- Hiểu cấu trúc lặp với số lần biết trớc, cấu trúc lặp kiểm tra điều kiện trớc.. - Biết mô tả đợc thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp.. - Viết đúng lệnh lặp với s
Trang 1Tuần :
Tiết : 13+14+15 Ngày soạn: Ngày giảng:
Bài 10 Cấu trúc lặp
I mục tiêu của bài:
1 Kiến thức
- 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 biết trớc, cấu trúc lặp kiểm tra điều kiện trớc
2 Kĩ năng
- Biết vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể
- Biết mô tả đợc thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp
- Viết đúng lệnh lặp với số lần biết trớc, lệnh lặp kiểm tra điều kiện trớc
- Viết đợc thuật toán của một số bài toán đơn giản
3 Thái độ
- Tiếp tục khơi gợi lòng ham thích giải toán bằng lập trình trên máy tính
- Tiếp tục rèn luyện các phẩm chất cần thiết của ngời lập trình
II Chuẩn bị của Giáo viên và học sinh:
1 Giáo viên: SGK, giáo án, STK (máy chiếu nếu có)
2 Học sinh: SGK, chuẩn bị trớc bài ở nhà
III Phơng pháp giảng dạy
- Thuyết trình, đàm thoại
IV Tiến trình bài học và các hoạt động:
1 ổn định tổ chức: 1’
2 Kiểm tra bài cũ:
Em hãy cho biết sự giống và khác nhau của hai dạng lệnh If – Then
3 Bài mới:
Tiết 13
* Hoạt động 1: Giới thiệu cho HS biết rẽ nhánh là gì?
- GVĐVĐ: Ở bài trước chỳng ta đó học
về lệnh rẽ nhỏnh nhưng khụng phải lỳc
nào chỳng ta cũng cú thể sử dụng được
cấu trỳc rẽ nhỏnh Nhiều bài toỏn cũn
phức tạp hơn mà cấu trỳc rẽ nhỏnh khụng
đỏp ứng được Hụm nay chỳng ta làm
quen với một dạng cấu trỳc khỏc đú là
cấu trỳc lặp
- GV: Đưa ra hai bài toỏn, yờu cầu HS
tỡm cỏch để giải bài toỏn này
- HS: Đưa ra cỏch giải bài toỏn của mỡnh,
cú thể cú nhiều cỏch giải khỏc nhau
1 Lặp
- Xột 2 bài toỏn với a là số nguyờn và a>2
Bài toỏn 1: Tớnh và đưa ra kết quả màn
hỡnh tổng:
100
1
2
1 1
1 1
1
a a
a a S
Trang 2- GV: Trình bày cách giải bài toán từng
bước một
S1:= 0;
S1:=S1+1/a;
S1:=S1+1/(a+1);
……
S1:=S1+1/(a+N);
Sau đó gọi học sinh nhận xét về cách giải
bài toán này
- HS: Nếu giải theo cách này thì ta phải
viết 100 lần câu lệnh nếu như N=100,
Nêu N>100 thì số lần phải viết chưa biết
trước Nếu áp dụng cho cả hai bài toán thì
đều quá dài
- GVDD: Vậy ta có thể giải bài toán này
theo cách nào ngắn nhất mà vẫn chính
xác
- GV: Lấy 1 ví dụ thực tế về việc tính
toán lặp đi lặp lại nhiều lần để học sinh
hiểu được khái niệm lặp
Bài toán 2: Tính và đưa ra kết quả màn
hình tổng:
N a a
a a
S
2
1 1
1 1
2
cho đến khi 1 0 , 0001
N a
Cách giải:
- B1: Khởi tạo S:=1/a;
- B2: Tiếp theo mỗi lần thì cộng thêm vào
S là 1/(a+N) với N=1,2,3,
- Với bài toán 1 thì việc cộng thêm dừng khi N=100 có nghĩa là đã biết được số lần lặp biết trước
- Với bài toán 2 thì việc cộng thêm dừng khi 1/(1+N)<0,0001 Có nghĩa là số lần lặp chưa biết trước
Vậy: Trong lập trình có những thao tác
phải lặp đi lặp lại nhiều lần, khi đó gọi là cấu trúc lặp.
Trong lập trình thường có hai loại cấu trúc lặp:
+ Lặp vớí số lần biết trước
+ Lặp với số lần không biết trước
Ý nghĩa của cấu trúc lặp: Cấu trúc lặp
là điều khiển thực hiện công việc lặp đi lặp lại khi chưa đủ số lần lặp hoặc một điều kiện nào đó còn đúng.
* Hoạt động 2: Trình bày cho HS biết Lặp với số lần biết trước và cấu trúc lệnh lặp
For-do trong ngôn ngữ lập trình Pascal
GV dẫn dắt vào vấn đề: Trong lập trình
có hai loại cấu trúc lặp, đó là lặp với số
lần biết trước và lặp với số lần không biết
trước Chúng ta đi tìm hiểu lần lượt từng
cấu trúc lặp
Trang 3GV: Dùng bảng phụ để đặt câu hỏi cho
HS
GV: Gọi 2 HS lên bảng biểu diễn 2 thuật
toán trên bảng phụ bằng phương pháp vẽ
sơ đồ khối
HS: Lên bảng biểu diễn sơ đồ khối của
hai thuật toán trên
GV: Thuật toán trên có lặp không?
HSTL: Thuật toán trên lặp
GV: Hai thuật toán trên giống và khác
nhau như thế nào?
HS: Trả lời theo sự hiểu biết của mình
GV: Nhận xét tổng họp những ý kiến của
HS và dẫn dắt đưa HS biết dạng lặp với
số lần biết trước và sau đó đưa ra hai
dạng cấu trúc lặp với số lần biết trước
trong Pascal
GV: Nói rõ cho HS biết khi nào dùng
dạng lặp tiến và khi nào dùng dạng lặp
lùi
2 Lặp với số lần biết trước và
câu lệnh for-do
- Dạng lặp với số lần biết trước dùng để thực hiện câu lệnh một số lần xác định Dạng này dùng biến điều khiển để điều khiển vòng lặp
- Để mô tả cấu trúc lặp với số lần biết trước, Pascal dùng câu lệnh lặp for-do với hai dạng tiến lùi
+ Dạng lặp tiến:
For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do <câu lệnh>;
+ Dạng lặp lùi:
For <biến đếm>:=<giá trị cuối> to <giá trị đầu> do <câu lệnh>;
- Trong đó:
+ Biến đếm thường là kiểu số nguyên + Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm Giá trị đầu nhỏ hơn giá trị cuối
+ Dạng lặp tiến: Biến đếm tự tăng dần từ giá trị đầu đến giá trị cuối
+ Dạng lặp lùi: Biến đếm tự giảm dần từ giá trị cuối đến giá trị đầu
* Chú ý: Trong vòng lặp không được chứa lệnh làm thay đổi giá trị của biến
Trang 4điều khiển.
Tiết 14
* Hoạt động 3: Rèn luyện kỹ năng vận dụng lệnh For - do
- ổn định lớp:
- Kiểm tra bài cũ:
HĐ 1: Kiểm tra kiến thức cũ
MT: Nhắc lại cú pháp, hoạt động của câu
lệnh For Do
- GV: Hãy nêu cú pháp của hai câu lệnh
lặp với số lần lặp biết trớc và hoạt động
của chúng?
- HS:
1/ Lặp dạng tiến:
for<biếnđếm>:=<gtđ>to<gtc>do<câu
lệnh>;
2/ Lặp dạng lùi:
for<biếnđếm>:=<gtc> downto <gtđ>do
<câu lệnh>;
Hoạt động của lệnh:
- Lặp dạng tiến: câu lệnh sau DO đc
thực hiện tuần tự, với biến đếm lần
lợt nhận các giá trị tăng dần từ
GTĐ đến GTC
- Lặp dang lùi: Câu lệnh sau DO đc
thực hiện tuần tự với biến đếm lần
lợt nhận các giá trị giảm dần từ
GTC đến GTĐ
HS: Trả lời câu hỏi
GV: Nhận xét
HĐ 2: Vận dụng kiến thức
MT: Vận dụng câu lệnh For – do vào
biểu diễn thuật toán Tong_1a
GV: Ví dụ cài đặt thuật toán Tong_1a
HS: Nghe giảng, ghi bài
HS: Nghiên cứu 2 ví dụ
GV: Hãy so sánh hai thuật toán trên
HS: Nhắc lại kiến thức cũ về thuật toán
GV: Củng cố thêm trả lời của học sinh
GV: áp dụng vào thuật toán Tong_1a
hãy trình bày thuật toán của Tong_1b
HS: Lên trình bày thuật toán Tong_1b
* Các ví dụ về câu lệnh lặp:
VD1: Thuật toán Tong_1a.
Program Tong_1a;
Uses crt;
Var s: real;
a, N:Integer;
Begin Clrscr;
Write(‘Nhap gia tri a vao: ’); Readln(a);
S:=1/a;
For N:=1 to 100 do S:=S+1/(a+N);
Writeln(‘Tong s la: ’,S:8:4); Readln
End
Trang 5GV: Nhận xét cách làm của học sinh
HĐ 3: Vận dụng câu lệnh vào bài toán
cụ thể:
MT: Viết đợc chơng trình theo yêu cầu
của VD 2
GV: Giới thiệu ví dụ 2
HS: Quan sát ví vụ
HS: Nghe giảng, ghi bài
VD2: Nhập vào từ bàn phím 2 số nguyên dơng M và N, tính và đa ra màn hình tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ M->N.
Program VD2;
Uses crt;
Var M,N,i: Integer;
T: longint;
Begin Clrscr;
Write(‘Nhap so M nho hon N: ’); Write(‘Nhap M: ’); readln(M);
Write(‘Nhap N: ’); readln(N);
T:=0;
For i:=M to N do
If (i mod 3 =0) or (I mod 5 =0) then T:=T+i;
Writeln(‘Ket qua: ’, T);
Readln End
Tiết 15
Hoạt động 4: Trỡnh b y cho HS biày cho HS bi ết Lặp với số lần cha biết trước v cày cho HS bi ấu trỳc lệnh lặp For-do trong ngụn ngữ lập trỡnh Pascal
Đặt vấn đề:
Treo nội dung bài toỏn Tong_2 lờn bảng
- GV: Sự khỏc nhau về giới hạn lặp của
bài toỏn này với bài toỏn 1?
- HS: Quan sỏt suy nghĩ và trả lời.
Bài toỏn 1: Cho giới hạn là N
Bài toỏn 2: Cho giới hạn là S
- GV: Lặp bao nhiờu lần?
- HS: Quan sỏt suy nghĩ và trả lời.
Bài toỏn 1: Lặp 100 lần
Bài toỏn 2: Chưa xỏc định được
- GV: Lặp đến khi nào?
- HS: Quan sỏt suy nghĩ và trả lời.
Bài toỏn 1: Lặp đến khi N>100
Bài toỏn 2: Lặp đến khi điều kiện
1/(1+N)<0.0001 được thỏa món
3 Lặp với số lần cha biết trớc – Câu lệnh While – do.
Cấu trỳc chung:
While <điều kiện> do <cõu lệnh lặp>; Giải thớch:
+ <điều kiện>: Là biểu thức quan hệ hoặc biểu thức logic, là điều kiện để lặp lại + <cõu lệnh lặp>: Là cỏc lệnh cần phải lặp lại
- Chú ý: Trong cấu trúc lặp While – do phải có lệnh tăng biến chỉ số.
* ý nghĩa: Khi điều kiện còn đúng thì
cong thực hiện câu lẹnh sau Do sau đó lại
Trang 6- GV: NhËn xÐt vµ ®a ra kÕt luËn.
* KL: Qua ví dụ ta thấy có một dạng bài
toán có sự lặp lại một số lệnh nhưng
không biết trước được số lần lặp Cần có
một cấu trúc điều khiển lặp lại một công
việc nhất định khi thỏa mãn một điều
kiện nào đó
- GV: Trong bài toán 2 điều kiện lặp lại
là gì?
- HS: Suy nghÜ vµ tr¶ lêi.
- GV: Trong bài toán 2 lệnh cần lặp là
gì?
- HS: Suy nghÜ vµ tr¶ lêi.
- GV: Sự khác nhau trong lệnh cần lặp
For và While là gì?
- HS: Quan s¸t vµ Suy nghÜ tr¶ lêi.
- GV: Dựa vào cấu trúc cho biết máy sẽ
thực hiện tính điều kiện trước hay thực
hiện lệnh cần lặp trước
Kết luận: Treo sơ đồ cấu trúc của câu
lệnh While – do lên bảng và giải thích
- GV: Trong bài toán này điều kiện lặp là
gì?
- HS: Not (1/(a+N)<0.0001)
- GV: Trong bài toán này lệnh cần lặp là
gì?
- HS: N: = N + 1; S : = S + 1/(a+N);
- GV: Nếu bỏ Not đi thì điều kiện thực
hiện câu lệnh lặp sẽ được viết như thế
nào?
- HS: Suy nghÜ tr¶ lêi
- GV: Đối với bài lập trình này câu lệnh
sau do ta sử dụng là câu lệnh đơn hay câu
lệnh ghép?Tại sao?
- HS: Suy nghÜ tr¶ lêi
- GV: LÊy vÝ dô vÒ thuËt to¸n t×m íc sè
chung lín nhÊt cña hai sè M, N
- GV: Điều kiện để tiếp tục lặp là gì?
- HS: M<>N
- GV: Các lệnh cần lặp là gì?
quay l¹i kiÓm tra ®iÒu kiÖn
* Ví dụ 1: Tính và đưa kết quả ra màn
hình tổng:
1
2
1 1
1 1
N a a
a a
S
0001 0
1
N a
Ví dụ 2: Tìm ƯCLN của hai số nguyên
dương M, N Phân tích để xác định <điều kiện> và
<lệnh cần lặp>
VD:
M = 25 M = 10
N = 15 N = 15
M = 10 M = 5
N = 5 N = 5
M:=M-N
Trang 7- HS: M: = M – N ; N: = N – M;
Gọi hs nên viết câu lệnh lặp While – do
cho bài toán này
KL: Treo chương trình cài đặt trên giấy
A0 và giải thích
- GV: Có thể lấy câu lệnh While – do để
thay thế câu lệnh For – do trong bài toán
tong_1a được không? Nếu được thì viết
lại như thế nào?
- HS: Có thể thay thế được.
N : = 0;S:=1/a;
While (N<=100) do
Begin
N: = N + 1;
S: = S + 1/(a+N);
End;
ƯCLN (25,15) = 5
IV cñng cè dÆn dß.– dÆn dß
1 Nội dung đã học.
- Ý nghĩa của cấu trúc lặp có số lần chưa biết trước
- Cấu trúc chung của lệnh lặp While trong ngôn ngữ Pascal
- Sơ đồ thực hiện lệnh lặp While
- Sự thực hiện của máy khi gặp lệnh While
2 Câu hỏi và bài tập về nhà.
- Giải bài tập 4, 5 b,7,8 SGK/trang 51
- Xem nội dung bài thực hành 2 SGK trang 49
- Xem nội dung phụ lục B SGK trang 131; lệnh rẽ nhánh và lặp
- Xem nội dung phụ lục C SGK trang 139; lệnh rẽ nhánh và lặp