BÀI 7: CÂU LỆNH LẶP Show 1. Các công việc phải thực hiền nhiều lần- Công việc không biết trước số lần lặp lại: học bài cho đến khi thuộc hết các bài, - Công việc đã biết trước số lần lặp: đi học mỗi sáng 5 tiết, mỗi ngày tập 7 bài thể dục buổi sáng, đánh răng mỗi ngày 3 lần, => Để chỉ cho máy tính thực hiện đúng công việc, trong nhiều trường hợp khi viết một chương trình máy tính chúng ta cũng phải viết lặp lại nhiều câu lệnh thực hiện một phép tính nhất định. - Ví dụ 1: Để tính 5 số tự nhiên đầu tiên ta có thể viết như sau: begin i=0; Tong:=0; i:=i+1; Tong:=Tong+i; i:=i+1; Tong:=Tong+i; i:=i+1; Tong:=Tong+i; i:=i+1; Tong:=Tong+i; i:=i+1; Tong:=Tong+i; Readln; end. 2. Câu lệnh lặp - một lệnh thay cho nhiều lệnh- Ví dụ 2: Tính tổng của 100 số tự nhiên đầu tiên. - Thuật toán:
=> Kết luận: Cách mô tả các hoạt động lặp trong thuật toán như trong ví dụ trên được gọi là cấu trúc lặp. - Mọi ngôn ngữ lập trình đều có “cách” để chỉ thị cho máy tính thực hiện cấu trúc lặp với một câu lệnh. Đó là câu lệnh lặp. 3. Ví dụ về câu lệnh lặp- Trong pascal câu lệnh lặp có dạng:
=> for … do là cấu trúc lặp với số lần lặp biết trước. - Ví dụ 3: in ra màn hình thứ tự lần lặp Program lap; Var i: integer; Begin For i:=1 to 10 do Writeln(‘day la lan lap thu’, i); Readln; End. - Ví dụ 4: Viết chương trình đưa ra màn hình những chữ “0” theo hình trứng rơi. Program trung_roi; Uses crt; Var i: integer; Begin Clrscr; For i:=1 to 10 do begin Writeln(‘0’); delay(100); end; Readln; End. - Tập hợp các câu lệnh con được đặt trong cặp từ khoá begin end; được gọi là câu lệnh ghép. 4. Tính tổng và tích bằng câu lệnh lặp- Ví dụ 5. Tính tổng của N số tự nhiên đầu tiên. Program tinh_tong; Uses crt; Var i, n , tong: integer; Begin Clrscr; Writeln(‘nhap vao n’); readln(n); tong:= 0; For i:= 1 to n do tong:= tong + i; Writeln(‘ket qua la’,tong); readln; End. - Ví dụ 6. Tính giai thừa của N số tự nhiên đầu tiên. Program tinh_giai_thua; Uses crt; Var i, n : integer; kq: longint; Begin Clrscr; Writeln(‘nhap vao n’); readln(n); Kq:=1; For i:= 1 to n do Kq:=kq*i; Writeln(‘ket qua la’,kq); readln; End. 5. Bài tậpBài tập 1: Nhập vào n số nguyên từ bàn phím, tìm số lớn nhất trong dãy số vừa nhậpProgram tim_max; Uses crt; Var i, n, smax, A : integer; Begin Clrscr; Writeln(‘nhap vao n’); readln(n); Smax:=-32768; For i:= 1 to n do Begin Writeln(‘nhap vao so thu ’,i); readln(A); If Smax < A then Smax:= A; End; Writeln('So lon nhat la', A); Readln; End.
CHUYÊN ĐỀ: CẤU TRÚC LẶP TIN HỌC 11
Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (128.23 KB, 8 trang ) CHUYÊN ĐỀ: CẤU TRÚC LẶP TIN HỌC 11 3. Luyện tập Nội dung Xem hình ảnh nội dung 1 số bài toán trên máy chiếu. - Bài toán đặt vấn đề - Cấu trúc câu lệnh lặp pascal - Tìm cách giải một số bài toán trong thực tế và liên môn. 4. Mở rộng - cấu trúc lặp repeat…until… Sử dụng cấu trúc lặp trong pascal giải quyết một số bài tập liên môn IV. Hướng dẫn cụ thể tiến trình lên lớp 1. Hoạt động khởi động (1) Mục tiêu: Tạo động cơ để học sinh có nhu cầu quan tâm đến các bài toán có sử dụng cấu trúc lặp trong pascal. (2) Phương pháp/ kĩ thuật dạy học: cá nhân, thảo luận nhóm. (3) Phương tiện dạy học: Sgk, projector, máy tính. (4) Sản phẩm: Hs có nhu cầu tìm hiểu về cấu trúc lặp trong pascal. Nội dung hoạt động Giáo viên đặt câu hỏi Câu trả lời mong đợi từ học sinh Giáo viên chiếu nội dung của một số Câu trả lời mong đợi từ học sinh câu hỏi lên bảng yêu cầu hs trả lời Writeln ( 1); * Câu 1: Viết câu lệnh in ra màn hình Writeln ( 2); 10 số nguyên dương đầu tiên, viết Writeln ( 3); mỗi số trên 1 dòng? Writeln (4); Writeln( 5); write(ln (6); Writeln (7); Writeln (8); Writeln (9); Writeln ( 10); * Câu 2: Viết câu lệnh in ra màn hình Viết 100 lần thủ tục writeln- rất dài 100 số nguyên dương đầu tiên, mỗi số viết trên 1 dòng? * Câu 3: Tính giai thừa của số nguyên N!= 1*2*3*…*n dương n bất kì (n<=100)? Sử dụng biến t lưu giá trị n! T:=1; T:=t*2; T:=t*3; …. T:=t*n; GV dẫn dắt vào bài: Trong thực tế chúng ta gặp nhiều bài toán mà lời giải cần thực hiện lặp đi lặp lại 1 thao tác nào đó ví dụ như 3 bài toán trên. Để giải quyết bài toán thực hiện lặp đi lặp lại nhiều lần một thao tác nào đó trong lập trình pascal chúng ta cần sử dụng cấu trúc lặp. Vậy cấu trúc lặp là gì chúng ta cùng vào Bài 10: CẤU TRÚC LẶP 2. Hình thành kiến thức. (1) Hs hiểu được các dạng bài toán tin có sử dụng cấu trúc lặp. Hiểu được cấu trúc lặp trong pascal. (2) Phương pháp/ kĩ thuật: đàm thoại, phát hiện mối liên hệ các bài toán với cấu trúc lặp trong pascal. (3) Hình thức tổ chức hoạt động: làm việc cá nhân, thảo luận nhóm. (4) Phương tiện dạy học: sgk, máy chiếu, máy tính. (5) Kết quả hs biết khái niệm về bài toán lặp, về cấu trúc lặp trong pascal, vận dụng được câu lệnh pascal giải một số bài toán tin, toán học. Nội dung hoạt động Hoạt động của giáo viên Hoạt động của học sinh Gv chia lớp thành 4 nhóm, yêu cầu học sinh làm việc Hs làm việc cá với sgk, trao đổi với bạn trong nhóm về nhân, trao đổi kết quả với các bạn 1. Lặp trong lớp. 2. Cấu trúc lặp với số lần biết trước for …do… 3. Cấu trúc lặp với số lần chưa biết trước while ….do…. Nhóm 1 tìm hiểu về Gv. Tổ chức cho các nhóm báo cáo, nhận xét, đánh giá thế nào là lặp. phần trình bày của mỗi nhóm. Nhóm 2 tìm hiểu về Gv. Tổng kết lại kiến thức (ghi cụ thể nội dung trên cấu trúc lặp với số slide) lần lặp biết trước 1. Lặp. trong pascal. 2. Cấu trúc lặp với số lần biết trước: for…do.. Nhóm 3 tìm hiều 3. Cấu trúc lặp với số lần chưa biết trước while…do… cấu trúc lặp với số Giáo viên tổng kết lại kiến thức (ghi cụ thể trên slide) lần chưa biết trước 1. Lặp: pascal. Bài toán 1: Tính tổng S1= 1+1/2 + … + 1/100 Ý tưởng Khởi tạo S1:=0; Lần 1: S1:=S1+1 Lần 2: S1:=S1+1/2 Lần 3: S1:=S1+1/3 … Lần 100: S1:=S1+1/100 Công thức tổng quát: s1:=0, s1:=s1+1/i (1≤i≤100) Với cách giải bài toán 1 việc cộng thêm vào S1 một phân số 1/i (1≤i≤100) lặp đi lặp lại 100 lần. Điều kiện dừng bài toán 1: i=100 Bài toán 1 gọi là dạng bài toán lặp với số lần lặp đã Học sinh lắng nghe, biết trước. Bài toán 2: Tính tổng sau với a nguyên dương với ghi chép, cập nhật vào sản phẩm học 1000000>a>2. 1 1 1 1 tập của mình s2 .... ..... a a 1 a 2 aN Cho đến khi 1/(a+N) < 0,0001 => Cách giải: - Xuất phát: S : = 1/a; - Tiếp theo: Lần 1:N=1, S : = S + 1/(a+1); Lần 2: N=2, S:=S+1/(a+2); ... Lần k: N=k, S:=S+1/(a+k); ... Cho đến lần thứ N mà 1/(a+N)< 0,0001 Với N = 1, 2, 3, 4,... Điều kiện dừng bài toán 2 là khi: 1/(a+N) < 0,0001 thì việc cộng vào S sẽ dừng lại. -> Vậy ở bài toán 2 chúng ta không biết trước được cụ thể đến lần thứ bao nhiêu thì quá trình cộng vào S phân số 1/(a+N) với N=1,2,3,... sẽ dừng lại. => Bài toán 2 gọi là dạng bài toán lặp với số lần lặp chưa biết trước. Vậy lặp: Việc thực hiện đi thực hiện lại một công việc nhiều lần. Trong lập trình, để thực hiện những thao tác được thực hiện lặp đi lặp lại nhiều lần ta sử dụng cấu trúc lặp. NNLT nào cũng cung cấp một số câu lệnh để mô tả các cấu trúc lặp như trên. Lặp thường có 2 loại: - Lặp với số lần biết trước; - Lặp với số lần không biết trước. 2. Lặp với số lần biết trước và câu lệnh FOR - DO Trong Pascal có 2 loại câu lệnh lặp có số lần biết trước: lặp dạng tiến và lặp dạng lùi. Lặp dạng tiến: FOR <bien_dem>:= <gia_tri_dau> TO <gia_tri_cuoi> DO <cau_lenh> Lặp dạng lùi: FOR <bien_dem>:= <gia_tri_cuoi> DOWNTO <gia_tri_dau> DO <cau_lenh> Trong đó: - bien_dem: đếm số lần lặp, thường là biến kiểu số nguyên. - gia_tri_dau, gia_tri_cuoi: là các biểu thức cùng kiểu với biến đếm. gia_tri_dau phải nhỏ hơn hay bằng gia_tri_cuoi. - Ở dạng lặp tiến: bien_dem tự tăng dần từ gia_tri_dau đến gia_tri_cuoi. - Ở dạng lặp lùi: bien_dem tự giảm dần từ gia_tri_cuoi đến gia_tri_dau. - Tương ứng với mỗi giá trị của bien_dem, câu lệnh sau DO thực hiện 1 lần. Ví dụ bt1: Áp dụng cấu trúc lặp tính tổng cho bài toán 1. Dạng lặp tiến là: S1:=0; For i:=1 to 100 do s1:=s1+1/ i; Trong đó: i là biến đếm Câu lệnh được lặp là S:=S+1/i; Mô phỏng quá trình lặp: I 1 2 … 100 s 0+1/1 0+1+1/2 … 0+1+1/2+…+1/100 Học sinh lắng nghe, ghi chép, cập nhật vào sản phẩm học tập của mình Dạng lặp lùi là: S1:=0; For i:=100 downto 1 do s1:=s1+1/ i; Trong đó: i là biến đếm Câu lệnh được lặp là S:=S+1/i; Mô phỏng quá trình lặp I 100 99 … 1 s 0+1/10 0+1/100+1/99 … 0+1/100+1/99+…+1 0 => Vậy với các bài toán áp dụng được cấu trúc lặp for..to..do .. hoặc for…downto..do.. thì chúng ta cần phải xác định được số lần lặp là bao nhiêu, và câu lệnh cần lặp là câu lệnh nào. 3. Lặp với số lần chưa biết trước và câu lệnh WHILE - DO Cú pháp: WHILE <dieu_kien> DO <cau_lenh> Trong đó: - dieu_kien: là biểu thức quan hệ hoặc logic; - cau_lẹnh: là một câu lệnh trong NNLT Pascal. Ý nghĩa: Khi dieu_kien còn đúng thì còn thực hiện cau_lenh sau DO, sau đó quay lại kiểm tra dieu_kien. Ví dụ: Áp dụng câu lệnh lặp tính tổng s cho bài toán 2. S2:=1/a; n:=1; while 1/(a+n) >= 0,0001 do begin s2:=s2+1/(a+i); n:=n+1; end; Trong đó: điều kiện lặp là: 1/(a+N) >= 0,0001 còn đúng. Câu lệnh được lặp là: begin s2:=s2+1/(a+i); n:=n+1; end; => Vậy với các dạng bài toán áp dụng cấu trúc lặp while..do.. thì cần phải xác định được điều kiện đừng của quá trình lặp, và câu lệnh được lặp lại là câu lệnh nào. Học sinh lắng nghe, ghi chép, cập nhật vào sản phẩm học tập của mình 3. Luyện tập – vận dụng (1) Hs phân biệt được dạng bài sử dụng cấu trúc lặp biết trước số lần lặp và không biết trước số lần lặp. (2) phương pháp/ kĩ thuật dạy học: cá nhân, thảo luận nhóm. (3) phương tiện dạy học: máy chiếu, máy tính, nam châm, giấy a0, (4) sản phẩm của học sinh: nêu được ý tưởng giải, viết được cấu trúc lặp giải 1 số bài toán tin đơn giản. Nội dung hoạt động Hoạt động của giáo viên Hoạt động của hóc sinh Gv yêu cầu hs viết chương trình hoàn Hs làm việc nhóm (4 nhóm) dán các chỉnh cho bài toán 1 và bài toán 2 ở sản phẩm lên bảng theo danh mục trên phân loại trên khổi giấy a0 Hs làm việc nhóm Gv quan sát giúp đỡ học sinh khi cần Hs theo dõi và cùng chia sẻ kiên thức, phản biện,.. Các nhóm dùng nam châm ghi sản Gv tổ chức cho học sinh báo cáo sản phẩm lên bảng cử đại diện báo cáo, phẩm, đánh giá, hỗ trợ học sinh. các nhóm còn lại trao đổi. 4. Hoạt động tìm tòi mở rộng (1) Giúp học sinh cú nhu cầu mở rộng thêm kiến thức (2) Phương pháp/ kĩ thuật: làm việc cá nhân, nhóm (3) Phương tiện dạy học: sgk, máy tính, máy chiếu (4) Sản phẩm: học sinh báo cáo kết quả về quá trình tìm hiểu của mình Hoạt động của giáo viên Hoạt động của học sinh Gv: chiếu thêm nội dung bài tập yêu Hs trao đổi nhóm, trình bày sự so cầu các nhóm áp dụng 2 cấu trúc lặp sánh trên khổ giấy a0 Tính tổng sau: T=1+1/3+1/5+…+1/n với n là là số nguyên dương lẻ.Gv tổ chức cho hs báo cáo Đại diện mỗi nhóm lên bảng báo cáo, dán khổ a0 lê bảng. Gv đánh giá và hỗ trợ học sinh. Gv: Tổng hợp lại kiến thức của bài học, hướng dẫn hs về nhà học. |