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

bai 10 (tiet1) potx

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 (846.09 KB, 24 trang )


Gi¸o ¸n ®iÖn tö tin häc líp 11

Program kiemtra;
var x,y :integer;
Begin
x :=20 ; y := 10 ;
If x > y then x := x – y ;
If x=y then y := y – x ;
Write( x, ‘ ‘, y) ;
Readln;
End.
GiảI đáp
20
x
10
y
>
10
x
20 10-
10
x
=
10
y
0
y
10
10
-


10
x
Begin
x :=20 ; y := 10 ;
If x > y then x := x – y ;
If x=y then y := y – x ;
Write( x, ‘ ‘, y) ;
Readln;
End.
Hãy cho biết kết quả của
đoạn chương trình sau:

Bµi
10
Gi¸o ¸n ®iÖn tö tin häc líp 11

Gi¸o ¸n ®iÖn tö tin häc líp 11
 Hiểu được nhu cầu của cấu trúc lặp trong biểu diển
thuật toán.

Hiểu cấu trúc lặp với số lần biết trước, cấu trúc lặp
kiểm tra điều kiện trước.

Biết cách vận dụng đúng đắn từng loại cấu trúc lặp
vào tình huống cụ thể.

Viết đúng các lệnh lặp với số lần lặp biết trước, lệnh
lặp kiểm tra điều kiện trước.

Viết được thuật toán của một số bài toán đơn giản.


Bài toán 1: Tính tổng S, với a là số nguyên và a>2
100
1

2
1
1
11
+
++
+
+
+
+=
aaaa
S
Các bài toán đặt vấn đề
Hãy nêu nhận
xét và hướng
giải của bài
toán này ?

Đây là bài toán tính tổng liên tiếp của 101
phần tử.

Ta có thể đưa ra hướng giải như sau:

PHÂN TÍCH BÀI TOÁN
NhËn xÐt:

S1 = 1/a
S2 = S1 + 1/(a+1)
S3 = S2 + 1/(a+2)
S4 = S3 + 1/(a+3)

S100 = S99 + 1/(a+100)
1
a
=S

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
1
1a
+
+
1
2a
+
+
1
4a
+

+
+ +
+

a
1
100
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Bµi to¸n 2: TÝnh tæng S, víi a lµ sè nguyªn vµ a>2

1

2
1
1
11
+
+
++
+
+
+
+=
Naaaa
S
cho ®Õn khi
0001.0
1
<

+ Na

Xuất phát
a
S
1
=
1
1
+
+
a
Lần 1
2
1
+
+
a
Lần 2
+
Lần N
Na +
+
1
Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?
1
Sau mi ln thc hin giỏ tr tng S tng thờm ( vi i =1; 2; 3 ; ;N)

a + i
Cùng tìm thuật toán


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

2
1
1
11
+
++
+
+
+
+=
aaaa
S

1

2
1
1
11
+
+
++
+
+
+

+=
Naaaa
S
Cho đến khi
00010
1
.<
+ Na
Số lần lặp biết tr ớc.
Việc tăng giá trị cho
tổng S đ ợc lặp đi lặp
lại cho đến khi
0.0001
Na
1
<
+

Việc tăng giá trị cho
tổng S đ ợc lặp đi lặp
lại 100 lần.
tìm sự khác biệt
Số lần lặp ch a biết tr ớc.

CÊu tróc lÆp

1. Bài toán đặt vấn đề
- Dữ liệu ra (Output) : Tổng S
Lập ch ơng trình tính tổng sau:
- Dữ liệu vào (Input) : Nhập N

Hãy xác định INPUT
và OUTPUT của bài
toán trên!
I. Lặp với số lần lặp biết tr ớc
N
1

4
1
3
1
2
1
1S +++++=

Phân tích bài toán với N = 100
Nhận xét:
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4 = S3 + 1/4

S100 = S99 + 1/100
1=S
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
S
sau
= S

tr ớc
+ 1/i
với i chạy từ 2

100
2
1
+
3
1
+
4
1
+
. . .+ +
1
100
. . . . . . . . . . . . . . . . . . . .

§
S
NhËp N
S:= 1 ; i:= 2
i > N ?
S:= S + 1/i
§ a ra S råi kÕt thóc
B1: NhËp N;
B2: S:=1; i:=2;
B3: NÕu i > N th× ® a ra gi¸ trÞ
S => KÕt thóc;

B4 : S:= S + 1/i;
B5: i := i +1 quay l¹i B3.
X©y dùng thuËt to¸n
i:= i+1

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


Câu lệnh for DạNG TIếN
Câu lệnh for DạNG TIếN
a. Cú pháp
For
For


<bđk> :=<gtđ>
<bđk> :=<gtđ>


to
to


<gtc>
<gtc>


do
do
<lệnh>;

<lệnh>;
b. Thành phần

Từ khoá



Giá trị đầu
Giá trị cuối
Lệnh
Biến điều khiển

For,
For,
do:
do:
to,
to,
<bđk>
<bđk>
<gtđ>
<gtđ>
<gtc>
<gtc>
<lệnh>
<lệnh>
Biến điều khiển có kiểu nguyên vô h
Biến điều khiển có kiểu nguyên vô h
ớng đếm đ ợc( integer, byte, char)
ớng đếm đ ợc( integer, byte, char)

