Về kĩ năng 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.. Học sinh trả lời: ta phải dùng 10 câu lệnh writeln‘Thi đua dạy tốt học tập tốt’; GV: Nếu chương tr
Trang 1Bài 10 CẤU TRÚC LẶP (tiết 1)
Ngày soạn:
Ngày giảng:
Người soạn: Lê Thị Hương
Gv hướng dẫn: Nguyễn Văn Trường
I MUCH ĐÍCH, YÊU CẦU
1 Về 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 kiểm tra điều kiện trước, cấu trúc lặp với số lần định 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ể
2 Về kĩ năng
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 kiểm tra điều kiện trước, lệnh lặp với số lần định trước
Viết được thuật toán giải một số bài toán đơn giản
II PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN DẠY HỌC
1 Phương pháp: thuyết trình, giảng giải, đàm thoại, trực quan, gợi mở vấn
đề…
2 Phương tiện: Giáo án, sgk, sgv, bảng phụ mô tả 2 thuật toán Tong_1a và
Tong_2a bằng phương pháp liệt kê
III NỘI DUNG CHƯƠNG TRÌNH
1 Ổn định tổ chức lớp
3 Kiểm tra bài cũ
Trang 2Câu hỏi: Em hãy lên bảng trình bày cấu trúc của câu lệnh If-then và dùng câu lệnh đó để biểu diễn mệnh đề sau: (10đ)
Nếu b> a thì số lớn nhất là b, ngược lại số lớn nhất là a
Trả lời:
Cấu trúc của câu lệnh if-then
Dạng thiếu: if<điều kiện> then <câu lệnh>;
Dạng đủ: if<điều kiện> then <câu lệnh 1> else <câu lệnh 2>;
If b> a then max:=b else max:=a;
3 bảng phân phối thời gian
gian
4 Lặp với số lần biết trước và câu lệnh For-Do 20’
4 Bài mới
Đặt vấn đề: Để in ra màn hình 10 dòng chữ “Thi dua dạy tốt, học tập tốt” ta phải làm thế nào?
Học sinh trả lời: ta phải dùng 10 câu lệnh
writeln(‘Thi đua dạy tốt học tập tốt’);
GV: Nếu chương trình viết đi viết lại các câu lệnh thực hiện những câu lệnh trên thì rõ ràng là không thuận tiện dễ dẫn tới nhàm chán Vì thế ngôn ngữ lập trình đưa ra cấu trúc điều khiển lặp, chỉ cần viết câu lệnh thực hiện viêc in ra một dòng chữ sau đó cho phép chương trình tự thực hiện việc việc lặp lại các câu lệnh
để in ra các dòng tiếp theo
Trang 3BÀI 10 CẤU TRÚC LẶP
1.Lặp
Gv: Với a là số nguyên dương và
a> 2, xét các bài toán sau đây:
Bài toán 1: Tính và đưa kết quả ra
màn hình tổng:
S=
a
1
100
1
2
1 1
1
a
Bài toán 2: Tính và đưa kết qủa ra
màn hình tổng
2
1 1
1
1
N a a
a
a
Cho đến khi 1 0 , 0001
N a
Gv: Hai dãy số trên sẽ cho kết
quả cụ thể khi ta thay bất kỳ một
giá trị nào của a, thỏa mãn yêu
cầu của bài toán
Gv: Việc tính tổng S trong 2 bài
toán trên được thực hiện như sau:
- Xuất phát S được gán giá trị a1
- Tiếp theo cộng vào tổng S một
giá trị =a 1N , với N=1, 2, 3,…
Gv: Em nào hãy cho cô biết việc
cộng vào tổng S ở bài toán 1 được
lặp đi lặp lại bao nhiêu lần ?
- HS: Ghi bài
- HS: Lắng nghe
- HS: Ghi bài
- HS trả lời: Lặp lại 100 lần
Trang 4Gv: Vậy việc cộng vào tổng S sẽ
kết thúc khi nào?
Gv: Đúng vậy, đối với bài toán 1
số lần lặp là biết trước, việc tính
lặp sẽ chấm dứt khi số lần lặp đã
được thực hiện đủ 100 Đây là lặp
đã biết trước số lần lặp
Gv: Tương tự trên thì em nào hãy
cho cô biết việc cộng vào tổng S
ở bài toán 2 được lặp đi lặp lại
bao nhiêu lần ?
Gv: Vậy việc cộng vào tổng S sẽ
kết thúc khi nào ?
Gv: Đúng vậy, chúng ta không
thể biết được số lần lặp là bao
nhiêu Tuy nhiên việc cộng vào
tổng S sẽ kết thúc khi điều kiện
0001
,
0
1
N
a
được thoả mãn Đó gọi là lặp
chưa biết trước số lần lặp
Gv: -Trong một chương trình có
những thao tác, những công việc,
những câu lệnh được lặp đi lặp lại
gọi là lặp
- Cấu trúc lặp mô tả thao tác lặp
- HS trả lời: Khi thực hiện việc cộng
đủ 100 lần
- HS trả lời: Không biết trước được
- HS trả lời: Kết thúc khi điều kiện
0001 , 0
1
N
a được thoả mãn
Trang 5và được phân làm 2 loại là lặp với
số lần biết trước (hữu hạn) và lặp
với số lần chưa biết trước.
Gv: Để tìm hiểu cấu trúc và hoạt
động của câu lệnh lặp ta chuyển
sang phần 2
2 Lặp với số lần biết trước và
câu lệnh for-do.
Gv: Có 2 thuật toán Tong_1a và
Tong_1b để giải bài toán 1 như
sau:
Gv: Các em quan sát bảng phụ
mô tả 2 thuật toán bằng phương
pháp liệt kê như sau
Gv: Giải thích theo từng bước
trong thuật toán
Gv: Trong thuật toán Tong_1a,
giá trị N khi bắt đầu tham gia
vòng lặp là 1 và sau mỗi lần lặp N
tăng lên 1 cho đến khi N> 100
(N=101) thì kết thúc lặp (thực
hiện đủ 100 lần) Như vậy giá trị
biến điều khiển N cho biết số lần
lặp ( khi 1< N< 100 thì thực hiện
lặp, sau khi lặp lần thứ 100 thì kết
thúc lặp)
Gv: Như vậy, em nào có thể cho
cô biết trong thuật toán này
những bước nào được lặp đi lặp
- HS: Quan sát, Lắng nghe và phân tích thuật toán
- HS trả lời: bước 2, bước 3 và bước 4
Trang 6Gv: Yêu cầu học sinh so sánh
thuật toán Tong_1a với thuật toán
Tong_1b để trả lời các câu hỏi
sau:
- Giá trị N khi bắt đầu tham gia
vòng lặp là bao nhiêu ? sau mỗi
lần lặp thì giá trị cua N thay đổi
như thế nào? Khi nào thì kết thúc
lặp?
Gv: Trong thuật toán Tong_1b
này thì những bước nào được lặp
đi lặp lại?
Gv: Đưa ra nhận xét và kết luận
Gv: Ta nói cách lặp trong thuật
toán Tong_1a là dạng tiến và
trong thuật toán Tong_1b là dạng
lùi
Gv: Để 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 2 dạng tiến và
lùi như sau
a) Cấu trúc
* Dạng lặp tiến
For<biến đếm>:= <giá trị đầu> to
- HS trả lời: Giá trị N khi bắt đầu tham gia vòng lặp là 100 và sau mỗi lần lặp
N giảm đi 1 cho đến khi N < 1 (N=0) thì kết thúc lặp (thực hiện đủ 100 lần)
- HS: bước 2, bước 3, bước 4
- HS: Lắng nghe
- HS: Ghi bài
- HS: Ghi bài
Trang 7<giá trị cuối> do <câu lệnh>;
VD: s:=1;
for i:=2 to 100 do
s:= s+1;
* Dạng lặp lùi
For <biến đếm>:= <giá trị cuối>
downto <giá trị đầu> do <câu
lệnh>;
VD: s:=1;
for i:=100 downto 2 do
s:=s+1i ;
Trong đó:
- For, to, downto, do là các từ
khóa
- <Biến đếm>, <giá trị đầu>
<giá trị cuối> có cùng kiểu dữ
liệu và là kiểu vô hướng đếm
đựơc (Integer, byte, kí tự, lô
gic…) <giá trị đầu> phải bé hơn
hoặc bằng <giá trị cuối>
- <Câu lệnh > có thể là một câu
lệnh đơn hoặc một câu lệnh ghép
- 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ị
Trang 8b) Hoạt động của câu lệnh
* Dạng lặp tiến
- B1: Biến đếm nhận gtđ
- B2: Kiểm tra điều kiện( Biến
đếm <= gtc hay không?)
- B3: Nếu điều kiện ở B2 đúng
thì câu lệnh sau Do được thực
hiện và biến đếm lần lượt nhận
các giá trị liên tiếp tăng từ giá trị
đầu đến giá trị cuối Ngược lại
thì thoát khỏi vòng For- do và
thực hiện câu lệnh sau For - do
(nếu có)
* Dạng lặp lùi
- B1: Biến đếm nhận gtc
- B2: Kiểm tra điều kiện (Biến
đếm >= gtđ hay không?)
- B3: Nếu điều kiện ở B2 đúng
thì câu lệnh sau Do được thực
hiện và biến đếm lần lượt nhận
các giá trị liên tiếp giảm từ giá trị
cuối đến giá trị đầu Ngược lại thì
thoát khỏi vòng For - Do và thực
hiện câu lệnh sau For - Do (nếu
có)
* Chú ý
- Số lần lặp = giá trị cuối – giá
trị đầu +1
- Giá trị cuối >= giá trị đầu thì
- HS: Ghi bài
Trang 9câu lệnh For mới thực hiện được.
Gv: Sau đây là 2 chương trình cài
đặt các thuật toán Tong_1a và
Tong_1b
Gv: Các em chú ý vào sgk cô sẽ
giải thích một số câu lệnh trong
chương trình
Gv: Giải thích các câu lệnh tương
ứng với các bước trong thuật toán
bằng cách liệt kê đã nêu ở trên
Gv: các em về nhà xem ví dụ 2
hôm sau cô sẽ kiểm tra
- HS: Quan sát và lắng nghe GV giải thích
- HS: Lắng nghe và phân tích
- HS: Lắng nghe
IV Củng cố, dặn dò
1 Củng cố.
- Bài hôm nay cô đã giới thiệu cho các em một câu lệnh có cấu trúc mới: Do Các em cần nắm chắc cú pháp- cách thức làm việc của câu lệnh For-Do
- Cú pháp và cách thức làm việc của 2 dạng lặp tương tự giống nhau
2 Bài tập về nhà.
Các em về nhà làm các bài tập trong sgk và các bài tập trong SBT ( 3.29,
3.31, 3.33) và đọc trước phần 3- Lặp với số lần chưa biết trước và câu lệnh
while-do
3 Bài tập làm thêm.
Nhập vào một số nguyên dương n rồi tính:
S1:= 1+3+5+7+…+(2*n+1)
S2:= 13+23+33+…+n3
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 10………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………