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

Tiet 11 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 (733.89 KB, 22 trang )

Bài
10
(2 tiết)

Giáo án điện tử tin học lớp 11


Các bài toán đặt vấn đề : Tính tổng S, với a là số
nguyên và a>2
Bài toán 1:

1
1
1
1
S

...
a a 1 a 2
a 100
Bài toán 2:

1
1
1
1
S 

 ... 
 ...
a a 1 a  2


aN
cho ®Õn
khi

1
 0.0001
aN


Cùng tìm thuật toán

Xuất phát

Lần 1

Lần 2

Lần N

1
1
1
S


a
a 1 a 2

+


1

aN

Mỗi lần thực hiện giá trị tổng S 1 tăng
thêm bao
Sau
lần thực hiện giá trị tổng S tăng thêm
( với i =1;
2; nhiêu?
3 mỗi
; ...;N)
a+i


tìm sự khác biệt
Bài toán 1:
1
1
1
1
S

...
a a 1 a 2
a 100

Bài toán 2:
1
1

1
1
S

...
...
a a 1 a 2
aN
1
0.0001
Cho đến khi
aN

ã Việc tăng giá trị
cho tổng S đợc lặp
đi lặp lại 100 lần.

ã Việc tăng giá trị cho
tổng S đợc lặp đi
lặp lại cho đến khi
1
0.0001
aN

Số lần lặp biết tr
ớc.

Số lần lặp cha biết trớc



CÊu tróc lỈp


I. Lặp với số lần lặp biết trớc
1. Bài toán đặt vấn Lập chơng trình tính tổng sau:
đề

1 1 1
1
S 1     ... 
2 3 4
N
- D÷

H·y xác định
INPUT và
liệu
vào (Input)
OUTPUT
của
bài toán trên!

:

Nhập N

- Dữ liệu ra (Output) :

Tæng S



Phân tích bài toán với N = 100

1 1 1
1
S 1     . . . 
2 3 4
100
....................

S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4 = S3 + 1/4
.....
S100 = S99 + 1/100

NhËn xÐt:
B¾t đầu từ S2 việc tính
S đợc lặp đi lặp lại 99
lần theo quy luật
Ssau = Strớc+ 1/i
với i chạy từ 2  100


Xây dựng thuật toán
B1: Nhập N;

Nhập N


B2: S:=1; i:=2;
S:= 1 ; i:= 2

i>N?

B3: Nếu i > N thì đa ra
giá trị S => Kết
thúc;

Đ

Đa ra S rồi kết
thúc

S
S:= S + 1/i
i:= i+1

B4 : S:= S + 1/i;
B5:

i := i +1 quay l¹i B3.


2. Lặp với số lần lặp biết trớc
a. Dạng 1 (dạng tiến)
FOR <biến đếm> := <giá trị đầu> TO <giá trị cuối> DO <
câu lệnh>;

Ví dụ: S:=1;

FOR i:=2 TO 100 DO

S:=S+1/i;

b. Dạng 2 (dạng lùi)
FOR <biến đếm> := <giá trị cuối> DOWNTO <giá trị đầu> DO
<câu lệnh >;

Ví dụ: S:=1;
FOR i:=100 DOWNTO 2 DO
S:=S+1/i;


Trong đó
Biến đếm là biến kiểu số nguyên hoặc kÝ tù.
For i:=1 to 10 do write(i);
For i:=‘a’ to ‘z’ do write(i);
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ỏ hơn giá trị cuối.
For i:= 100 to 200 do write(i);

Giá trị biến đếm đợc điều chỉnh tự động,
vì vậy câu lệnh sau DO không đợc thay
đổi giá trị biến ®Õm.


Lập chơng trình tính tổng sau:

1

1
1
1
S 1

...
2
3
4
N
Program Tinh_tong;
Uses crt;
HÃy S
áp:dụng
Var i,N : Integer;
real;
câu lệnh lặp
BEGIN
dạng tiến để
viết chơng
S:=1;
trình giải bài
Write( Nhap
toánvao
đặtgia
vấntri cua N :);readln(N);
đề.

FOR i:=2 to N do S := S+1/i;
Writeln(‘ Tong S =’,S:8:3);

Readln;
END.


Mô phỏng thuật toán
Với
Nhập
N =N5

i

Lợt

2

3

4

5

S

1

1.5

1.83

2.08


2.28

S := 1 ; i :=
2;
i6>5
>N
2>5
3>5
4>5
5>5
?
SS
S
S := SS
1 :=
+1/2
+1/ i ;
1.83+1/4
2.08+1/5;
1.5+1/3 ;;
ii :=
:= 2
i +1;
+1;
ii :=
:= 54
3 +1;
+1;


§

Tỉng
In Tỉng S
S=2.28

KT

6


3. Ví dụ
Tính tổng S (với a là số nguyên nhËp vµo tõ bµn
phÝm vµ a>2).

