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
Trang 1Câ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ũ
Trang 2 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
Trang 3 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
Trang 41 020 000+20 400 Lãi 2% Tháng thứ 2
Vốn 1 020 000
1 040 000+20 808 Lãi 2% Tháng thứ 3
Vốn 1 040 400
1 000 000+20 000 Lãi 2% Tháng thứ 1
1 040 400
1 061 208
Trang 5Cô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
Trang 6 Vd2 :
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;
Trang 7 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:
Trang 8Vd3: 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
trình giải các bài
toán này?
Trang 9Nế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;
Trang 10S:=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?
Trang 11Thuậ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
Trang 12- 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>;
Trang 13 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
Trang 14 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=10So sánh hai thuật toán?
Thuật toán lặp bao nhiêu lần?
Trang 15Chú ý:
- 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
Trang 16Vd4: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?
Trang 17Thuậ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
Trang 18Hã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
Trang 19Hã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
Trang 20Về 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