Bài giảng Tin học 11 - Bài 10: Cấu trúc lặp - Năm học 2022-2023 - Trường THPT Nguyễn Thái Học
- 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.
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Tin học 11 - Bài 10: Cấu trúc lặp - Năm học 2022-2023 - Trường THPT Nguyễn Thái Học", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
BÀI 10:
C ẤU TRÚC LẶP
(range, for, while)
Chủ đề 3 : CẤU TRÚC RẼ NHÁNH VÀ LẶP
? lít
1 lít
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.
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
KHỞI ĐỘNG
BÀI 10:
C ẤU TRÚC LẶP
NỘI DUNG BÀI HỌC
1. Lặp
2. Lặp có số lần biết trước và câu lệnh for
Bài 10: Cấu Trúc Lặp
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 .
- Bài toán 1:
- Bài toán 2:
Các bài toán đặt vấn đề: Tính tổng S, với a là số nguyên và a>2
cho đến khi
1 . Lặp
Xuất phát
Lần 1
Lần 2
+
Lần 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 )
CÙNG TÌM THUẬT TOÁ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:
Số lần lặp biết tr ư ớc.
- Việc tăng giá trị cho tổng S đ ư ợc lặp đi lặp lại cho đến khi
- Việc tăng giá trị cho tổng S đ ư ợc lặp đi lặp lại 100 lần .
Số lần lặp ch ư a biết tr ư ớ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
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)
B ài toán đặt vấn đề lập ch ươ ng trình tính tổng sau:
Dữ liệu vào (Input ): Nhập N
Dữ liệu ra (Output ): Tổng S
Hãy xác định INPUT và OUTPUT của bài toán trên!
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
Nhận xét:
S1 = 1
S2 = S1 + 1/2
S3 = S2 + 1/3
S4 = S3 + 1/4
.....
S100 = S99 + 1/100
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
S sau = S tr ư ớ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
Đ
S
Nhập n
s = 1 ; i= 2
i > n ?
s = s + 1/i
Đ ư a ra s rồi kết thúc
B1: Nhập n
B2: s = 1 ; i=2
B3: Nếu i > n thì đ ư a ra giá trị s => Kết thúc
B4 : s= s + 1/i
B5: i = i +1 quay lại B3.
XÂY DỰNG THUẬT TOÁN
i= i+1
2. Lặp có số lần lặp biết trước và câu lệnh for
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ừ:
range(15) -> dãy giá trị từ:
range(1,10,3) -> dãy giá trị từ:
range(12,1,-2) -> dãy giá trị từ:
range(0,15) -> dãy giá trị từ:
range(12) -> dãy giá trị từ:
range(8,0,-1) -> dãy giá trị từ:
range(1,12,2) -> dãy giá trị từ:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
12, 10, 8, 6, 4, 2
1 , 4, 7
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
8, 7, 6, 5, 4, 3, 2, 1
1, 3, 5, 7, 9, 11
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
1
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
3
6
10
15
21
28
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
36
+ 9
45
0
+ 1
KHỞI ĐỘNG LỆNH FOR
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
1
0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
3
6
10
15
21
28
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
36
+ 9
45
0
+ 1
Tong=Tong+0
Tong=Tong+1
Tong=Tong+2
Tong=Tong+3
Tong=Tong+4
Tong=Tong+5
Tong=Tong+6
Tong=Tong+7
Tong=Tong+8
Tong=Tong+9
Tong
0
1
3
6
10
15
21
28
36
45
Chương trình Python
Tong=0
KHỞI ĐỘNG LỆNH FOR
Bài toán: Tính tổng 10 số tự nhiên đầu tiên
Tong=Tong+0
Tong=Tong+1
Tong=Tong+2
Tong=Tong+3
Tong=Tong+4
Tong=Tong+5
Tong=Tong+6
Tong=Tong+7
Tong=Tong+8
Tong=Tong+9
Chương trình Python
Tong=0
for i in range(10):
Tong=Tong+i
i<10-1
i=i+1
Đúng
Sai
Tong=Tong+i
i=0
(i=0)
(i=1)
(i=2)
(i=3)
(i=4)
(i=5)
(i=6)
(i=7)
(i=8)
(i=9)
Số lần lặp
Lệnh lặp
Lệnh lặp với số lần lặp biết trước
Đâ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?
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 (M<N), tính và đưa ra màn hình tổ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á nhân hs làm chụp gửi lên padlet
Vận động viên chạy 20 vòng quanh sân vận động
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ẹ
Em xách các xô nước giúp mẹ cho đến khi đầy thùng nước
Tính tổng 10 số tự nhiên đầu tiê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
Lặp với số lần lặp biết trước
Lặp với số lần lặp không biết trước
20 lần
<=2h
15 lần
Nước đầy thùng
10 lần
Tổng nhỏ nhất >100
Lệnh for
Lệnh while
Số lần lặp
Điều kiện dừng
KHỞI ĐỘNG while
3.Lặp với số lần chưa biết trước và câu lệnh w hile
Câu lệnh w hile:
Cú pháp :
while :
- Trong đó:
+ 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 w hile
Câu lệnh w hile:
Cú pháp :
while :
Sai
Đúng
Điều kiện
Khối lệnh
- Hoạt động:
Chương trình kiểm tra trước, nếu đúng thì thực hiện rồi sau đó lại quay lại kiểm tra .
3.Lặp với số lần chưa biết trước và câu lệnh w hile
Câu lệnh while:
Cú pháp :
while :
Sai
Đúng
Điều kiện
Khối lệnh
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.
Thực hiện các lệnh sau. Kết quả sẽ in ra những số nào?
Ví dụ 2
Kết quả in ra là dãy sau:
Vòng lặp while sẽ dừng lại khi k vượt quá 50.
Bắt đầu vòng lặp, k = 2
Sau mỗi vòng lặp, k tăng lên 3 đơn vị.
while :
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:
S=S+k
k=k+1
print (S)
Điều kiện
Khối lệnh lặp
3.Lặp với số lần chưa biết trước và câu lệnh w hile
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:
S=S+k
k=k+1
print (S)
S=0
k=0
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=3: S=S+k=3+3=6, k=k+1=3+1=4
S=6: S=S+k=6+4=10, k=k+1=4+1=5
S=10: S=S+k=10+5=15, k=k+1=5+1=6
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 w hile
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:
S=S+k
k=k+1
print (S)
S<100
S=S+k
k=k+1
Đúng
Sai
3.Lặp với số lần chưa biết trước và câu lệnh w hile
S<100
S=S+k
k=k+1
Đúng
Sai
Điều kiện
Khối lệnh
Đúng
Sai
3.Lặp với số lần chưa biết trước và câu lệnh w hile
3.Lặp với số lần chưa biết trước và câu lệnh w hile
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 .
Cho đến khi
thì dừng lại.
a = int(input(" Nhập giá trị a: "))
s = 1/a
n = 0
while 1/(a+n)>= 0.0001:
s =s+ 1/(a+n)
n =n+ 1
print("Tổng = ", s)
3.Lặp với số lần chưa biết trước và câu lệnh w hile
Ví dụ 5 : Tìm ước chung lớn nhất (UCLN) của hai số nguyên dương m và n.
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)
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:
S=S+k
k=k+1
print (S)
Điều kiện luôn đúng nên vòng lặp không dừng
Vòng lặp vô hạn
if k==5:
break
Dùng lệnh break để dừng và thoát ra khỏi vòng lặp
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
3.Lặp với số lần chưa biết trước và câu lệnh w hile
Chú ý: Nếu 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.
Lệnh while với vòng lặp vô hạn
Dùng lệnh break để dừng và thoát ra khỏi vòng lặp
Cá nhân hs làm chụp gửi lên padlet
Bài tập vận dung lặp for và while
a)
b)
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?
CỦNG CỐ BÀI
Tài liệu đính kèm:
bai_giang_tin_hoc_11_bai_10_cau_truc_lap_nam_hoc_2022_2023_t.pptx



