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

bài giảng tin học 11 bài 10 cấu trúc lặp

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 (1.19 MB, 35 trang )


Đặng Hữu Hoàng
BÀI GIẢNG TIN HỌC 11
BÀI 10
CẤU TRÚC LẶP
CẤU TRÚC LẶP
CÁC BÀI TOÁN ĐẶT VẤN ĐỀ
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 2:
100
1

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

1

2
1
1


11
+
+
++
+
+
+
+=
Naaaa
S
cho đến khi
0001.0
1
<
+ Na
Bài toán 1:
CÙNG TÌM THUẬT TOÁN
CÙNG TÌM THUẬT TOÁN
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 tăng bao
nhiêu?
ia
1
+
Sau mỗi lần thực hiện phép cộng, giá trị tổng S tăng ( Với i =1; 2; 3 ; ;N)
TÌM SỰ KHÁC BIỆT
TÌM SỰ KHÁC BIỆT
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
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
được lặp đi lặp lại

100
100
lần.
lần.
 Chưa lần lặp chưa biết trước.
Việc tăng giá trị cho tổng S
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
được lặp đi lặp lại
cho đến khi
cho đến khi
0.0001
Na
1
<
+
1. LẶP VỚI SỐ LẦN BIẾT TRƯỚC
1. LẶP VỚI SỐ LẦN BIẾT TRƯỚC
a. Bài toán nêu vấn đề:
Dữ liệu ra (Output) : Tổng S
Lặp chương trình tính tổng sau:
N
1

4
1
3
1
2
1

1S +++++=
Hãy xác định INPUT và OUTPUT của bài toán trên?
Dữ liệu vào (Input) : Nhập N
PHÂN TÍCH BÀI TOÁN VỚI N=100
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ừ S
2
việc tính S
1
đượ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
. . . . . . . . . . . . . . . . . . . .
So sánh hai thuật toán sau
SƠ ĐỒ THUẬT TOÁN
SƠ ĐỒ THUẬT TOÁN
Thuật toán Tong_1A Thuật toán Tong_1b
* Bước 1: S ← 1/a; N ← 0;
* Bước 2: N ← N + 1;
* Bước 3: Nếu N > 100 thì chuyển đến
bước 5;
* Bước 4: S ← S + 1/(a + N) rồi quay
lại bước 2;
* Bước 5: Đưa S ra màn hình, rồi kết
thúc.
* Bước 1: S ← 1/a; N ← 101;
* Bước 2: N ← N - 1;
* Bước 3: Nếu N < 1 thì chuyển đến
bước 5;
* Bước 4: S ← S + 1/(a + N) rồi quay
lại bước 2;
* Bước 5: Đưa S ra màn hình, rồi kết

thúc.

Thuật toán dạng lặp tiến.

Dạng lặp tiến: Biến đếm tự động tăng
dần từ giá trị đầu đến giá trị cuối.

Thuật toán dạng lặp lùi.

Dạng lặp lùi: Biến đếm tự động giảm
dần từ giá trị cuối đến giá trị đầu.
CẤU TRÚC DẠNG LẶP TIẾN
CẤU TRÚC DẠNG LẶP TIẾN
Hãy nêu cấu trúc dạng lặp tiến?
Biến đếm: biến kiểu nguyên, kí tự hoặc miền con
Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm.
Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
For <biến đếm>:= <giá trị đầu> to <giá trị cuối> do <câu lệnh>;
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;
SƠ ĐỒ KHỐI
Biến đếm:=giá trị đầu
Biến đếm<=giá trị cuối
Lệnh cần lặp biến đếm tăng 1
Đúng
Sai
Quan sát sơ đồ
khối, hãy cho
biết sự thực

hiện của máy?

Bước 1: tính giá trị đầu, gán cho biến đếm.

Bước 2: Nếu biến đếm <= giá trị cuối thì:

thực hiện lệnh cần lặp.

tăng biến đếm 1 đơn vị, quay lại bước 2
CẤU TRÚC DẠNG LẶP LÙI
CẤU TRÚC DẠNG LẶP LÙI
Hãy nêu cấu trúc dạng lặp lùi?
Biến đếm: biến kiểu nguyên, kí tự hoặc miền con
Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm.
Giá trị đầu phải nhỏ hơn hoặc bằng giá trị cuối.
for <biến đếm>:= <giá trị cuối> downto <giá trị đầu> do <câu lệnh>;
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;
SƠ ĐỒ KHỐI
Biến đếm:=giá trị đầu
Biến đếm>=giá trị cuối
Lệnh cần lặp biến đếm giảm 1
Đúng
Sai
Quan sát sơ đồ
khối, hãy cho biết
sự thực hiện của
máy?


