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 (1.02 MB, 17 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1></div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
<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ảo 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.
<i>Hoạt động nào được lặp </i>
<i>lại?</i>
<i>Hoạt động sẽ kết thúc khi </i>
<i>nào?</i>
<b>VD 1:</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>VD 2:</b> Viết chương trình
tính tổng các số tự
nhiên đầu tiên.
S = 1 + 2 + 3 + …. Cho
đến khi S>100
<i><b>Chưa biết số vòng lặp là bao </b></i>
<i><b>nhiêu</b></i>
Lặp với số lần biết trước, sử
dụng câu lệnh lặp For…Do
để viết chương trình
<i><b>Ví dụ 1 thực hiện bao </b></i>
<i><b>nhiêu vịng lặp?</b></i> <i><b>Ví dụ 2 thực hiện bao nhiêu </b></i>
<i><b>vòng lặp?</b></i>
<b>1. Lệnh lặp với số lần chưa biết trước:</b>
<b>Ví dụ 1Ví dụ 1</b>:
Nếu cộng lần lượt n số tự nhiên đầu tiên (n=1,2,3,…). Ta sẽ được
kết quả:
<b>… tăng dần</b>
<b>Điều kiện như thế nào thì </b>
<b>kết thúc hoạt động lặp?</b>
<b>Điều kiện: Khi tổng T<sub>n</sub> nhỏ </b>
<b>nhất lớn hơn 1000 thì kết </b>
<b>thúc hoạt động lặp</b>
<b>1. Lệnh lặp với số lần chưa biết trước</b>
Phân tích bài tốn:
n Tổng T<sub>n</sub> Điều kiện T<sub>n</sub>≤1000
1
2
3
… <sub>…</sub> <sub>…</sub>
T<sub>1</sub>=1
T<sub>2</sub>=1+2
T<sub>3</sub>=1+2+3
Đúng
Đúng
Đúng
T<sub>n</sub> =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>S </b><b> 0, n </b><b> 0.</b>
<b>Nếu S≤1000 thì chuyển tới bước 3; Ngược </b>
<b>lại (s>1000) chuyển tới bước 4.</b>
<b>N </b><b> n+1; S </b><b> S + n; và quay lại bước 2.</b>
<b>In kết quả: S và n là số tự nhiên nhỏ nhất </b>
<b>sao cho S>1000. Kết thúc thuật tốn.</b>
Kí hiệu <b>S</b> là tổng cần tìm và ta có thuật tốn như sau:
8
Để viết chương trình chỉ dẫn máy tính thực
hiện các hoạt động lặp mà chưa xác định trước số
lần lặp, ta có thể sử dụng câu lệnh có dạng <i>lặp với </i>
<i>số lần chưa xác định.</i>
<b>While <</b><i><b>điều kiện</b></i><b>> do <</b><i><b>câu lệnh</b></i> <b>>;</b>
<sub> Trong đó: </sub>
<b>While</b>, <b>do:</b> là các từ khóa.
<b>Điều kiện:</b> thường là một phép so sánh
<b>Câu lệnh:</b> có thể là câu lệnh đơn giản hay câu lệnh ghép.
<b>Chú ý</b> : Trong trường hợp câu lệnh ghép:
While <điều kiện> do
Begin
câu lệnh 1;
câu lệnh 2;
…
End;
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>Kết thúc</b>
<b>* Hoạt động:</b>
<i><b>Quan sát sơ đồ </b></i>
<i><b>khối, hãy cho </b></i>
<i><b>biết câu lệnh </b></i>
<i><b>while.. Do được </b></i>
<i><b>hoạt động như </b></i>
<i><b>thế nào?</b></i>
Bước 1 : Kiểm tra <i><b>điều kiện</b></i><b>.</b>
Bước 2 : Nếu <i><b>điều kiện</b></i> SAI,
<i><b>câu lệnh</b></i> sẽ bị bỏ qua và việc
thực hiện lệnh lặp kết thúc.
Nếu <i><b>điều kiện</b></i> đúng, thực hiện <i><b>câu </b></i>
<i><b>lệnh</b></i> và quay lại bước 1.
<b>1. Lệnh lặp với số lần chưa biết trước</b>
<b>Ví dụ 2: </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.
Với giá trị nào của n thì 1/n < 0.005 hoặc
1/n<0.003? Chương trình dưới đây tìm số n nhỏ
<b>1. Lệnh lặp với số lần chưa biết trước</b>
Phân tích bài tốn ví dụ 2:
n
X=1/n Điều kiện x>0.003
1
2
3
… <sub>…</sub> <sub>…</sub>
x<sub>1</sub>=1/1
x<sub>2</sub>=1/2
x<sub>3</sub>=1/3
Đúng
Đúng
Đúng
x<sub>n</sub> =1/n
(Điều kiện 1/n<0.003) Sai, kết thúc quá <sub>trình lặp</sub>
<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
x:=1/n;
n:=n+1;
End;
Writeln(‘So n nho nhat de 1/n < ‘,Sai_So:6:4, ‘ la ‘,n-1);
<b>End.</b>
<b>Uses crt;</b>
<b>Var x: Real; n: Integer;</b>
Const Sai_So=0.003;
Begin
Clrscr;
x:=1; n:=1;
While x >= Sai_So do
Begin
x:=1/n;
n:=n+1;
End;
Writeln(‘So n nho nhat de 1/n < ‘,Sai_So:6:4, ‘ la ‘,n-1);
Readln;
<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>VD 3: Dùng câu lệnh lặp While … Do để viết chương trình thể </b>
hiện thuật tốn trong Ví dụ 1.
<b>var S,n: integer;</b>
<b>Begin</b>
<b>S:=0; n:=0;</b>
<b>while</b> <b>S<=1000</b> <b>do</b>
<b>begin</b>
<b>n:=n+1; S:=S+n ;</b>
<b>end;</b>
<b>write(‘Tong dau tien >1000 la ’, s);</b>
<b>Readln;</b>
<b>End.</b>
Ta nhận được kết quả n=45 và tổng đầu tiên lớn hơn 1000 là 1035
<b>1. Lệnh lặp với số lần chưa biết trước</b>
T:=0;
For i:=1 to 100 do T:=T + 1/i;
Writeln(‘ T= ’, T:7:2);
Dùng lệnh FOR ...DO Dùng lệnh While...Do
T:=0; i:=1;
While i<=100 do
begin
T:=T + 1/i;
i:=i+1;
end;
Writeln(‘ S = ’, S:7:2);
<b>Có thể sử dụng lệnh</b> <b>While ... do</b> <b>thay </b>
<b>cho lệnh For...Do</b>
Ví dụ 4.
+ Xem trước bài
thực hành 6. Sử
dụng lệnh lặp
While…do.
- Học bài.
- Chuẩn bị: bài 8:
“Lặp với số lần
chưa biết
trước”(mục 2) các
em tự học trong