Sáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất ThànhSáng kiến kinh nghiệm, SKKN - Rèn luyện tư duy thuật toán trong học Lập trình pascal - tin học 8 tại trường PT thực hành chất lượng cao Nguyễn Tất Thành
SỞ GIÁO DỤC VÀ ĐÀO TẠO TỈNH HỊA BÌNH TRƯỜNG CĐSP HỊA BÌNH Tác giả: Nguyễn Văn Hào SÁNG KIẾN KINH NGHIỆM RÈN LUYỆN TƯ DUY THUẬT TOÁN TRONG HỌC LẬP TRÌNH PASCAL - TIN HỌC TẠI TRƯỜNG PT THỰC HÀNH CHẤT LƯỢNG CAO NGUYỄN TÁT THÀNH Năm học 2019-2020 MỤC LỤC Chương TỔNG QUAN 1.1 Lý chọn sáng kiến kinh nghiệm .3 1.2 Cơ sở lý luận 1.2.1 Khái niệm thuật toán .4 1.2.2 Đánh giá thuật toán 1.3 Phương pháp tiếp cận để tạo sáng kiến .5 1.4 Mục tiêu sáng kiến kinh nghiệm .5 Chương MÔ TẢ SÁNG KIẾN 2.1 Vấn đề sáng kiến .6 2.2 Các biện pháp nâng cao hiệu 2.2.1 Thay đổi cách nhìn tạo niềm đam mêm học sinh với mơn học 2.2.2 Các cách tiếp cận tốn .10 2.2.2.1 Rèn luyện kỹ lập trình với câu lệnh điều kiện 10 2.2.2.2 Rèn luyện kỹ lập trình với câu lệnh lặp .12 2.2.2.3 Rèn luyện kỹ lập trình với mảng chiều 19 2.3 Khả áp dụng nhân rộng sáng kiến 21 Chương KẾT LUẬN VÀ KIẾN NGHỊ 22 3.1 Kết luận .22 3.2 Kiến nghị, đề xuất .22 Chương TỔNG QUAN 1.1 Lý chọn sáng kiến kinh nghiệm Tin học phát triển nhanh trở thành nhân tố vô cần thiết lĩnh vực Trong tin học sử dụng phổ biến đặc biệt quan trọng giáo dục Tin học đưa vào chương trình tin học nhà trường hỗ trợ giảng dạy Cùng với đó, Trong năm học gần Bộ GD&ĐT tiến hành đổi phương pháp dạy học phương pháp phát triển khả tư duy, sáng tạo học sinh; lấy học sinh làm trung tâm; tránh tình trạng thầy đọc trị chép cách thụ động; hướng học sinh đến việc tự làm chủ kiến thức mình, tự tìm tịi khám phá kiến thức cho thân Theo phương pháp ngồi việc cung cấp kiến thức cho học sinh người thầy phải biết phát huy khả tư cho học sinh Trong trình dạy học nhận thấy điểm hạn chế học sinh em tiếp xúc với ngôn ngữ lập trình pascal hầu hết em thấy khó, khó nhớ, khó áp dụng Chính lí mà học nội dung em học cho xong, học đối phó với thầy cơ, em cố tìm đoạn mã lệnh gõ theo chạy chương trình cho có kết mà khơng cần biết đoạn mã lệnh làm việc Đôi với học sinh em có tìm lời giải cho tốn em vội hài lịng với kết đạt mà khơng tìm hiểu thêm liệu có cách giải hay khơng? Có thể cải tiến chương trình cho hiệu quả, ngắn học khơng? Từ thắc mắc đó, sau thời gian giảng dạy nội dung lập trình pascal cho đối tượng học sinh lớp băn khoăn Phải làm để học sinh tơi thay đổi cách nhìn nhận với mơn học cách học với mơn lập trình Sau thời gian suy nghĩ cho muốn thay đổi em trước tiên người thầy phải thay đổi, thay đổi cách tiếp cận nội dung, thay đổi phương pháp Phải làm để em u thích mơn học này, có u thích hứng thú em tập trung học tập nghiêm túc được, em khơng cịn học đối phó Khi em u thích hướng em từ việc đơn gian tới phức tạp, nhìn nhận vấn đề hay giải tốn nhiều cách để từ em lĩnh hội đầy đủ chủ động kiến thức môn học Từ lí tơi định nghiên cứu thực sáng kiến “ RÈN LUYỆN TƯ DUY THUẬT TỐN TRONG HỌC LẬP TRÌNH PASCAL - TIN HỌC TẠI TRƯỜNG PT THỰC HÀNH CHẤT LƯỢNG CAO NGUYỄN TÁT THÀNH” nhằm giúp học sinh lớp khắc phục hạn chế nêu tạo ham mê u thích học sinh với mơn học lập trình 1.2 Cơ sở lý luận 1.2.1 Khái niệm thuật tốn Trong viết tơi khơng sâu vào lí thuyết thuật tốn, khơng đề cập đến khái niệm hình thức xác thuật tốn Chúng ta xem xét số định nghĩa (không hình thức) nhiều khác khái niệm thuật tốn nêu chất mơ tả cách thức mà nhiệm vụ hay tiến trình thực thuật toán Xét số định nghĩa thuật toán sau: Định nghĩa (K.Rosen): Một thuật toán thủ tục xác định để giải toán, sử dụng số hữu hạn bước Mỗi bước gồm thao tác/phép toán Định nghĩa (G.Brookshear): Một thuật tốn tập hợp có thứ tự bước không nhập nhằng, thực được, xác định tiến trình có kết thúc Định nghĩa (A.V Aho, J.E.Hopcroft,J.D.Ullman): Thuật toán dãy hữu hạn câu lệnh, câu lệnh có ý nghĩa rõ thực với lượng cơng sức hữu hạn thời gian hữu hạn Qua số định nghĩa nêu trên, thấy thuật tốn có tính chất chung sau: Đầu vào: Một thuật tốn có giá trị đầu vào lấy từ tập xác định Đầu ra: Từ tập giá trị đầu vào, thuật toán sản sinh giá trị đầu thuộc tập xác định Các gía trị đầu chứa lời giải tốn Tính xác định: Các bước thuật tốn phải định nghĩa xác Tính hữu hạn: Một thuật toán phải cho kết mong đợi sau số hữu hạn bước với đầu vào thuộc tập liệu vào hợp lệ Tính hiệu quả: Phải có khả thực bước thuật toán cách đắn thời gian chấp nhận Tính tổng qt (Phổ dụng): Thuật tốn phải áp dụng cho tốn có chung dạng mà cho riêng tập liệu vào đặc biệt 1.2.2 Đánh giá thuật tốn Một tốn có nhiều thuật tốn khác để giải Có câu hỏi nảy sinh cách tự nhiên: “Thuật toán tốt số thuật toán giải toán đó?.” “Thuật tốn chấp nhận được” Những câu hỏi liên quan đến việc ước lượng tài nguyên máy tính cần thiết để thực thuật tốn Các tài ngun máy tính quan tâm thời gian, dung lượng nhớ, phần cứng Đứng trước tốn cho máy tính thuật tốn cần phải thiết kế hay xây dựng để thực nhiệm vụ Việc xây dựng thuật tốn cơng việc khó khăn khơng học sinh mà với giáo viên khó xây dựng thuật tốn tối ưu Cơng việc địi hỏi phải có sáng tạo, am hiểu lĩnh vực tốn khơng thể đưa tập quy tắc chung Nói cách khác, khơng có thuật tốn cho việc thiết kế thuật tốn Do việc rèn luyện tư thuật toán cho học sinh cần thiết Ở cấp học trung học sở việc em tự thiết kế thuật toán để giải tốn mẻ khó khăn, hướng dẫn em làm quen với tốn mẫu với thuật tốn có sẵn để hình thành tư thuật tốn, từ hình thành thói quen lập trình giải tốn xây dựng thuật toán 1.3 Phương pháp tiếp cận để tạo sáng kiến - Nghiên cứu lý thuyết : Tìm hiểu tài liệu, giáo trình liên quan tới nhiệm vụ nghiên cứu - Nghiên cứu thực tiễn: Thông qua việc trực tiếp giảng dạy, trao đổi, phóng vấn trực tiếp với học sinh qua dạy để nắm mức độ nhận thức em, biết vấn đề khó khăn mà em gặp phải từ tìm cách giải vấn đề 1.4 Mục tiêu sáng kiến kinh nghiệm Thông qua việc trình bày thuật tốn, cách xác định tốn để hình thành thói quen tư lập trình cho học sinh Từ việc học sinh khó xác định tồn, bỡ ngỡ gặp tốn có thuật tốn học sinh khơng biết ngơn ngữ hóa thuật tốn để thành tốn ngơn ngữ lập trình Pascal, Thì học sinh hình thành tư thuật toán, biết cách xác định rõ toán trước chuyển hóa tốn thành ngơn ngữ lập trình Mong muốn tác giả sau hướng dẫn em học sinh cách xác định toán Cụ thể thơng qua số ví dụ cụ thể em bước hình thành kỹ lập trình với ngơn ngữ lập trình pascal Chương MÔ TẢ SÁNG KIẾN 2.1 Vấn đề sáng kiến Tin học môn học học sinh cịn bỡ ngỡ, chưa thấy hết tầm quan trọng mơn học Nội dung học lập trình tin học lại nội dung lạ hầu hết học sinh với nhiều khái niệm, thuật ngữ, cấu trúc liệu học sinh tiếp cận lần đầu Chính gặp tốn học sinh khơng biết phải giải tốn Học sinh hồn tồn xa lạ với khái niệm “xác định toán” hay “Xây dựng thuật tốn” Học sinh hồn tồn bỡ ngỡ với việc chuyển hóa bước giải tốn thơng thường tốn học sang ngơn ngữ lập trình Pascal tin học Bên cạnh khó khăn có nhiều mặt thuận lợi đối tượng học sinh ngoan, nhiều em ham học hỏi Nhà trường đầu tư trang thiết bị dạy học đại, phòng máy đáp ứng nhu cầu thực hành em học sinh Đối với giáo viên: Tính tới năm khóa học thứ trường học nội dung lập trình pascal Do đó, thân tơi cịn thiếu kinh nghiệm q trình giảng dạy, đơi cịn phụ thuộc nhiều vào sách giáo khoa giáo án, mà tiếp cận tốn thường hướng dẫn cho học sinh lời giải tốn theo phương pháp định, để em hiểu giải ngơn ngữ lập trình Pascal Tuy nhiên với cách làm tơi nhận thấy học sinh bị phụ thuộc nhiều vào lời giải thầy không phát huy khả tư sáng tạo Các em cố gắng học thuộc cấu trúc số câu lệnh ví dụ áp dụng mà khơng tự tìm hiểu thêm dạng khác, cách giải khác hiệu hơn, thú vị Trong tiết thực hành số em gõ chương trình cách máy móc nội dung thực hành từ sách giáo khoa không thực tìm hiểu xem lại viết câu lệnh này, câu lệnh mục đích để làm gì, câu lệnh cho kết gì, học sinh chưa ý thức việc học mình, hay nói cách khác học sinh chưa có động cơ, thái độ học tập đắn Để dẫn tới điều em chưa tìm thấy niềm vui đam mê môn học, em nghĩ môn tin học môn phụ Mặt khác nội dung mơn tin học lại địi hỏi cao Nếu học sinh dừng lại nội dung kiến thức chương trình sách giáo khoa không đáp ứng yêu cầu đặt thi học sinh giỏi văn hóa lớp 9, thi tin học trẻ, thi vào trường chuyên tin lớp 10 2.2 Các biện pháp nâng cao hiệu 2.2.1 Thay đổi cách nhìn tạo niềm đam mêm học sinh với mơn học - Vì mơn Pascal lại khó? Một thói quen khó thay đổi học sinh cách nhìn nhận mơn tin học, theo em mơn tin học học thao tác sử dụng đơn giản như: cách sử dụng internet, sử dụng hệ điều hành window, chương trình soạn thảo văn MS Word, chương trình soạn thảo trình diễn MS PowerPoint … Đây phần học địi hỏi học sinh tư duy, mà cần học kĩ nhớ thao tác, thực hành nhiều lần thành kỹ thành thạo Nhưng học mơn lập trình Passal chương trình lớp THCS em bị “chống” mơn “mới”, cách học “mới” Học thao tác thực hành nhiều dường khơng cịn phù hợp Học thuộc theo kiểu thuộc lòng phù hợp với nội dung cấu trúc câu lệnh khơng thể áp dụng điều vào toán Lúc em cần phải học cách tư logic, tìm hiểu thuật tốn, viết dịng lệnh máy tính sở thuật tốn xây dựng câu lệnh cần phải có độ xác tuyệt đối đến đấu chấm, dấu phẩy Với tâm lí thơng thường em học sinh coi tin học môn phụ không quan trọng nên nhiều em chủ quan không dành đủ thời gian để học nên không hiểu dần bị Đây lí mà nhiều em ln kêu học lập trình pascal khó q - Tại lại học Pascal? Pascal ngôn ngữ lập trình cấp cao Niklaus Wirth, giáo sư điện toán trường đại học Kỹ thuật Zurich (Thụy sĩ) thiết kế công bố vào năm 1971 đặt tên Pascal để tưởng niệm nhà Toán học Triết học tiếng Blaise Pascal Đây ngôn ngữ lập trình có cấu trúc đơn giản, rõ ràng, cấu trúc chặt chẽ, dễ viết, dễ hiểu dễ sửa chữa, cải tiến Do Pascal nhiều quốc gia có Việt Nam đưa vào chương trình giảng dạy tin học trường phổ thơng đại học môn học sở, đại cương Ở cấp học phổ thông không trọng học chun sâu ngơn ngữ lập trình để tạo phần mềm máy tính mà tập trung rèn luyện kĩ tư logic, tư hệ thống sáng tạo không để giải vấn đề tin học mà kĩ vô quan trọng để giải nhiều vấn đề sống Học Pascal giúp cho ta hiểu cách làm việc máy tính, cách giao tiếp để lệnh cho máy tính làm việc theo điều khiển người thông qua ngôn ngữ lập trình Các em tạo chương trình thú vị cách sử dụng câu lệnh Pascal Cũng giống mơn học khác tốn học, vật lý, hóa học … em thực hiểu u thích mơn tin học em tìm thấy nhiều niềm vui, đam mê tìm hiểu khám phá điều mẻ đầy hấp dẫn môn tưởng chừng khơ khan - Tạo u thích học lập trình Pascal Lập trình mơn học địi hỏi học sinh phải giải toán cách viết chương trình máy tính Đây mơn học học sinh nên phần đông em không nắm bắt kiến thức để vận dụng vào giải tập Về ngơn ngữ lập trình Pascal gây khó khăn cho học sinh bắt đầu tìm hiểu học lập trình Vì Pascal có nhiều hạn chế mặt hình thức như: Giao diện dịng lệnh, khó nhớ khơng thân thiện, dễ gây nhàm chán cho học sinh, cú pháp chặt chẽ cần thiếu dấu báo lỗi sai chương trình, tồn thơng báo lại ngơn ngữ tiếng anh hạn chế khó khăn cho học sinh Qua thời gian giảng dạy môn này, nhận thấy học Pascal học sinh thường khơng thích thú với mơn học nhiều lý khó hiểu, địi hỏi tư duy, … nên việc viết chương trình chạy máy tính em khó khăn Do để học tốt địi hỏi học sinh phải có hứng thú Cốt lõi việc đổi phương pháp dạy học giúp học sinh yêu thích, hứng thú với môn học, hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động Để khắc phục điều cần giải vấn đề sau: * Vấn đề 1: Học sinh vừa đọc xong đề kêu khó, khơng chịu tìm hiểu xem đề u cầu Nói cụ thể sau đọc xong tốn học sinh khơng định hướng phải đâu, phải sử dụng cấu trúc liệu hay cấu trúc lệnh để giải Để giúp học sinh vấn đề sau đọc đề xong giáo viên hướng dẫn em xác định rõ toán (xác định thành phần Input Output toán) Từ Inphut Output toán giáo viên yêu cầu học sinh gạch giấy bước để giải tốn từ đưa thuật tốn, bước tinh chỉnh thuật tốn tìm thuật tốn đắn cuối viết chương trình hồn chỉnh VD: Khi u cầu học sinh lập trình tính chu vi diện tích hình trịn với bán kính nhập vào từ bàn phím - Để giải giáo viên yêu cầu học sinh nêu rõ Input vào Output tốn Input: Bán kính hình trịn Output: Diện tích chu vi hình trịn - GV u cầu HS gạch công việc cần làm để giải tập ? Các công việc cần làm để giải tập : + Nhập bán kính R, + Tính diện tích hình trịn + Tính chu vi hình trịn + In diện tích chu vi hình trịn Else Writeln(c,’ nho nhat’) ; Readln; End * Phương pháp 2: - Ý tưởng: Cũng toán trên, xác định cho học sinh thấy rõ yêu cầu toán tức xác định Input output, giải toán theo cách khác sau: + Nếu a>b ta gán a cho Max, b cho Min, ngược lại ta gán Max cho b, Min cho a {Tìm số lớn nhỏ hai số a, b Sau thực dòng lệnh Max nhận giá trị lớn nhất, Min nhận giá trị nhỏ nhất} + Nếu c>Max ta gán c cho Max, ngược lại cb) Then Begin Max:=a; Min:=b; End Else Begin Max:=b; Min:=a; End; If (c>Max) Then Max:=c Else If (cb đổi giá trị a b {Sau đổi giá trị cho kết a c đổi giá trị b c {Sau đổi giá trị cho kết a, b b hay b>a } + Lại so sánh giá trị a b, a>b đổi giá trị a b {Sau đổi giá trị cho kết a < b b < c} - Chương trình: Var a,b,c,tam:Integer; Begin Write('Nhap gia tri a, b, c tuong ung: '); Readln(a,b,c); If a>b Then begin Tam:=a; a:=b; b:=tam end; If b>c Then begin Tam:=b; b:=c; c:=tam end; If a>b Then begin Tam:=a; a:=b;b:=tam end; Write('So nho la:’,a,’ so lon la’,c); Readln; End => Nhận xét: Trong phương pháp phương pháp có ưu điểm hạn chế riêng: - Phương pháp 1: Giúp học sinh làm quen với câu lệnh điều kiện dạng đủ lồng điều kiện ghép ((a>b) and (a>c)) câu lệnh điều kiện thơng qua phép tốn and - Phương pháp 2: Giúp học sinh làm quen với lệnh gán, sử dụng biến trung gian Max, Min câu lệnh ghép (Begin Max:=a; Min:=b; End) câu lệnh điều kiện - Phương pháp 3: Giúp học sinh làm quen với câu lệnh điều kiện dạng thiếu ôn lại kiến thức xếp giá trị hai biến theo thứ tự tăng giảm dần begin Tam:=a; a:=b; b:=tam end; Tóm lại: Với tốn tìm nhiều cách tiếp cận khác nhau, cách viết chương trình khác để học sinh mở rộng khả tư tạo yêu thích tìm thấy niềm vui cách xây dựng tốn Qua học sinh có cách nhìn linh hoạt với cấu trúc câu lệnh, phát huy tính tích cực sáng tạo cho học sinh 2.2.2.2 Rèn luyện kỹ lập trình với câu lệnh lặp Cấu trúc lệnh lặp cấu trúc ngơn ngữ lập trình pascal cấu trúc cấu trúc giúp học sinh giải lượng lớn dạng tập Tuy nhiên tiếp cận câu lệnh lặp học sinh lại khó hình dung cách hoạt động cấu trúc, đặc biệt học sinh khó phân biệt cấu trúc lặp xác định lặp với số lần lặp không xác định Một lỗi mà học sinh thường gặp làm việc với cấu trúc lặp khơng xác định điều kiện để dừng vịng lặp Chính lý mà dạy cho học sinh cấu trúc lặp giáo viên cần xây dựng ví dụ sử dụng cấu trúc cụ thể để học sinh hiểu rõ ghi nhớ sau em hình thành phản xạ kĩ lập trình có xử dụng cấu trúc lặp Để học sinh hiểu rõ phân biệt cấu trúc lặp giao cho học sinh tốn sau: Ví dụ 1: Viết chương trình tính tổng số nguyên từ tới n, n số nguyên nhập từ bàn phím cách sử dụng cấu trúc lặp For do, While cấu trúc Repeat until Với toán cho dù dùng cấu trúc lệnh lặp cần xác định rõ tốn với Input: Nhập vào số tự nhiên n, Output: in hình tổng chữ số từ tới n vừa nhập vào + Cấu trúc For ta xây dựng chương trình sau: var i, n: integer; s: real; Begin writeln('nhap so n de tinh tong'); readln(n); s:=0; for i:=1 to n s:=s+i; writeln('tong tu 1-n la: =',s:2:0); readln; end + Cấu trúc While ta có chương trình sau: var i: integer; s: real; begin writeln('nhap so n de tinh tong tu 1-n'); readln(n); s:=0;i:=0; while i