Bước 1: tính giá trị đầu, gán cho biến đếm.

Bước 2: Nếu biến đếm >= giá trị cuối thì:

thực hiện lệnh cần lặp.

giảm biến đếm 1 đơn vị, quay lại bước 2
Lưu ý:
+ Biến đếm là biến đơn, có kiểu nguyên hoặc kí tự.
+ Giá trị đầu, giá trị cuối là các biểu thức có cùng kiểu với biến
đếm. Giá trị đầu phải nhỏ hơn giá trị cuối.
+ Giá trị của biến đếm được điều chỉnh tự động, vì vậy câu lệnh viết
sau DO không được thay đổi giá trị biến đếm
For i:=1 to 10 do write(i);
For i:=‘a’ to ‘z’ do write(i);
For i:= 100 to 200 do write(i);
Quan sát sách giáo khoa trang 44,
chương trình cài đặt các thuật toán
Tong_1A?
* Bước 1: S ← 1/a; N ← 0;
* Bước 2: N ← N + 1;
* Bước 3: Nếu N > 100 thì chuyển đến bước 5;
* Bước 4: S ← S + 1/(a + N) rồi quay lại bước 2;
* Bước 5: Đưa S ra màn hình, rồi kết thúc.
Quan sát sách giáo khoa trang 44,
chương trình cài đặt các thuật toán
Tong_1B?
* Bước 1: S ← 1/a; N ← 101;
* Bước 2: N ← N - 1;
* Bước 3: Nếu N < 1 thì chuyển đến bước 5;

* Bước 4: S ← S + 1/(a + N) rồi quay lại bước 2;
* Bước 5: Đưa S ra màn hình, rồi kết thúc.
Quan sát sách giáo khoa trang 45,
chương trình thực hiện việc nhập từ
bàn phím hai 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?
Hãy lập trình tính:

=
+
=
50
1n
1n
n
Y
TÌM SỰ KHÁC BIỆT
TÌM SỰ KHÁC BIỆT
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
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
được lặp đi lặp lại
100
100
lần.
lần.
 Chưa lần lặp chưa biết trước.
Việc tăng giá trị cho tổng S
Việc tăng giá trị cho tổng S
được lặp đi lặp lại
được lặp đi lặp lại
cho đến khi
cho đến khi
0.0001
Na
1
<
+
3. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
3. LẶP VỚI SỐ LẦN CHƯA BIẾT TRƯỚC
a. Bài toán nêu vấn đề:
Dữ liệu ra (Output) : Tổng S
Lặp chương trình tính tổng sau:
Hãy xác định INPUT và OUTPUT của bài toán trên?
Dữ liệu vào (Input) : Nhập N

1


2
1
1
11
+
+
++
+
+
+
+=
Naaaa
S
cho đến khi
0001.0
1
<
+ Na
THUẬT TOÁN
THUẬT TOÁN
Nhận xét thuật toán.
* Bước 5: Đưa S ra màn hình, rồi kết thúc.
* Bước 1: S ← 1/a; N ← 0; {Khởi tạo S và N}
* Bước 3: N ← N + 1;
* Bước 2: Nếu 1/(a + N) < 0,0001 thì chuyển đến bước 5;
* Bước 4: S ← S + 1/(a + N) rồi quay lại bước 2;
Từ bước 2 đến bước 4 được lặp lại nhiều lần nếu
điều kiện 1/(a + N) < 0.0001 chưa được thoả mãn.
CÂU LỆNH WHILE - DO
CÂU LỆNH WHILE - DO

Hãy nêu cấu trúc lặp với câu lệnh while - do?
Điều kiện: biểu thức quan hệ hoặc biểu thức logic
Câu lệnh: là môt câu lệnh trong Pascal
While <điều kiện> do <câu lệnh >;
While <điều kiện> do <câu lệnh >;
Quan sát sơ đồ
khối, hãy cho
biết sự thực
hiện của máy?

Bước 1: tính giá trị của <điều kiện>.

Bước 2: Nếu <điều kiện> có giá trị đúng thì:

thực hiện lệnh cần lặp.

quay lại bước 1.
SƠ ĐỒ KHỐI
Điều kiện
Lệnh cần lặp
Đúng
Sai
Chừng nào điều kiện còn đúng thì câu lệnh còn thực hiện.
Chừng nào điều kiện còn đúng thì câu lệnh còn thực hiện.

×