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?.[r]
(1)TRẦN HỮU TRANG
TRƯỜNG TRUNG HỌC PHỔ THÔNG
TIN HỌC 11
(2)BÀI 10
CẤU TRÚC LẶP
CẤU TRÚC LẶP
(3)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 số nguyên a>2
Bài toán 2:
100
1
2
1
1
1
1
a
a
a
a
S
1
2
1
1
1
1
N
a
a
a
a
S
cho đến khi
1
0
.
0001
N
(4)CÙNG TÌM THUẬT TỐN
CÙNG TÌM THUẬT TỐN
Xuất phát
a
S
1
1
1
a
Lần 1
2
1
a
Lần 2
+…
Lần N
N
a
1
Mỗi lần thực hiện, giá trị tổng
tăng bao nhiêu?
i
a
1
(5)TÌM SỰ KHÁC BIỆT
TÌM SỰ KHÁC BIỆT
Bài tốn 1:
Bài tốn 2:
100
1
2
1
1
1
1
a
a
a
a
S
1
2
1
1
1
1
N
a
a
a
a
S
Cho đến
1
0
.
0001
N
a
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 lặp lại
được lặp 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 lặp lại
(6)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 (Output) : Tổng
S
Lặp chương trình tính tổng sau:
N
1
4
1
3
1
2
1
1
S
Hãy xác định INPUT OUTPUT
tốn trên?
(7)PHÂN TÍCH BÀI TỐN VỚI N=100
PHÂN TÍCH BÀI TỐ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
2việc tính S
1được lặp lặp lại 99 lần
theo quy luật
S
sau= S
trước+ 1/i,
Với I chạy từ
100
2
1
3
1
4
1
1
100
(8)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 chuyển
đến bước 5;
*
Bước 4:
S ← S + 1/(a + N) quay
lại bước 2;
*
Bước 5:
Đưa S hình, kết
thúc.
*
Bước 1
: S ← 1/a; N ← 101;
*
Bước 2:
N ← N - 1;
*
Bước 3:
Nếu N < chuyển đến
bước 5;
*
Bước 4:
S ← S + 1/(a + N) quay
lại bước 2;
*
Bước 5:
Đưa S hình, kết
thúc.
•Thuật tố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 tốn dạng lặp lùi
(9)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ự miền con
Giá trị đầu, giá trị cuối biểu thức kiểu với biến đếm. Giá trị đầu phải nhỏ giá trị cuối.
For <
biến đếm
>
:=
<
giá trị đầu
> to <
giá trị cuối
> <
câu lệnh
>;
For <
biến đếm
>
:=
<
giá trị đầu
> to <
giá trị cuối
> <
câu lệnh
>;
Ví dụ S:=1;
(10)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 Đúng
Sai
Quan sát sơ đồ khối, cho biết thực
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 lệnh cần lặp
(11)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ự miền con
Giá trị đầu, giá trị cuối biểu thức kiểu với biến đếm. Giá trị đầu phải nhỏ giá trị cuối.
for <
biến đếm
>
:=
<
giá trị cuối
> downto <
giá trị đầu
> <
câu lệnh
>;
for <
biến đếm
>
:=
<
giá trị cuối
> downto <
giá trị đầu
> <
câu lệnh
>;
Ví dụ S:=1;
(12)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 Đúng
Sai
Quan sát sơ đồ khối, cho biết thực
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 lệnh cần lặp
(13)Lưu ý:
+ Biến đếm biến đơn, có kiểu nguyên kí tự.
+ Giá trị đầu, giá trị cuối biểu thức có kiểu với
biến đếm Giá trị đầu phải nhỏ giá trị cuối.
+ Giá trị biến đếm điều chỉnh tự động, câu
lệnh viết sau DO không thay đổi giá trị biến đếm
For i:=1 to 10 write(i);
For i:=‘a’ to ‘z’ write(i);
(14)Quan sát sách giáo khoa trang
44, chương trình cài đặt
(15)* Bước 1: S ← 1/a; N ← 0; * Bước 2: N ← N + 1;
(16)Quan sát sách giáo khoa trang
44, chương trình cài đặt
(17)* Bước 1: S ← 1/a; N ← 101; * Bước 2: N ← N - 1;
(18)Quan sát sách giáo khoa trang
45, chương trình thực việc
nhập từ bàn phím hai số
nguyên dương M N (M<N)
Tính đưa hình tổng
các số chia hết cho
(19)(20)Hãy lập trình tính:
501
n
n
1
(21)(22)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
1
1
a
a
a
a
S
1
2
1
1
1
1
N
a
a
a
a
S
Cho đến
1
0
.
0001
N
a
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 lặp lại
được lặp 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 lặp lại
(23)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 (Output) : Tổng
S
Lặp chương trình tính tổng sau:
Hãy xác định INPUT OUTPUT
toán trên?
Dữ liệu vào (Input) : Nhập
N
1
2
1
1
1
1
N
a
a
a
a
S
cho đến khi
(24)
THUẬT TOÁN
THUẬT TOÁN
Nhận xét thuật tốn.
*
Bước 5:
Đưa S hình, kết thúc.
*
Bước 1
: S ← 1/a; N ← 0; {Khởi tạo S N}
*
Bước 3:
N ← N + 1;
*
Bước 2:
Nếu 1/(a + N) < 0,0001 chuyển đến bước 5;
*
Bước 4:
S ← S + 1/(a + N) quay lại bước 2;
(25)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ệ biểu thức logic Câu lệnh: môt câu lệnh Pascal
While <
điều kiện
> <
câu lệnh
>;
(26)Quan sát sơ đồ khối, cho biết thực
máy?
• Bước 1: tính giá trị <điều kiện>
• Bước 2: Nếu <điều kiện> có giá trị thì: • thực lệnh cần lặp
• quay lại bước
SƠ ĐỒ KHỐI
Điều kiện
Lệnh cần lặp Đúng
Sai
(27)BÀI TOÁN ĐẶT VẤN ĐỀ
BÀI TỐN ĐẶT VẤN ĐỀ
Tính tổng S với a số nguyên a>2
1
2
1
1
1
1
N
a
a
a
a
S
Cho đến1
0
.
0001
N
a
Nhận xét
While
1/(a + N) >= 0.0001
do
Begin
S:=S+1/(a+N);
N:=N+1;
End;
Chừng 1/(a + N) >= 0.0001
thực hiện:
+ Tăng giá trị tổng S thêm
1/(a + N).
(28)Quan sát sách giáo khoa trang
47, chương trình cài đặt thuật
(29)• Tính giá trị <điều kiện>
•Nếu <điều kiện> có giá trị thì: • thực lệnh cần lặp
(30)
Quan sát sách giáo khoa trang
47, chương trình cài đặt thuật
tốn “ Tìm ước số chung lớn
nhất hai số nguyên dương
(31)THUẬT TOÁN
THUẬT TOÁN
*
Bước 5:
Đưa kết ƯCLN kết thúc.
* Bước 1: Nhập M, N;
* Bước 3: Nếu M > N M ← M + N ngược lại N ← N - M
;
* Bước 2: Nếu M = N lấy giá trị chung làm ƯCLN
chuyển đến bước 5;
(32)(33)Chừng
M≠N
thì
M> N
M:= M-N
ngược lại
N:= N-M
Đến
M=N
thì
đưa ƯCLN(M,N)=
M
(34)CÂU LỆNH REPEAT - UNTIL
CÂU LỆNH REPEAT - UNTIL
Hãy nêu cấu trúc lặp với câu lệnh repeat - until?