- Hiểu được 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 cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể.[r]
Trang 1bài 10: Cấu Trúc Lặp
I mục đích, yêu cầu.
* Qua bài học này học sinh cần nắm được các kiến thức sau:
- Hiểu được nhu cầu của cấu trúc lặp trong biểu diển thuật toán
- Hiểu được 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 cách vận dụng đúng đắn từng loại cấu trúc lặp vào tình huống cụ thể
- 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 các 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
II Phương pháp, phương tiện dạy học.
- Phương pháp: Thuyết trình, vấn đáp
- Phương tiện: Máy chiếu, máy tính, phòng chiếu hoặc bảng, tờ bìa lớn, phiếu học tập
- Một số thiết bị dạy học trực quan như: tranh ảnh, một đoạn băng để minh hoạ
III Lưu ý sư phạm:
- Cần chú ý cho học sinh hiểu ý nghĩa của cấu trúc lặp
- Cần hướng dẫn cụ thể để học sinh hiểu được thuật toán dạng lùi và dạng tiến
- Cần hướng dẫn, phân tích để học sinh nắm được cấu trúc lặp dạng tiến và dạng lùi
- Hướng dẫn để học sinh vận dụng cấu trúc lặp vào làm các bài tập đơn giản
III Nội dung
1 ổn định lớp, kiểm tra sĩ số
2 Làm quen với lớp
Hoạt động của giáo viên và học sinh Nội dung ghi bảng
GV: Đặt câu hỏi:
Câu hỏi 1: Trình bày cách viết của cấu
trúc rẽ nhánh ở 2 dạng
Câu hỏi 2: Trình bày lưu đồ và ý nghĩa
của cấu trúc rẽ nhánh ở 2 dạng
HS: Suy nghĩ và trả lời câu hỏi.
GV: Phân tích câu trả lời của học sinh.
- Giới thiệu bài mới
GV: Lấy ví dụ:
Với a là số nguyên và a>0 xét 2 trường
hợp sau:
TH1:
TH2:
HS: Vừa nghe và chép vào vở.
GV: Hỏi: ở 2 trường hợp trên giống và
khác nhau ở điểm nào?
HS: Suy nghĩ và trả lời câu hỏi.
1 Lặp
TH1: Tính và đưa kết quả ra màn hình tổng
a
1
1 +
1
a + 2
1
a + 100
1
a
TH2: Tính và đưa kết quả ra màn hình tổng
a
1
1 +
1
a + 2
1
a a + N
1
Trang 2GV: Phân tích và bổ sung câu trả lời.
- Đưa ra kết luận:
HS: Nghe và chép bài.
GV: Bây giờ chúng ta đi tìm hiểu xem
trong Pascal cấu trúc lặp được mô tả
như thế nào
GV:Phân tích bài toán 1 và viết thuật
toán
- Đặt câu hỏi cho từng bước của thuật
toán
HS: Suy nghĩ và trả lời các câu hỏi.
GV: Phân tích và giải thích lại thuật
toán
- Viết thuật toán 2:
- Đặt câu hỏi cho từng bước của thuật
toán
HS: Suy nghĩ và trả lời các câu hỏi.
GV: Phân tích và giải thích lại thuật
toán
GV: ở thuật toán 1 và thuật toán 2
giống và khác nhau ở điểm nào?
- Thuật toán ở TH1 là thuộc dạng gì?
- Thuật toán ở TH2 thuộc dạng gì?
HS: Suy nghĩ và trả lời.
GV: Phân tích, bổ sung và đưa ra kết
luân
- Để mô tả cấu trúc lặp với số lần biết
trước, Pascal dùng câu lệnh for - do
- Cách dùng của nó ở 2 dạng tiến và lùi
như sau:
HS: lắng nghe và chép bài.
GV: giải thích.
- Biến đếm là biến đơn, thường có kiểu
nguyên
- Giá trị đầu và 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 giá trị cuối
- Nếu giá trị đầu lớn hơn giá trị cuối
Cho đến khi < 0,0001
N
a +
1
ở TH1 là lặp với số lần đã biết trước
ở TH2 là lặp với số lần chưa biết trước
2 Lặp với số lần biết trước và câu lệnh for-do.
Thuật toán 1:
Bước 1: S 1/a; N 0;
Bước 2: N N + 1;
Bước 3: N > 100 thì chuyển sang bước 5; Bước 4: S S + 1/ (a+N); quay lại bước 2 Bước 5: Đưa ra màn hình
Thuật toán 2:
Bước 1: S 1/a; N 101;
Bước 2: N N - 1;
Bước 3: N < 1 thì chuyển sang bước 5; Bước 4: S S + 1/ (a+N); quay lại bước 2 Bước 5: Đưa ra màn hình
KL: - Thuật toán ở TH1 thuộc dạng tiến
- Thuật toán ở TH2 thuộc dạng 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:
Trang 3thì vòng lặp không được thực hiện.
GV: Giải thích hoạt động câu lệnh của
2 dạng trên
for < biến đếm>:=<giá trị cuối > dowto
<giá đầu> do <câu lệnh>;
Chú ý: Giá trị biến đếm được điều chỉnh tự
động, vì vậy câu lệnh ở sau do không được
thay đổi giá trị của biến đếm.
TiẾT 2: XẫT VÍ DỤ
GV: Lấy ví dụ viết chương trình cài
đặt thuật toán của TH1 và TH2
GV: Đặt câu hỏi ở từng bước để hs
hình hiểu ý tưởng của chương trình
HS: Suy nghĩ và trả lời câu hỏi.
GV: Phân tích và bổ sung câu trả lời.
HS: nghe và chép bài
GV: Giải thích.
{ S được đưa ra 8 vị trí, 4 dành cho
phần thập phân} độ rộng và phần thập
phân
GV: Đặt câu hỏi ở từng bước để hs
hiểu ý tưởng của chương trình
HS: Suy nghĩ và trả lời câu hỏi.
GV: Phân tích và bổ sung câu trả lời.
HS: nghe và chép bài
GV: Lấy ví dụ 2:
TiẾT 2: XẫT VÍ DỤ
* Chương trình cài đặt thuật toán ở TH1:
program tong TH1;
uses crt;
var S: real;
a, N: interger;
begin
clrscr;
write (‘hay nhap gia tri cua a vao! ‘); readln (a);
S := S + 1.0/ a;
for N := 1 to 100 do
S := S + 1.0/ (a+N);
Writeln ( ‘ Tong S la: ‘,S : 8 : 4); readln
end.
* Chương trình cài đặt thuật toán ở TH2:
program tong TH2;
uses crt;
var S: real;
a, N: interger;
begin
clrscr;
write (‘hay nhap gia tri cua a vao! ‘); readln (a);
S := S + 1.0/ a;
for N := 1 downto 100 do
S := S + 1.0/ (a+N);
Trang 4Viết chương trình thực hiện việc nhập
từ bàn phím hai số nguyên dương M và
N (M<N), tính và đưa ra màn hình
tổng các số chia hết cho 3 hoặc trong
phạm vi từ M đến N
GV: Đặt câu hỏi:
Câu hỏi 1: Xác định input và output
HS: Trả lời câu hỏi.
GV: Bổ sung câu trả lời của học sinh.
- Khuyến khích học sinh lên bảng viết
chương trình
GV: Đặt câu hỏi ở từng bước để hs
hiểu ý tưởng của chương trình
HS: Suy nghĩ và trả lời câu hỏi.
GV: Phân tích và bổ sung câu trả lời.
Writeln ( ‘ Tong S la: ‘,S : 8 : 4);
readln
end.
Input: M,N: interger;
Output: In ra màn hình tổng T MOD 3 or 5
= 0;
{T chia hết cho 3 hoặc 5}
Chương trình:
program Tong T;
uses crt;
var M, N, i : interger;
T : longint;
begin
clrscr;
write ( ‘ Nhap so M nho hon so N’);
write ( ‘ M = ‘); readln (M);
write ( ‘ 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 3:
3 Lặp với số lần chưa biết trước và câu lệnh while - do
Lặp với số lần chưa biết trước và câu
lệnh while - do
GV: Chúng ta sẽ qua tìm hiểu thuật
toán với số lần chưa biết trước để xem
điểm giống và khác với thuật toán lặp
với sô lần biết trước như thế nào
GV:Phân tích bài toán 1 và viết thuật
toán
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 2:
Bước 1: S 1/a; N 0;
Bước 2: Nếu 1/ ( a + N) < 0,0001 thì chuyển sang bước 5;
Bước 3: N N + 1;
Trang 5- Đặt câu hỏi cho từng bước của thuật
toán
HS: Suy nghĩ và trả lời các câu hỏi.
GV: Phân tích và giải thích lại thuật
toán
- Từ đó các em có kết luận gì?
HS: suy nghĩ và trả lời.
GV: bổ sung câu trả lời.
- Để mô tả cấu trúc lặp như vậy pascal
dùng câu lênh while - do có dạng
GV: Qua thuật toán trên các em hãy
viết lưu đồ của thuật toán trên
HS: viết lưu đồ
GV: Viết lại lưu đồ
HS: Vẻ vào vở
GV: Đặt câu hỏi:
Dựa vào lưu đồ trên em nào vẻ được sơ
đồ khối?
- HS: lờn bảng vẻ sơ dồ khối
Bước 4: S S + 1/ (a+N); quay lại bước 2 Bước 5: Đưa S ra màn hình, rồi kết thúc;
KL: Như vậy việc lặp với số lần chưa biết trước chỉ kết thúc khi một điều kiện cho trước được thoả mãn.
while <điầu kiện> do <câu lệnh>.
- Trong đó: điều kiện là biểu thức lôgic
- Câu lệnh là một câu lệnh đơn hoặc ghép
* Lưu đồ lặp với số lần chưa biết trước
Sơ đồ khối:
Nhập a
S 1/a
1/(a +N)
<0,000 1
NN+1 SS+1(a+N )
Đưa ra S rồi kết thúc
Đúng
Sai iii
Chương trình
program TH2
Câu lệnh
Điều kiện sai
đúng
Trang 6GV: Đặt câu hỏi:
Câu hỏi 1: Xác định input và output
HS: Trả lời câu hỏi.
GV: Bổ sung câu trả lời của học sinh.
- Khuyến khích học sinh lên bảng viết
chương trình
GV: Đặt câu hỏi ở từng bước để hs
hiểu ý tưởng của chương trình
HS: Suy nghĩ và trả lời câu hỏi.
GV: Phân tích và bổ sung câu trả lời.
GV: Lấy ví dụ
Tìm UCLN của 2 số nguyên dương M
và N
GV:
Phát phiếu học tập cho từng nhóm
- Tìm Input, output
- Viết thuật toán
HS: Suy nghĩ, thảo luận theo nhóm và
đại diện lên bảng làm
GV: Phân tích và nhận xét và bổ sung
cho từng nhóm một
GV: Phát phiếu học tập cho học sinh
- Dựa vào thuật toán hãy vẻ sơ đồ khối
- Hãy viết chương trình cho bài toán
trên
GV: Phân tích và nhận xét và bổ sung
cho từng nhóm một
- Vẻ lại sơ đồ khối và viết lại
chương trình
GV: Đặt câu hỏi ở từng bước để hs
ues crt;
var S: Real
a, N: integer;
begin
write ( ‘ Hay nhap gia tri a vao ,’);
readln (a);
S := 1.0/ a; N := 0;
While not (1/ (a+N) < 0,0001) do
begin
N := N+1;
S := S + 1.0/(a+N);
end;
Writeln (‘ Tong S la: ’, S : 8 : 4);
Readln
end.
Input: M, N: integer, output: UCLN;
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 rồi chuyển đến B5;
B3: Nếu M > N thì M M - N ngược lại N
N - M;
B4: Quay lại bước 2;
B5: Đưa ra kết quả UCLN rồi kết thúc
* Sơ đồ khối
Nhập N
M = N?
Đưa ra M, kết thúc
M > N
MM - N
N N - M
Sai Sai
Đúng
Chương trình
Program UCLN;
Ues crt;
var M, N: integer begin
Trang 7V cũng cố, dặn dò.
Nhắc lại kiến thức về cấu trúc của câu lệnh lặp trong biểu diển thuật toán
Lặp với số lần biết trước và cấu trúc lặp kiểm tra điều kiện trước
Các em về nhà viết lại thuật toán, vẻ lưu đồ từng thuật toán và cho chạy chương
trình trên máy RÚT KINH NGHIỆM:
hiểu ý tưởng của chương trình
HS: Suy nghĩ và trả lời câu hỏi.
GV: Phân tích và bổ sung câu trả lời.
clrscr;
Write ( ‘M, N = ‘);
Readln ( M, N);
While M < > N do
if M > N then M := M - N else
N := N - M;
Writeln (UCLN = ‘, M);
Readln;
End