<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
Bài 10
<b>Giáo án điện tử tin học lớp 11</b>
</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
Bài toán 1:
Bài toán 2:
100
1
...
2
1
1
1
1
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
Cỏc bài tốn đặt vấn đề : <b><sub>Tính tổng S, với a là số nguyên và a>2</sub></b>
<b>cho đến khi </b>
1
0
.
0001
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>
<b>Xuất phát </b>
<i><b>a</b></i>
<i><b>S</b></i>
1
1
1
<i>a</i>
<b>Lần 1</b>
2
1
<i>a</i>
<b>Lần 2</b>
<b>+</b>
<b>Lần N</b>
<i>N</i>
<i>a</i>
1
<b> Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?</b>
1
Sau mỗi lần thực hiện giá trị tổng S tăng thªm
( víi i =1; 2; 3 ; ...;N)
a + i
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
<b>Bài toán 1:</b>
<b>Bài toán 2: </b>
100
1
...
2
1
1
1
1
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
1
1
<sub>1</sub>
1
<sub>2</sub>
...
1
...
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
<b>Cho đến khi</b> <b>1</b> <b>0</b>.<b>0001</b>
<i>N</i>
<i>a</i>
<b>Số lần lặp biết tr ớc.</b>
ã <b><sub>Việc tăng giá trị cho tổng </sub></b>
<b>S đ ợc lặp đi lặp li </b> <b>cho </b>
<b>n khi</b>
0.0001
N
a
1
ã
<b><sub> Việc tăng giá trị cho </sub></b>
<b>tổng S đ ợc lặp đi lặp </b>
<b>lại </b>
<b>100 lần</b>
<b>.</b>
tìm sự khác biệt
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5></div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
<b>1. Bài tốn đặt vấn đề </b>
<b>- D÷ liƯu ra (Output) : </b>
<b>Tổng S</b>
<i><b>Lập ch ơng trình tính tổng sau: </b></i>
<b>- Dữ liệu vào (Input) : </b>
<b>NhËp N</b>
<b>Hãy xác định </b>
<b>INPUT và </b>
<b>OUTPUT của </b>
<b>bài toỏn trờn!</b>
I. Lặp với số lần lặp biết tr ớc
N
1
...
4
1
3
1
2
1
1
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
Phân tích bài toán với N = 100
NhËn xÐt:
<b>S1 = 1</b>
<b>S2 = S1 + 1/2</b>
<b>S3 = S2 + 1/3</b>
<b>S4 = S3 + 1/4</b>
<b>...</b>
<b>S100 = S99 + 1/100</b>
1
<b>S</b>
<i><b>B¾t đầu từ S2 việc tính S đ </b></i>
<i><b>ợc lặp đi lặp lại 99 lần theo </b></i>
<i><b>quy luật</b></i>
<i><b> S</b></i>
<i><b>sau</b></i>
<i><b> = S</b></i>
<i><b>tr íc</b></i>
<i><b>+ 1/i</b></i>
<i><b>víi i ch¹y tõ 2 </b></i>
<i><b> 100</b></i>
2
1
3
1
4
1
<sub></sub>
. . .
<sub></sub>
1
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
<b>§</b>
<b>S</b>
<b>NhËp N </b>
<b>S:= 1 ; i:= 2</b>
<b>i > N ?</b>
<b> S:= S + 1/i</b>
<b>§ a ra S råi kÕt thóc</b>
<b> B1: NhËp N;</b>
<b> B2: S:=1; i:=2;</b>
<b> B3: Nếu i > N thì đ a ra giá trị </b>
<b> S => Kết thúc; </b>
<b> B4 : S:= S + 1/i; </b>
<b> B5: i := i +1 quay lại B3.</b>
Xây dựng thuật toán
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO < câu lệnh>;
<i><b>VÝ dô:</b></i>
<b> S:=1;</b>
<b> </b>
<b>FOR</b>
<b> i:=2 </b>
<b>TO</b>
<b> 100 </b>
<b>DO</b>
<b> S:=S+1/i;</b>
<b>b. D¹ng 2 (d¹ng lïi)</b>
FOR <biến đếm> := <giá trị cuối> DOWNTO <giá trị đầu> DO <câu lệnh >;
<i><b>VÝ dô:</b></i>
<b> S:=1;</b>
<b> </b>
<b>FOR </b>
<b> i:=100 </b>
<b>DOWNTO </b>
<b> 2 </b>
<b>DO</b>
<b> S:=S+1/i;</b>
<b>a. D¹ng 1 (d¹ng tiÕn)</b>
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
<b>Giá trị đầu, giá trị cuối là các biểu thức cùng kiểu với biến đếm, giá trị đầu phải nhỏ </b>
<b>hơn giá trị cuối.</b>
<b> For i:= 100 to 200 do write(i);</b>
<b> Giá trị biến đếm đ ợc điều chỉnh tự động, vì vậy câu </b>
<b>lệnh sau DO không đ ợc thay đổi giá trị biến đếm.</b>
<b>Trong đó</b>
<b>Biến đếm là biến kiểu số nguyên hoặc kí tự.</b>
</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>
<b>Uses crt;</b>
<b>Var i,N : Integer; S : real;</b>
<b>BEGIN</b>
<b> Readln;</b>
<b>END.</b>
<b>S:=1;</b>
<b>FOR i:=2 to N do S := S+1/i;</b>
<b>Writeln(‘ Tong S =’,S:8:3);</b>
<b>Write(‘ Nhap vao gia tri cua N :’);readln(N);</b>
<b>Program Tinh_tong;</b>
<b>Hãy áp dụng câu </b>
<b>lệnh lặp dạng </b>
<b>tiến để viết ch </b>
<b>ơng trình giải bài </b>
<b>tốn đặt vấn đề.</b>
<i><b>Lập ch ơng trình tính tổng sau: </b></i>
N
1
...
4
1
3
1
2
1
1
</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>
<b>S := 1 ; i := 2;</b>
<b>i >N</b>
<b><sub>KT</sub></b>
<b>S := S +1/ i ;</b>
<b> i := i +1;</b>
<b>2.08</b>
<b>1.83</b>
<b>1.5</b>
<b>1</b>
<b>4</b>
<b>3</b>
<b>2</b>
<b>L ỵt</b>
<b>i</b>
<b>S</b> <b>2.28</b>
<b>5</b>
<b>NhËp N</b>
<b>S := 1 ; i := 2;</b>
<b>2>5 ?</b>
<b>S</b>
<b>S</b>
<b>S := 1 +1/2 ;</b>
<b> i := 2 +1;</b>
<b>3>5 ?</b>
<b>S := 1.5+1/3 ;</b>
<b> i := 3 +1;</b>
<b>4>5 ?</b>
<b>S := 1.83+1/4 ;</b>
<b> i := 4 +1;</b>
<b>5>5 ?</b>
<b>S := 2.08+1/5;</b>
<b> i := 5 +1;</b>
<b>6</b>
<b>S</b>
<b>S</b>
<b>S</b>
<b>6>5 ?</b>
<b>Tỉng S=2.28In Tỉng S</b>
<b>Víi N = 5</b>
<b>2.28</b>
<b>§</b>
<b>§</b>
</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>
<b>3. Ví dụ</b>
Tính tổng S
<sub>(với a là số nguyên nhập vào từ bàn phím và a>2</sub>
<sub>).</sub>
100
1
...
2
1
1
1
1
<i>a</i>
<i>a</i>
<i>a</i>
<i>a</i>
<i>S</i>
?
ã
<i><b>Hóy xỏc định giá trị khởi đầu của S, quy luật thay đổi giá </b></i>
<i><b>trị của S và số lần lặp. </b></i>
•<i><b><sub> Viết ch ơng trình để giải bài tốn trên.</sub></b></i>
-
<b><sub> S:=1/a;</sub></b>
<b>- </b>
<b>S:= S + 1/(a+i);</b>
</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>
<b>1. Bµi toán </b>
<b>Dữ liệu ra (Output) : </b>
<b>Tổng S</b>
<b>Dữ liƯu vµo (Input) : </b>
<b>NhËp a</b>
<b>Hãy xác nh </b>
<b>INPUT, OUTPUT </b>
<b>và nêu thuật toán </b>
<b>giải bài toán trên?</b>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
<b>Cho n khi </b> 1 0.0001
<i>a N</i>
<i><b>Tính giá trị tổng S, với a là số nguyên và a>2. </b></i>
<b>thì dừng lại.</b>
</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>
<b> B íc 2:</b>
<b> S:=1/a; N:=1; </b>
<b> {Khëi tạo S và N}</b>
<b> B ớc 3: </b>
<b> NÕu 1/(a+N) < 0.0001</b>
<b> => B íc 5</b>
<b> B íc 4: </b>
<b> S:=S+1/(a+N);</b>
<b> N:=N+1; </b>
<b> => quay lại b ớc 3</b>
thuật toán
<b> B íc 1: NhËp a.</b>
<b>S:=1/a ; N:=1</b>
<b>§ a ra S </b>
<b>=> Kết thúc </b>
<b>S:= S+1/(a+N);</b>
<b>N:= N+1;</b>
<b> Vòng lặp chỉ dừng khi 1/(a+N)<0.0001</b>
<b>NhËp a</b>
<b>S</b>
<b>§</b>
1/(a+N) >= 0.0001
</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>
WHILE
<sub><§iỊu kiƯn></sub>
DO
<sub><Câu lệnh></sub>
<sub>;</sub>
<b>Điều kiện</b>
Đúng
<b>Câu lệnh</b>
<b>Điều kiện</b><i><b>: Là biểu thức</b></i>
<i><b> quan hệ hoặc lôgic.</b></i>
<i><b> </b></i>
<b>Câu lệnh</b><i><b>: Là một câu lệnh của </b></i>
<i><b>Pascal.</b></i>
Sai
<b>2. Lặp với số lần lặp không biÕt tr íc</b>
</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>
WHILE
1/(a+N) >= 0.0001
DO
Begin
S:=S+1/(a+N);
N:=N+1;
END;
<b>3. Mét sè vÝ dô</b>
<b>a</b>
<b>Bài toán đặt vấn đề: </b>
<b>NhËn xÐt: </b>
<b>Chừng nào 1/(a+N)>=0.0001 thì còn thực </b>
<b>hiện:</b>
<b> + Tăng giá trị của tổng S thêm 1/(a+N).</b>
<b> + Tăng N thêm 1 n v. </b>
...
1
...
2
1
1
1
1
<i><b>N</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>a</b></i>
<i><b>S</b></i>
1
0.0001
<i>a</i><i>N</i>
<i><b>Tính giá trị tổng S, với a là số nguyên và a>2 </b></i>
<b>thì dừng lại.</b>
</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>
Ch ơng trình
<b>Program Bai_toan;</b>
<b>Uses Crt;</b>
<b>Var a,N:Integer;</b>
<b> S:Real;</b>
<b>BEGIN </b>
<b> Clrscr;</b>
<b> Write(‘Nhap gia tri cua a= ‘);Readln(a);</b>
<b> S:=1/a;N:=1;</b>
<b> WHILE 1/(a+N)>=0.0001 DO </b>
<b> BEGIN</b>
<b> S:=S+1/(a+N);</b>
<b> N:=N+1;</b>
<b> END;</b>
<b> Writeln(‘Gia tri cua tong S = ‘,S:8:3);</b>
<b> Readln;</b>
</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>
<b>b</b>
<i><b>Lập ch ơng trình nhập vào hai số nguyên d ơng M,N. </b></i>
<i><b>Tìm ƯCLN của hai số đó.</b></i>
<b>B1: NhËp M,N; </b>
<b>B2 : Chõng nµo</b>
<b> M</b>
<b>N </b>
<b> </b>
<b>nÕu</b>
<b> M>N </b>
<b>th×</b>
<b> M:=M-N,</b>
<b> </b>
<b>ng ợc lại</b>
<b>thì</b>
<b> N:=N-M;</b>
<b>B3: Đến khi M=N thì</b>
<b> => Đ a ra ƯCLN(M,N)=M;</b>
<b> => KÕt thóc.</b>
<b>B1: NhËp M,N </b>
<b>B2 : While </b>
<b>M<>N</b>
<b> DO</b>
<b>Begin</b>
<b>IF M>N then M:=M-N</b>
<b> else N:=N-M;</b>
<b>end;</b>
<b>B3: In ¦CLN(M,N)</b>
</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>
Tham khảo:
<b>Dạng khác của câu lệnh lặp với số lần lặp không biết tr ớc</b>
REPEAT
<Câu lệnh> UNTIL <Điều kiện>;
<b>Điều kiện</b>
Sai
<b>Câu lệnh</b>
</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>
Bi toỏn đặt vấn đề:
<b>Program Bai_toan;</b>
<b>Uses Crt;</b>
<b>Var a,N:Integer;</b>
<b> S:Real;</b>
<b>BEGIN </b>
<b> Clrscr;</b>
<b> Write(‘Nhap gia tri cua a= ‘);Readln(a);</b>
<b> S:=1/a;N:=1;</b>
<b> REPEAT {Bat dau lap}</b>
<b> S:=S+1/(a+N);</b>
<b> N:=N+1</b>
<b> UNTIL 1/(a+N)< 0.0001; {Ket thuc lap}</b>
<b> Writeln(‘Gia tri cua tong S = ‘,S:8:3);</b>
<b> Readln;</b>
</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>
H·y nhí!
C©u lƯnh rẽ nhánh.
Câu lệnh lặp
<b>IF <đk> THEN <câu lệnh>;</b>
FOR ... TO ... DO ...
<b>IF <đk> THEN <câu lệnh 1></b>
<b> ESLE <c©u lƯnh 2>;</b>
FOR ... Downto ... DO ...
While <b><đk></b> Do <b><câu lÖnh>;</b>
+
<b><sub>Dạng khuyết.</sub></b>
+
<b><sub>Dạng đầy đủ.</sub></b>
</div>
<!--links-->