24 CHƯƠNG I TỔNG QUAN I CƠ SỞ LÝ LUẬN Qua giảng dạy môn Tin học ở trường THCS Thanh Thuỷ, bản thân tôi nhận thấy rằng nhiều học sinh lớp 8 cảm thấy môn lập trình Pascal khó, khô khan và cực kỳ rời rạc Mới đầu các em cũng rất sợ vì khi thấy giải một bài toán ở ngoài thì đơn giản và chỉ trong vòng vài giây có thể nhẩm ra kết quả còn ở trong lập trình cũng bài toán đó mà phải làm đến hàng chục phút mà có thể cho kết quả sai Pascal trở nên quá xa lạ và khó khăn đối với người sử dụng và nhất là đối v.
CHƯƠNG I: TỔNG QUAN I CƠ SỞ LÝ LUẬN: Qua giảng dạy môn Tin học trường THCS Thanh Thuỷ, thân nhận thấy nhiều học sinh lớp cảm thấy mơn lập trình Pascal khó, khơ khan rời rạc Mới đầu em sợ thấy giải tốn ngồi đơn giản vịng vài giây nhẩm kết cịn lập trình tốn mà phải làm đến hàng chục phút mà cho kết sai Pascal trở nên xa lạ khó khăn người sử dụng học sinh THCS người trực tiếp ứng dụng ngôn ngữ lập trình Tâm lý em cho mơn Tin học khơng phải mơn học chính, khơng cần phải để tâm đến "nó" Những tiết học lý thuyết ghi chép qua loa cho xong chuyện khơng ghi chép "giả vờ" để thầy cô khỏi ý hay nhắc nhở lúc giảng Trong tiết thực hành vài học sinh thật tâm suy nghĩ xây dựng thuật tốn, viết chương trình đa số cịn lại tranh thủ chơi game làm việc riêng Buồn thay cho số học sinh kiểm tra thời điểm kết thúc học kỳ mà ghi bảy trang cho chương trình dài Tin học Xét góc độ Lập trình mơn học khó học sinh THCS Khó khơng phải tính phức tạp mơn học hay phạm vi kiến thức rộng lớn Nếu đem so sánh mơn học Lập trình phân mơn Tốn học trường THCS Lập trình Pascal gọn nhỏ nhiều lần Lập trình Pascal "khó" học sinh THCS chỗ: Mơi trường lập trình Pascal có giao diện từ khóa tiếng Anh, dịng thơng báo hay trợ giúp Bình diện chung học sinh THCS vốn tiếng Anh khơng nhiều, đa số em hạn chế tiếng Anh Đây khó khăn cho việc hiểu Pascal Một vấn đề rào cản việc học sinh THCS tiếp cận với lập trình Pascal là: Tư Tốn em dừng lại mức độ Sách giáo khoa Toán THCS kỹ phân tích, tổng hợp, xây dựng thuật toán cho toán hay vấn đề cần lập trình chưa tốt Các em thụ động việc tiếp cận toán, xếp tư duy, xây dựng thuật giải Từ thực tế trên, trình dạy học băn khoăn trăn trở làm nâng cao chất lượng kỹ lập trình cho học sinh lớp Việc tiếp cận với môn học khó khăn, phải làm nhiều lần thực hành nhiều tiết em hiểu việc nhập xuất liệu Do khó khăn để em hình thành kỹ viết chương trình Nhất năm gần Ngành giáo dục ln thành lập đội tuyển tham dự kì thi học sinh giỏi môn Tin học lớp 8, 9, thi THPT chun Tin… Điều thúc đẩy tơi q trình giảng dạy phải nghiên cứu tìm tịi biện pháp, kinh nghiệm để giúp cho em có đam mê học tập lập trình, giúp em biết quy trình lập trình định hướng cho học sinh cách để trở thành nhà lập trình cần phải biết “Những kỹ để giải tốn máy tính ngơn ngữ lập trình Pascal” Giúp em u thích lập trình học lập trình hứng thú II PHƯƠNG PHÁP TIẾP CẬN TẠO RA SÁNG KIẾN Nghiên cứu lý thuyết: Cơ sở để tìm hiểu kỹ để giải tốn máy tính ngơn ngữ lập trình Pascal Tin học Tìm hiểu phương pháp dạy học, chuẩn kiến thức kỹ môn Tin học trường phổ thông, Tài liệu bồi dưỡng giáo viên, Sách giáo khoa Tin Nghiên cứu thực tế: - Thông qua học sinh làm thi kỳ kiểm tra học kỳ, thi học sinh giỏi cấp - Thăm dò ý kiến học sinh đồng nghiệp - Phương pháp quan sát khoa học: Quan sát ý thức thái độ học tập học sinh tiết học trình dạy học tiết dự - Phương pháp điều tra: Điều tra hứng thú học tập kết học tập học sinh - Phương pháp phân tích tổng hợp lý thuyết: Nghiên cứu tài liệu, lý luận khác tạo hệ thông lý thuyết đầy đủ sâu sắc giải tốn cách lập trình Pascal - Phương pháp phân loại hệ thống hóa lý thuyết: Sắp xếp, lựa chọn toán theo dạng cách giải cho dạng Hệ thống dạng, tập từ dễ đến khó, điểm cần lưu ý giải tập III MỤC TIÊU CỦA SÁNG KIẾN - Giúp học sinh biết được: Các bước giải tốn cách lập trình, u cầu giải tốn cách lập trình dạng tập giải toán cách lập phương trình - Giúp học sinh hình thành phương pháp giải tốn cách lập trình nói chung phương pháp giải dạng tập nói riêng - Phương pháp dạy học phù hợp với lực học sinh, đặc biệt động viên khích lệ học sinh yếu để gây hứng thú học tập cho học sinh - Tích hợp mơn học tốn, tiếng anh, … - Tạo cho học sinh niềm hứng thú say mê lập trình để từ giúp cho em phát huy tính tích cực, tự giác, chủ động, sáng tạo, rèn luyện thói quen làm việc độc lập kỹ lập trình Bên cạnh đó, học sinh cịn biết vận dụng để giải toán thường gặp thực tế; gây hứng thú học tập, làm cho “học” trình kiến tạo; niềm say mê để từ học sinh biết khai thác xử lý thông tin, tự hình thành hiểu biết, lực phẩm chất - Khi thực nội dung thân giáo viên tin học thấy trở nên động, sáng tạo, phát huy chun mơn CHƯƠNG II: MÔ TẢ SÁNG KIẾN I VẤN ĐỀ CỦA SÁNG KIẾN : Thực trạng vấn đề Qua quan sát ý thức thái độ học tập học sinh tiết học trình dạy học tiết dự với kinh nghiệm giảng dạy cho thấy: Việc giải toán máy tính ngơn ngữ lập trình Pascal (PC) học sinh THCS việc làm mẻ Đề cho khơng phải những có sẵn toán học mà bắt buộc học sinh phải chuyển đổi mối quan hệ đại lượng mơ tả tốn học sang ngơn ngữ lập trình PC Nội dung tốn này, hầu hết gắn với toán học, gắn với hoạt động thực tế người, xã hội tự nhiên, … Do giải tốn học sinh thường mắc sai lầm khó chuyển sang ngơn ngữ lập trình PC Mặt khác, nội dung bài: “Giải tốn máy tính ngơn ngữ lập trình” sách giáo khoa tin học đưa ví dụ, chưa phân loại dạng toán, chưa khái quát cách giải cho dạng Những tồn tại, hạn chế - Kết môn học chưa thực tốt - Một số học sinh chưa đam mê với môn Tin học - Mơn Tin học mơn học khó (Kiến thức tự nhiên, khơ khan, cứng nhắc, chương trình học nặng, địi hỏi học sinh q trình học tập phải có óc quan sát thực tế, phải tư tốn học) - Học sinh trường phần tư việc tiếp thu kiến thức em cịn hạn chế Khi chưa áp dụng SKKN, tơi tiến hành kiểm tra khảo sát lớp trường THCS Thanh Thủy vào dịp đầu học kỳ I năm học 2021 – 2022 Đề khảo sát (Thời gian 30 phút) Khởi động Free Pascal viết chương trình để tính biểu thức sau đây: Kết quả: Lớp Số HS 8A Giỏi Khá TB Yếu, Kém TS % TS % TS % TS % 45 22 48,9 14 31,1 20,0 0 8B 45 14 31,1 20 44,4 10 22,2 2,2 8C 45 12 26,7 16 35,6 14 31,1 6,6 Nguyên nhân tồn tại, hạn chế - Xét góc độ Lập trình mơn học khó học sinh THCS Khó khơng phải tính phức tạp mơn học hay phạm vi kiến thức rộng lớn Nếu đem so sánh mơn học Lập trình phân mơn Tốn học trường THCS Lập trình PC gọn nhỏ nhiều lần - Lập trình PC "khó" học sinh THCS chỗ: mơi trường lập trình PC có giao diện từ khóa tiếng Anh, dịng thơng báo hay trợ giúp Bình diện chung học sinh THCS vốn tiếng Anh không nhiều, đa số em hạn chế tiếng Anh Đây khó khăn cho việc hiểu PC - Số lượng học sinh lớp học q đơng 40 học sinh lớp, diện tích phịng máy nhỏ hẹp, khơng khí phịng máy khơng thống mát làm cho học sinh khơng tập trung vào giảng ảnh hưởng lớn trình giảng dạy học tập - Vẫn số em học sinh tiếp thu kiến thức chậm, đặc biệt kỹ để giải toán máy tính ngơn ngữ lập trình PC - Sự quan tâm phụ huynh đến việc học tập em chưa cao, có điều kiện chăm sóc, giáo dục định hướng cho em việc học tập - Một số học sinh chưa coi trọng môn học, xem môn phụ nên chưa có đầu tư thời gian cho việc học Ngồi ra, chương trình Tin học 8, em phải làm quen, tiếp cận với ngôn ngữ lập trình PC phần mềm có cấu trúc phức tạp, ngơn ngữ lập trình tiếng anh Mặc khác để thực chương trình em phải có kiến thức tốn học định Tính cấp thiết cần tạo sáng kiến - Hiện nước ta nước giới cạnh tranh nghành công nghệ chế tạo máy sản phẩm phần mềm giúp ích cho người lĩnh vực Vậy làm để làm điều đó: nhờ vào ngành cơng nghệ thông tin (CNTT) - Nền tin học quốc gia xem phát triển đóng góp phần đáng kể vào kinh tế quốc dân vào kho tàng tri thức chung giới - Lịch sử nhân loại chứng kiến cách mạng CNTT với trợ giúp máy tính hệ thống máy tính, người nâng cao suất tự động hóa ngày hiệu ứng dụng khơng nhắc đến ứng dụng phần mềm máy tính với CNTT Phần mềm máy tính ngày lên phát triển với ngơn ngữ lập trình khác cụ thể ngơn ngữ lập trình PC PC ngơn ngữ lập trình có cú pháp chặt chẽ, đơn giản dễ hiểu - Do vậy, Việt Nam nói chung ngành giáo dục đào tạo nói riêng phải đầu tư phát triển mặt Đặc biệt nguồn nhân lực tri thức tức phải đào tạo hệ trẻ động, thông minh, độc lập, sáng tạo, nắm vững tri thức khoa học công nghệ để làm chủ hồn cảnh cơng tác hoạt động xã hội nhằm đáp ứng nhu cầu thời kì cơng nghiệp hố, đại hố đất nước - Là giáo viên Tin học mục tiêu đưa tin học vào trường học nhằm giúp học sinh soạn thảo mà cịn phải có khả phân tích, tổng hợp, trừu tượng hoá, khái quát hoá vấn đề đặc biệt phát triển tư duy, sáng tạo, làm tảng để học tốt môn hoa học khác - Từ thực tế trên, mạnh dạn viết sáng kiến với hy vọng chia sẻ kinh nghiệm dạy học với đồng nghiệp, đồng thời vận dụng vào thực tiễn dạy học môn Tin học THCS, giúp học sinh hứng thú học tập, khuyến khích tự học, tự cập nhật đổi tri thức, kỹ năng, phát triển lực; từ nâng cao chất lượng môn học II CÁC GIẢI PHÁP ĐỂ THỰC HIỆN SÁNG KIẾN Pascal ngơn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh, Niklaus Wirth phát triển vào năm 1970, ngơn ngữ đặc biệt thích hợp cho nhiều hệ học sinh, ngôn ngữ vỡ lịng chương trình học Ở mơi trường này, học sinh sở hữu lượng tài nguyên kiểu liệu đơn giản, với câu lệnh rõ ràng, sáng, quán dễ thuộc Tuy nhiên, địi hỏi người lập trình tài bố cục, thiết kế thuật toán cho đắn, hiệu tối ưu, vận dụng quy tắc cú pháp để viết câu lệnh phù hợp Vì kỹ để giải tốn máy tính ngơn ngữ lập trình PC cần bước sau: - Xác định tốn - Tìm cấu trúc liệu biểu diễn thuật tốn - Xây dựng thuật tốn - Viết chương trình - Kiểm thử chương trình - Tối ưu chương trình Xác định toán: 1.1 Khái niệm toán: Đã học sinh thường xun gặp tốn nhiều dạng khác cấp học Tuy nhiên khơng phải tốn dễ dàng để thực cho kết tốt Nhưng tốn học sinh giáo viên hướng dẫn phải đọc kỹ đề xác định : A B Trong đó: A giả thiết: Điều kiện ban đầu hay cho bắt đầu giải toán B kết luận: Mục tiêu cần đạt hay phải tìm, phải làm kết thúc tốn suy luận: Giải pháp cần xác định hay chuỗi bước cần thực từ A đến B 1.2 Bài tốn máy vi tính: Bài tốn máy mang đầy đủ tính chất tốn tổng qt trên, lại diễn đạt theo khác - A: Là đưa thông tin vào – thông tin trước xử lý (Input) - B: Là đưa thông tin – kết sau xử lý (Output) - : Là chương trình tạo từ câu lệnh máy tính cho phép xử lý từ A đến B 1.3 Xác định toán: Việc xác định toán xác định xem ta phải giải vấn đề gì? Với giả thiết cho với lời giải cần đạt u cầu Khác với tốn túy toán học cần xác định rõ giả thiết kết luận không cần xác định yêu cầu lời giải, tốn tin học thực tế cần tìm lời giải tốt tới mức đó, chí mức chấp nhận (nếu lời giải tốt địi hỏi q nhiều thời gian chi phí) Input Process Output (Dữ liệu vào Xử lý Kết ra) 1.4 Một số ví dụ: Ví dụ 1: Tính diện tích hình vng Các bước xác định cho tốn: - Thơng tin vào (Input): Cạnh hình vng a - Thơng tin (Output): Kết diện tích đưa a vào - Các liệu cần xử lý để chế biến thông tin như: + Lần lượt đưa giá trị a vào (cho a = 4) + Áp dụng cơng thức tính diện tích hình vng: a*a + Kết in 16 Ví dụ 2: Giải phương trình bậc dạng tổng quát bx + c =0 Các bước xác định cho tốn: - Thơng tin vào (Input): Các số b, c - Thơng tin (Output): Nghiệm phương trình bậc - Các liệu cần xử lý để chế biến thông tin như: + Lần lượt đưa giá trị b, c vào (b = 3; c= - 6) + Áp dụng công thức: Nếu b = c = phương trình có vơ số nghiệm Nếu b = c ≠ phương trình vơ nghiệm Nếu b ≠ phương trình có nghiệm x = - c/b; + Kết in x = 2 Tìm cấu trúc liệu biểu diễn thuật toán: Cấu trúc liệu (data structure): Là kiểu liệu mà bên có chứa nhiều thành phần liệu thành phần liệu tổ chức theo cấu trúc Nó dùng để biểu diễn cho thơng tin có cấu trúc tốn Cấu trúc liệu thể khía cạnh logic liệu Ví dụ cấu trúc liệu đơn giản chương trình tin học lớp mảng Các tiêu chuẩn lựa chọn cấu trúc liệu: - Cấu trúc liệu trước hết phải biểu diễn đầy đủ thơng tin nhập xuất tốn - Cấu trúc liệu phải phù hợp với thao tác thuật toán mà ta lựa chọn để giải toán - Cấu trúc liệu phải cài đặt máy tính với ngơn ngữ lập trình sử dụng - Đối với số toán, trước tổ chức liệu ta phải viết đoạn chương trình nhỏ để khảo sát xem liệu cần lưu trữ lớn tới mức độ Xây dựng thuật tốn: Đây bước khó học sinh cho giáo viên dạy phần em quen giải tốn cụ thể giải tốn ngơn ngữ tự nhiên mà em học em phải xây dựng thuật toán tốn tổng qt ngơn ngữ lập trình máy 1.1 Khái niệm thuật toán: Thuật toán hệ thống chặt chẽ rõ ràng quy tắc nhằm xác định dãy thao tác cấu trúc liệu cho: với liệu vào (Input), sau số hữu hạn bước thực thao tác ra, ta đạt kết định (Output) INPUT THUẬT TOÁN OUTPUT 1.2 Phương pháp biểu diễn thuật toán: Trong phần cần đưa phương pháp mơ tả thuật tốn cách khoa học để học sinh nhận biết quy trình làm việc máy vi tính (Ngơn ngữ lập trình) làm việc Ở bước đòi hỏi người lập trình cần có hiểu biết tốn học khả biểu diễn thuật tốn trở nên đơn giản thấy tốn trở nên gần gũi Vì phần đưa hai phương pháp mô tả thuật toán cách rõ ràng khoa học để em dễ dàng mơ tả thuật tốn theo ý tưởng 1.2.1 Phương pháp biểu diễn bước: Phương pháp: - Các thao tác giải thuật liệt kê bước 10 - Tại bước, sử dụng ngôn ngữ tự nhiên để diễn tả cơng việc phải làm - Bước đứng trước (có số thứ tự nhỏ hơn) thực trước, thực xong bước chuyển sang bước khác, không nhập nhằng Thuật tốn “Tìm vị trí xuất số nguyên dãy số nguyên cho”: - Bước 1: Nhập dãy số nguyên - Bước 2: Nhập số nguyên a - Bước 3: Gán cho phần tử so sánh (x) giá trị số dãy - Bước 4: So sánh a với x + Nếu a = x ghi nhận vị trí phần tử x (i) + Nếu a ≠ x x chưa phải phần tử cuối dãy gán x phần tử lặp lại bước + Nếu a ≠ x x phần tử cuối dãy gán i = - Bước 5: Nếu i ≠ đưa vị trí cần tìm i, ngược lại thơng báo khơng tìm thấy - Bước 6: Kết thúc Thuật tốn “Tìm ước số chung lớn số nguyên dương a, b - Bước 1: Nhập số nguyên dương a, b - Bước 2: So sánh giá trị a b Nếu a b sang bước 3, ngược lại a khác b sang bước - Bước 3: Tìm ước số chung a kết thúc chương trình - Bước 4: Nếu a lớn b ước số chung lớn a:= a - b quay trở lại bước Ngược lại ước số chung b:= b - a quay trở lại bước 2.1.2 Phương pháp biểu diễn sơ đồ khối: Phương pháp: - Sử dụng mũi tên để quy định trình tự thực thao tác - Sử dụng hình khối để minh hoạ cho lệnh hay thao tác Thuật tốn “Tính chu vi, diện tích hình tam giác” 12 - Tính đắn: Sau thuật tốn kết thúc, ta phải nhận Output cần tìm Ví dụ: Với thuật tốn tìm giá trị lớn dãy số ngun xét - Tính dừng: Vì giá trị i lần tăng lên nên sau N lần i> N, kết phép so sánh bước xác định việc đưa giá trị Max kết thúc - Tính xác định: Thứ tự thực bước thuật toán mặc định nên sau bước bước 2, sau bước bước Kết phép so sánh bước bước xác định bước cần thực - Tính đắn: Vì thuật tốn so sánh Max với số hạn dãy số thực Max > Max nên sau so sánh hết N số hạng dãy Max giá trị lớn Viết chương trình Viết chương trình dùng ngơn ngữ lập trình cụ thể (Ngôn ngữ Pascal) để diễn tả thuật toán, cấu trúc liệu thành câu lệnh để máy tính thực giải tốn mà người viết chương trình mong muốn Và bước then chốt người lập trình Sau có thuật tốn ta phải lập trình để thực thuật tốn Muốn lập trình đạt hiệu cao, cần phải có kỹ thuật lập trình tốt Kỹ thuật lập trình tốt thể kỹ viết chương trình, khả gỡ rối thao tác nhanh Lập trình tốt khơng nắm vững ngơn ngữ lập trình đủ, mà phải biết cách viết chương trình cách uyển chuyển, khơn khéo phát triển để chuyển ý tưởng thành chương trình hồn chỉnh Để đạt điều học sinh phải nắm cấu trúc chung chương trình PC cần có thành phần Một chương trình Pascal có phần: a Phần khai báo : Phần khóa Program tiếp đến tên chương trình chấm dứt dấu chấm phẩy (;) Tên chương trình phải đặt theo qui cách danh hiệu tự đặt (thỏa mãn quy ước đặt tên PC) Phần có khơng có Ví dụ: Program Lap_trinh_Pascal; Program bai_tap; Trình tự chương trình PC có số tất khai báo liệu sau: 13 CONST: Khai báo TYPE: Định nghĩa kiểu liệu VAR: Khai báo biến có dùng chương trình Khai báo thường sử dụng cho giá trị xuất nhiều lần chương trình (có nghĩa giá trị thường xuyên xuất chương trình ta cần khai báo hằng) Ví dụ: Khai báo Const MaxN= 100; KQ = ‘Ketqua’; Và viết chương trình thay ghi giá trị cụ thể ta sử dụng tên khai báo (đã khai báo MaxN = 100 trình viết chương trình cần sử dụng MaxN thay cho giá trị 100) Trong trình lập trình phát sinh kiểu liệu cần sử dụng phải khai báo từ khóa Type Ví dụ 1: Khai báo kiểu mảng chiều Type Kmang = array [1 100] of integer ; Ví dụ 2: Khai báo kiểu ghi Type Hocsinh = record; Hoten: string [50]; Ngaysinh: string [10]; Tin, toan, ly: real; End; Tất biến dùng chương trình phải đặt tên phải khai báo (sử dụng từ khóa Var) cho chương trình dịch biết để lưu trữ xử lí Biến nhận giá trị thời điểm thực chương trình Tên biến dùng để xác lập quan hệ biến với địa nhớ nơi lưu trữ giá trị biến biến khai báo lần Var < danh sách biến >: < kiểu liệu>; Trong đó: 14 - Danh sách biến hay nhiều tên biến, tên biến viết cách dấu phẩy (,) - Kiểu liệu thường kiểu liệu chuẩn hay kiểu liệu người lập trình định nghĩa Ví dụ: Var x, y: real; a: Kmang; {Kmang định nghĩa} b Phần thân chương trình: Phần thân chương trình phần đặc biệt quan trọng bắt buộc phải có, phần ln nằm từ khố BEGIN END Ở lệnh mà chương trình cần thực Đề yêu cầu viết chương trình thực cơng việc phần thân phải có câu lệnh dùng để thực cơng việc Sau từ khóa END dấu chấm (.) để báo kết thúc chương trình Các lệnh sau dấu chấm khơng có ý nghĩa Lưu ý: - Dấu chấm phẩy (;): Dùng để ngăn cách câu lệnh PC khơng thể thiếu q trình viết câu lệnh - Lời thích: Dùng để giải cho người sử dụng chương trình nhớ nhằm trao đổi thơng tin người người, máy tính khơng để ý đến lời thích Lời thích nằm ký hiệu: {}, // (* *) Ví dụ: PROGRAM CT_Dau_tien; {Dịng tiêu đề, khai báo tên chương trình} USES Crt; {Khai báo sử dụng thư viện Crt} VAR x: integer; {Khai báo biến} BEGIN {Thân chương trình chính} Clrscr; {Xóa hình} Writeln(‘ Nhap gia tri cua x = ’) ; Readln (x); x:= 0; x:= x + 10 ; Writeln(‘ Gia tri cua x la’ , x); END {Kết thúc chương trình} Kiểm thử chương trình (Testing program) 15 Chạy thử tìm lỗi cơng việc mà người lập trình cần phải làm viết xong chương trình để kiểm tra chương trình Chương trình người viết ra, khó tránh khỏi nhầm lẫn Một chương trình viết xong chưa chạy máy tính kết mong muốn Kỹ tìm lỗi, sửa lỗi, điều chỉnh lại chương trình kỹ quan trọng người lập trình Kỹ có kinh nghiệm tìm sửa lỗi Có loại lỗi thường gặp lập trình: - Lỗi thuật tốn: Lỗi gặp nguy hiểm Nếu nhẹ phải điều chỉnh lại thuật tốn, nặng có phải viết lại thuật toán từ đầu - Lỗi cú pháp: lỗi hay gặp lỗi dễ sửa Chỉ cần nắm vững ngơn ngữ lập trình đủ Một người coi khơng biết lập trình sửa lỗi cú pháp Và lỗi thường gặp học sinh bắt đầu học lập trình Ví du 1: Tìm số nhỏ số a, b, c nguyên nhập vào từ bàn phím CODE 1: Program tim_so_nho_nhat ; var a,b,c: integer; BEGIN write('nhap so= '); readln(a, b, c); if a > b then a:= b else if a > c then a:= c; write('so nho nhat la ', a); END Với chương trình chạy song đáp số có lúc đúng, có lúc sai tùy thuộc vào lúc nhập giá trị a, b, c { nhập thứ tự a = ; b= 7; c= cho ta kết số nhỏ sai hồn tồn Do người lập trình cần phải biết cách tìm lỗi Sữa lỗi, điều chỉnh viết lại chương trình kỹ quan trọng người lập trình Vậy với ví dụ để kết ln ta viết lại chương trình CODE 2: Program tim_so_nho_nhat ; var a, b, c, : integer; 16 BEGIN write('nhap so = ') ; readln(a, b, c); min:= a ; if > b then := b; if > c then := c ; writeln ('so nho nhat la ', min); END Ví dụ 2: Viết chương trình in hình hình chữ nhật tồn dấu * với chiều dài chiều rộng nhập từ bàn phím CODE 1: Program hinh_chu_nhat; Var i, d, r : integer; BEGIN Write(‘ Nhap chieu dai hinh chu nhat’); readln(d); Write(‘ Nhap chieu rong hinh chu nhat’); readln(r); For i : = to d*r writeln(‘*’); END Với chương trình chạy song kết sai (in hình cột toàn dấu * với chiều dài diện tích hinh chữ nhật) Với ví dụ để kết ln ta viết lại chương trình CODE 2: Program hinh_chu_nhat ; Var i, j, d, r: integer; BEGIN Write(‘ Nhap chieu dai hinh chu nhat’); readln(d); Write(‘ Nhap chieu rong hinh chu nhat’); readln(r); For i: = to r Begin for j: = to d write(‘*’); 17 Writeln; End; END Tối ưu chương trình (optimization program) - Một chương trình chạy khơng có nghĩa việc lập trình xong Ta phải sửa đổi lại vài chi tiết để chương trình chạy nhanh hơn, hiệu - Không nên viết tới đâu tối ưu mã đến (bởi chương trình có mã tối ưu thường phức tạp khó kiểm sốt) - Việc tối ưu chương trình nên dựa theo tiêu chuẩn sau: + Tính tin cậy: Chương trình phải chạy dự định, mô tả giải thuật Thông thường viết chương trình, ta ln có thói quen kiểm tra tính đắn bước + Tính uyển chuyển: Chương trình phải dễ sửa lỗi Vì chương trình viết mà hoàn hảo mà cần phải sửa đổi lại Chương trình viết dễ sửa đổi làm giảm bớt cơng sức lập trình viên phát triển chương trình + Tính sáng: Chương trình viết đễ đọc, dễ hiểu Để sau thời gian dài đọc lại cịn hiểu làm gì? Để có điều kiện cịn sửa sai (nếu phát lỗi mới), cải tiến hay biến đổi để chương trình giả tốn khác Tính sáng chương trình phụ thuộc nhiều vào cơng cụ lập trình phong cách lập trình + Tính hữu hiệu: Chương trình phải chạy nhanh tốn nhớ (tiết kiệm không gian thời gian) Để có chương trình hữu hiệu, cần phải có giải thuật tốt kỹ thuật lập trình Tuy nhiên, việc áp dụng nhiều kỹ thuật đơi khiến chương trình trở nên rắc rối, khó hiểu sửa đổi Tiêu chuẩn hữu hiệu nên dừng mức chấp nhận được, không quan trọng tiêu chuẩn Vì phần cứng phát triển nhanh, yêu cầu hữu hiệu đặt gánh nặng => Từ phân tích trên, thấy việc làm chương trình phải trải qua nhiều công đoạn tiêu tốn nhiều công sức Chỉ công đoạn không hợp lý tăng chi phí viết chương trình 18 Lời khuyên: Đừng viết chương trình mà chưa suy xét kỹ giải thuật liệu cần thao tác Ví dụ 1: Viết chương trình tính tổng số nguyên nhập từ bàn phím Bước 1: Xác định Input, Output Input : Hai số nguyên a b; Output: Tổng s = a + b; Lưu ý: nên viết theo cách dễ nhận dùng biến Bước 2: Xây dựng thuật toán - Bước 1: Nhập số nguyên a b; - Bước 2: Tính tổng S= a + b; - Bước 3: Hiển thị giá trị tổng S hình Bước 3: Viết chương trình Pascal hồn chỉnh Program TINH_TONG ; { Tên chương trình TINH_TONG } Var a, b, S: integer ; { Khai báo biến kiểu số nguyên } Begin Write (‘Nhap a= ’); { Hiển thị hình: Nhap a= } Readln(a); {Giá trị nhập từ bàn phím gán cho a: ví dụ nhập nhấn enter hiểu là: a= 5} Write (‘Nhap b= ’); { Hiển thị hình: Nhap b= } readln(b); {Giá trị nhập từ bàn phím gán cho b: ví dụ nhập 10 nhấn enter hiểu là: b= 10} S:= a + b; { Sau có giá trị a b rồi, tính giá trị tổng S} 19 Write (‘Tong la: ’, S); { Đưa giá trị tổng S hình } Readln; {Dừng hình để xem kết chờ nhấn phím để quay lại} End {Kết thúc chương trình} Bước 4: Chạy chỉnh sửa chương trình có lỗi Ví dụ 2: Viết chương trình “Tìm ước chung lớn (UCLN) hai số nguyên dương C D” Bước 1: Xác định toán: Input: Nhập hai số nguyên dương C D Output: UCLN hai số nguyên dương C D Bước 2: Xây dựng thuật toán: - Bước 1: Nhập C, D - Bước 2: Nếu C = D lấy giá trị chung làm UCLN chuyển đến bước - Bước 3: Nếu C > D C ← C – D ngược lại D ← D – C ; - Bước 4: Quay lại bước 2; - Bước 5: Đưa kết UCLN kết thúc Bước 3: Viết chương trình: Program UCLN; Uses crt ; Var C, D: integer; Begin Clrscr; Write (‘Nhap C, D =’); Readln (C, D); While C < > D If C > D then C:= C – D else D:= D – C ; Writeln (‘UCLN = ’, C); 20 Readln ; End Bước 4: Chạy chỉnh sửa chương trình có lỗi Ví dụ 3: Viết chương trình “Tìm phần tử lớn dãy số nguyên” Bước 1: Xác định toán : - Input: Số nguyên dương N ( N đưa giá trị Max kết thúc; - Bước 4: Nếu Ai > Max Max Ai ; i i + ; quay lại bước Bước : Viết chương trình Program Tim_Max; Uses crt; Const Nmax = 250; Type mang = array [1 Nmax] of integer; Var N, i, Max, csmax: integer; A: mang; BEGIN Clrscr; Write (‘Nhap so luong phan tu cua day so, N = ’) ; Readln (N) ; For i:= to N Begin Write (‘Phan tu thu’, i, ‘ = ’) ; Readln(A[i]) ; End; Max:= A[1] ; Csmax := ; For i:= to N If A[i] > Max then Begin Max:= A[i] ; Csmax:= i ; End; Writeln (‘Gia tri cua phan tu Max: ’, Max) ; Writeln (‘Chi so cua phan tu Max: ’, csmax) ; 21 END Bước 4: Chạy chỉnh sửa chương trình có lỗi III KẾT QUẢ VÀ KHẢ NĂNG ÁP DỤNG, NHÂN RỘNG Kết đạt được: Trong q trình dạy học mơn Tin trường THCS Thanh Thủy Tôi áp dụng sáng kiến học sinh khối lớp (bao gồm đối tượng học sinh giỏi, khá, trung bình, yếu) Để đánh giá hiệu SKKN, tiến hành kiểm tra khảo sát vào cuối học kỳ I năm học 2021 – 2022 Kết khảo sát (cuối HKI) nội dung giải tốn máy tính ngơn ngữ lập trình PC so với kết đầu năm học cụ thể sau: - Kết dạy nâng lên rõ rệt qua khảo sát thực tế học sinh giáoviên tham dự: - Giáoviên: 98% giáo viên đánh giá học thành công - Học sinh: 100% hứng thú cao với học Đề khảo sát (Thời gian 45 phút) Câu (6,0 điểm): Viết chương trình pascal hiển thị kết biếu thức sau hình ( x + 2)( x + 3) y x+4 - a + b (x - 3)2 Với x, y, a, b nhập từ bàn phím Câu (4,0 điểm): Bố An công nhân mỏ, theo quy định ngày bố An phải làm tiếng, tiếng trả 30000 đồng Nếu bố An làm quy định, làm thêm trả tiền gấp đơi bình thường Em viết chương trình nhập số bố An làm in hình số tiền mà bố An nhận ngày Ví dụ: Số Số tiền nhận 22 Gio= So tien bo An nhan duoc la: 240000 dong Gio= 10 So tien bo An nhan duoc la: 360000 dong Kết quả: Lớ p 8A Sĩ S ố Giỏi Đầu năm Cuối 22 45 (48,9% ) 14 8B 45 (31,1% ) 12 8C Khá 45 (26,7% ) TB Cuối HKI Đầu năm 34 14 10 (75,6% ) (31,1% ) (22,2% ) (20%) 20 20 21 10 (44,4% ) (44,4% ) (46,7% ) (22,2% ) 16 20 14 (35,6% ) (44,4% ) (31,1% ) 18 (40%) HKI Đầu năm Yếu Cuối HKI Đầu năm Cuối 0 HKI (2,2% ) (8,8) (15,6) (2,2% ) (6,6% ) Kết cho thấy số điểm giỏi khảo sát tăng so với kết học kỳ I số điểm trung bình giảm thể tiến học sinh qua việc giải tập; Tôi nhận thấy hầu hết em biết giải tốn cách lập trình pascal Phần lớn học sinh có hứng thú giải tốn cách lập trình Các em khơng cịn lúng túng lập trình Các em biết chuyển đổi vấn đề từ ngơn ngữ tốn học sang ngơn ngữ lập trình thơng qua phép tốn, biểu thức, phương trình Nhiều em giỏi tìm cách giải hay ngắn gọn phù hợp Do sáng kiến: “Những kỹ để giải toán máy tính ngơn ngữ lập trình Pascal.” áp dụng đại trà trường THCS Tuy bên cạnh kết đạt cịn số học sinh chưa vận dụng tốt kỹ lập trình học nên kết học tập chưa ý muốn Một phần khả học toán, tư em cịn hạn chế, mặt khác giải tốn cách lập trình lại khó, địi hỏi tư nhiều em Khả áp dụng, nhân rộng 23 Đối với học sinh có học lực trở lên dễ dàng tiếp thu phương pháp giải dạng tập trên, thông qua phương pháp học sinh lập trình giải tốn ngơn ngữ PC cách tối ưu, ngắn gọn Thông qua phương pháp giải số dạng chương trình học sinh lập trình giải dạng tập tương đối khó Các dạng tập phù hợp với tất đối tượng học sinh từ HS yếu đến HS khá, giỏi IV GIẢI PHÁP TỔ CHỨC THỰC HIỆN - Qua nhiều năm công tác, trực tiếp đứng lớp tham gia giảng dạy rút số kinh nghiệm bổ xung thêm vào vốn kiến thức, coi việc dạy học phù hợp với xu phát triển ngày nay, đặc biệt cần tạo khơng khí thân thiện, vui vẻ lớp học Cần bổ xung sửa chữa rút kinh nghiệm vấn đề tồn trình dạy học để xứng đáng người giáo viên dạy giỏi phù hợp với thời kỳ - Để thành cơng tiết dạy mơn Tin học thân giáo viên phải biết áp dụng linh hoạt phương pháp dạy học tích cực có kỹ giao tiếp sư phạm cao đề tạo hứng thú cho người học phát huy tính tích cực số yếu tố để đạt kết tốt tiết học suốt q trình giảng dạy mơn Tin học là: + Chú ý phát huy tính tích cực, chủ động, tự giác học sinh + Bồi dưỡng phát triển tự học + Rèn luyện kỹ vận dụng vào thực tiễn - Giáo viên cần thực tốt việc: Đầu tư nhiều vào công tác thiết kế dạy tổ chức dạy học lớp theo tinh thần tổ chức hoạt động học cho học sinh Vận dụng linh hoạt phương pháp dạy học theo hướng phát huy tính tích cực chủ động sáng tạo học sinh, đồng thời áp dụng phương pháp dạy học Đa dạng hóa phối hợp linh hoạt hình thức tổ chức dạy học: Cá nhân, nhóm, lớp, tham quan, hoạt động ngoại khóa… - HS chuẩn bị kỹ nhà trước đến lớp phải mạnh dạn, tự tin bộc lộ ý kiến, quan điểm Giáo viên phải chuẩn bị kỹ giảng, thiết kế dạy, lường trước tình để tổ chức dạy có phối hợp nhịp nhàng hoạt động thầy hoạt động trò - Giáo viên rèn cho HS tốt kĩ giải tốn máy tính qua tiết học lí thuyết vận dụng tốt tiết thực hành 24 CHƯƠNG III: KẾT LUẬN VÀ ĐỀ XUẤT, KIẾN NGHỊ I KẾT LUẬN: Từ thực tế nghiên cứu giảng dạy, nhận thấy việc giảng dạy giải tốn cách lập trình máy tính có ý nghĩa thực tế cao Nó rèn luyện cho học sinh tư logic, khả sáng tạo, khả diễn đạt xác nhiều quan hệ tốn học, Do giải tốn cách lập trình lớp 8, giáo viên cần lưu ý học sinh đọc kỹ đề bài, nắm mối quan hệ biết chưa biết đại lượng để nắm thuật toán 25 Để đưa phương pháp tối ưu cho tốn khơng đơn giản Bởi tốn đưa nhiều phương pháp giải khác Song lập trình người giải khơng sử dụng cách giải toán lại ngược lại cho kết khác Điều chứng tỏ cho thấy người lập trình cần phải nắm bước giải tốn lập trình Bên cạnh đó, giáo viên tạo hứng thú cho học sinh học, hướng dẫn học sinh cách học bài, làm cách nghiên cứu trước nhà Tăng cường phụ đạo học sinh nhận thức chậm, tìm chỗ học sinh bị hổng kiến thức để phụ đạo Điều địi hỏi người giáo viên phải có lịng u nghề, u thương học sinh phải có lượng kiến thức vững chắc, có phương pháp truyền thụ phù hợp với đối tượng học sinh Sáng kiến “Những kỹ để giải toán máy tính ngơn ngữ lập trình Pascal” áp dụng cho môn tin lớp trường trung học sở Thanh Thủy áp dụng cho tất trường trung học sở khác Sáng kiến kinh nghiệm tơi mở rộng phát triển mức độ rộng hơn, bao quát hơn, song thời gian nghiên cứu trình độ nhận biết cịn hạn chế nên khơng thể tránh khỏi thiếu sót Vì vậy, tơi mong nhận góp ý, bổ sung bạn đồng nghiệp, đặc biệt Ban lãnh đạo trường THCS Thanh Thủy lãnh đạo ngành để sáng kiến kinh nghiệm tơi hồn thiện có ứng dụng thực tiễn nhiều II KIẾN NGHỊ, ĐỀ XUẤT: - Đôn đốc, nhắc nhở thường xuyên kiểm tra việc tự học nhà em - Phối hợp gia đình nhà trường việc quản lý học tập chặt chẽ - Đề nghị cấp quan tâm tạo điều kiện có thêm sách tham khảo cho học sinh giáo viên nghiên cứu, học hỏi trao đổi chun mơn nâng cao trình độ, đáp ứng yêu cầu đổi - Nghiệm thu đề tài, sáng kiến kinh nghiệm có chất lượng cao cho áp dụng thực tế giảng dạy - Tổ chức cho cán quản lý, giáo viên có đề tài, sáng kiến kinh nghiệm Hội đồng xét công nhận Sáng kiến kinh nghiệm đánh giá cao môn Tin học báo cáo rộng rãi cho giáo viên dạy Tin học THCS toàn huyện học tập áp dụng vào thực tế giảng dạy 26 - Để đạt nhiều thành công giảng dạy, mong cấp tạo điều kiện cho giáo viên có thời gian nghiên cứu, có kế hoạch tự bồi dưỡng tham gia bồi dưỡng học sinh giỏi môn Tin học - Tổ chức chuyên đề giảng dạy môn Tin học để giáo viên trao đổi, học hỏi kinh nghiệm trau dồi chuyên môn Tôi xin chân thành cảm ơn ! TÁC GIẢ SÁNG KIẾN Tạ Xuân Hoà TÀI LIỆU THAM KHẢO 1) PHẠM THẾ LONG (chủ biên) – SGK, SGV tin học 2) HỒ SĨ ĐÀM (chủ biên) - Tài liệu giáo khoa chuyên tin 3) Hội Tin học Việt Nam - Tạp chí “Tin học nhà trường” 4) GS-TS HOÀNG KIẾM - “Giải tốn máy tính nào” 5) QCH TUẤN NGỌC - Ngơn ngữ lập trình Pascal ... nghiệm để giúp cho em có đam mê học tập lập trình, giúp em biết quy trình lập trình định hướng cho học sinh cách để trở thành nhà lập trình cần phải biết ? ?Những kỹ để giải tốn máy tính ngơn ngữ lập. .. lập trình Pascal? ?? Giúp em u thích lập trình học lập trình hứng thú II PHƯƠNG PHÁP TIẾP CẬN TẠO RA SÁNG KIẾN Nghiên cứu lý thuyết: Cơ sở để tìm hiểu kỹ để giải tốn máy tính ngơn ngữ lập trình Pascal. .. ngơn ngữ tốn học sang ngơn ngữ lập trình thơng qua phép tốn, biểu thức, phương trình Nhiều em giỏi tìm cách giải hay ngắn gọn phù hợp Do sáng kiến: ? ?Những kỹ để giải toán máy tính ngơn ngữ lập trình