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

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.

 

pptx 42 trang Trí Tài 03/07/2023 900
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:

  • pptxbai_giang_tin_hoc_11_bai_10_cau_truc_lap_nam_hoc_2022_2023_t.pptx