PHÒNG GIÁO DỤC HUYỆN CẨM MỸ TRƯỜNG THCS TRẦN PHÚ GV: Dương Quang Tùng TIẾT 51 : LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC TIN HỌC 8... Nhắc lại câu lệnh lặp với số lần biết trướcFOR : = TO DO
Trang 1PHÒNG GIÁO DỤC HUYỆN CẨM MỸ
TRƯỜNG THCS TRẦN PHÚ
GV: Dương Quang Tùng
TIẾT 51 :
LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
TIN HỌC 8
Trang 2Viết chương trình tính tổng 100 số tự nhiên
đầu tiên 1+2+3+…+99+100
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);
Readln;
End.
Trang 3Nhắ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 <giá trị cuối> 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 4Mộ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.
Trang 5Sơ đồ khối
Trang 6Trong 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.
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 Nếu điều kiện đúng, thực hiện
câu lệnh và quay lại bước 1.
Trang 7Chú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.
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
Trang 8Chươ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;
end;
writeln('So n nho nhat de tong > 1000 la ',n);
writeln('Tong dau tien > 1000 la ',S);
end.
Trở la ̣i Ví du ̣ 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?
Trang 9var T,i: integer;
begin T:=0;
for i:=1 to 100 do T:=T+1/i;
writeln(T);
end.
Hãy sử dụng lệnh lặp với số lần lặp biết trước for…do để viết
chương trình tính tổng
Viết chương trình tính tổng
Trang 10Nếu sử dụng lệnh lặp while…do, đoạn chương trình dưới
đây cũng cho cùng một kết quả:
Viết chương trình tính tổng
var T,i: integer;
begin
T:=0; i:=1;
while i<=100 do
begin
T:=T+1/i; i:=i+1;
end;
writeln(T);
end.
Nhận xét : Qua ví dụ này cho thấy rằng chúng ta có thể sử dụng câu lệnh while…do thay cho câu lệnh for…do
Trang 11Học sinh thảo luận theo nhóm
(2 bàn 1 nhóm)
-Thời gian thảo luận trong 3 phút
- Các nhóm thảo luận và viết kết quả
vào giấy sau đó lên bảng trình bày.
Sữ dụng vòng lặp While…do để tính tổng các số chẵn
từ 1 đến 10?
Sữ dụng vòng lặp While…do để tính tổng các số chẵn
từ 1 đến 10?
Var S, i:Integer;
Begin
S:=0; I:=1;
While i<=10 do
If (I mod 2)=0 then
begin
S:=S+I; I:=I+1;
End;
writeln(‘ Tổng các so chan = ’, S
End.
Trang 12GHI NHỚ
- Ngoài cấu trúc lặp với số lần lặp biết trước, các ngôn ngữ lập trình còn có các câu lệnh lặp với số lần chưa biết trước
- While…do là câu lệnh lặp với số lần chưa biết trước trong
Pascal
Trang 13Nếu S=10, i=0 Sau khi thực hiện câu lệnh
writeln(S);
Thì giá trị của S là:
10 0:
D 6
A 4
B 5
C 10
A 4
BẠN SAI RỒI!
Trang 14Nếu S=0,i=1 Sau khi thực hiện câu lệnh
While i<=5 Do
Begin i:=i+1; S:=S+i; End ; Writeln('Ket qua la :',S);
Thì giá trị của S là:
10 0:
D 15
B 14
BẠ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, 3a,bài 5 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