1
Bài 10. CẤU TRÚC LẶP
(tiết 2/2)
Tiếp tục nghiên cứu về cấu trúc lặp.
Cú pháp của các loại câu lệnh lặp với số lần chưa biết trước.
?
Tiết 16
BÀI 10: CẤU TRÚC LẶP
Tiết 16
2
Kiểm tra bài cũ
- Lệnh lặp gì? Có mấy dạng lệnh lặp?
- Cho biết cú pháp câu lệnh lặp với số lần biết trước?
3
Điều kiện tính tổng thực hiện cho đến đến khi nào?
3. Lặp với số lần chưa biết trước và câu lệnh while - do:
Bài toán1 : Tính và đưa kết quả ra màn hình:
S =1+2+3+ ... +N;
Cho đến khi S? 20
Quá trình tính tổng thực hiện bao nhiêu lần?
?
4
a) Câu lệnh While . . . Do (kiểm tra trước)
WHILE <Điều kiện> DO
Trong đó:
* Điều kiện : Biểu thức logic
* Câu lệnh : Lệnh đơn hay câu lệnh ghép
?
3. Lặp với số lần chưa biết trước và câu lệnh while - do:
5
Mô tả đường đi của chương trình?
Sơ đồ khối và cách thức hoạt động:
Quá trình lặp diễn ra ở đâu?
Khi nào quá trình lặp chấm dứt?
Câu lệnh
Đúng
Điều kiện
Sai
?
Cách thức hoạt động: Khi gặp vòng lặp while, chương trình sẽ kiểm tra <ĐK> lặp nếu <ĐK> lặp thỏa mãn, cho giá trị là True, các lệnh trong while được thi hành. Sau đó chương trình sẽ kiểm tra lại <ĐK> lặp và tiếp tục cho đến khi <ĐK> lặp không thỏa mãn, có giá trị False, thì vòng lặp while sẽ kết thúc.
Sơ đồ khối
6
Thuật toán
B1: S ? 0 ; N ? 0
B2: Nếu S>=20 chuyển đến B5
B3: N ? N+1
B4: S ? S+N ; quay lại B2
B5: Đưa S ra màn hình; Kết thúc
Bài 1. Tính và đưa kết quả ra màn hình:S =1+2+3+ ... +N; cho đến khi S? 20
?
7
Cụ thể:
B1: S ? 0 ; i ? 0
B2: Nếu S>=20 chuyển đến B5
B3: i ? i+1
B4: S ? S+i ; quay lại B2
B5: Đưa S ra màn hình; Kết thúc
Điều kiện ở đây là gì?
Câu lệnh điều kiện được viết như thế nào?
Nếu điều kiện đúng?
Nếu điều kiện sai?
?
Bài 1. Tính và đưa kết quả ra màn hình t?ng S =1+2+3+ . +.; cho đến khi S? 20
8
program tinhtongs;
uses crt;
var s:longint;
i:word;
begin
s:=0;
i:=1;
while s<20 do
begin
s:=s+i;
i:=i+1;
end;
writeln(`tong s:=`,s)
readln
end.
Bài 1. Tính và đưa kết quả ra màn hình t?ng S =1+2+3+ .+..; cho đến khi S? 20
chương trình
9
10
Một số chú ý
Trong vòng lặp WHILE . . . DO:
- Nếu ngay lần kiểm tra đầu tiên, mà kết quả là SAI thì các câu lệnh trong vòng lặp sẽ không được thực hiện lần nào.
- Số lần kiểm tra chính là số lần lặp
- Tùy theo điều kiện mà viết các câu lệnh trong vòng lặp cho phù hợp.
?
11
Bài toán 2 : Tìm ước chung lớn nhất của 2 số nguyên dương M và N
Trình bàyThuật toán tìm UCLN của 2 số M và N?
?
Ý tưởng:
Nếu M=N Thì UCLN(M,N)=M (hoặc N)
Nếu MNếu M>N thì UCLN(M,N)=UCLN(M,N-M);
12
Thuật toán tìm UCLN(M,N):
B1. Nhập M,N;
B2. Nếu M=N thì lấy giá trị chung này làm UCLN chuyển đến bước 5.
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 kết quả UCLN rồi kết thúc.
?
13
M=N
M>N
N ? N - M
M ? M - N
S
Đ
S
Đ
?
Nhập M,N
Đưa M ra, kết thúc
Dựa thuật toán hãy viết chương tìm UCLN(M,N)?
14
program timuscln;
uses crt;
var m,n:integer;
begin
write(`nhap m:=?`);readln(m);
write(`nhap n:=?`); readln(n);
while m<>n do
if m>n then m:=m-n
else n:= n-m;
writeln(`uscln=`,m);
readln
end.
Bài toán 2 : Tìm ước chung lớn nhất của 2 số nguyên dương M và N
Chương trình
15
16
?
Nghiên cứu kỹ cấu trúc RẼ NHÁNH và LẶP
Chuẩn bị tiết ôn tập, luyện tập các loại cấu trúc này, trước khi đến các tiết thực hành.
Xem các bài thực hành và bài tập SGK 49, 50, 51
nguon VI OLET