Tải bản đầy đủ (.ppt) (26 trang)

TỰ HỌC TIN HỌC 8 - BÀI 8. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC

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>

<b>KIẾN THỨC BÀI CŨ</b>



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>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>QUAN SÁT</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,


sử dụng câu lệnh lặp
For…do để viết chương
trình


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b>BÀI 8</b>



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<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>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

 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


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<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


khi có người thưa máy.


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 để


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<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


hoạt động lặp?


<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.


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<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.


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<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>


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<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>


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<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.


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<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>


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<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>


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<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


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<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)


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<b>CỦNG CỐ</b>



<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.


b. Mỗi ngày học bài 2 lần.


c. Nhập các số nguyên từ bàn phím cho đến
khi đủ 50 số.


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

<b>CỦNG CỐ</b>



<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>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b>CỦNG 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>


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<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.



</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<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


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

<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);


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>1. Lệnh lặp với số lần chưa biết trước</b>


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

<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>


</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

<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


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

<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>


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

<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>


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

<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;


</div>

<!--links-->

×