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