skkn hướng dẫn học sinh lập trình giải các bài toán có sử dụng cấu trúc lặp bằng hệ thống các câu hỏi

15 269 0
skkn hướng dẫn học sinh lập trình giải các bài toán có sử dụng cấu trúc lặp bằng hệ thống các câu hỏi

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA TRƯỜNG THPT NÔNG CỐNG SÁNG KIẾN KINH NGHIỆM TÊN ĐỀ TÀI “HƯỚNG DẪN HỌC SINH LẬP TRÌNH GIẢI CÁC BÀI TOÁN SỬ DỤNG CẤU TRÚC LẶP BẰNG HỆ THỐNG CÁC CÂU HỎI” Người thực hiện: Mạc Thị Năm Chức vụ: Giáo viên Đơn vị công tác: Trường THPT Nông Cống Môn: Tin học THANH HOÁ NĂM 2016 MỤC LỤC Trang I MỞ ĐẦU II NỘI DUNG SÁNG KIẾN KINH NGHIỆM sở lí luận .3 Thực trạng vấn đề Giải vấn đề .4 Hiệu sáng kiến kinh nghiệm 13 III KẾT LUẬN, KIẾN NGHỊ .14 I MỞ ĐẦU Công nghệ thông tin lĩnh vực bùng nỗ đột phá, với phát triển vô nhanh chóng Đảng Nhà nước ta nhận thấy tầm quan trọng ngành Tin học lựa chọn môn học vào nhà trường phổ thông môn hoc khác với mục tiêu cung cấp cho em kiến thức phổ thông ngành Tin học, hình thành phát triển khả tư thuật toán, lực sử dụng thành tựu ngành khoa học học tập lĩnh vực sau Lớp 11 em làm quen với nội dung khó, nhiều khái niệm trừu tượng lập trình sử dụng ngôn ngữ lập trình Turbopascal Hơn việc tiếp thu kiến thức cấu trúc lặp nhiều em gặp nhiều khó khăn mà phần lớn toán tin học 11 lại liên quan đến cấu trúc lặp Chính việc sử dụng cấu trúc lặp để giải toán tin học lớp 11 học sinh nhiều hạn chế Xuất phát từ phương pháp dạy học học tập hoạt động hoạt động Để học sinh dễ dàng tiếp thu kiến thức lập trình toán Người thầy phải hướng dẫn học sinh biết tự tìm hướng giải vấn đề nảy sinh trình giải toán Nếu em tự giải toán em lĩnh hội kiến thức sâu hơn, rộng hơn, hứng thú việc tìm tòi, tiếp thu kiến thức lập trình toán phức tạp Với mong muốn góp phần nâng cao chất lượng dạy học môn Tin học trường THPT Nông Cống Tôi chọn đề tài: “Hướng dẫn học sinh lập trình giải toán sử dụng cấu trúc lặp hệ thống câu hỏi” II NỘI DUNG SÁNG KIẾN KINH NGHIỆM sở lí luận a Dạng lặp tiến a.1 Cú pháp: FOR := TO DO ; Trong đó: + Biến đếm: Là biến đơn, thường kiểu nguyên + Giá trị đầu, giá trị cuối: Là biểu thức kiểu với biến đếm Giá trị đầu phải giá trị cuối vòng lặp không thực + Câu lệnh: Là câu lệnh đơn câu lệnh ghép a.2 ý nghĩa - Câu lệnh viết sau từ khoá Do thực tuần tự, với biến đếm nhận giá trị liên tiếp tăng từ giá trị đầu đến giá trị cuối - Sau lần lặp, biến đếm tự động tăng lên 1đơn vị b Dạng lặp lùi * Cú pháp: FOR := DOWNTO DO ; Tương tự dạng lặp tiến, khác sau lần lặp, biến đếm tự động giảm đơn vị * Chú ý: - Trong không thay đổi giá trị biến đếm - Số lần lặp là: Giá trị cuối – giá trị đầu + c Lặp với số lần chưa biết trước câu lệnh While - Do * Cú pháp: While Do ; Trong đó: + Điều kiện: Là biểu thức quan hệ biểu thức logic + Câu lệnh: Là câu đơn câu lệnh ghép * ý nghĩa: Trong thực Thực trạng vấn đề Trong trình giảng dạy môn Tin học lớp 11 Tôi nhận thấy đa số học sinh lúng túng gặp khó khăn lập trình toán sử dụng cấu trúc lặp, dẫn đến thực trạng tập đa phần em không hứng thú, không sôi nỗi phần lo lắng Nguyên nhân em mơ màng vận dụng câu trúc lặp vào toán cụ thể, khả phân tích toán hạn chế Hơn câu lệnh lặp câu lệnh quan trọng để lập trình hầu hết toán Qua kết khảo sát lớp 11c2, trường THPT Nông Cống 3, tổng số 45 học sinh Năm học 2015 – 2016, kết thu sau Điểm Giỏi Điểm Khá Điểm TB Điểm Yếu Điểm Kém SL Tỉ lệ SL SL SL SL 4,4% Tỉ lệ 8,8% 15 Tỉ lệ 33,3% 19 Tỉ lệ 42,2% Tỉ lệ 11,3% Đứng trước thực trạng trên, trình giảng dạy tin học lớp 11 Khi hướng dẫn học sinh làm tập nhận thấy giải vấn đề toán cách đơn giản hỗ trợ giáo viên hệ thống câu hỏi Khi em tự trả lời hệ thống câu hỏi tức em biết cách tiến hành giải toàn toán ngôn ngữ lập trình Giải vấn đề Câu 1: Lập trình: Đưa hình dòng chữ “chao cac ban” Hỏi: Viết câu lệnh đưa hình? Trả lời: Writeln(‘chao cac ban’); Hỏi: Câu lệnh được viết lặp lần? Trả lời: lần Hỏi: Sử dụng câu lệnh lặp biết số lần lặp 5? Trả lời: Dạng lặp tiến dạng lặp lùi Hỏi: Viết đoạn chương trình đưa hình dòng chữ “chao cac ban” sử dụng dạng lặp lùi dạng lặp tiến? Trả lời: For i:=1 to Writeln(‘chao cac ban’); For i:=5 downto Writeln(‘chao cac ban’); Hỏi: Viết toàn chương trình? Trả lời: Program loichao; Uses crt; Var i: byte; Begin Clrscr; For i:=1 to writeln(’chao cac ban’); {For i:=5 downto writeln(’chao cac ban’);} Readln; End Giáo viên dùng máy chiếu chiếu chương trình pascal cài đặt sẵn, sau nhấn phím F8 để học sinh thấy rõ lệnh thực Câu 2: Lập trình: Tính tổng: S= 1= 2+ 3+…… + 10 Giáo viên phân tích thao tác tính tổng: S= + + + +… + 10 + + + + + … + 10 1+ +3 +4 10 + ……………………… 45 +10 Hỏi: Trình bày cách tính tổng vừa rồi? Trả lời: - Cách tính: tổng cộng dồn lại: tổng sau= tổng trước + số hạng Hỏi: Thao tác lặp? Trả lời: tổng sau= tổng trước + số hạng Hỏi: Thao tác lặp lần? Trả lời: 10 lần Hỏi: Trong thao tác lặp, xác định: Thành phần không thay đổi, thành phần thay đổi thay đổi theo quy luật sau lần lặp? Trả lời : + Thành phần không thay đổi: tổng sau= tổng trước + + Thành phần thay đổi: Giá trị số hạng dãy Thay đổi theo quy luật: số đứng sau>số đứng trước đơn vị, Hỏi: Sử dụng câu lệnh lặp nào? Trả lời: Dạng lặp tiến Hỏi: Viết đoạn chương trình tính tổng? Trả lời: s:=0; For i:=1 to 10 s:=s+i; Write(‘tong la’, s:3); Hỏi: Lập trình? Program tinhtong ; Uses crt ; Var s,i :byte ; Begin Clrscr ; s:=0; For i:=1 to 10 s:=s+i; Write(‘tong la’, s:3); Readln ; End Câu 3: Lập trình : Tính tổng : S= 1+ 22+32+ +n2 Giáo viên phân tích tán : S=1 S=1+2*2 S= 5+ 3*3 ………………………………… S= 14+……….+(n-1)*(n-1)+n*n Hỏi: Trình bày cách tính tổng vừa rồi? Trả lời: - Cách tính: tổng cộng dồn lại: tổng sau= tổng trước + bình phương (số hạng tiếp theo) Hỏi: Thao tác lặp? Trả lời: tổng sau= tổng trước + bình phương số hạng Hỏi: Thao tác lặp lần? Trả lời: n lần Hỏi: Trong thao tác lặp, xác định: Thành phần không thay đổi, thành phần thay đổi thay đổi theo quy luật sau lần lặp? Trả lời: + Thành phần không thay đổi: tổng sau= tổng trước + + Thành phần thay đổi: Giá trị bậc số hạng dãy Thay đổi theo quy luật: số đứng sau>số đứng trước đơn vị, Hỏi: Sử dụng câu lệnh lặp nào? Trả lời: Dạng lặp tiến Hỏi: Viết đoạn chương trình tính tổng? s:=0; For i:=1 to n s:= s+ i*i; Write(‘tong la’, s:6); Hỏi: Lập trình? Program tongbinhphuong; Uses crt; Var s:integer; i,n: word; Begin Clrscr; s:=0; For i:=1 to n s:=s+i*i; Write(‘tong la’, s:6); Readln; End Câu 4: Lập trình đưa hình dãy số sau: 46 43 40 37 34 31 28 25 22 19 16 13 10 Hỏi: Phân tích dãy số trên? 46= 3* 15 +1 43 = 3*14 +1 40= 3*13 +1 37= 3* 12 +1 …………… = 3*2 +1 4= 3*1 +1 Hỏi: Nêu cách tính số: Trả lời: Gọi i số từ 15 – 1, ta có: so:=3*i+1 (với i thay đổi theo quy luật lần tính số hạng dãy i giảm đơn vị) Hỏi: Cách tính số lặp lần? Trả lời: 15 Hỏi: Câu lệnh viết hình số dãy? Trả lời: Write(so:4); Hỏi: Câu lệnh lặp lần? Trả lời: 15 Hỏi: Sử dụng câu lệnh lặp nào? Trả lời: Dạng lặp lùi Hỏi: Viết đoạn chương trình đưa hình dãy số: For i:=15 downto Begin so:=3*i+1; Write(so:4); End; Hỏi: Lập trình? Trả lời: Program dayso; Uses crt; Var so,i:byte; Begin Clrscr; For i:=15 downto Begin so:=3*i+1; Write(so:4); End; Readln; End Câu 5: Lập trình: Tính tổng: S = + + + + + + … Cho đến S>=75 - Giáo viên phân tích thao tác tính tổng: S= + + + +5+6+………… + + + + + 6+……… 1+ +3 +4 10 + 15+6 ……………………………………… Hỏi: Nêu nhận xét cách tính tổng? Trả lời: - tổng sau= tổng trước + số hạng tiếp theo(thay đổi theo quy luật số hạng sau >số hạng trước đơn vị) Hỏi: Thao tác lặp lần? Trả lời: Chưa biết trước số lần lặp, tính tổng s>=75 Hỏi: Sử dụng câu lệnh lặp nào? Trả lời : while Hỏi: + Điều kiện lặp gì? + Lệnh cần lặp gì? + Lệnh lệnh làm thay đổi điều kiện? Trả lời: - Điều kiện lặp là: s= 0.0001 - Lệnh cần lặp: s:= s + 1.0 / (a + n) ; n:=n+1; - Lệnh lệnh làm thay đổi điều kiện: n:=n+1; Hỏi: Viết đoạn chương trình tính tổng: Trả lời : s:=1.0/a ; n:=0 ; While 1/ (a + n) >= 0.0001 Begin n:=n+1; s:= s + 1.0 / (a + n) ; end; Hỏi: Lập trình? Program tong; Uses crt; Var s:real; a, n: integer; Begin 10 Clrscr; Write(‘nhap a’); readln(a); s:=1.0/a ; n:=0 ; While 1.0 / (a + n) >= 0.0001 Begin n:=n+1; s:= s + 1.0 / (a + n) ; end; write(‘tong la’, s:6:2); readln; End Câu 7: Lập trình: Tìm ước chung lớn (ƯCLN) hai số nguyên dương M N Hỏi: Nhắc lại thuật toán tìm ƯCLN ? Hỏi: Trong thuật toán ta thấy thao tác lặp, xác định số lần lặp ? Trả lời:- Thao tác lặp: Nếu M>N M:= M-N ngược lại N:=N-M ; - Số lần lặp: Chưa biết trước, lặp M=N Hỏi: Sử dụng câu lệnh lặp nào? Trả lời: while - Hỏi: + Điều kiện lặp gì? + Lệnh cần lặp gì? + Lệnh lệnh làm thay đổi điều kiện? Trả lời: - Điều kiện lặp là: M< >N - Lệnh cần lặp: if M>N then M:= M-N else N:=N-M; - Lệnh lệnh làm thay đổi điều kiện: M:= M-N ; N:=N-M ; Hỏi: Viết đoạn chương trình sử dụng câu lệnh lặp? Trả lời: while M< >N if M>N then M:= M-N else N:=N-M; Hỏi: Lập trình: Program ucln; uses crt; var M, N: word; Begin Clrscr; Write(‘nhap M,N=’); readln(M,N); while M< >N if M>N then M:= M-N else N:=N-M; write(‘ucln la’, M:5); readln; End 11 Câu 8: Một người gửi tiết kiệm không kì hạn với số tiền A đồng với lãi suất 0,3% tháng Hỏi sau tháng, người rút hết tiền nhận số tiền B đồng? Biết với việc gửi tiết kiệm không kì hạn lãi không cộng vào vốn Hỏi: Cách tính số tiền thu sau n tháng? Trả lời: Sau tháng: tien= 0.003*A+A Sau tháng tien= 0.003*A+A+ 0.003*A ………………………………………………… Sau n tháng tien= 0.003*A+A+ 0.003*A+ .+ 0.003*A  Cách tính: tien:=tien+ 0.003*A Hỏi: Thao tác tính tiền hàng tháng lặp lần? Trả lời: Số lần lặp chưa biết trước, lặp tien>=B Hỏi: Xác định số tháng người nhận B đồng? Trả lời: Số tháng số lần lặp tính tiền để nhận B đồng Hỏi: Xác định câu lệnh lặp? Trả lời: while –do Hỏi: + Điều kiện lặp gì? + Lệnh cần lặp gì? + Lệnh lệnh làm thay đổi điều kiện? Trả lời: - Điều kiện lặp là: tien

Ngày đăng: 17/10/2017, 09:32

Từ khóa liên quan

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

Tài liệu liên quan