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 Tuyền
Ngày gửi: 21h:16' 05-12-2022
Dung lượng: 3.6 MB
Số lượt tải: 155
Nguồn:
Người gửi: Nguyễn Thanh Tuyền
Ngày gửi: 21h:16' 05-12-2022
Dung lượng: 3.6 MB
Số lượt tải: 155
Số lượt thích:
0 người
BÀI 10:
C ẤU TRÚC LẶP
(range, for, while)
Chủ đề 3:
CẤU TRÚC RẼ NHÁNH VÀ LẶP
KHỞI
ĐỘNG
Bài 1: Có 1 thùng với
dung tích 100 lít, Hãy
múc nước đổ đầy thùng
đó với dụng cụ chứa 1 lít.
Bài 2 : Có 1 thùng chưa biết
dung tích, Hãy múc nước đổ đầy
thùng đó với dụng cụ chứa 1 lít.
? lít
1
lít
Hãy cho biết quá trình đổ nước cho hai
bài toán trên có điểm giống nhau và
khác nhau thế nào?
1
lít
C
BÀI 10:
ẤU TRÚC LẶP
NỘI DUNG BÀI HỌC
Bài 10:
Cấu Trúc
Lặp
1. Lặp
2. Lặp có số lần biết trước và câu lệnh for
3. Lặp với số lần chưa biết trước và câu lệnh while
1. Lặp
- Cấu trúc lặp là một điều khiển thực hiện lặp đi lặp lại một
công việc nào đó khi chưa đủ số lần lặp hoặc khi một điều kiện
nào đó còn đúng.
- Quá trình lặp vô hạn là quá trình lặp không thể dừng lại.
Trường hợp lặp vô hạn xảy ra khi điều kiện kết thúc chưa được
đặt, không thể xảy ra và / hoặc khiến vòng lặp khởi động lại
trước khi kết thúc.
1. Lặp
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 1:
1
1
1
1
S
...
a a 1 a 2
a 100
- Bài toán 2:
1
1
1
1
S
...
...
a a 1 a 2
aN
1
0.0001
cho đến khi
aN
1. Lặp
Các bài toán đặt vấn đề: Tính tổng S, với a là số nguyên và a>2
CÙNG TÌM THUẬT TOÁN
Lần N
Lần 2
Lần 1
Xuất phát
1
S
a
1
a 1
1
a2
+…
1
aN
Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?
Sau mỗi lần thực hiện giá trị tổng S tăng thêm
(với i =1; 2; 3 ; ...;N)
1. Lặp
Các bài toán đặt vấn đề: Tính tổng S, với a là số nguyên và a>2
TÌM
SỰ
KHÁC
BIỆT
Bài toán 1:
Bài toán 2:
1
1
1
1
S
...
a a 1 a 2
a 100
1
1
1
1
S
...
...
a a 1 a 2
aN
- Việc tăng giá trị cho tổng
S được lặp đi lặp lại 100
lần.
- Việc tăng giá trị cho
tổng S được lặp đi lặp lại
cho đến khi
1
Số lần lặp biết trước.
aN
0.0001
Số lần lặp chưa biết trước.
1. Lặp
Một số ví dụ: - Viết chương trình giải các bài toán sau:
+ In ra các số nguyên từ 1 đến 10.
+ In ra các số chẵn nhỏ hơn 20.
+ In ra các ước số của N.
- Python cung cấp cho ta 2 loại vòng lặp sau:
+ Vòng lặp for (lặp khi biết trước số lần lặp)
+ Vòng lặp while (lặp theo điều kiện)
2. Lặp có số lần lặp biết trước và câu lệnh for
Bài toán đặt vấn đề lập chương trình tính tổng sau:
1
1
1
1
S 1
...
2
3
4
N
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
- Dữ liệu ra (Output): Tổng S
2. Lặp có số lần lặp biết trước và câu lệnh for
PHÂN TÍCH BÀI TOÁN VỚI N = 100
1 1 1
1
S 1 . . .
2 3 4
100
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4
=
S3
+
1/4
.....
....................
S100 = S99 + 1/100
Nhận xét:
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
2. Lặp có số lần lặp biết trước và câu lệnh for
XÂY DỰNG THUẬT TOÁN
Nhập n
B1: Nhập n
B2: s=1; i=2
B3: Nếu i > n thì đưa ra giá
s= 1 ; i= 2
trị s => Kết thúc
i>n?
Đ
S
s= s + 1/i
i= i+1
Đưa ra s rồi kết thúc
B4 : s= s + 1/i
B5: i = i +1 quay lại B3.
2. Lặp có số lần lặp biết trước và câu lệnh for
2.1. Hàm range()
Để sử dụng câu lệnh for trước tiên chúng ta học cú pháp
hàm range:
Cú pháp:
range([bắt đầu dãy],, [bước nhảy])
2. Lặp có số lần lặp biết trước và câu lệnh for
2.1. Hàm range()
- Trong đó:
+ [bắt đầu dãy]: giá trị bắt đầu (có thể có hoặc không, nếu
không thì mặc định là 0).
+: giá trị kết thúc (bắt buộc).
+ [bước nhảy]: bước nhảy (có thể có hoặc không, nếu
không thì mặc định là 1).
- Hàm range() sẽ tạo ra một danh sách các số nguyên liên
tiếp bắt đầu từ [bắt đầu dãy] tới-1 và các giá trị
tăng đều thêm 1 lượng [bước nhảy].
2. Lặp có số lần lặp biết trước và câu lệnh for
2.1. Hàm range()
- Hàm này có nhiều dạng, có thể tóm tắt trong bảng sau:
Cú pháp
Ý nghĩa
range(0, n)
Dãy giá trị từ 0, 1, ..., n-1
range(1, n, 2)
Dãy giá trị 1, 3, 5, ... đến n-1, tăng dần theo
2 đơn vị.
range(n)
Tương đương range(0, n, 1) – dãy giá trị từ
0, 1, 2, ... , n-1
range(n, 0, -1)
Dãy giá trị n, n-1, ... , 1 (giảm dần)
Ví dụ:
range(0,10) -> dãy giá trị từ: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
range(15) -> dãy giá trị từ:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, từ:
13, 14 1
range(1,10,3) -> dãy giá trị
4, 7 12, 10,
range(12,1,-2) -> dãy giá trị ,từ:
range(0,15) -> dãy giá trị từ: 8, 6,0,4,1,22, 3, 4, 5, 6, 7, 8, 9, 10, 11,
range(12) -> dãy giá trị từ:12, 13,
0, 14
1, 2, 3, 4, 5, 6, 7, 8,
9, 10,
range(8,0,-1) -> dãy giá trị
từ:11 8, 7, 6, 5,
4, 3, 2, 1,
1 3, 5,
range(1,12,2) -> dãy giá trị từ:
Cá nhân hs làm chụp gửi lên padlet
KHỞI ĐỘNG LỆNH FOR
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
0 + 1
+ 2
1
+ 3
3
6
+ 4
+ 5
10
15
+ 6
+ 7
21
28
+ 8
36
+ 9
45
KHỞI ĐỘNG LỆNH FOR
Chương trình Python
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
Tong=Tong+0
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
0 + 1
Tong=Tong+1
Tong=Tong+2
Tong=0
15
28
36
10
21
45
0613
Tong
Tong=Tong+3
Tong=Tong+4
Tong=Tong+5
Tong=Tong+6
Tong=Tong+7
Tong=Tong+8
Tong=Tong+9
+ 2
1
+ 3
3
6
+ 4
+ 5
10
15
+ 6
+ 7
21
28
+ 8
36
+ 9
45
KHỞI ĐỘNG LỆNH FOR
Chương trình Python
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
(i=0) Tong=Tong+0
(i=1) Tong=Tong+1
Lệnh lặp
Số lần lặp
(i=2) Tong=Tong+2
(i=3) Tong=Tong+3
(i=4) Tong=Tong+4
(i=5) Tong=Tong+5
(i=6) Tong=Tong+6
(i=7) Tong=Tong+7
(i=8) Tong=Tong+8
(i=9) Tong=Tong+9
Tong=0
for i in range(10):
Tong=Tong+i
Lệnh lặp với số lần
lặp biết trước
i=0
Tong=Tong+i
i<10-1
Đúng
Sai
Đây là bài toán tính tổng của 10 số tự nhiên thì có
10 câu lệnh thế này. Còn bài toán tổng của 100
hay 1000 số tự nhiên thì ta giải quyết như thế này
có khó khăn gì không?
i=i+1
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Câu lệnh for dùng để mô tả cấu trúc lặp trong Python, có
cú pháp như sau:
for in range([bắt đầu], , [bước
nhảy]):
Ví dụ 1:
for i in range(1,10):
print(i,end = ' ')
Kết quả: 1 2 3 4 5 6 7 8 9
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Ví dụ 2: Cho trước số nguyên n, cần tính tổng
S = 1+2+3+…+n.
n = 100
s=0
for i in range(1, n+1):
s=s+i
print(s)
Kết quả: 5050
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Ví dụ 3: Chương trình giải quyết bài toán tong_1a
# ví dụ bài toán 1
a = int(input("Nhập giá trị a: "))
s = 1/a
for i in range(1,101):
s = s + 1/(a + i)
print(s)
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Ví dụ 4. Chương trình sau thực hiện việc nhập từ bàn phím
hai số nguyên dương M và N (Mtổng các số chia hết cho 3 hoặc 5 trong phạm vi từ M đến N.
m = int(input("Nhập giá trị m: "))
n = int(input("Nhập nhâp giá trị n: "))
s=0
for i in range(m,n+1):
if (i%3 == 0) or (i%5 == 0) :
s = s + i ; print(s)
á
C
n
n
â
h
hs
m
à
l
p
ụ
ch
gử
n
ê
il
a
p
t
e
dl
KHỞI ĐỘNG while
Lặp với số lần lặp biết trước
Lệnh for
Số lần
lặp
Lặp với số lần lặp không biết trước
Lệnh while
Điều kiện
dừng
20 lần
Vận động viên chạy nhiều vòng quanh
sân vận động trong thời gian 2 tiếng
Em đi lấy 15 xô nước giúp mẹ
15 lần
Em xách các xô nước giúp mẹ cho đến
khi đầy thùng nước
Nước đầy
thùng
Tính tổng 10 số tự nhiên đầu
tiên
10 lần
Tính tổng các số tự nhiên đầu tiên sao
cho tổng này nhỏ nhất và lớn hơn 100
Tổng nhỏ
nhất >100
Vận động viên chạy 20 vòng
quanh sân vận động
<=2h
3.Lặp với số lần chưa biết trước và câu lệnh while
Câu lệnh
while:
Cú pháp:
while <điều kiện>:
- Trong đó:
+ <điều kiện> là biểu thức quan hệ hoặc logic.
+ là một hay nhiều lệnh của python.
3.Lặp với số lần chưa biết trước và câu lệnh while
Câu lệnh
while:
Cú pháp:
while <điều kiện>:
Điều kiện
Sai
Đúng
Khối lệnh
- Hoạt động:
Chương trình kiểm tra <điều kiện> trước, nếu <điều kiện>
đúng thì thực hiện rồi sau đó lại quay lại kiểm tra
<điều kiện>.
3.Lặp với số lần chưa biết trước và câu lệnh while
Câu lệnh
while:
Cú pháp:
while <điều kiện>:
Ví dụ 1: Viết chương trình in toàn bộ dãy các
số tự nhiên từ 1 đến 100 trên một hàng ngang.
Điều kiện
Đúng
Khối lệnh
Sai
Ví dụ 2
Thực hiện các lệnh sau. Kết quả sẽ in ra những số nào?
Bắt đầu vòng lặp, k = 2
Vòng lặp while sẽ dừng lại
khi k vượt quá 50.
Sau mỗi vòng lặp, k tăng lên 3 đơn vị.
Kết quả in ra là dãy sau:
3.Lặp với số lần chưa biết trước và câu lệnh while
while <điều kiện>:
lệnh lặp>
Ví dụ 3: Tính tổng các số tự nhiên đầu
tiên sao cho tổng này nhỏ nhất và lớn
hơn 100
S=0
k=0
while S<100:Điều kiện
S=S+k
Khối
lệnh lặp
k=k+1
print (S)
3.Lặp với số lần chưa biết trước và câu lệnh while
S=0
Tính tổng các số tự nhiên đầu tiên sao
k=0
cho tổng này nhỏ nhất và lớn hơn 100
S=0: S=S+k=0+0=0, k=k+1=0+1=1
S=0: S=S+k=0+1=1, k=k+1=1+1=2
S=1: S=S+k=1+2=3, k=k+1=2+1=3
S=0
S=3: S=S+k=3+3=6, k=k+1=3+1=4
k=0
S=6: S=S+k=6+4=10, k=k+1=4+1=5
while S<100:
S=10: S=S+k=10+5=15, k=k+1=5+1=6
S=S+k
…
k=k+1
…
print (S)
S=90: S=S+k=91+14=105, k=k+1=14+1=15
S=105: dừng vòng lặp
3.Lặp với số lần chưa biết trước và câu lệnh while
Tính tổng các số tự nhiên đầu tiên sao
cho tổng này nhỏ nhất và lớn hơn 100
S<100
Đúng
S=S+k
k=k+1
S=0
k=0
while S<100:
Sai
print (S)
S=S+k
k=k+1
3.Lặp với số lần chưa biết trước và câu lệnh while
S<100
Sai
Đúng
S=S+k
k=k+1
Điều
kiện
Sai
Đúng
Khối lệnh
3.Lặp với số lần chưa biết trước và câu lệnh while
Ví dụ 4: bài toán 2: Tính giá trị tổng S, với a là số
nguyên và a>2 .
a = int(input("Nhập giá trị a: "))
1
1
1
1
S
...
...
s = 1/a
a a 1 a 2
aN
n
=
0
Cho đến khi
while 1/(a+n)>= 0.0001:
1
s =s+ 1/(a+n)
0.0001
aN
n =n+ 1
print("Tổng = ", s)
thì dừng lại.
3.Lặp với số lần chưa biết trước và câu lệnh while
n.
Ví dụ 5: Tìm ước chung lớn nhất (UCLN) của hai số nguyên dương m và
B1: Nhập m,n;
B2 : Chừng nào mn
nếu m>n thì m=m-n,
ngược lại thì n=n-m;
B3: Đến khi m=n thì
=> Đưa ra ƯCLN(m,n)=m;
=> Kết thúc.
m = int(input("Nhập m: "))
n = int(input("Nhập n: "))
while m ! = n :
if m > n :
m = m - n
else :
n = n - m
print ("Ước chung lớn
nhất:", m)
3.Lặp với số lần chưa biết trước và câu lệnh while
Lệnh while với vòng lặp vô hạn
Tính tổng các số tự nhiên đầu tiên sao
cho tổng này nhỏ nhất và lớn hơn 0
S=0
k=0
while S>=0:
if k==5:
break
print (S)
S=0
S=0: ĐK đúng S=S+k=0+0=0, k=1
S=0: ĐK đúng S=S+k=0+1=1, k=2
S=1: ĐK đúng S=S+k=1+2=3, k=3
S=3: ĐK đúng S=S+k=3+3=6, k=4
S=6: ĐK đúng
S=10: ĐK đúng
Điều kiện luôn
đúng nên vòng
S=S+k
lặp không dừng
k=k+1
Vòng lặp vô hạn
Dùng lệnh break để dừng
và thoát ra khỏi vòng lặp
Lệnh while với vòng lặp vô hạn
Chú ý: Nếu <điều kiện> luôn luôn
đúng trong mọi trường hợp thì lệnh lặp
while không thể kết thúc. Khi đó
chương trình “rơi” vào “vòng lặp vô
tận”, đây là lỗi lập trình cần tránh.
Dùng lệnh break để dừng
và thoát ra khỏi vòng lặp
á
C
n
n
â
h
hs
m
à
l
p
ụ
ch
gử
n
ê
il
a
p
t
e
dl
Bài tập vận dung lặp for và while
Viết chương trình tính và in ra tổng các số tự
nhiên từ 1 đến 10. Bằng 2 cách lặp for và while?
a)
b)
CỦNG CỐ
BÀI
C ẤU TRÚC LẶP
(range, for, while)
Chủ đề 3:
CẤU TRÚC RẼ NHÁNH VÀ LẶP
KHỞI
ĐỘNG
Bài 1: Có 1 thùng với
dung tích 100 lít, Hãy
múc nước đổ đầy thùng
đó với dụng cụ chứa 1 lít.
Bài 2 : Có 1 thùng chưa biết
dung tích, Hãy múc nước đổ đầy
thùng đó với dụng cụ chứa 1 lít.
? lít
1
lít
Hãy cho biết quá trình đổ nước cho hai
bài toán trên có điểm giống nhau và
khác nhau thế nào?
1
lít
C
BÀI 10:
ẤU TRÚC LẶP
NỘI DUNG BÀI HỌC
Bài 10:
Cấu Trúc
Lặp
1. Lặp
2. Lặp có số lần biết trước và câu lệnh for
3. Lặp với số lần chưa biết trước và câu lệnh while
1. Lặp
- Cấu trúc lặp là một điều khiển thực hiện lặp đi lặp lại một
công việc nào đó khi chưa đủ số lần lặp hoặc khi một điều kiện
nào đó còn đúng.
- Quá trình lặp vô hạn là quá trình lặp không thể dừng lại.
Trường hợp lặp vô hạn xảy ra khi điều kiện kết thúc chưa được
đặt, không thể xảy ra và / hoặc khiến vòng lặp khởi động lại
trước khi kết thúc.
1. Lặp
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 1:
1
1
1
1
S
...
a a 1 a 2
a 100
- Bài toán 2:
1
1
1
1
S
...
...
a a 1 a 2
aN
1
0.0001
cho đến khi
aN
1. Lặp
Các bài toán đặt vấn đề: Tính tổng S, với a là số nguyên và a>2
CÙNG TÌM THUẬT TOÁN
Lần N
Lần 2
Lần 1
Xuất phát
1
S
a
1
a 1
1
a2
+…
1
aN
Mỗi lần thực hiện giá trị tổng S tăng thêm bao nhiêu?
Sau mỗi lần thực hiện giá trị tổng S tăng thêm
(với i =1; 2; 3 ; ...;N)
1. Lặp
Các bài toán đặt vấn đề: Tính tổng S, với a là số nguyên và a>2
TÌM
SỰ
KHÁC
BIỆT
Bài toán 1:
Bài toán 2:
1
1
1
1
S
...
a a 1 a 2
a 100
1
1
1
1
S
...
...
a a 1 a 2
aN
- Việc tăng giá trị cho tổng
S được lặp đi lặp lại 100
lần.
- Việc tăng giá trị cho
tổng S được lặp đi lặp lại
cho đến khi
1
Số lần lặp biết trước.
aN
0.0001
Số lần lặp chưa biết trước.
1. Lặp
Một số ví dụ: - Viết chương trình giải các bài toán sau:
+ In ra các số nguyên từ 1 đến 10.
+ In ra các số chẵn nhỏ hơn 20.
+ In ra các ước số của N.
- Python cung cấp cho ta 2 loại vòng lặp sau:
+ Vòng lặp for (lặp khi biết trước số lần lặp)
+ Vòng lặp while (lặp theo điều kiện)
2. Lặp có số lần lặp biết trước và câu lệnh for
Bài toán đặt vấn đề lập chương trình tính tổng sau:
1
1
1
1
S 1
...
2
3
4
N
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
- Dữ liệu ra (Output): Tổng S
2. Lặp có số lần lặp biết trước và câu lệnh for
PHÂN TÍCH BÀI TOÁN VỚI N = 100
1 1 1
1
S 1 . . .
2 3 4
100
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4
=
S3
+
1/4
.....
....................
S100 = S99 + 1/100
Nhận xét:
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
2. Lặp có số lần lặp biết trước và câu lệnh for
XÂY DỰNG THUẬT TOÁN
Nhập n
B1: Nhập n
B2: s=1; i=2
B3: Nếu i > n thì đưa ra giá
s= 1 ; i= 2
trị s => Kết thúc
i>n?
Đ
S
s= s + 1/i
i= i+1
Đưa ra s rồi kết thúc
B4 : s= s + 1/i
B5: i = i +1 quay lại B3.
2. Lặp có số lần lặp biết trước và câu lệnh for
2.1. Hàm range()
Để sử dụng câu lệnh for trước tiên chúng ta học cú pháp
hàm range:
Cú pháp:
range([bắt đầu dãy],
2. Lặp có số lần lặp biết trước và câu lệnh for
2.1. Hàm range()
- Trong đó:
+ [bắt đầu dãy]: giá trị bắt đầu (có thể có hoặc không, nếu
không thì mặc định là 0).
+
+ [bước nhảy]: bước nhảy (có thể có hoặc không, nếu
không thì mặc định là 1).
- Hàm range() sẽ tạo ra một danh sách các số nguyên liên
tiếp bắt đầu từ [bắt đầu dãy] tới
tăng đều thêm 1 lượng [bước nhảy].
2. Lặp có số lần lặp biết trước và câu lệnh for
2.1. Hàm range()
- Hàm này có nhiều dạng, có thể tóm tắt trong bảng sau:
Cú pháp
Ý nghĩa
range(0, n)
Dãy giá trị từ 0, 1, ..., n-1
range(1, n, 2)
Dãy giá trị 1, 3, 5, ... đến n-1, tăng dần theo
2 đơn vị.
range(n)
Tương đương range(0, n, 1) – dãy giá trị từ
0, 1, 2, ... , n-1
range(n, 0, -1)
Dãy giá trị n, n-1, ... , 1 (giảm dần)
Ví dụ:
range(0,10) -> dãy giá trị từ: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
range(15) -> dãy giá trị từ:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, từ:
13, 14 1
range(1,10,3) -> dãy giá trị
4, 7 12, 10,
range(12,1,-2) -> dãy giá trị ,từ:
range(0,15) -> dãy giá trị từ: 8, 6,0,4,1,22, 3, 4, 5, 6, 7, 8, 9, 10, 11,
range(12) -> dãy giá trị từ:12, 13,
0, 14
1, 2, 3, 4, 5, 6, 7, 8,
9, 10,
range(8,0,-1) -> dãy giá trị
từ:11 8, 7, 6, 5,
4, 3, 2, 1,
1 3, 5,
range(1,12,2) -> dãy giá trị từ:
Cá nhân hs làm chụp gửi lên padlet
KHỞI ĐỘNG LỆNH FOR
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
0 + 1
+ 2
1
+ 3
3
6
+ 4
+ 5
10
15
+ 6
+ 7
21
28
+ 8
36
+ 9
45
KHỞI ĐỘNG LỆNH FOR
Chương trình Python
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
Tong=Tong+0
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
0 + 1
Tong=Tong+1
Tong=Tong+2
Tong=0
15
28
36
10
21
45
0613
Tong
Tong=Tong+3
Tong=Tong+4
Tong=Tong+5
Tong=Tong+6
Tong=Tong+7
Tong=Tong+8
Tong=Tong+9
+ 2
1
+ 3
3
6
+ 4
+ 5
10
15
+ 6
+ 7
21
28
+ 8
36
+ 9
45
KHỞI ĐỘNG LỆNH FOR
Chương trình Python
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
(i=0) Tong=Tong+0
(i=1) Tong=Tong+1
Lệnh lặp
Số lần lặp
(i=2) Tong=Tong+2
(i=3) Tong=Tong+3
(i=4) Tong=Tong+4
(i=5) Tong=Tong+5
(i=6) Tong=Tong+6
(i=7) Tong=Tong+7
(i=8) Tong=Tong+8
(i=9) Tong=Tong+9
Tong=0
for i in range(10):
Tong=Tong+i
Lệnh lặp với số lần
lặp biết trước
i=0
Tong=Tong+i
i<10-1
Đúng
Sai
Đây là bài toán tính tổng của 10 số tự nhiên thì có
10 câu lệnh thế này. Còn bài toán tổng của 100
hay 1000 số tự nhiên thì ta giải quyết như thế này
có khó khăn gì không?
i=i+1
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Câu lệnh for dùng để mô tả cấu trúc lặp trong Python, có
cú pháp như sau:
for
nhảy]):
Ví dụ 1:
for i in range(1,10):
print(i,end = ' ')
Kết quả: 1 2 3 4 5 6 7 8 9
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Ví dụ 2: Cho trước số nguyên n, cần tính tổng
S = 1+2+3+…+n.
n = 100
s=0
for i in range(1, n+1):
s=s+i
print(s)
Kết quả: 5050
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Ví dụ 3: Chương trình giải quyết bài toán tong_1a
# ví dụ bài toán 1
a = int(input("Nhập giá trị a: "))
s = 1/a
for i in range(1,101):
s = s + 1/(a + i)
print(s)
2. Lặp có số lần lặp biết trước và câu lệnh for
2.2. Câu lệnh for:
Ví dụ 4. Chương trình sau thực hiện việc nhập từ bàn phím
hai số nguyên dương M và N (M
m = int(input("Nhập giá trị m: "))
n = int(input("Nhập nhâp giá trị n: "))
s=0
for i in range(m,n+1):
if (i%3 == 0) or (i%5 == 0) :
s = s + i ; print(s)
á
C
n
n
â
h
hs
m
à
l
p
ụ
ch
gử
n
ê
il
a
p
t
e
dl
KHỞI ĐỘNG while
Lặp với số lần lặp biết trước
Lệnh for
Số lần
lặp
Lặp với số lần lặp không biết trước
Lệnh while
Điều kiện
dừng
20 lần
Vận động viên chạy nhiều vòng quanh
sân vận động trong thời gian 2 tiếng
Em đi lấy 15 xô nước giúp mẹ
15 lần
Em xách các xô nước giúp mẹ cho đến
khi đầy thùng nước
Nước đầy
thùng
Tính tổng 10 số tự nhiên đầu
tiên
10 lần
Tính tổng các số tự nhiên đầu tiên sao
cho tổng này nhỏ nhất và lớn hơn 100
Tổng nhỏ
nhất >100
Vận động viên chạy 20 vòng
quanh sân vận động
<=2h
3.Lặp với số lần chưa biết trước và câu lệnh while
Câu lệnh
while:
Cú pháp:
while <điều kiện>:
- Trong đó:
+ <điều kiện> là biểu thức quan hệ hoặc logic.
+
3.Lặp với số lần chưa biết trước và câu lệnh while
Câu lệnh
while:
Cú pháp:
while <điều kiện>:
Điều kiện
Sai
Đúng
Khối lệnh
- Hoạt động:
Chương trình kiểm tra <điều kiện> trước, nếu <điều kiện>
đúng thì thực hiện
<điều kiện>.
3.Lặp với số lần chưa biết trước và câu lệnh while
Câu lệnh
while:
Cú pháp:
while <điều kiện>:
Ví dụ 1: Viết chương trình in toàn bộ dãy các
số tự nhiên từ 1 đến 100 trên một hàng ngang.
Điều kiện
Đúng
Khối lệnh
Sai
Ví dụ 2
Thực hiện các lệnh sau. Kết quả sẽ in ra những số nào?
Bắt đầu vòng lặp, k = 2
Vòng lặp while sẽ dừng lại
khi k vượt quá 50.
Sau mỗi vòng lặp, k tăng lên 3 đơn vị.
Kết quả in ra là dãy sau:
3.Lặp với số lần chưa biết trước và câu lệnh while
while <điều kiện>:
Ví dụ 3: Tính tổng các số tự nhiên đầu
tiên sao cho tổng này nhỏ nhất và lớn
hơn 100
S=0
k=0
while S<100:Điều kiện
S=S+k
Khối
lệnh lặp
k=k+1
print (S)
3.Lặp với số lần chưa biết trước và câu lệnh while
S=0
Tính tổng các số tự nhiên đầu tiên sao
k=0
cho tổng này nhỏ nhất và lớn hơn 100
S=0: S=S+k=0+0=0, k=k+1=0+1=1
S=0: S=S+k=0+1=1, k=k+1=1+1=2
S=1: S=S+k=1+2=3, k=k+1=2+1=3
S=0
S=3: S=S+k=3+3=6, k=k+1=3+1=4
k=0
S=6: S=S+k=6+4=10, k=k+1=4+1=5
while S<100:
S=10: S=S+k=10+5=15, k=k+1=5+1=6
S=S+k
…
k=k+1
…
print (S)
S=90: S=S+k=91+14=105, k=k+1=14+1=15
S=105: dừng vòng lặp
3.Lặp với số lần chưa biết trước và câu lệnh while
Tính tổng các số tự nhiên đầu tiên sao
cho tổng này nhỏ nhất và lớn hơn 100
S<100
Đúng
S=S+k
k=k+1
S=0
k=0
while S<100:
Sai
print (S)
S=S+k
k=k+1
3.Lặp với số lần chưa biết trước và câu lệnh while
S<100
Sai
Đúng
S=S+k
k=k+1
Điều
kiện
Sai
Đúng
Khối lệnh
3.Lặp với số lần chưa biết trước và câu lệnh while
Ví dụ 4: bài toán 2: Tính giá trị tổng S, với a là số
nguyên và a>2 .
a = int(input("Nhập giá trị a: "))
1
1
1
1
S
...
...
s = 1/a
a a 1 a 2
aN
n
=
0
Cho đến khi
while 1/(a+n)>= 0.0001:
1
s =s+ 1/(a+n)
0.0001
aN
n =n+ 1
print("Tổng = ", s)
thì dừng lại.
3.Lặp với số lần chưa biết trước và câu lệnh while
n.
Ví dụ 5: Tìm ước chung lớn nhất (UCLN) của hai số nguyên dương m và
B1: Nhập m,n;
B2 : Chừng nào mn
nếu m>n thì m=m-n,
ngược lại thì n=n-m;
B3: Đến khi m=n thì
=> Đưa ra ƯCLN(m,n)=m;
=> Kết thúc.
m = int(input("Nhập m: "))
n = int(input("Nhập n: "))
while m ! = n :
if m > n :
m = m - n
else :
n = n - m
print ("Ước chung lớn
nhất:", m)
3.Lặp với số lần chưa biết trước và câu lệnh while
Lệnh while với vòng lặp vô hạn
Tính tổng các số tự nhiên đầu tiên sao
cho tổng này nhỏ nhất và lớn hơn 0
S=0
k=0
while S>=0:
if k==5:
break
print (S)
S=0
S=0: ĐK đúng S=S+k=0+0=0, k=1
S=0: ĐK đúng S=S+k=0+1=1, k=2
S=1: ĐK đúng S=S+k=1+2=3, k=3
S=3: ĐK đúng S=S+k=3+3=6, k=4
S=6: ĐK đúng
S=10: ĐK đúng
Điều kiện luôn
đúng nên vòng
S=S+k
lặp không dừng
k=k+1
Vòng lặp vô hạn
Dùng lệnh break để dừng
và thoát ra khỏi vòng lặp
Lệnh while với vòng lặp vô hạn
Chú ý: Nếu <điều kiện> luôn luôn
đúng trong mọi trường hợp thì lệnh lặp
while không thể kết thúc. Khi đó
chương trình “rơi” vào “vòng lặp vô
tận”, đây là lỗi lập trình cần tránh.
Dùng lệnh break để dừng
và thoát ra khỏi vòng lặp
á
C
n
n
â
h
hs
m
à
l
p
ụ
ch
gử
n
ê
il
a
p
t
e
dl
Bài tập vận dung lặp for và while
Viết chương trình tính và in ra tổng các số tự
nhiên từ 1 đến 10. Bằng 2 cách lặp for và while?
a)
b)
CỦNG CỐ
BÀI
 








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