Ví dụ về lệnh lặp với số lần chưa biết trước: 1... Chúng ta biết rằng, nếu n càng lớn thì 1/n càng nhỏ, nhưng luôn luôn lớn hơn 0.[r]
Trang 1PHÒNG GIÁO HUYỆN TRIỆU PHONG
TRƯỜNG THCS TRIỆU TRUNG
PHÒNG GIÁO HUYỆN TRIỆU PHONG
TRƯỜNG THCS TRIỆU TRUNG
CHÀO MỪNG QUÝ THẦY CÔ GIÁOCÙNG
TẤT CẢ CÁC EM HỌC SINH CHÀO MỪNG QUÝ THẦY CÔ GIÁOCÙNG
TẤT CẢ CÁC EM HỌC SINH
Trang 21- Nhắc lại câu lệnh lặp với số lần biết trước:
FOR <Biến đếm> : = <Giá trị đầu > TO> TO <Giá trị cuối > DO> DO
Câu lệnh trong vòng lặp ;
Phải thuộc kiểu
dữ liệu đếm được
( không là số thực )
Giá trị đầu < Giá trị cuối
Từ khoá
Câu lệnh trong vòng lặp có thể
là lệnh đơn hay lệnh ghép
Trang 32- Viết chương trình tính tổng 100 số tự nhiên
đầu tiên 1 + 2 + 3 + … + 99 + 100
Program Tinh;
Var i, s: Integer;
Begin
s:=0;
For i:=1 to 100 do s:=s+i;
Writeln(‘ Tong cac so tu 1 den 100 = ‘, s);
Trang 4Hãy quan sát:
Bài 1:
S = 1 + 2 + 3 + +100 Bài 2:
S = 1 + 2 + 3 +
? Hãy cho biết
bài số 1 có số
vòng lặp là
bao nhiêu?
? Hãy cho biết bài số 2 có số vòng lặp là bao nhiêu?
… …
Lặp với số lần biết trước Lặp với số lần chưa biết trước
Trang 5Ti t 55 ết 55 :
Trang 6
Một ngày chủ nhật, bạn Long gọi điện cho Trang Không
có ai nhấc máy Long quyết định gọi thêm hai lần nữa Nếu vẫn không có ai nhấc máy thì chắc là không có ai ở nhà Như vậy Long đã biết trước là mình sẽ lặp lại hoạt động
gọi điện thêm hai lần.
Một ngày khác, Long quyết định cứ 10 phút gọi điện một lần cho Trang cho đến khi nào có người nhấc máy Lần này
Long sẽ lặp lại hoạt động gọi điện mấy lần?
Chưa thể biết trước được, có thể một lần, có thể hai hoặc nhiều hơn nữa Điều kiện để kết thúc hoạt động lặp đó là :
Có người nhấc máy.
1 Các hoạt động lặp với số lần chưa biết:
Trang 71 Các hoạt động lặp với số lần chưa biết:
Trang 81 Các hoạt động lặp với số lần chưa biết:
2 Ví dụ về lệnh lặp với số lần chưa biết trước:
Program chao_hoi;
Var Tieptuc: char; Ten: string;
Begin Tieptuc:=‘c’;
While Tieptuc=‘c’ do Begin
Write(‘ Nhap ten cua ban:’); Readln(Ten); Writeln(‘Chao ban’, Ten);
Write(‘ Tiep tuc ? c/k’); readln(Tieptuc);
End; Readln;
End.
Hãy quan sát chương trình sau
Trong Pascal câu lệnh lặp với số lần chưa biết trước có dạng:
While <điều kiện> do <câu lệnh>;
Trong đó: Điều kiện: thường là một phép so sánh;
Câu lệnh: có thể là câu lệnh đơn giản hay câu lệnh ghép
Câu lệnh lặp này được thực hiện như sau:
Bước 1 : Kiểm tra điều kiện.
Điều kiện
Bước 2 :
- Nếu điều kiện Sai, câu
lệnh sẽ bị bỏ qua và việc
thực hiện lệnh lặp kết thúc
SAI
- Nếu điều kiện đúng,
thực hiện câu lệnh và
quay lại bước 1
Câu lệnh
ĐÚNG
SƠ ĐỒ HOẠT ĐỘNG CỦA VÒNG LẶP
Trang 9? Hãy quan sát câu lệnh sau và cho biết ý nghĩa của các thành phần trong câu lệnh?
2 Ví dụ về lệnh lặp với số lần chưa biết trước:
1 Các hoạt động lặp với số lần chưa biết:
While i<=100 do
s:=s+i
+ Các từ khoá: While,
do
+ Điều kiện: i<=100
+ Câu lệnh: s:=s+i
Chú ý:
- Sau do nếu nhiều hơn 1 lệnh thì phải nằm
trong cặp từ khoá begin….end;
- Nếu viết chương trình thì điều kiện trong câu lệnh While phải đúng và nếu đã cho điều kiện trước thì điều kiện trong câu lệnh phải ngược với điều kiện đã cho
Trang 10Chúng ta biết rằng, nếu n càng lớn thì 1/n càng nhỏ, nhưng luôn luôn lớn hơn 0 Vậy với giá trị nào của n thì 1/n < 0.005
hoặc 1/n < 0.003?
var x: real; n: integer;
const sai_so=0.003;
Begin x:=1; n:=1;
while x>=sai_so do begin
n:=n+1;
x:=1/n ; end;
writeln('So n nho nhat de 1/n <‘,sai_so:5:4, 'la ',n); Readln;
End
Chương trình dưới đây tính số n nhỏ nhất để 1/n nhỏ hơn
một sai số cho trước
Chương
trình tính
số n nhỏ
nhất để 1/n
nhỏ hơn
một sai số
cho trước
2 Ví dụ về lệnh lặp với số lần chưa biết trước:
1 Các hoạt động lặp với số lần chưa biết:
Trang 11Chương trình Pascal sau đây thể hiện thuật toán tính số n
trong ví dụ 2:
var S,n: integer;
begin S:=0; n:=1;
while S<=1000 do begin
n:=n+1;
S:=S+n;
Trở lại Ví dụ 2: Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1,
2, 3, ), ta sẽ được các kết quả T1 =1, T2 =1 + 2, T3 =1 + 2 + 3,
tăng dần Cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được
tổng Tn nhỏ nhất lớn hơn 1000?
2 Ví dụ về lệnh lặp với số lần chưa biết trước:
1 Các hoạt động lặp với số lần chưa biết:
Trang 12Bài 5: Hãy chỉ ra các lỗi trong các câu sau đây:
a) X:=10; While X:= 10 do
X:=X+5;
b) X:=10; While X=10 do X
= X+5;
c) S:=0; n:=0; While
S<=10 do
Thừa dấu hai chấm trong điều kiện
thiếu dấu 2 chấm trong câu lệnh
Thiếu từ khoá begin trước câu lệnh n:=n+1 và
từ khoá end sau câu lệnh S:=S+n, do đó vòng
lặp trở thành vô tận
end;
n:=n+1;
S:=S+n
Trang 13Nếu S=10, i=0 Sau khi thực hiện câu lệnh While S>5 do
begin i:=i+1; S:=S-i end ;
writeln(S);
Thì giá trị của S là:
D 6
A 4
B 5
C 10
A 4
Bạn sai rồi Bạn sai rồi Bạn sai rồi! ! !
Trang 14Nếu S=0,i=1 Sau khi thực hiện câu lệnh
Writeln('Ket qua la :',S);
Thì giá trị của S là:
10 07 06 03 02 0:
D 15
B 14
B 14
Bạn sai rồi!
Bạn sai rồiBạn sai rồi!!
Trang 15Hướng dẫn về nhà
- Ôn lại về câu lệnh lặp với số lần không biết trước
- Làm bài tập 1, 2, 3,bài 4 SGK
Trang 16QUÝ THẦY CÔ GIÁO SỨC KHỎE
CÁC EM HỌC SINH CHĂM
NGOAN, HỌC GIỎI