Tìm kiếm Bài giảng
Bài 10. Cấu trúc lặp

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Nguyễn Thị Ngọc
Ngày gửi: 23h:23' 18-01-2022
Dung lượng: 2.9 MB
Số lượt tải: 216
Nguồn:
Người gửi: Nguyễn Thị Ngọc
Ngày gửi: 23h:23' 18-01-2022
Dung lượng: 2.9 MB
Số lượt tải: 216
Số lượt thích:
0 người
Bài 10
CẤU TRÚC LẶP
1. LẶP
Quan sát ví dụ sau:
Dung tích
30 Lít
- VD1: Người thứ nhất dùng một chiếc xô dung tích 1 lít đổ đầy nước vào một chiếc thùng có dung tích 30 lít. Hỏi bao nhiêu lần đổ thì đầy?
- VD2: Người thứ 2 dùng một chiếc xô dung tích 1 lít đổ đầy nước vào một chiếc thùng không rõ dung tích. Hỏi bao nhiêu lần đổ thì đầy?
Sau
30 lần
đổ
Chừng
Nào đầy
thùng
Quá trình như vậy được gọi là lặp
cho đến khi
bài toán 1:
bài toán 2:
Tính tổng S, với a là số nguyên và a>2
Xuất phát
Lần 1
Lần 2
+…
Lần i
Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?
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 ; ...;)
a + i
Cùng tìm thuật toán
+…
Bài toán 1:
Bài toán 2:
Cho đến khi
? Số lần lặp biết trưuớc.
Việc tăng giá trị cho tổng S đuược lặp đi lặp lại cho đến khi
Việc tăng giá trị cho tổng S đưuợc lặp đi lặp lại 100 lần.
tìm sự khác biệt
? Số lần lặp chuưa biết truước.
1/ LẶP
Các loại cấu trúc lặp:
+ Lặp với số lần biết trước.
+ Lặp với số lần chưa biết trước .
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Câu hỏi: Trong các hoạt động dưuới đây, hoạt động nào là hoạt động lặp với số lần biết trưuớc?
Bài toán:
- Dữ liệu ra (Output) : Tổng S
- Dữ liệu vào (Input) : a (a nguyên, a>2)
Với a >2, a là số nguyên. Lập chương trình tính tổng sau:
2/ Lặp với số lần biết trước và câu lệnh For - do
Phân tích bài toán (ý TU?NG)
Nhận xét:
Ban đầu : S := 1/a
Cộng lần 1: S1: = S + 1/(a+1)
Cộng lần 2: S2: = S1 + 1/(a+2)
Cộng lần 3: S3: = S2 + 1/(a+3)
.....
Cộng lần 100: S100: = S99 + 1/(a+100)
Bắt đầu từ lần cộng 1 việc tính S đưuợc lặp đi lặp lại 100 lần theo quy luật
Ssau := Strưuớc+ 1/(a+N)
với N chạy từ 1 ? 100
. . . . . . . . . . . . . . . . . . . .
B1: S?1/a; N?0;
B3: Nếu N >100 thì chuyển đến buước 5;
B4: S? S + 1/(a+N) rồi quay lại bưuớc 2;
B2: N ? N +1;
Xây dựng thuật toán 1a
Nhận xét:
Liệt kê
B5: Đuưa S ra màn hình, rồi kết thúc;
Thuật toán trên, giá trị N bắt đầu tham gia vòng lặp là 1 sau mỗi lần lặp N tăng lên 1 cho đến khi N > 100 (N= 101) thì kết thúc lặp (thực hiện 100 lần).
Dựa vào thuật toán trên, em hãy cho biết giá trị N bắt đầu
tham gia vòng lặp là bao nhiêu và kết thúc khi nào?
B1: S?1/a; N?101;
B3: Nếu N < 1 thì đưua ra giá trị S rồi Kết thúc;
B4: S? S + 1/(a+N) rồi quay lại buước 2;
B2: N ? N -1;
Xây dựng thuật toán 1b
Liệt kê
B5: Đuưa S ra màn hình, rồi kết thúc;
for, to, downto, do: Là từ khóa trong Pascal;
Biến đếm: Là biến đơn, thường có kiểu nguyên
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 nhỏ hơn hoặc bằng giá trị cuối)
FOR := TO DO < Câu lệnh >;
Dạng 2 (dạng lùi)
FOR < Biến đếm > := < Giá trị cuối > DOWNTO < Giá trị đầu > DO;
Dạng 1 (dạng tiến)
2/ Lặp với số lần biết trước và câu lệnh For - do
Ví dụ: FOR n:=1 TO 100 DO S:=S+1/n;
Ví dụ: FOR n:=100 DOWNTO 1 DO S:=S+1/n;
FOR := TO DO < Câu lệnh >;
Hoạt động:
sau từ khóa DO sẽ được thực hiện lặp lại với nhận lần lượt các giá trị liên tiếp tăng từ đến
Dạng 2 (dạng lùi)
FOR < Biến đếm > := < Giá trị cuối > DOWNTO < Giá trị đầu > DO;
Dạng 1 (dạng tiến)
2/ Lặp với số lần biết trước và câu lệnh For - do
Hoạt động:
sau từ khóa DO sẽ được thực hiện lặp lại với nhận lần lượt các giá trị liên tiếp giảm từ đến
In ra 9 s? 1
In ra các số từ 1 đến 10
In ra các số từ 1 đến 9
Không phương án nào đúng
Cu l?nh sau dy cho k?t qu? l gì?
s:=1; for i:=1 to 9 do
writeln(s);
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Begin
Ghép nhiều câu lệnh
Các câu lệnh d?ng ti?n sau có hợp lệ không? vì sao ?
TL : không hợp lệ, vì giá trị đầu lớn hơn giá trị cuối
For i:=100 to 1 do Write(‘A’);
For i:=1.5 to 10.5 do Write(‘A’);
TL : không hợp lệ, vì giá trị đầu, giá trị cuối là dữ liệu kiểu số thực
For i:=1 to 10 do Write(‘A’);
TL : Hỵp lƯ, k?t qu? : AAAAAAAAAA
For i:=10 to 12 do Write(‘A’);
TL : Hỵp lƯ, k?t qu? : AAA
ví dụ 1: Viết chưuơng trình in ra mn hỡnh 20 cõu: chao cac ban.
Program vidu1;
Uses crt;
Var i: integer;
Begin
clrscr;
For i:= 1 to 20 do
writeln(‘chao cac ban LOP 11A4’);
Readln;
End.
ví dụ 2: Cài đặt thuật toán Tong_1a
1. Bài toán
Dữ liệu ra (Output) : Tổng S
Dữ liệu vào (Input) : Nhập a
Hãy x¸c ®Þnh INPUT, OUTPUT vµ nªu thuËt to¸n gi¶i bµi to¸n trªn?
Cho đến khi
Tính giá trị tổng S, với a là số nguyên và a>2.
thì dừng lại.
II. Lặp với số lần lặp không biết trưuớc
Bưuớc 2:
S:=1/a; N:=1;
{Khởi tạo S và N}
Bưuớc 3:
Nếu 1/(a+N) < 0.0001
=> Bước 5
Bưuớc 4:
S:=S+1/(a+N);
N:=N+1;
=> quay lại bước 3
Thuật toán
Bưuớc 1: Nhập a.
Đuưa ra S
=> Kết thúc
? Vòng lặp chỉ dừng khi 1/(a+N)<0.0001
S
Đ
Bưuớc 5: In S => Kết thúc.
WHILE <Điều kiện> DO;
Điều kiện
Đúng
Câu lệnh
Đ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.
Sai
2. Lặp với số lần lặp không biết truước
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn đuược thực hiện.
WHILE 1/(a+N) >= 0.0001 DO
Begin
S:=S+1/(a+N);
N:=N+1;
END;
3. Một số ví dụ
a
Bài toán đặt vấ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).
+ Tăng N thêm 1 đơn vị.
Tính giá trị tổng S, với a là số nguyên và a>2
thì dừng lại.
Cho đến khi
Chưuơ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.
Begin
Thực hiện theo điều kiện
Ghép nhiều câu lệnh
Hãy chỉ ra lỗi trong các câu lệnh sau?
X:=10;
While x:=10 do x:=x+5;
A)
X:=10;
While x=10 do x=x+5;
B)
C)
S:=10; N:=0;
While S<=10 do
n:=n+1;
S:=S+n;
Begin
Thực hiện theo điều kiện
Hãy chỉ ra lỗi trong các câu lệnh sau?
X:=10;
While x:=10 do x:=x+5;
A)
X:=10;
While x=10 do x=x+5;
B)
S:=10; N:=0;
While S<=10 do
n:=n+1;
S:=S+n;
C)
Thừa dấu :
Thiếu dấu :
Thiếu từ khóa begin và end;
Hãy nhí!
Câu lệnh rẽ nhánh.
Câu lệnh lặp
IF <đk> THEN;
trong pascal
FOR ... TO ... DO ....
IF <đk> THEN
ESLE;
FOR ... Downto ... DO ...
While <đk> Do;
Dạng khuyết.
Dạng đầy đủ.
Lặp với số lần lặp biết
trưu?c.
Lặp với số lần lặp không biết trưuớc.
CẤU TRÚC LẶP
1. LẶP
Quan sát ví dụ sau:
Dung tích
30 Lít
- VD1: Người thứ nhất dùng một chiếc xô dung tích 1 lít đổ đầy nước vào một chiếc thùng có dung tích 30 lít. Hỏi bao nhiêu lần đổ thì đầy?
- VD2: Người thứ 2 dùng một chiếc xô dung tích 1 lít đổ đầy nước vào một chiếc thùng không rõ dung tích. Hỏi bao nhiêu lần đổ thì đầy?
Sau
30 lần
đổ
Chừng
Nào đầy
thùng
Quá trình như vậy được gọi là lặp
cho đến khi
bài toán 1:
bài toán 2:
Tính tổng S, với a là số nguyên và a>2
Xuất phát
Lần 1
Lần 2
+…
Lần i
Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?
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 ; ...;)
a + i
Cùng tìm thuật toán
+…
Bài toán 1:
Bài toán 2:
Cho đến khi
? Số lần lặp biết trưuớc.
Việc tăng giá trị cho tổng S đuược lặp đi lặp lại cho đến khi
Việc tăng giá trị cho tổng S đưuợc lặp đi lặp lại 100 lần.
tìm sự khác biệt
? Số lần lặp chuưa biết truước.
1/ LẶP
Các loại cấu trúc lặp:
+ Lặp với số lần biết trước.
+ Lặp với số lần chưa biết trước .
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Câu hỏi: Trong các hoạt động dưuới đây, hoạt động nào là hoạt động lặp với số lần biết trưuớc?
Bài toán:
- Dữ liệu ra (Output) : Tổng S
- Dữ liệu vào (Input) : a (a nguyên, a>2)
Với a >2, a là số nguyên. Lập chương trình tính tổng sau:
2/ Lặp với số lần biết trước và câu lệnh For - do
Phân tích bài toán (ý TU?NG)
Nhận xét:
Ban đầu : S := 1/a
Cộng lần 1: S1: = S + 1/(a+1)
Cộng lần 2: S2: = S1 + 1/(a+2)
Cộng lần 3: S3: = S2 + 1/(a+3)
.....
Cộng lần 100: S100: = S99 + 1/(a+100)
Bắt đầu từ lần cộng 1 việc tính S đưuợc lặp đi lặp lại 100 lần theo quy luật
Ssau := Strưuớc+ 1/(a+N)
với N chạy từ 1 ? 100
. . . . . . . . . . . . . . . . . . . .
B1: S?1/a; N?0;
B3: Nếu N >100 thì chuyển đến buước 5;
B4: S? S + 1/(a+N) rồi quay lại bưuớc 2;
B2: N ? N +1;
Xây dựng thuật toán 1a
Nhận xét:
Liệt kê
B5: Đuưa S ra màn hình, rồi kết thúc;
Thuật toán trên, giá trị N bắt đầu tham gia vòng lặp là 1 sau mỗi lần lặp N tăng lên 1 cho đến khi N > 100 (N= 101) thì kết thúc lặp (thực hiện 100 lần).
Dựa vào thuật toán trên, em hãy cho biết giá trị N bắt đầu
tham gia vòng lặp là bao nhiêu và kết thúc khi nào?
B1: S?1/a; N?101;
B3: Nếu N < 1 thì đưua ra giá trị S rồi Kết thúc;
B4: S? S + 1/(a+N) rồi quay lại buước 2;
B2: N ? N -1;
Xây dựng thuật toán 1b
Liệt kê
B5: Đuưa S ra màn hình, rồi kết thúc;
for, to, downto, do: Là từ khóa trong Pascal;
Biến đếm: Là biến đơn, thường có kiểu nguyên
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 nhỏ hơn hoặc bằng giá trị cuối)
FOR
Dạng 2 (dạng lùi)
FOR < Biến đếm > := < Giá trị cuối > DOWNTO < Giá trị đầu > DO
Dạng 1 (dạng tiến)
2/ Lặp với số lần biết trước và câu lệnh For - do
Ví dụ: FOR n:=1 TO 100 DO S:=S+1/n;
Ví dụ: FOR n:=100 DOWNTO 1 DO S:=S+1/n;
FOR
Hoạt động:
Dạng 2 (dạng lùi)
FOR < Biến đếm > := < Giá trị cuối > DOWNTO < Giá trị đầu > DO
Dạng 1 (dạng tiến)
2/ Lặp với số lần biết trước và câu lệnh For - do
Hoạt động:
In ra 9 s? 1
In ra các số từ 1 đến 10
In ra các số từ 1 đến 9
Không phương án nào đúng
Cu l?nh sau dy cho k?t qu? l gì?
s:=1; for i:=1 to 9 do
writeln(s);
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Begin
Ghép nhiều câu lệnh
Các câu lệnh d?ng ti?n sau có hợp lệ không? vì sao ?
TL : không hợp lệ, vì giá trị đầu lớn hơn giá trị cuối
For i:=100 to 1 do Write(‘A’);
For i:=1.5 to 10.5 do Write(‘A’);
TL : không hợp lệ, vì giá trị đầu, giá trị cuối là dữ liệu kiểu số thực
For i:=1 to 10 do Write(‘A’);
TL : Hỵp lƯ, k?t qu? : AAAAAAAAAA
For i:=10 to 12 do Write(‘A’);
TL : Hỵp lƯ, k?t qu? : AAA
ví dụ 1: Viết chưuơng trình in ra mn hỡnh 20 cõu: chao cac ban.
Program vidu1;
Uses crt;
Var i: integer;
Begin
clrscr;
For i:= 1 to 20 do
writeln(‘chao cac ban LOP 11A4’);
Readln;
End.
ví dụ 2: Cài đặt thuật toán Tong_1a
1. Bài toán
Dữ liệu ra (Output) : Tổng S
Dữ liệu vào (Input) : Nhập a
Hãy x¸c ®Þnh INPUT, OUTPUT vµ nªu thuËt to¸n gi¶i bµi to¸n trªn?
Cho đến khi
Tính giá trị tổng S, với a là số nguyên và a>2.
thì dừng lại.
II. Lặp với số lần lặp không biết trưuớc
Bưuớc 2:
S:=1/a; N:=1;
{Khởi tạo S và N}
Bưuớc 3:
Nếu 1/(a+N) < 0.0001
=> Bước 5
Bưuớc 4:
S:=S+1/(a+N);
N:=N+1;
=> quay lại bước 3
Thuật toán
Bưuớc 1: Nhập a.
Đuưa ra S
=> Kết thúc
? Vòng lặp chỉ dừng khi 1/(a+N)<0.0001
S
Đ
Bưuớc 5: In S => Kết thúc.
WHILE <Điều kiện> DO
Điều kiện
Đúng
Câu lệnh
Đ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.
Sai
2. Lặp với số lần lặp không biết truước
Trong đó:
Chừng nào điều kiện còn đúng thì câu lệnh còn đuược thực hiện.
WHILE 1/(a+N) >= 0.0001 DO
Begin
S:=S+1/(a+N);
N:=N+1;
END;
3. Một số ví dụ
a
Bài toán đặt vấ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).
+ Tăng N thêm 1 đơn vị.
Tính giá trị tổng S, với a là số nguyên và a>2
thì dừng lại.
Cho đến khi
Chưuơ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.
Begin
Thực hiện theo điều kiện
Ghép nhiều câu lệnh
Hãy chỉ ra lỗi trong các câu lệnh sau?
X:=10;
While x:=10 do x:=x+5;
A)
X:=10;
While x=10 do x=x+5;
B)
C)
S:=10; N:=0;
While S<=10 do
n:=n+1;
S:=S+n;
Begin
Thực hiện theo điều kiện
Hãy chỉ ra lỗi trong các câu lệnh sau?
X:=10;
While x:=10 do x:=x+5;
A)
X:=10;
While x=10 do x=x+5;
B)
S:=10; N:=0;
While S<=10 do
n:=n+1;
S:=S+n;
C)
Thừa dấu :
Thiếu dấu :
Thiếu từ khóa begin và end;
Hãy nhí!
Câu lệnh rẽ nhánh.
Câu lệnh lặp
IF <đk> THEN
trong pascal
FOR ... TO ... DO ....
IF <đk> THEN
ESLE
FOR ... Downto ... DO ...
While <đk> Do
Dạng khuyết.
Dạng đầy đủ.
Lặp với số lần lặp biết
trưu?c.
Lặp với số lần lặp không biết trưuớc.
 
Các ý kiến mới nhất