Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
138,5 KB
Nội dung
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ẪNHỌCSINHLẬPTRÌNHGIẢICÁCBÀITOÁNCÓSỬDỤNGCẤUTRÚCLẶPBẰNGHỆTHỐNGCÁCCÂ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 Cơ 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 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ọchọ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ậptrìnhsửdụng ngôn ngữ lậptrình Turbopascal Hơn việc tiếp thu kiến thức cấutrúclặ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ấutrúclặp Chính việc sửdụngcấutrúclặp để giảitoán tin học lớp 11 họcsinh nhiều hạn chế Xuất phát từ phương pháp dạy họchọc tập hoạt động hoạt động Để họcsinh dễ dàng tiếp thu kiến thức lậptrìnhtoán Người thầy phải hướngdẫnhọcsinh biết tự tìm hướnggiải vấn đề nảy sinhtrìnhgiảitoán Nếu em tự giảitoá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ậptrìnhtoá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ẫnhọcsinhlậptrìnhgiảitoáncósửdụngcấutrúclặphệthốngcâu hỏi” II NỘI DUNG SÁNG KIẾN KINH NGHIỆM Cơ 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 có 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ọcsinh lúng túng gặp khó khăn lậptrìnhtoáncósửdụngcấutrú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 có phần lo lắng Nguyên nhân em mơ màng vận dụngcâutrúclặp vào toán cụ thể, khả phân tích toán hạn chế Hơn câu lệnh lặpcâu lệnh quan trọng để lậptrì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ọcsinh 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ướngdẫnhọcsinh 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ốngcâuhỏi Khi em tự trả lời hệthốngcâuhỏi tức em biết cách tiến hành giảitoàntoán ngôn ngữ lậptrìnhGiả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ụngcâ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ọcsinh 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ụngcâ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ậptrì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ụngcâ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ậptrì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ụngcâ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ụngcâ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ụngcâ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ìnhsửdụngcâ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