Violet
Baigiang

Tìm kiếm theo tiêu đề

Tin tức cộng đồng

5 điều đơn giản cha mẹ nên làm mỗi ngày để con hạnh phúc hơn

Tìm kiếm hạnh phúc là một nhu cầu lớn và xuất hiện xuyên suốt cuộc đời mỗi con người. Tác giả người Mỹ Stephanie Harrison đã dành ra hơn 10 năm để nghiên cứu về cảm nhận hạnh phúc, bà đã hệ thống các kiến thức ấy trong cuốn New Happy. Bà Harrison khẳng định có những thói quen đơn...
Xem tiếp

Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 0919 124 899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

Tìm kiếm Bài giảng

Bài 10. Cấu trúc lặp

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Tham khảo cùng nội dung: Bài giảng, Giáo án, E-learning, Bài mẫu, Sách giáo khoa, ...
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(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
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
aN
1
 0.0001
cho đến khi
a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
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

a2

+…

1

aN

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
aN

- 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.

aN

 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
aN
 n
=
0
Cho đến khi
 while 1/(a+n)>= 0.0001:
1
 
s =s+ 1/(a+n)
 0.0001
aN
 
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 mn
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
468x90
 
Gửi ý kiến