DO: - Nếu ngay lần kiểm tra đầu tiên, mà keát quaû laø SAI thì caùc caâu leänh trong vòng lặp sẽ không được thực hiện laàn naøo.. - Soá laàn kieåm tra chính laø soá laàn laëp - Tuøy theo[r]
Trang 1Bà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
Tiết 16
Trang 2Kiể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?
Trang 3Điều kiện tính tổng thực hiện cho
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
Tiết 16
Trang 4a) Câu lệnh While Do (kiểm tra trước)
WHILE <Điều kiện> DO <Câu Lệnh>
Trong đó:
* Điều kiện : Biểu thức logic
* Câu lệnh : Lệnh đơn hay câu lệnh ghép
Tiết 16
3 Lặp với số lần chưa biết trước và câu lệnh while - do:
Trang 5Mô 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
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
Trang 6Thuậ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
Trang 7Cụ 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
Trang 8program 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
Trang 10Mộ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.
Trang 11Bà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?
Tiết 16
Ý tưởng:
-Nếu M=N Thì UCLN(M,N)=M (hoặc N)
-Nếu M<N thì UCLN(M,N)=UCLN(M-N,N);
-Nếu M>N thì UCLN(M,N)=UCLN(M,N-M);
Trang 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.
Tiết 16
Trang 13M=N M>N N N - M
M M - N
S Đ
S Đ
Nhập M,N
Dựa thuật toán hãy viết chương tìm UCLN(M,N)?
Trang 14program 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
Trang 16Nghiê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