Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (355.14 KB, 26 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
Trong đó:
- For, to, do là các từ khóa.
- Biến đếm có kiểu dữ liệu nguyên.
- Giá trị đầu nhỏ hơn giá trị cuối và là các giá
trị nguyên.
<b>For</b> <biến đếm>:=<giá trị đầu> <b>to</b> <giá trị cuối> <b>do</b>
<b>VD1</b>: Viết chương trình tính
tổng các số tự nhiên từ 1
đến 100
S = 1 + 2 + 3 + . . .+100
<i><b>Lặp 100 lần</b></i>
<b>VD2:</b> Viết chương trình
nhập vào các số cho đến
khi gặp 0 thì dừng lại.
Tính tổng các số vừa
nhập.
<i><b>Chưa biết lặp mấy lần</b></i>
Lặp với số lần biết trước,
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>2. Lặp vô hạn lần – Lỗi lập trình cần tránh</b>
<b>NỘI DUNG BÀI HỌC</b>
Nam làm bài tập cho đến khi làm xong.
Cô ấy phải đi bộ như vậy cho đến khi về tới nhà.
Tôi phải nhập dữ liệu vào máy tính cho đến
khi nhập xong.
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>Các hoạt động lặp với số lần chưa biết trước</b>
Các em hãy cho thêm ví dụ
về hoạt động lặp với số lần
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
Bạn <i><b>Long </b></i>gọi điện hẹn Trang tới
thăm nhà cô giáo cũ vào chủ nhật tới. Long quyết
định cứ 10 phút gọi điện 1 lần cho Trang cho đến
Long sẽ lặp lại hoạt động
gọi điện mấy lần?
<b>Các hoạt động lặp với số lần chưa biết trước</b>
Ví dụ (SGK)
Chưa thể biết trước được số lần
Long gọi điện. Điều kiện để
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
Nếu cộng lần lượt n số tự nhiên (n = 1, 2, 3, …).
Ta sẽ được các kết quả:
T<sub>1</sub> = 1
T<sub>2</sub> = 1 + 2
T<sub>3</sub> = 1 + 2 + 3
… tăng dần
Cần cộng bao nhiêu số tự nhiên để ta nhận được tổng T<sub>n</sub>
nhỏ nhất lớn hơn 1000?
Điều kiện như thế nào thì kết thúc
<b>Điều kiện:</b> Khi tổng T<sub>n</sub> nhỏ nhất lớn
hơn 1000 thì kết thúc hoạt động lặp.
<b>1. Các hoạt động lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>n</b> <b>Tổng T<sub>n</sub></b> <b>Điều kiện T<sub>n</sub> ≤ 1000</b>
1 T<sub>1</sub> = 1 <sub>Đúng </sub>
2 T<sub>2 </sub>= 1 + 2 Đúng
Đúng
<b>…</b> <b>… </b> <b>…</b>
? Tn = 1 + 2 + 3 + …+?
(Sao cho T<sub>n</sub> nhỏ nhất
lớn hơn 1000).
Sai, kết thúc việc tính
tổng.
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
Kí hiệu <b>S</b> là tổng cần tìm và ta có thuật tốn như sau:
Bước 1: S 0, n 0.
Bước 2: Nếu S≤ 1000, thì chuyển tới Bước 3; Ngược lại chuyển
tới bước 4.
Bước 3: n n+1; S S + n và quay lại bước 2.
Bước 4: In kết quả: S và n là số tự nhiên nhỏ nhất sao cho
S > 1000. Kết thúc thuật toán.
<b>S</b><b>1000?</b> Sai
<b>n </b><b> n+1;</b>
<b>S </b><b> S+n;</b>
Đúng
Các hoạt động lặp với số
lần chưa biết trước phụ
thuộc vào cái gì và chỉ
dừng lại khi nào?
•<i><sub> Sơ đồ</sub></i>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
While <điều kiện> do <câu lệnh>;
<i><b>Trong đó:</b></i>
<sub>While</sub><sub>, </sub><sub>do</sub><sub> là các từ khóa.</sub>
<sub>Điều kiện</sub><sub>: Thường là một phép so sánh.</sub>
<sub>Câu lệnh</sub><sub>: Có thể là câu lệnh đơn hoặc là </sub>
câu lệnh ghép.
<b>BTVD 1:</b> <b>While</b> a <= b <b>do</b> a:= a+1;
Trong đó: <b>While</b>, <b>do</b> các từ khóa.
<b>Điều kiện </b>là a<=b
<b>Câu lệnh</b> là a:=a+1 (câu lệnh đơn).
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>While </b>a > b <b>do</b>
begin
write (‘a>b’);
a:= a - 1;
end;
Trong đó: <b>While</b>, <b>do</b> các từ khóa.
<b>Điều kiện </b>là a > b
<b>Câu lệnh</b> là write (‘a>b’); a:=a-1
(câu lệnh ghép).
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
B1: Kiểm tra <i>điều kiện</i>;
B2: Nếu <i>điều kiện<b> sai</b><b>,</b></i> <i>câu </i>
<i>lệnh</i> sẽ bị bỏ qua và việc
thực hiện lệnh lặp kết thúc.
Nếu <i>điều kiện</i> <i><b>đúng</b>,</i>
thực hiện <i>câu lệnh</i> và quay
lại bước 1. Lưu đồ
<i><b>Hoạt động:</b></i> Sai <b>Điều kiện</b>
<b>Câu lệnh</b>
Đúng
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BTVD 3:</b> S:=0; <b>while</b> S<=5 <b>do</b> S:= S + 2;
<b>S</b> Điều kiện
<b>S<=5</b> Câu lệnh<b>S:=S + 2</b>
Vậy S = 6
0
2
4
6
0 <=5 (Đ)
2 <=5 (Đ)
4 <=5 (Đ)
6 <=5 (S)
<b>Câu 1: Trong các hoạt động dưới đây, hoạt </b>
<b>động nào lặp với số lần chưa biết trước?</b>
a. Tính tổng các số tự nhiên từ 1 đến 20.
c. Nhập các số nguyên từ bàn phím cho đến
khi đủ 50 số.
<b>Câu 2: Đâu là cú pháp của câu lệnh lặp với số </b>
<b>lần chưa biết trước?</b>
<b>Câu 2: Hãy chỉ ra lỗi trong các câu lệnh sau đây?</b>
a. X:=10; <b>while</b> X:=10 <b>do</b> X:= X + 5;
b. X:=10; <b>while</b> X =10 <b>do</b> X = X + 5;
c. <b>while</b> a<=b; <b>do</b> write (‘b khong nho hon a’);
Thừa dấu <b>:</b>
Thiếu dấu <b>:</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>Ví dụ 2 (SGK)</b>: Chúng ta biết rằng, nếu n (n>0)
càng lớn thì 1/n càng nhỏ, nhưng ln ln lớn
hơn 0.
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
Phân tích bài tốn:
x=1/n
1 X1=1/1 Đúng
2 X2=1/2 Đúng
….. <sub>………</sub> ……….
m Xm=1/m
( Đk 1/m<0.003)
Sai, kết thúc quá
trình lặp
<b>Uses</b> crt;
<b>Var</b> x: Real;
n: Integer;
Const Sai_So=0.003;
Begin
Clrscr;
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:6:4, ‘ la ‘,n);
Readln;
<b>End.</b>
<b>Uses</b> crt;
<b>Var</b> x: Real;
n: Integer;
Const Sai_So=0.003;
Begin
Clrscr;
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:6:4, ‘ la ‘,n);
<b>End.</b>
Chương trình tính số n nhỏ nhất để 1/n nhỏ hơn một sai số cho
trước:
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>VD 4: </b>Để viết chương trình tính tổng:
1 1 1
1 ...
2 3 100
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
sử dụng <b>for…do</b> sử dụng <b>while…do</b>
T:=0;
<b>for </b>i:=1<b> to </b>100<b> do </b>
T:=T+1/i;
writeln(T);
T:=0;
i:=1;
<b>while </b>i<=100<b> do </b>
<b>begin </b>T:=T+1/i; i:=i+1<b> end;</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC</b>
Biến đếm là i;