Giá trị đầu, giá trị cuối có cùng
Giá trị đầu, giá trị cuối có cùng
kiểu với biến điều khiển
kiểu với biến điều khiển
Lệnh đơn hoặc lệnh ghép
Lệnh đơn hoặc lệnh ghép

B k<=c n cu iđ ậ ố
Câu lệnh
Sơ đồ khối
Sơ đồ khối
Bđk :=Giá trị đầu
Bđ:=Bđ+1
Bđk<=c n cu iậ ố




For
For
<b
<b
đ
đ
k> :=<gt
k> :=<gt
đ
đ
>
>

to
to
<gtc>
<gtc>
do
do
<l
<l
nhệ
nhệ
>;
>;
F
F
Biểu thức điều kiện
Câu lệnh bất kỳ
Lệnh tiếp ngoài vòng For-Do
T

downto,
downto,
2. Lặp với số lần lặp biết tr ớc
a. Cú pháp
For
For


<bđk> :=<gtđ>
<bđk> :=<gtđ>



downto
downto


<gtc>
<gtc>


do
do
<lệnh>;
<lệnh>;
b. Thành phần

Từ khoá



Giá trị đầu
Giá trị cuối
Lệnh
Biến điều khiển

For,
For,
do:
do:
<bđk>
<bđk>

<gtđ>
<gtđ>
<gtc>
<gtc>
<lệnh>
<lệnh>
Biến điều khiển có kiểu nguyên vô h
Biến điều khiển có kiểu nguyên vô h
ớng đếm đ ợc( integer, byte, char)
ớng đếm đ ợc( integer, byte, char)
Giá trị đầu, giá trị cuối có cùng
Giá trị đầu, giá trị cuối có cùng
kiểu với biến điều khiển
kiểu với biến điều khiển
Lệnh đơn hoặc lệnh ghép
Lệnh đơn hoặc lệnh ghép
Lệnh FOR dạng lùi

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;
a. D¹ng 1 (d¹ng tiÕn)
2. Nh¾c l¹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.
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);


Uses crt;
Var i,N : Integer; S : real;
BEGIN
Readln;
END.
S:=1;
FOR i:=2 to N do S := S+1/i;
Writeln( Tong S =,S:8:3);
Write( Nhap vao gia tri cua N :);readln(N);
Program Tinh_tong;
Hãy áp dụng câu
lệnh lặp dạng
tiến để viết ch
ơng trình giải bài
toán đặt vấn đề.
Lập ch ơng trình tính tổng sau:
N
1


4
1
3
1
2
1
1S +++++=

S := 1 ; i := 2;
i >N
KT
S := S +1/ i ;
i := i +1;
2.081.83
1.51
432
L îti
S
2.28
5
NhËp N
S := 1 ; i := 2;
2>5 ?
S
S
S := 1 +1/2 ;
i := 2 +1;
3>5 ?
S := 1.5+1/3 ;

i := 3 +1;
4>5 ?
S := 1.83+1/4 ;
i := 4 +1;
5>5 ?
S := 2.08+1/5;
i := 5 +1;
6
SS
S
6>5 ?
In Tæng STæng S=2.28
Víi N = 5
2.28
§§
M« pháng thuËt to¸n

Ví dụ
Nhập từ bàn phím 2 số nguyên dương M và N
(M<N), tính và đưa ra màn hình tổng các số chia hết
cho 3 hoặc 5 trong phạm vi từ M đến N
Program Tong ;
Uses crt;
Var M,N,I:integer; T:Longint;
Begin
Clrscr;
write(‘M=’);readln(M);
write(‘N=’);readln(N);
T:=0;
For I:=M to N do

If (I Mod 3=0)or(I Mod 5=0) then
T:=T+I;
writeln(‘ket qua:’,T); readln;
End.

Mở rộng
Cho vòng FOR lồng nhau.
Giải bài toán sau:
Trăm trâu trăm cỏ
Trâu đứng ăn năm
Trâu nằm ăn ba
lụ khụ trâu già
Ba con một bó.
Hỏi số trâu mỗi loại?
Hãy nêu cách
thức dùng vòng
lặp for để giải
bài toán này ?

Uses crt;
Var dung,nam,gia : byte;
Begin
clrscr;
for dung:=1 to 20 do


for nam:=1 to 33 do
begin
gia:=100-dung-nam;
if gia mod 3 = 0 then

if dung*5+ nam*3+ (gia div 3) = 100 then
write(‘dung:’, dung,’nam:’,nam,’gia:’,gia);
end;
End.
Chương trình giải bài toán.

Hãy nhớ!

Câu lệnh rẽ nhánh.

Câu lệnh lặp
IF <đk> THEN <câu lệnh>;
FOR TO DO

IF <đk> THEN <câu lệnh 1>
ESLE <câu lệnh 2>;
FOR Downto DO

While <đk> Do <câu lệnh>;
+
Dạng khuyết.
+
Dạng đầy đủ.
+
Lặp với số lần lặp biết tr ớc.
+
Lặp với số lần lặp không biết
tr ớc.

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

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