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 Thanh Tâm
Ngày gửi: 20h:07' 11-12-2022
Dung lượng: 187.6 KB
Số lượt tải: 49
Nguồn:
Người gửi: Nguyễn Thanh Tâm
Ngày gửi: 20h:07' 11-12-2022
Dung lượng: 187.6 KB
Số lượt tải: 49
Số lượt thích:
0 người
CẤU TRÚC LẶP
Ta thấy trong một số thuật toán có những thao tác
phải thực hiện lặp đi lặp lại một số lần. Một trong
các đặc trưng của máy tính là khả năng thực hiện
hiệu quả các thao tác lặp. Cấu trúc lặp mô tả thao
tác lặp và được phân biệt hai loại là lặp với số lần
biết trước và lặp với số lần chưa biết trước.
Trong Pascal và một số ngôn ngữ lập trình đều có
các câu lệnh để mô tả cấu trúc lặp. Trong tiết này ta
chỉ nghiên cứu cấu trúc lặp với số lần biết trước.
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Thuật toán tính tổng S=a+1+2+3+…+10
Thuật toán này lặp ở những bước
B1 Nhập a
nào? Và khi nào thì thuật toán dừng.
Vậy số lần lặp của thuật toán trên là
biết trước (10 lần).Kết quả
Nhập a=3
B2 S←a;N←0;
N←N+1; B3
B4
N>10?
Đ
S
S←S+N; B5
S=3+1+2+3+4+5+6+7+8+9+10=58
Đưa ra S
rồi kết thúc
B6
CẤU TRÚC LẶP
B1
Trong thuật toán, giá trị N
khi bắt đầu tham gia vòng
lặp là 1 và sau mỗi lần lặp N
tăng lên 1 cho đến khi N>10
thì kết thúc lặp. Ta nói cách
lặp trong thuật toán trên là
dạng lặp tiến
Nhập a
B2 S←a;N←0;
N←N+1;
B4
N>10?
B3
Đ
S
S←S+N; B5
Đưa ra S
rồi kết thúc
B6
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Pascal dùng câu lệnh lặp for-do thể hiện dạng lặp với
số lần biết trước như sau:
Dạng lặp tiến:
For:= to do ;
Chú ý: ở đây có thể là câu lệnh đơn hoặc
câu lệnh ghép.
*Cách hoạt động: Các em xem SGK
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Chương trình tính tổng S=a+1+2+…+10
Write('nhap vao a');
Program Tong;
Readln(a);
Uses crt;
S:=a;
Var S:real;
For N:=1 to 10 do
a,N:Integer;
S:=S+N;
Begin
Writeln('tong s la',S:8:2);
Clrscr;
Readln
End.
CẤU TRÚC LẶP
Ngoài cách tính tổng S là S=a+1+2+3…+10 thì ta còn
có cách tính S nào khác không?
S=a+10+9+8+…+1
Ta dễ dàng thấy cách để tính tổng S như sau:
-Xuất phát, S được gán giá trị a
-Tiếp theo, cộng vào S một giá trị N với N=10, 9, 8,
…,1
Việc cộng được lặp lại với số lần là 10 và việc tính
tổng S sẽ kết thúc khi đã thực hiện việc cộng N vào S
10 lần.
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Thuật toán tính tổng S a 10 9 8 ... 1
Thuật toán này lặp ở những bước
B1 Nhập a
B2 S←a;N←11;
nào? Và khi nào thì thuật toán dừng.
Vậy số lần lặp của thuật toán trên là
biết trước (10 lần).
Nhập a=3
N←N-1; B3
B4
N<1?
Đ
S
S←S+N; B5
S=3+10+9+8+7+6+5+4+3+2+1=58
Đưa ra S
rồi kết thúc
B6
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
B1
Nhập a
B2 S←a;N←11;
N←N-1;
B4
N<1?
B3
Đ
S
S←S+N; B5
Đưa ra S
rồi kết thúc
B6
Trong thuật toán, giá trị N
khi bắt đầu tham gia vòng
lặp là 10 và sau mỗi lần lặp N
giảm đi 1 cho đến khi N<1
thì kết thúc lặp. Ta nói cách
lặp trong thuật toán trên là
dạng lặp lùi.
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Pascal dùng câu lệnh lặp for-do thể hiện dạng lặp với
số lần biết trước như sau:
Dạng lặp lùi:
For:= downto do ;
Chú ý: ở đây có thể là câu lệnh đơn hoặc
câu lệnh ghép.
*Cách hoạt động: Các em xem SGK
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Chương trình tính tổng S=a+10+9+8+…+1
Write('nhap vao a');
Program Tong;
Readln(a);
Uses crt;
S:=a;
Var S:real;
For N:=10 downto 1 do
a,N:Integer;
S:=S+N;
Begin
Writeln('tong s la',S:8:2);
Clrscr;
Readln
End.
CẤU TRÚC LẶP
Ví dụ 1: Cho biết kết quả khi thực hiện chương trình
sau:
Kết quả chương trình sẽ
Uses crt;
in ra màn hình 5 dòng:
Var i:byte;
Xin chao cac ban!
Begin
Clrscr;
Xin chao cac ban!
For i:=5 downto 1 do
Xin chao cac ban!
Writeln('Xin chao cac ban!'); Xin chao cac ban!
Readln;
End.
Xin chao cac ban!
CẤU TRÚC LẶP
Ví dụ 2: Cho biết kết quả khi thực hiện chương trình
sau:
Kết quả chương trình sẽ
Uses crt;
in ra màn hình là:
Var i:byte;
5
Begin
Clrscr;
4
For i:=5 downto 1 do
3
Writeln(i);
2
Readln;
1
End.
Ta thấy trong một số thuật toán có những thao tác
phải thực hiện lặp đi lặp lại một số lần. Một trong
các đặc trưng của máy tính là khả năng thực hiện
hiệu quả các thao tác lặp. Cấu trúc lặp mô tả thao
tác lặp và được phân biệt hai loại là lặp với số lần
biết trước và lặp với số lần chưa biết trước.
Trong Pascal và một số ngôn ngữ lập trình đều có
các câu lệnh để mô tả cấu trúc lặp. Trong tiết này ta
chỉ nghiên cứu cấu trúc lặp với số lần biết trước.
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Thuật toán tính tổng S=a+1+2+3+…+10
Thuật toán này lặp ở những bước
B1 Nhập a
nào? Và khi nào thì thuật toán dừng.
Vậy số lần lặp của thuật toán trên là
biết trước (10 lần).Kết quả
Nhập a=3
B2 S←a;N←0;
N←N+1; B3
B4
N>10?
Đ
S
S←S+N; B5
S=3+1+2+3+4+5+6+7+8+9+10=58
Đưa ra S
rồi kết thúc
B6
CẤU TRÚC LẶP
B1
Trong thuật toán, giá trị N
khi bắt đầu tham gia vòng
lặp là 1 và sau mỗi lần lặp N
tăng lên 1 cho đến khi N>10
thì kết thúc lặp. Ta nói cách
lặp trong thuật toán trên là
dạng lặp tiến
Nhập a
B2 S←a;N←0;
N←N+1;
B4
N>10?
B3
Đ
S
S←S+N; B5
Đưa ra S
rồi kết thúc
B6
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Pascal dùng câu lệnh lặp for-do thể hiện dạng lặp với
số lần biết trước như sau:
Dạng lặp tiến:
For
Chú ý:
câu lệnh ghép.
*Cách hoạt động: Các em xem SGK
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Chương trình tính tổng S=a+1+2+…+10
Write('nhap vao a');
Program Tong;
Readln(a);
Uses crt;
S:=a;
Var S:real;
For N:=1 to 10 do
a,N:Integer;
S:=S+N;
Begin
Writeln('tong s la',S:8:2);
Clrscr;
Readln
End.
CẤU TRÚC LẶP
Ngoài cách tính tổng S là S=a+1+2+3…+10 thì ta còn
có cách tính S nào khác không?
S=a+10+9+8+…+1
Ta dễ dàng thấy cách để tính tổng S như sau:
-Xuất phát, S được gán giá trị a
-Tiếp theo, cộng vào S một giá trị N với N=10, 9, 8,
…,1
Việc cộng được lặp lại với số lần là 10 và việc tính
tổng S sẽ kết thúc khi đã thực hiện việc cộng N vào S
10 lần.
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Thuật toán tính tổng S a 10 9 8 ... 1
Thuật toán này lặp ở những bước
B1 Nhập a
B2 S←a;N←11;
nào? Và khi nào thì thuật toán dừng.
Vậy số lần lặp của thuật toán trên là
biết trước (10 lần).
Nhập a=3
N←N-1; B3
B4
N<1?
Đ
S
S←S+N; B5
S=3+10+9+8+7+6+5+4+3+2+1=58
Đưa ra S
rồi kết thúc
B6
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
B1
Nhập a
B2 S←a;N←11;
N←N-1;
B4
N<1?
B3
Đ
S
S←S+N; B5
Đưa ra S
rồi kết thúc
B6
Trong thuật toán, giá trị N
khi bắt đầu tham gia vòng
lặp là 10 và sau mỗi lần lặp N
giảm đi 1 cho đến khi N<1
thì kết thúc lặp. Ta nói cách
lặp trong thuật toán trên là
dạng lặp lùi.
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Pascal dùng câu lệnh lặp for-do thể hiện dạng lặp với
số lần biết trước như sau:
Dạng lặp lùi:
For
Chú ý:
câu lệnh ghép.
*Cách hoạt động: Các em xem SGK
CẤU TRÚC LẶP
2.Lặp với số lần biết trước và câu lệnh For-do:
Chương trình tính tổng S=a+10+9+8+…+1
Write('nhap vao a');
Program Tong;
Readln(a);
Uses crt;
S:=a;
Var S:real;
For N:=10 downto 1 do
a,N:Integer;
S:=S+N;
Begin
Writeln('tong s la',S:8:2);
Clrscr;
Readln
End.
CẤU TRÚC LẶP
Ví dụ 1: Cho biết kết quả khi thực hiện chương trình
sau:
Kết quả chương trình sẽ
Uses crt;
in ra màn hình 5 dòng:
Var i:byte;
Xin chao cac ban!
Begin
Clrscr;
Xin chao cac ban!
For i:=5 downto 1 do
Xin chao cac ban!
Writeln('Xin chao cac ban!'); Xin chao cac ban!
Readln;
End.
Xin chao cac ban!
CẤU TRÚC LẶP
Ví dụ 2: Cho biết kết quả khi thực hiện chương trình
sau:
Kết quả chương trình sẽ
Uses crt;
in ra màn hình là:
Var i:byte;
5
Begin
Clrscr;
4
For i:=5 downto 1 do
3
Writeln(i);
2
Readln;
1
End.
 









Các ý kiến mới nhất