1
1
1
1
S  

 ... 
a a 1 a 2
a 100

?

ã HÃy xác định giá trị khởi đầu của S, quy luật thay
đổi giá trị của S và số lần lặp.
ã Viết chơng trình để giải bài toán trên.


- S:=1/a;
- S:= S + 1/(a+i);
- i chạy từ 1 đến 100 => Số lần lặp
là 100 lÇn.


II. Lặp với số lần lặp không biết tr
ớc
1. Bài toán Tính giá trị tổng S, với a là số nguyên và
a>2.

1
1
1
1
S

...
...
a a 1 a 2
aN
Cho đến
khi

1
0.0001 thì dừng lại.
a N

Dữ liệu vào (Input) :

Dữ liệu

Nhập a

HÃy xác định
ra INPUT,
(Output)
: Tổng
OUTPUT
và nêu thuật
toán giải bài
toán trên?

S


thuật toán
Bớc 1: Nhập a.
Bớc 2:
S:=1/a; N:=1;
{Khởi tạo S và
N}
Bớc 3:
NÕu 1/(a+N) < 0.0001
=> Bíc 5

Bíc 4:
S:=S+1/(a+N);
N:=N+1;
=> quay l¹i bíc 3


NhËp a

S:=1/a ; N:=1

S
1/(a+N) >=
0.0001
§
S:= S+1/(a+N);
N:= N+1;

Bíc 5: In S => Kết thúc.
Vòng lặp chỉ dừng khi 1/
(a+N)<0.0001

Đa ra S
=> KÕt
thóc


2. Lặp với số lần lặp không biết trớc

WHILE <Điều kiện> DO lệnh>;
Trong đó:
Điều kiện: Là biểu thức
quan hệ hoặc
lôgic.
Câu lệnh: Là một câu lệnh

của Pascal.

Điều kiện

S
ai

Đúng
Câu lệnh

Chừng nào điều kiện còn đúng thì câu lệnh còn đợc thực
hiện.


3. Một số ví dụ
a

Bài toán đặt vấn Tính giá trị tổng S, với a là số nguyên và
a>2
đề:
1
1
1
1
S

...
...
a a 1 a 2
aN

Cho đến
khi

1
0.0001thì dừng lại.
a N

Nhận xét:
Chừng nào 1/(a+N)>=0.0001 thì
còn thực hiện:
+ Tăng giá trị của tổng S thêm
1/(a+N).

WHILE 1/(a+N) >=
0.0001 DO
Begin
S:=S+1/(a+N);

+ Tăng N thêm 1 đơn vị.

N:=N+1;
END;


Chơng trình
Program Bai_toan;
Uses Crt;
Var a,N:Integer;
S:Real;
BEGIN

Clrscr;
Write(Nhap gia tri cua a= );Readln(a);
S:=1/a;N:=1;
WHILE 1/(a+N)>=0.0001 DO
BEGIN
S:=S+1/(a+N);
N:=N+1;
END;
Writeln(‘Gia tri cua tong S = ‘,S:8:3);
Readln;
END.


b

Lập chơng trình nhập vào hai số nguyên dơng
M,N. Tìm ƯCLN của hai số đó.
Thuật
toán

B1: Nhập M,N;
B2 : Chừng nào MN
nếu M>N thì
M:=M-N,
ngợc lại thì N:=NM;
B3: Đến khi M=N thì
=> Đa ra
ƯCLN(M,N)=M;

các bớc viết chơng

trình

B1: Nhập M,N
B2 : While M<>N DO
Begin
IF M>N then M:=MN
else N:=NM;
end;
B3: In ¦CLN(M,N)


Tham khảo:
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
REPEAT <Câu lệnh> UNTIL <Điều
kiện>;

Câu lệnh

Sai

Điều kiện
Đúng


Bài toán đặt vấn đề:
Program Bai_toan;
Uses Crt;
Var a,N:Integer;
S:Real;

BEGIN
Clrscr;
Write(Nhap gia tri cua a= ‘);Readln(a);
S:=1/a;N:=1;
REPEAT
dau lap}
S:=S+1/(a+N);
N:=N+1
UNTIL 1/(a+N)< 0.0001;
thuc lap}
Writeln(‘Gia tri cua tong S = ‘,S:8:3);
Readln;
END.

{Bat

{Ket


HÃy nhớ!
Câu lệnh rẽ nhánh.
IF <đk> THEN lệnh>;
IF <đk> THEN lƯnh 1>
ESLE 2>;
FOR ... TO ... DO ...

FOR

... Downto
...
DO ...
While
<đk>
Do
lệnh>;

+ Dạng khuyết.
+ Dạng đầy đủ.
Câu lệnh lặp
+ Lặp với số lần lặp biết
trớc.
+ Lặp với số lần
không biÕt tríc.

lỈp



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

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