GIAO AN CAU TRUC LAP PP GOI DONG CO

7 457 0
GIAO AN  CAU TRUC LAP PP GOI DONG CO

Đang tải... (xem toàn văn)

Thông tin tài liệu

Gợi động cơ: Trong một số thuật toán có những thao tác phải lặp đi lặp lại nhiều lần. Nếu ta phải viết đi viết lại các thao tác đó thì rõ ràng không thuân tiện rất mất thời gian và lại dễ dẫn tới nhàm chán. Ví dụ: Chương trình tính điểm cho một lớp học sinh thì ta phải lặp lại nhiều lần một số thao tác: Nhập họ tên học sinh, nhập điểm các môn, tính tổng điểm cho từng môn hoặc trung bình chung. Nếu lớp có 40 hs thì ta phải viết lại 40 lần, nếu lớp có 50 hs thì ta phải viết lại 50 lần, như vậy một trường có hàng ngàn học sinh thì ta phải viết lại các tháo tác đó đến hàng nghìn lần. Làm như vậy chương trình của chúng ta sẽ rất công kênh và rất mất thời gian. Vì thế ngôn ngữ lập trình đã đưa ra cấu trúc lặp, chỉ cần viết các câu lệnh thực hiện các thao tác trên một lần, sau đó sử dụng câu lệnh lặp cho chương trình tự thực hiện lặp lại các thao tác đó. Bài hôm nay chúng ta tìm hiểu vể cấu trúc lặp..

