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

Cau truc lap

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 (550.21 KB, 22 trang )

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

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×