Câu 1: Trình bày cấu trúc và ý
nghóa của câu lệnh If - Then?
Câu 2: Câu lệnh ghép có dạng gì?
Khi nào ta sử dụng câu lệnh ghép?
Kiểm tra bài cũ
Bài 10. CẤU TRÚC LẶP
Bài 10. CẤU TRÚC LẶP
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, sau
Vận dụng 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 có sử dụng cấu trúc lặp
Viết đúng các câu lệnh về lặp
Viết được thuật toán của
một số bài toán đơn giản
1. Khái niệm lặp
1. Khái niệm lặp
Vd1: Bài toán gửi tiền vào ngân hàng:
Gửi 1 000 000đ vào ngân hàng, lãi suất là 2%
một tháng, Tính số tiền thu được sau mỗi
tháng.
Cách tính tiền
thu được sau mỗi tháng?
Tiền của tháng sau = gốc+lãi tháng trước
Tiền của tháng sau = gốc+lãi tháng trước.
1 020 000+20 400
Laõi 2%
Thaùng thöù 2
Voán 1 020 000
1 040 000+20 808
Laõi 2%
Thaùng thöù 3
Voán 1 040 400
1 000 000+20 000
Laõi 2%
Thaùng thöù 1
Voán 1 000 000
1 020 000
1 040 400
1 061 208
Công việc tính toán này
được lặp đi lặp lại
sau mỗi tháng
Gốc của tháng sau = gốc+lãi tháng trước
Gốc của tháng sau = gốc+lãi tháng trước.
Vd2:
Lập trình tính điểm cho hsinh một lớp.
Ta sẽ phải lặp đi lặp lại một số thao tác
như sau với mỗi học sinh:
+ Nhập họ tên học sinh (hoặc số báo
danh);
+ Nhập điểm (các môn);
+ Tính tổng điểm hoặc tính điểm trung
bình;
Lặp có nghóa là làm đi làm lại nhiều
lần cùng một thao tác.
Trong lập trình, cũng có những thao
tác, những câu lệnh lặp đi lặp lại nhiều
lần tạo thành một cấu trúc lặp.
Có 2 loại cấu trúc lặp:
- Lặp với số lần biết trước;
- Lặp với số lần không biết trước.
Tóm lại:
Vd3: Tính và đưa kết quả ra màn hình
Tổng S =1+2+3+ … +N
Tìm cách để
lập
lập
trình
trình giải các bài
toán này?
Nếu N =10, S=?;
lập trình giải như
thế nào?
S:=0;
i=1 ⇒ S:=S+1=1;
i=2 ⇒ S:=S+2=3;
……………
i=10 ⇒ S:=S+10=55;
S=1+2+3+ … +10;
Gợi
ý
Tính và đưa kết quả ra màn hình
Tổng S =1+2+3+ … +N;
S:=0;
i=1 ⇒ S:=S+1;
i=2 ⇒ S:=S+2;
……………
i=10 ⇒ S:=S+10;
…………
i=100 ⇒ S:=S+100
Nếu N =100, lập
trình giải như thế
nào?
Em có nhận xét gì
về cách giải này?
Thuật giải:
- Đầu tiên gán giá trò 0 cho tổng S
- Cho biến đếm ( chẳng hạn i) tăng dần
từ 1 đến N, cứ mỗi giá trò của i, thực hiện
câu lệnh S:=S+i;
Công việc lặp này được thực hiện N lần
2) Lặp với số lần biết trước:
Vd3: Tính và đưa kết quả ra màn hình
Tổng S =1+2+3+ … +N
- Câu lệnh for-do: Lặp với số lần biết trước
Trong Pascal, có 2 loại câu lệnh lặp có
số lần biết trước:
- Lặp dạng tiến:
For <biến đếm>:=<giá trò đầu> to
<giá trò cuối> do <câu lệnh>;
- Lặp dạng lùi:
For <biến đếm>:=<giá trò cuối> downto
<giá trò đầu> do <câu lệnh>;
Trong đó
Trong đó
:
:
- Biến đếm thường là biến kiểu số nguyên
- Giá trò đầu, giá trò cuối là biểu thức cùng
kiểu với biến đếm. Giá trò đầu phải nhỏ hơn
hay bằng 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.
- Tương ứng với mỗi giá trò của biến đếm,
câu lệnh sau do thực hiện 1 lần.
Thuật toán 1a;
B1: S 0; i 1;
B2: Nếu i >10 → B5
B3: S S+i;
B4: i i +1; → B2
B5: Đưa ra S ; Kết thúc
Thuật toán 1b;
B1: S 0; i 10;
B2: Nếu i <1 → B5
B3: S S+i;
B4: i i -1; → B2
B5: Đưa ra S ; Kết thúc
Mô tả thuật toán:
Tính và đưa kết quả ra màn hình.
Tổng S =1+2+3+ … +N; Với N=10
S
o
s
a
ù
n
h
h
a
i
t
h
u
a
ä
t
t
o
a
ùn
?
Thuật toán lặp
bao nhiêu lần?
Chú ý
Chú ý
:
:
- Sau mỗi lần lặp, biến đếm Tựï động tăng
lên (dạng tiến) hoặc giảm xuống (dạng lùi)
-Trong vòng lặp, không được có câu lệnh tác
động đến giá trò của biến đếm.
-
Trong câu lệnh FOR . . . DO, Nếu giá trò đầu
= giá trò cuối thì vòng lặp sẽ được thực hiện 1
lần
Vd4:Tính và đưa kết quả ra màn hình tổng.
S =1+2+3+ … +N;
Cho đến khi S≥ 20
Giải bài toán như
thế nào?
Bài toán này có giống bài
toán trước không?
Cách giải có giống cách
giải bài trên không?
Thuật giải:
- Đầu tiên gán giá trò 0 cho tổng S
- Kiểm tra, nếu S<20 thì cho biến đếm
(chẳng hạn i) tăng lên 1 đơn vò rồi thực hiện câu
lệnh S:=S + i; sau đó lại kiểm tra.
Không biết được phải lặp bao nhiêu lần, vì chỉ
khi nào S>=20 thì ngưng lại không lặp nữa.
b) Lặp với số lần không biết trước:
Vd3: Tính và đưa kết quả ra màn hình
Tổng S =1+2+3+ … +N cho đến khi S>=20
Hãy đánh dấu vào ô đúng hoặc sai
những câu dưới đây?
Câu 1: Cấu trúc lặp có hai loại lặp: 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.
Câu 2: Cấu trúc lặp dạng tiến: For <biến đếm>:=
<giá trò cuối> to <giá trò đầu> do <câu lệnh>;
Câu 3:Cấu trúc lặp dạng lùi: For <biến đếm>:=
<giá trò đầu> downto <giá trò cuối> do <câu lệnh>;
Câu 4: Giá trò đầu, giá trò cuối là các biểu thức
cùng kiểu.
Đúng Sai
Hãy đánh dấu vào ô đúng hoặc sai
những câu dưới đây?
Câu 5: X là biến kiểu thực; Ta có câu lệnh lặp
For X:=1 to 100 do
Câu 6: S, i là kiểu nguyên; Câu lệnh
For i:=1 to 1 do S:=S+1; Sẽ lặp 2 lần
Câu 7: Sau DO muốn thực hiện nhiều lệnh phải sử
dụng câu lệnh ghép.
Câu 8: Câu lệnh lặp For do ; nếu <Giá trò đầu>
lớn hơn <Giá trò cuối>; câu lệnh sau DO không thực
hiện.
Đúng Sai
Hết
Về nhà các em học bài
và xem trước phần kế
tiếp của bài học hôm
nay