Tiết PPCT: 13,14 CHƯƠNG III: CẤU TRÚC RẼ NHÁNH VÀ LẶP BÀI 10: CẤU TRÚC LẶP I - MỤC TIÊU: Kiến thức: Hiểu nhu cầu cấu trúc lặp biểu diễn thuật toán; Hiểu cấu trúc lặp với số lần biết trước, cấu trúc lặp kiểm tra điều kiện trước; Mô tả thuật toán số toán đơn giản có sử dụng lệnh lặp Kĩ năng: Vận dụng đắn loại cấu trúc lặp vào tình cụ thể; Viết lệnh lặp với số lần biết trước, lệnh lặp kiểm tra điều kiện trước Thái độ: - Giúp học sinh nâng cao kiến thức sử dụng ngôn ngữ lập trình, từ thêm yêu thích môn học II PHƯƠNG PHÁP DẠY HỌC ĐƯỢC SỬ DỤNG: Sử dụng phương pháp Gợi động hoạt động để giảng dạy III PHƯƠNG TIỆN DẠY HỌC: Chuẩn bị giáo viên: Máy tính, máy chiếu (nếu có); Bài giảng thiết kế Slide có máy tính máy chiếu; Sách giáo khoa sách giáo viên Tin học 11; Chuẩn bị học sinh: Vở ghi lý thuyết; Sách giáo khoa tin học 11 Tài liệu tham khảo: - Bài tập tin học 11 – Nhà xuất giáo dục – Hồ Sĩ Đàm, Nguyễn Thanh Tùng IV HOẠT ĐỘNG DẠY - HỌC: Ổn định lớp: yêu cầu lớp trưởng báo sĩ số, ổn định lớp Kiểm tra cũ:: Giáo viên cho câu hỏi, gọi học sinh trả lời: Câu hỏi 1: Em nêu cú pháp câu lệnh IF ngôn ngữ lập trình Pascal? HS trả lời: Ngôn ngữ lập trình Pascal sử dụng câu lệnh IF – THEN để mô tả rẽ nhánh tương ứng với hai loại mệnh đề rẽ nhánh cú pháp sau: + Dạng thiếu: IF THEN ; + Dạng đầy đủ: IF THEN ELSE ; Trong đó: + Điều_kiện: biểu thức quan hệ logic; + Câu_lệnh, câu_lệnh_1, câu_lệnh_2 câu lệnh Pascal + Trước Else không chứa chứa dấu chấm phẩy (;) Câu hỏi 2: Hãy nêu cách viết câu lệnh ghép? HS trả lời: Trong ngôn ngữ lập trình Pascal, câu lệnh ghép có dạng: Begin End; + Sau End phải dấu chấm phẩy (;) Giảng mới: * Gợi động cơ: Trong số thuật toán có thao tác phải lặp lặp lại nhiều lần Nếu ta phải viết viết lại thao tác rõ ràng không thuân tiện thời gian lại dễ dẫn tới nhàm chán Ví dụ: Chương trình tính điểm cho lớp học sinh ta phải lặp lại nhiều lần số thao tác: Nhập họ tên học sinh, nhập điểm môn, tính tổng điểm cho môn trung bình chung Nếu lớp có 40 hs ta phải viết lại 40 lần, lớp có 50 hs ta phải viết lại 50 lần, trường có hàng ngàn học sinh ta phải viết lại tháo tác đến hàng nghìn lần Làm chương trình công kênh thời gian Vì ngôn ngữ lập trình đưa cấu trúc lặp, cần viết câu lệnh thực thao tác lần, sau sử dụng câu lệnh lặp cho chương trình tự thực lặp lại thao tác Bài hôm tìm hiểu vể cấu trúc lặp Nội dung Hoạt động Giáo viên Hoạt động Học sinh Hoạt động 1: Lặp Xét toán GV: Đưa toán, yêu cầu học HS: Đưa cách giải sau với a > số nguyên cho trước Bài toán 1: Tính tổng S1= 1/a + 1/(a+1) + 1/(a+2) + … + 1/ (a+100) sinh tìm cách lập trình để giải toán + Gợi ý phương pháp: Ta xem S thùng, số hạng ca có dung tích khác nhau, việc tính tổng tương tự việc đổ ca nước vào thùng S - Có lần đổ nước vào thùng? - Mỗi lần đổ lượng bao nhiêu? Lần thứ i bao nhiêu? - Phải viết lệnh? GV: Đưa cách giải cho toán Bài toán 2: Tính tổng S2 = 1/a + 1/(a+1) + 1/(a+2) + … + 1/(a+N) + … Với điều kiện 1/(a+N) < 0,0001 GV: Tương tự toán 1, em cho ý tưởng để giải toán 2? Cách giải toán 2: S1:=0; If(1/a > 0,0001) then s1:=s1+1/a; If(1/(a+1) > 0,0001) then s1:=s1+1/ (a+1); If(1/(a+2) > 0,0001) then s1:=s1+1/ (a+2); If(1/(a+3) > 0,0001) then s1:=s1+1/ (a + 3) … GV: Hãy nhận xét cách giải trên? Cách giải BT 1: S1:=0; S1:=S1+1/a; S1:=S1+1/(a+1); S1:=S1+1/(a+2); S1:=S1+1/(a+3); … S1:=S1+1/(a+100) Với cách giải toán việc cộng thêm dừng N = 100  số lần lặp biết trước Trong lập trình, có thao tác phải lặp lại nhiều lần, ta gọi cấu trúc lặp NNLT cung cấp số câu lệnh để mô tả cấu trúc lặp Lặp thường có GV chốt: Với cách giải toán loại: việc cộng thêm dừng 1/(a+N) < - Lặp với số lần 0.0001  số lần lặp chưa biết mình, học sinh đưa cách giải khác - Phải thực 100 lần đổ nước vào thùng - Mỗi lần đổ a+i - Phải viết 100 lệnh - Để giải toán trên, ta gán giá trị S = sau a cộng vào S giá trị với a+N N = 1, 2, … < 0,0001 a+N dừng Giống: hai toán lặp lại nhiều lần bước cộng giá trị vào tổng S a+N Khác: toán 1: ta cộng vào S giá trị a+N với N= 1… 100 lần dừng Bài toán ta cộng vào S giá trị N=1, 2, 3, biết trước; - Lặp với số lần trước trước lúc Nhưng giải toán theo < 0,0001 trường hợp dài, gây a + N dừng khó khăn việc lập trình HS: Chăm nghe GV: Em có đề xuất phương án giảng để giải dạng toán không? Sau đây, tìm hiểu câu lệnh lặp NNLT Pascal Hoạt động 2: Lặp với số lần biết trước câu lệnh FOR –DO Trong Pascal có GV: Đưa ví dụ: so sánh thuật HS: Quan sát thuật toán loại câu lệnh lặp toán sau: có số lần biết Thuật toán Thuật toán trước: lặp dạng tong_1a tong_1b B1.S:=1/a; tiến lặp dạng B1.S:=1/a; N:=0; N:=101; lùi B2 N:=N+1 B2 N:=N-1; Lặp dạng tiến: B3 Nếu N>100 B3 Nếu N < FOR sang B5 sang B5 := S:=S+1/ B4 S:=S+1/ TO B4 (a+N) quay (a+N) quay lại B2 lại B2 DO B5 Đưa S B5 Đưa S Lặp dạng lùi: kết thúc kết thúc FOR GV: Gọi vài học sinh nhận xét HS: Đưa nhận xét := thuật toán số vấn mình, tham gia xây dựng đề: DOWNTO - Có Thuật toán có lặp không? - Cùng lặp lại 100 lần - Lặp lần? -Giống: hai thuật DO Hai thuật toán giống khác toán tính tổng Trong đó: theo công - bien_dem thường nào? thức lặp lại 100 biến kiểu số - Cái thay đổi thuật toán lần này? nguyên -Khác: gia_tri_dau, - Ta nói cách khác lặp thuật +tong_1a: N=0 tham gia gia_tri_cuoi: toán tong_1a dạng tiến, vòng lặp n tăng lên biểu thức thuật toán tong_1b dạng lùi kiểu với biến đếm Như dạng lặp với số lần biết N=100 kết thúc gia_tri_dau phải trước dùng để thực câu vòng lặp nhỏ hay 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 giá trị bien_dem, câu lệnh sau DO thực lần lệnh số lần xác định Dạng +tong_1b: dùng biến điều khiền để điều khiển N=101 tham gia vòng lặp N giảm vòng lặp Trong NNLT Pascal lần thực câu lệnh biến điều N N M:=M - N ngược lại N:=N – M; Bước 4: Quay lại bước 2; Bước 5: Đưa kết UCLN kết thúc Chương trình: Program USCLN; Uses crt; Var m, n: byte; Begin Clrscr; Write(‘Nhap so m: ‘); Readln(m); Write(‘Nhap so n: ‘); Readln(n); While (mn) If m > n then m:= m - n Else n:= n - m; Writeln(‘UCLN M N là: ‘, m); Readln; End Củng cố, dặn dò: Nhắc lại cho học sinh só khái niệm mới: dạng cấu trúc lặp với số lần biết trước: + Tiến: FOR := TO DO + Lùi: FOR := DOWNTO DO Trong đó: + bien_dem thường biến kiểu số nguyên + gia_tri_dau, gia_tri_cuoi: biểu thức kiểu với biến đếm, gia_tri_dau phải nhỏ gia_tri_cuoi + Tương ứng với giá trị bien_dem, câu lệnh sau DO thực lần Câu trúc lặp với số lần chưa biết trước: WHILE DO Trong đó: + dieu_kien: biểu thức quan hệ logic; + cau_lenh: câu lệnh ngôn ngữ lập trình Pascal Bài tập nhà: Đọc trước tập thực hành 2: “Bài toán số Pi – ta – go” chuẩn bị cho tiết thực hành Làm tập 1, 2, 6, trang 50, 51 SGK V RÚT KINH NGHIỆM BỔ SUNG:

Ngày đăng: 23/07/2016, 20:36

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan