intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Sáng kiến kinh nghiệm THPT: Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:29

43
lượt xem
21
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Mục đích nghiên cứu sáng kiến "Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python" nhằm nghiên cứu cơ sở lý luận về vấn đề rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học lập trình để giải quyết một số bài toán có nội dung thực tiễn, xây dựng hệ thống bài tập có nội dung thực tiễn trong dạy học môn Tin học 11 ở trường THPT, đồng thời đưa ra những gợi ý, lưu ý về phương pháp dạy học hệ thống bài tập đó.

Chủ đề:
Lưu

Nội dung Text: Sáng kiến kinh nghiệm THPT: Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python

  1. SỞ GIÁO DỤC VÀ ĐÀO TẠO NGHỆ AN TRƯỜNG THPT DIỄN CHÂU 5 ----------o0o--------- SÁNG KIẾN KINH NGHIỆM Đề tài: PHÁT HUY TÍNH TÍCH CỰC CỦA HỌC SINH THÔNG QUA MỘT SỐ BÀI TẬP CÓ NỘI DUNG THỰC TIỄN BẰNG NGÔN NGỮ PYTHON Lĩnh vực: Tin học Người thực hiện : Lê Hồng Sơn Số điện thoại : 0986184123 Email : sonlh.ndm@nghean.edu.vn Năm thực hiện : 2022 Nghệ An, tháng 4 năm 2022
  2. MỤC LỤC Trang PHẦN I. MỞ ĐẦU…………………………………………………………. 1 1.1. Lý do chọn đề tài………………………………...…………………...… 1 1.2. Mục đích và nhiệm vụ của đề tài……………………………………..… 2 1.3. Đối tượng và phạm vi nghiên cứu……………………………………… 2 1.4. Giới hạn của đề tài…………………………………….……...………… 2 1.5. Phương pháp nghiên cứu…………………………………………..…… 3 1.6. Bố cục của đề tài SKKN……………………………………………....... 3 PHẦN II. NỘI DUNG ĐỀ TÀI……………………………………………. 3 Chương 1. CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN……………..…...……… 3 1. Cơ sở lý luận………………………………………….…………..….…… 3 1.1. Kỹ năng là gì?............................................................................................. 3 1.2. Tại sao nên áp dụng kỹ năng lập trình để giải quyết các bài toán ….. 3 1.3. Vai trò của việc rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học lập trình vào thực tiễn…………………………………………… 4 2. Những quan điểm của cá nhân về vấn đề xây dựng hệ thống bài tậpcó nội dung thực tiễn……………………………………..………..…….….……… 4 3. Thực trạng của việc dạy và học lập trình hiện nay………….…….……… 5 3.1.Những khó khăn của học sinh khi học về lập trình…...……….…...…… 5 3.2. Những khó khăn về ngôn ngữ lập trình………………..……..………… 5 3.3. Những khó khăn về nội dung kiến thức…………………....…………… 5 3.4. Những khó khăn của giáo viên trong quá trình dạy học về chủ đề này…...... 6 Chương 2. SỬ DỤNG MỘT SỐ BÀI TOÁN VÀ PHƯƠNG PHÁP DẠY HỌC GIÚP HỌC SINH PHÁT HUY TÍNH TÍCH CỰC THÔNG QUA MỘT SỐ BÀI TẬP CÓ NỘI DUNG THỰC TIỄN BẰNG NGÔN NGỮ PYTHON.......................................................................................................... 6 1. Một số bài tập có tính thực tế trong cuộc sống………………………….... 6 Bài tập 1: Giải phương trình bậc 2 một ẩn……………………….……….. 6 Bài tập 2: Trả tiền điện thắp sáng………………………………………… 7 Bài tập 3: Em sinh ngày thứ mấy trong tuần?.............................................. 9 Bài tập 4: Năm Âm lịch được tính như thế nào?......................................... 10 Bài tập 5: Chọn vị trí để đường chạy ngắn nhất?........................................ 11 Bài tập 6: Tìm mật khẩu cho tài liệu……………………………………… 13 Bài tập 7: Thời gian chờ………………………………………………...... 14 2. Một số cấu trúc và câu lệnh của Python sử dụng trong đề tài………….… 15 2.1. Câu lệnh IF ……………………………………………………...……... 15 2.2. Câu lệnh lặp FOR…………………………………………………......... 18 2.3. Câu lệnh lặp WHILE……………………………………………............ 18
  3. 3. Một số gợi ý về phương pháp dạy học giúp học sinhphát huy tính tích cực của học sinh thông qua một số bài tập đã được xây dựng……………. 19 Chương 3. THỰC NGHIỆM SƯ PHẠM…………………………………. 20 1. Mục đích thực nghiệm sư phạm.................................................................... 20 2. Đối tượng thực nghiệm.................................................................................. 20 3. Tiến hành thực nghiệm................................................................................ 20 3.1. Công tác chuẩn bị..................................................................................... 20 3.2. Tài liệu thực nghiệm................................................................................. 21 3.3. Hiệu quả của sáng kiến kinh nghiệm...................................................... 21 3.4. Kết luận chung.......................................................................................... 22 PHẦN III. KẾT LUẬN VÀ KIẾN NGHỊ……………………………….. 23 1. Kết luận……………………………………………………………...….. 23 2. Kiến nghị……………………………………………………………..…... 23 2.1. Đối với giáo viên………………………………………………...……... 24 2.2. Đối với tổ, nhóm chuyên môn………………………………………….. 24 2.3. Đối với Ban giám hiệu nhà trường……………………………………... 24 2.4. Đối với các cấp quản lý giáo dục.............................................................. 24 Tài liệu tham khảo............................................................................................. 26
  4. PHẦN I. MỞ ĐẦU 1.1. Lí do chọn đề tài Do yêu cầu đổi mới về phương pháp dạy học vào chương trình Tin học phổ thông và định hướng đổi mới phương pháp dạy học đã được cụ thể hóa trong chỉ thịcủa Bộ giáo dục và đào tạo đã nêu: “Phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc trưng của môn học, đặc điểm đối tượng học sinh, điều kiện của từng lớp học, bồi dưỡng cho học sinh phương pháp tự học, khả năng hợp tác; rèn luyện kĩ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú và trách nhiệm học tập cho học sinh. Hiện nay, môn Tin học trong trong trường phổ thông yêu cầu kiến thức kĩ năng trong phần lập trình là rất hạn chế, bản thân môn Tin học phổ thông không được coi trọng và không có trong danh sách các môn thi tốt nghiệp THPT hay thi vào các trường đại học, cao đẳng. Vì vậy, một bộ phận không nhỏ học sinh ít quan tâm đến môn Tin học, thường có thái độ thờ ơ trong khi tầm ứng dụng vào thực tiễn cuộc sống và lao động thì lại rất lớn. Đổi mới phương pháp dạy học, xây dựng chương trình giáo dục thích hợp, sử dụng ngôn ngữ lập trình ngắn gọn, dễ viết, dễ hiểu và ứng dụng cao có thể làm công cụ để làm việc trong tương lai như Python và giải các bài toán thực tiễn sẽ đem đến hứng thú học tập cho học sinh. Qua đó các em có thiện cảm hơn, nhận định đúng đắn vai trò của môn Tin học, tạo tiền đề cho cách tự học, tự nghiên cứu của học sinh. Những ứng dụng của Tin học vào thực tiễn trong chương trình và sách giáo khoa, cũng như thực tế dạy học Tin học chưa được quan tâm một cách đúng mức và thường xuyên. Trong sách giáo khoa môn Tin học thường chỉ tập trung đến những vấn đề, những bài toán trong toán học; số lượng ví dụ, bài tập có nội dung liên môn và thực tế để học sinh học tập và rèn luyện còn rất ít. Trong kiến thức Tin học 11 định hướng cho học sinh về lập trình và sử dụng ngôn ngữđể giải quyết một số bài toán; tuy nhiên, sách giáo khoa chủ yếu sử dụng ngôn ngữ lập trình Pascal để giới thiệu cấu trúc, câu lệnh và các ví dụ minh họa, có chăng một ít về ngôn ngữ C++. Trong khi đó ngôn ngữ này có không ít hạn chế về khả năng giải quyết vấn đề, tính thực tiễn không cao, ít người sử dụng, học sinh không hứng thú trong việc tự học, tự nghiên cứu. Ngày nay, với sự bùng nổ của khoa học kỹ thuật và sự phát triển như “vũ bão” của công nghệ đòi hỏi một lượng không nhỏ người lao động có trình độ cao về lập trình. Vì thế, định hướng cho học sinh sử dụng ngôn ngữ nào để vừa hứng thú trong quá trình học tập, vừa tự giác tìm tòi học hỏi, vừa hữu ích trong công việc tương lai lại là một vấn đề khác. Python là một trong những ngôn ngữ lập trình đang được chú ý bởi tính đa dạng về ứng dụng, dữ liệu lớn, thư viện phong phú và được sử dụng rỗng rãi trên toàn cầu. Với những lí do như trên tác tôi lựa chọn đề tài:“Phát huy tính tích cực của học sinh thông qua một số bài tập có nội dung thực tiễn bằng ngôn ngữ Python” làm đối tượng nghiên cứu, nhằm nâng cao chất lượng dạy học của bản 1
  5. thân, đồng thời góp phần khơi dậy niềm đam mê và tình yêu Tin học cho học sinh, đặc biệt là tin học lập trình. Giúp học sinh có phương pháp tự học, tự nghiên cứu kiến thức, phát huy tối đa năng lực vốn có của học sinh. Trong đề tài này, tôi chủ yếu tập trung khai thác những bài toán cơ bản có tính thực tiễn nhằm tạo hứng thú, vui tươi trong học tập cho học sinh. Trên cơ sở đó tìm ra các giải pháp mới và tạo nên hệ thống các bài tập thực tiễn điển hình có tính ứng dụng cao hơn. Với cách giải quyết bài toán lập trình trước đây,học sinh thường sử dụng ngôn ngữ lập trình Pascal hay C++, mà các ngôn ngữ này thường có cấu trúc phức tạp, sử dụng câu lệnh nhiều, nguồn thư viện hạn chế, tốn nhiều thời gian, sản phẩm của việc lập trình ứng dụng vào thực tiễn không cao. Trong khi đó, Python được biết đến là ngôn ngữ được sử dụng phổ biến nhất trên thế giới ngày nay (27,95% - Apr 2022), với lượng lập trình viên hùng hậu, sản phẩm được sử dụng rộng rãi (YouTube, Google, Yahoo Maps, …), là ngôn ngữ bậc cao có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho đông đảo người lập trình và đặc biệt hơn Python cho phép người sử dụng viết mã với số lần gõ phím tối thiểu nhất. Từ đó, giúp học sinh dễ dàng nắm bắt và giải quyết các vấn đề đặt ra một cách nhẹ nhàng. 1.2. Mục đích và nhiệm vụ của đề tài - Nghiên cứu cơ sở lý luận về vấn đề rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học lập trình để giải quyết một số bài toán có nội dung thực tiễn, xây dựng hệ thống bài tập có nội dung thực tiễn trong dạy học môn Tin học 11 ở trường THPT, đồng thời đưa ra những gợi ý, lưu ý về phương pháp dạy học hệ thống bài tập đó. - Xác định vai trò và ý nghĩa của việc rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học để giải quyết các bài toán có nội dung thực tiễn, đồng thời xây dựng hệ thống bài tập có nội dung thực tiễn nhằm đáp ứng yêu cầu rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học để giải quyết một số bài toán đó. - Đưa ra một số phương pháp dạy học giúp học sinh tiếp cận với ngôn ngữ Python, tạo hứng thú học tập thông qua một số ví dụ thực tiễn. 1.3. Đối tượng và phạm vi nghiên cứu Học sinh khối 11 và khối 12; học sinh có đam mê về lập trình; học sinh dự thi học sinh giỏi; Giáo viên giảng dạy bộ môn tin học trường THPT Diễn Châu 5 - Diễn Châu - Nghệ An. 1.4. Giới hạn của đề tài - Đề tài chỉ tập trung nghiên cứu các bài toán cơ bản về thực tiễn và các phương pháp dạy học môn Tin học THPT. - Ngôn ngữ Python chưa được xây dựng chương trình cụ thể để thực hiện dạy học rộng rãi trong trường, nên đề tài chỉ thực hiện được ở một số lớp cụ thể. 2
  6. 1.5. Phương pháp nghiên cứu - Phương pháp nghiên cứu lý luận. - Phương pháp điều tra quan sát. - Phương pháp thực nghiệm sư phạm. 1.6. Bố cục của đề tài SKKN Ngoài phần mở đầu, phần kết luận và tài liệu tham khảo, đề tài được trình bày trong 3 chương. Chương 1. Cơ sở lí luận và thực tiễn. Chương 2.Vận dụng một số phương pháp dạy học giúp học sinh hình thành kĩ năng tìm hiểu ngôn ngữ lập trình Python. Chương 3. Thực nghiệm sư phạm. PHẦN II. NỘI DUNG ĐỀ TÀI Chương 1. CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN 1. Cơ sở lý luận 1.1. Kỹ năng là gì? Có rất nhiều khái niệm về kỹ năng theo nhà tâm lý học Liên Xô L.Đ.Lêvitôv: “Kỹ năng là sự thực hiện có kết quả một động tác nào đó hay một hoạt động phức tạp hơn bằng cách lựa chọn và áp dụng những cách thức đúng đắn, có tính đến những điều kiện nhất định”. Theo ông những người có kỹ năng là những người phải nắm và vận dụng một cách đúng đắn về những cách thức hành động giúp cho việc thực hiện hành động đạt được hiệu quả. Đồng thời ông cũng nhấn mạnh, con người có kỹ năng không chỉ đơn thuần nắm lý thuyết và hành động mà còn phải được ứng dụng vào thực tế. 1.2. Tại sao nên áp dụng kỹ năng lập trình để giải quyết các bài toán thực tế? Chủ tịch Hồ Chí Minh lãnh tụ vĩ đại của cách mạng Việt Nam, đồng thời là nhà giáo dục lớn của dân tộc. Người đã để lại cho chúng ta nhiều quan điểm giáo dục có giá trị, trong đó quan điểm: “Học phải đi đôi với hành, lý luận phải liên hệ với thực tế” là cơ sở khoa học, phương pháp luận biện chứng, là quy luật của sự phát triển toàn diện nhân cách con người, phát triển nền giáo dục Việt Nam hiện đại, có ý nghĩa sâu sắc trong định hướng lý luận cũng như chỉ đạo thực tiễn giáo dục, đào tạo ở các nhà trường trong hệ thống giáo dục quốc dân hiện nay. Trong giai đoạn toàn Đảng, toàn dân đang thi đua học tập và làm việc theo phong cách của Người và lời dạy đó của Bác vẫn vẹn nguyên giá trị trong lao 3
  7. động cũng như học tập. Vận dụng lý thuyết để giải các bài toán thực tế để đưa vào ứng dụng trong đời sống hằng ngày đang được thu hút sự chú ý và quan tâm của học sinh ngày nay. 1.3. Vai trò của việc rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học lập trình vào thực tiễn. - Trong thời đại cách mạng công nghiệp lần thứ tư (4.0) được hình thành từ sự phát triển mạnh mẽ của các công nghệ số, cho nên công nghệ thông tin nói chung và lập trình nói riêng là mắt xích có vai trò rất quan trọng của cuộc cách mạng này. Vì thế, rèn luyện cho học sinh năng lực vận dụng kiến thức Tin học lập trình vào các bài toán thực tiễn là phù hợp với xu thế phát triển chung của Thế giới cũng như ở Việt Nam chúng ta, góp phần vào sự phát triển ứng dụng Tin học công nghệ cao của toàn cầu. - Để thực hiện được nguyên tắc lý luận kết hợp với thực tiễn trong việc dạy học Tin học, cần: + Đảm bảo cho học sinh nắm vững kiến thức Tin học lập trình để có thể vận dụng chúng vào thực tiễn; + Chú trọng nêu các ứng dụng của Tin học vào thực tiễn, rèn luyện cho học sinh có những kỹ năng lập trình vững chắc; + Tăng cường thời gian thực hành Tin học trong nội khóa cũng như ngoại khóa. - Rèn luyện năng lực vận dụng kiến thức Tin học vào thực tiễn, giúp học sinh có kỹ năng thực hành và làm quen dần các tình huống thực tiễn. 2. Những quan điểm của cá nhân về vấn đề xây dựng hệ thống bài tập có nội dung thực tiễn Đề tài được nghiên cứu dựa trên thực tế các tiết dạy về lập trình Tin học 11 với chủ ý làm đậm nét hơn các ứng dụng của Tin học vào thực tiễn. Sáng kiến kinh nghiệm đưa ra nhằm vào tính mục đích, tính khả thi, tính hiệu quả của việc xây dựng hệ thống bài tập có nội dung thực tiễn. - Tính mục đích của hệ thống bài tập có nội dung thực tiễn được xác định dựa trên cơ sở những mục đích chung của giáo dục đó là hệ thống các bài tập có nội dung thực tiễn với ý nghĩa ứng dụng rõ rệt, thông qua quá trình rèn luyện cho học sinh khả năng và ý thức sẵn sàng ứng dụng Tin học vào thực tiễn. - Tính khả thi của hệ thống bài tập có nội dung thực tiễn được hiểu là khả năng thực hiện được (xây dựng được, sử dụng được) hệ thống bài tập này trong thực tế dạy học ở trường THPT Diễn Châu 5 hiện nay. 4
  8. - Tính hiệu quả của việc xây dựng hệ thống bài tập có nội dung thực tiễn trong dạy học Tin học được hiểu là sự tiến bộ vững chắc, mức độ thành thạo trong việc giải các bài tập có nội dung thực tiễn của học sinh, hình thành và phát triển ở học sinh thói quen và hứng thú vận dụng kiến thức Tin học vào các tình huống trong học tập, lao động và sản xuất trong đời sống. 3. Thực trạng của việc dạy và học lập trình hiện nay. 3.1.Những khó khăn của học sinh khi học về lập trình. Tin học lập trình là một môn học mới ở các trường phổ thông nên học sinh còn nhiều bỡ ngỡ khi tiếp cận với môn học này. Nội dung tin học lập trình lớp 11 là một nội dung mới lạ đối với đa số học sinh, với học sinh miền núi hay vùng nông thôn như trường chúng tôi việc học Toán, Ngoại ngữ đã khó nay học lập trình thì điều đó lại càng khó khăn hơn bởi nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu, cú pháp, câu lệnh học sinh mới được tiếp xúc lần đầu. Chính vì vậy mà học sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán. Khi thực hiện giảng dạy môn Tin học lớp 11 tại Trường THPT Diễn Châu 5; tôi thấy rằng, việc học sinh lập trình để giải các bài toán trên máy tính thường gặp rất nhiều khó khăn trong việc sử dụng các câu lệnh để diễn tả các bước của thuật toán, phát hiện và sửa lỗi về cú pháp, ngữ nghĩa, v.v… Trong khi đó để viết được một chương trình hoàn chỉnh thì học sinh phải có tư duy logic về thuật toán, biết khai báo kiểu dữ liệu một cách hợp lí, biết sử dụng các câu lệnh đúng cú pháp. 3.2. Những khó khănvề ngôn ngữ lập trình. - Trong chương trình Tin học 11, Pascal được sử dụng chủ đạo để dạy ngôn ngữ lập trình cho học sinh phổ thông vì hơn 30 năm trước nó không có đối thủ về mặt diễn tả thuật toán một cách trong sáng. Tuy nhiên, hơn 10 năm nay, Pascal mất ưu thế về mọi mặt vì có một số nhược điểm gây khó khăn cho các em học sinh so với một số ngôn ngữ khác như: + Giao diện chương trình không thân thiện, dễ gây sự nhàm chán cho học sinh. + Về mặt cú pháp nó chỉ dễ đọc đối với những học sinh các nước nói tiếng Anh. + Không có tính thực tiễn, nên không gây hứng thú cho học sinh. + Rườm rà, không có IDE giúp bắt lỗi cú pháp nhanh chóng. 3.3. Những khó khăn về nội dung kiến thức. - Các bài tập áp dụng công thức toán học quá nhiều, học sinh phải có kiến thức tốt về toán thì mới có thể làm được các bài tập trong sách giáo khoa. - Phần lớn các bài tập chỉ liên quan đến tính toán, thuần túy về toán học, không liên quan đến thực tiễn do đó học sinh chưa hiểu được lập trình để làm gì ngoài viêc tính toán với các con số. - Không trực quan và sinh động. 5
  9. - Phần lớn học sinh chỉ cố hoàn thành các bài tập giáo viên cho một cách bị động, không kích thích tư duy tính sáng tạo, không thu hút sự chú ý của học sinh, do đó học sinh học chỉ để đối phó với môn học. - Với ngôn ngữ Pascal, học sinh khó liên hệ với việc xây dựng các ứng dụng trong thực tế, vì thế học sinh không hình dung hết vai trò của sản phẩm lập trình trong cuộc sống hàng ngày. 3.4. Những khó khăn của giáo viên trong quá trình dạy học về chủ đề này. Giáo viên Tin học cấp THPT hiện nay xét về mặt bằng chung vẫn còn thiếu. Nhiều trường giáo viên Tin học là các thầy cô được đào tạo chuyên ngành Toán - Tin (trong đó chương trình Toán là chủ yếu), vì thế dẫn đến việc lúng túng trong giảng dạy môn Tin học, đặc biệt là việc ứng dụng kiến thức trong sách giáo khoa vào thực tế và việc cập nhật các kiến thức mới cho học sinh. Số lượng học sinh/lớp ở các trường THPT khá cao (trung bình từ 40 đến 42 học sinh) gây khó khăn rất lớn cho giáo viên khi hướng dẫn học sinh thực hành. Bên cạnh đó cơ sở vật chất còn thiếu và lạc hậu cũng dẫn tới chất lượng các tiết học thực hành không cao. Với tâm lý là môn học “phụ”, nên nhiều giáo viên không yêu thích và đam mê với công tác giảng dạy chuyên môn, lại phải kiêm nhiệm nhiều công tác khác nên cũng không có nhiều thời gian để giáo viên đầu tư cho soạn giáo án, thiết kế chương trình đổi mới phương pháp giảng dạy hay tự bồi dưỡng chuyên môn. Ngôn ngữ Pascal là một ngôn ngữ lạc hậu, tính thực tế không cao nên không thu hút sự yêu thích tìm tòi khám phá của giáo viên. Chương 2. SỬ DỤNG MỘT SỐ BÀI TOÁN VÀ PHƯƠNG PHÁP DẠY HỌC GIÚP HỌC SINH PHÁT HUY TÍNH TÍCH CỰC THÔNG QUA MỘT SỐ BÀI TẬP CÓ NỘI DUNG THỰC TIỄN BẰNG NGÔN NGỮ PYTHON. 1. Một số bài tậpcó tính thực tế trong cuộc sống. Bài tập 1: Gải phương trình bậc 2 một ẩn Cho 3 số thực a,b,c là hệ số của phương trình ax2 + bx + c = 0. Hãy lập trình đưa ra các tình trạng nghiệm của x (với mọi giá trị của a,b,c) Dữ liệu: Nhập vào từ bàn phím 3 số thực a,b,c với a,b,c là hệ số của phương trình ax2 + bx + c = 0. Kết quả: In ra màn hình tình trạng nghiệm của x, mỗi trường hợp được ghi trên 1 dòng; Các số thực được làm tròn đến 2 chữ số thập phân. Nhận xét: Đây là một bài toán rất cơ bản của lập trình, gắn liền với việc học sinh giải toán hằng ngày trên máy tính cá nhân fx500; thông qua bài toán này, giáo viên có thể giới thiệu cho học sinh biết vì sao máy tính cá nhân cũng có thể giải các bài toán cơ bản, đó chính là trong máy tính bỏ túi cũng đã được 6
  10. cài đặt sẵn các chương trình và các chương trình đó được cụ thể hóa bằng một ngôn ngữ lập trình bậc cao, chẳng hạn như ngôn ngữ Python. Chương trình được viết bằng Python như sau: from math import sqrt print ("Giải phương trình bậc 2: ax^2 + bx + c = 0") a = float ( input ("a= ")) b = float ( input ("b= ")) c = float ( input ("c= ")) if a == 0: if b == 0: if c == 0: print ("Phương trình vô số nghiệm.") else: print ("Phương trình vô nghiệm.") else: if c == 0: print ("Phương trình có 1 nghiệm x = 0") else: x = -c / b print ("Phương trình có 1 nghiệm x = ", x) else: delta = b ** 2 - 4 * a * c if delta
  11. Bài tập 2: Trả tiền điện thắp sáng Cho bảng giá tính tiền điện sinh hoạt hàng tháng theo giá bán lẻ của của tổng công ty điện lực EVN sau: Nhóm đối tượng khách hàng Giá bán điện TT (Giá bán lẻ điện sinh hoạt) (đồng/kWh) 1 Bậc 1: Cho kWh từ 0 – 50 1.678 2 Bậc 2: Cho kWh từ 51 – 100 1.734 3 Bậc 3: Cho kWh từ 101 – 200 2.014 4 Bậc 4: Cho kWh từ 201 – 300 2.536 5 Bậc 5: Cho kWh từ 301 – 400 2.834 6 Bậc 1: Cho kWh từ 0 – 50 1.678 Yêu cầu: Tính số tiền điện phải trả cho công ty điện lực của 1 hộ gia đình trong một tháng, biết rằng ngoài tiện điện phải trả, người dùng còn phải trả thế giá trị gia tăng (VAT) là 8% Dữ liệu: Nhập vào từ bàn phím số nguyên dượng N (0 < N ≤ 10000) là số kW điện mà hộ gia đình đó sử dụng trong một tháng. Kết quả: In ra màn hình 3 giá trị tương ứng với 3 dòng có cấu trúc như sau: Dòng 1: Số tiền tương ứng với giá bán điện của EVN. Dòng 2:Số tiền tương ứng với thuế VAT. Dòng 3: Tổng số tiền điện mà hộ gia đình đó phải trả trong tháng. Nhận xét: Đây là một bài toán rất thực tế, gắn liền với thực tiễn cuộc sống, liên quan đến quyền lợi, ý thức trách nhiệm và nghĩa vụ của mỗi gia đình. Hiện nay, giá tiền điện sinh hoạt của mỗi hộ gia đình phải trả hàng tháng được tính theo giá điện bậc thang lũy tiến, dùng nhiều trả tiền nhiều. Thông qua bải toán này cũng có thể giáo dục học sinh thấy được biểu giá điện bậc thang và chi phí phải trả tiền điện hàng tháng lớn như thế nào, qua đó nhằm giáo dục học sinh ý thức tiết kiệm điện trong tiêu dùng vì điện là nguồn năng lượng quý giá và luôn thiếu hụt trong sản xuất, đặc biệt vào dịp hè điện luôn yếu và thiếu thường xuyên. Tiết kiệm điện cũng là tiết kiệm kinh tế cho gia đình vì dùng nhiều điện thì phải trả nhiều tiền. Chương trình được viết bằng Python như sau: a=int(input("Nhập vào số kWh điện tiêu thụ trong tháng:")) if a
  12. 100*2536 +(a-400)*2927 v=round(x*8/100) tong=x+v print() print("Số tiền tiêu thụ điện là:",x,"VNĐ") print("Thuế VAT: ",v ,"VNĐ") print("Tổng tiền phải trả: ",tong,"VNĐ") Kết quả của bộ test a = 10000 Bài tập 3: Em sinh ngày thứ mấy trong tuần? Nhập vào ngày, tháng, năm sinh dương lịch của một em học sinh. Rồi cho biết em đó sinh vào ngày thứ mấy trong tuần. Yêu cầu: Nhập vào 3 số nguyên dd (dd ≤ 31), mm (mm ≤ 12) và yy, tương ứng của 3 giá trị ngày – tháng – năm (Dương lịch) Kết quả: In ra dòng thông báo ngày – tháng – năm tương ứng với ngày thứ mấy trong tuần. Nhận xét: Đây là bài toán rất thực tế và tạo hứng thú học tập cho học sinh vì ngày sinh nhật chúng ta có thể nhớ, song mình được sinh ra ngày thứ mấy trong tuần thì ít ai biết được. Vì vậy, hầu như học sinh nào cũng muốn biết mình hay bạn mình được sinh vào thứ mấy, qua đó lớp học được sôi nổi, tạo động lực học lập trình hơn cho học sinh. Với bài toán này, tôi hướng dẫn và cung cấp cho học sinh cách tính thứ trong tuần như sau: - Năm = 1900 + năm %1900 (% phép toán chia lấy dư trong Python) - Nếu tháng < 3 thì tháng = tháng + 12 và năm = năm – 1; - Thứ = ABS(ngày + 2x tháng +3x(tháng +1) // 5 + năm + năm //4)%7 (// phép toán chia lấy nguyên trong Python) - Nếu Thứ = 0 thì in ra Chủ nhật Chương trình được viết bằng Python như sau: print() print('Nhập vào ngày tháng năm Dương lịch:') dd=int(input("Ngày:")) mm=int(input("Tháng:")) yy=int(input("Năm:")) 9
  13. print() print("ngày",dd,"tháng",mm,"năm",yy) yy=1900 + yy % 1900 if mm
  14. Hướng dẫn: Can và chi được lấy lần lượt theo chiều kim đồng hồ. Ví dụ, năm 2021 là Tân Sửu, năm 2022 là Nhâm Dần, năm 2023 là Quý Mão…trong đó, từ đứng trước là can, từ đứng sau là chi. Can = năm % 10 (VD: 2022 % 10 = 2 → “Nhâm”) Can[0] =”Canh” Chi = năm % 12 (VD: 2022 % 12 = 6 → “Dần”) Chi[0] = “Canh” Yêu cầu: Nhập vào từ bàn phím một số nguyên dương N là năm Dương lịch, đưa ra màn hình dòng thông báo tên gọi năm Âm lịch tương ứng. Nhận xét: Đây là bài toán khá đơn giản, tuy nhiên nó chỉ đơn giản đối với một số người đã biết về quy tắc này đặc biệt là người lớn tuổi, với các bạn trẻ như học sinh ngày nay hầu như chỉ biết đến 12 con giáp (tương ứng với 12 chi). Để tính can của năm âm lịch thì hầu hết học sinh không hề để ý đến; Qua bài toán này muốn gợi ý cho học sinh hiểu biết cách đổi năm Dương lịch sang năm Âm lịch theo cách gọi truyền thống của ông cha ta xưa nay. Chương trình được viết bằng Python như sau: print() Chi=["Thân","Dậu","Tuất","Hợi","Tý","Sửu","Dần","Mão", "Thìn","Tỵ","Ngọ","Mùi"] Can=["Canh","Tân","Nhâm","Quý","Giáp","Ất","Bính", “Đinh”,”Mậu”,”Kỷ”] n=int(input(“Nhập vào số năm Dương lịch: “)) if n>0: print(“Năm”,n,”là năm”,Can[n%10],Chi[n%12]) Kết quả của bộ test: năm 2022 Bài tập 5: Chọn vị trí để đường chạy ngắn nhất? Trong một buổi học trải nghiệm của trường THPT Diễn Châu 5, giáo viên tổ chức cuộc thi chạy trên bãi biển với điều kiện sau: các học sinh xuất phát từ điểm A và đích đến là điểm B, nhưng trước khi đến B phải nhúng mình vào nước biển tại điểm M. Bài toán đặt ra là lựa chọn điểm M ở đâu để tổng chiều dài đường chạy là ngắn 11
  15. nhất (tức là AM + MB nhỏ nhất) Với bài toán này, giáo viên có thể yêu cầu học sinh mô hình hóa bài toán hoặc giáo viên mô hình hóa bài toán thực tế này thành bài toán hình học như sau:Giả sử, mép nước biển là một đường thẳng, khi đó: ta quy về bài toán hệ trục toạ độ Oxy như sau: cho hai điểm A(xA,yA) và B(xB,yB) nằm về một phía của trục hoành (y ≥ 0). Hãy xác định điểm M trên trục Ox sao cho MA  MB bé nhất. Hướng dẫn: - Lấy A’ đối xứng A qua Ox; Khi đó A’(xA,-yA) và MA =MA’. =>MA + MB = MA’ + MB - Ta có: MA’ + MB ≥ A’B - Dấu ‘=’ xẩy ra khi M thuộc A,B hay A’B ∩ Ox = M. 𝑥−𝑥𝐴′ 𝑦−𝑦𝐴 ptđt(A’B): = 𝑥𝐵 −𝑥𝐴′ 𝑦𝐵 −𝑦𝐴′ - Với M thuộc Ox => M(x,0). Từ đó ta tìm được tọa độ điểm M Yêu cầu: Nhập vào từ bàn phím tọa độ 2 điểm A và B là các số thực với điều kiện tung độ của các điểm phải lớn hơn 0; nếu nhỏ hơn hay bằng không thì yêu cầu nhập lại (yA> 0 và yB> 0). In ra màn hình tọa độ điểm M thỏa mãn yêu cầu của bài toán. Nhận xét: Thực ra đây là một bài toán hình học, tuy nhiên nó được xuất phát từ một trò chơi thực tiễn. Qua đó, tạo hứng thú cho học sinh trong học tập đồng thời khơi dậy niềm đam mê tìm tòi, khám phá kiến thức bởi trong thực tế có những hoạt động hay công việc ta có thể sử dụng toán học để giải quyết vấn đề và ngược lại các bài toán chúng ta cũng có thể vận dụng đượcvào các hoạt động thường ngày. Chương trình được viết bằng Python như sau: import fractions print() xa=float(input("Nhập vào hoành độ điểm A: xA=")) ya=float(input("Nhập vào tung độ điểm A: yA=")) xb=float(input("Nhập vào hoành độ điểm B: xB=")) yb=float(input("Nhập vào tung độ điểm B: yB=")) print("A(",xa,";",ya,")") print("B(",xb,";",yb,")") if ya
  16. nhập lại") else: print("Tọa độ điểm M để MA+MB nhỏ nhất:") x=((0-(-ya))*(xb-xa)/(yb-(-ya))+xa) #tạo phân số trong trường hợp x là số thực print("M(",fractions.Fraction(x),";",0.0,")") Kết quả của bộ test: A(1,2) và B(4,4) Bài tập 6: Tìm mật khẩu cho tài liệu Lý là một học sinh ham học thường tìm kiếm tài liệu trên mạng để tham khảo, nhưng một số tài liệu hay lại thường được người cung cấp đặt mật khẩu bảo mật. Tuy nhiên, người cung cấp tài liệu lại cấp cho mỗi tài liệu một mã số N là một số nguyên dương không quá 1000 chữ số sau khi downloand xong, tùy theo giá trị của tài liệu mà mã số nhỏ hay lớn. Để mở được tài liệu, Lý phải tìm cách nhập mật khẩu vào tài liệu đó. Mật khẩu là một dãy 4 ký tự được tạo ra bằng cách tính tổng giá trị của các chữ số có trong N, nếu tổng chác chữ số ít hơn 4 ký tự thì thêm vào phía trước các số 0 sao cho mật khẩu đủ 4 ký tự. Yêu cầu: Nhập vào từ bàn phím 1 số nguyên dương N ( số chữ số của N không vượt quá 1000). Hãy tìm ra dãy số có 4 chữ số là mật khẩu cần tìm. Ví dụ: Dữ liệu vào Dữ liệu ra 123456789987654321 0090 Nhận xét: Đây là một tình hướng thực tiễn mà ta thường gặp khi downloand tài liệu dạng nén trên mạng Internet. Với dạng bài toán này chỉ đơn giản là ta chỉ việc cộng các con số lại, nhưng độ phức tạp ở đây là không phải là các số nguyên nhỏ mà là một số có thể rất lớn, có thể lên đến hàng trăm, thậm chí là cả nghìn chữ số thì việc đếm rồi cộng lại thì mất rất nhiều thời gian. Vậy, bài toán đưa ra là cho phép chúng ta Copy số N và Paste vào chương trình Python thì ngay lập tức sẽ có được yêu cầu mình cần. Chương trình được viết bằng Python như sau: 13
  17. s=str(input("Nhập vào số nguyên N:")) n=len(s) mk=0 for i in range(0,n): mk = mk + int(s[i]) x=str(mk) k=len(x) while (k
  18. a.append(tg) print("Dãy thời gian của các học sinh chờ để tiêm:") print(a) K=int(input("Nhập vào vị trí của học sinh cần tính thời gian chờ:")) tg_cho= 0 for i in range(0,K-1): tg_cho = tg_cho + a[i] print("Thời gian chờ của học sinh thứ",K,"để được khám và tiêm phòng là:", tg_cho,"giây") Kết quả của bộ test:với N=15 2. Một số cấu trúc và câu lệnh của Python sử dụng trong đề tài. 2.1. Câu lệnh IF a) Cấu trúc lệnh IF ifđiều kiện: khối lệnh Ở đây, chương trình đánh giá điều kiện và sẽ thực hiện các lệnh khi điều kiện là True. Nếu điều kiện False thì lệnh sẽ không được thực hiện. 15
  19. Trong Python, khối lệnh của lệnh if được viết thụt lề vào trong. Khối lệnh của if bắt đầu với một khoảng thụt lề và dòng không thụt lề đầu tiên sẽ được hiểu là kết thúc lệnh if. Sơ đồ lệnh if trong Python b) Cấu trúc câu lệnh IF … ELSE ifđiều kiện: Khối lệnh của if else: Khối lệnh của else Lệnh if...else kiểm tra điều kiện và thực thi khối lệnh if nếu điều kiện đúng. Nếu điều kiện sai, khối lệnh của else sẽ được thực hiện. Thụt đầu dòng được sử dụng để tách các khối lệnh. Sơ đồ lệnh if...else 16
  20. c) Cấu trúc câu lệnh IF ... ELIF … ELSE ifđiều kiện: Khối lệnh của if elif test expression: Khối lệnh của elif else: Khối lệnh của else elif là viết gọn của else if, nó cho phép chúng ta kiểm tra nhiều điều kiện. Nếu điều kiện là sai, nó sẽ kiểm tra điều kiện của khối elif tiếp theo và cứ như vậy cho đến hết. Nếu tất cả các điều kiện đều sai nó sẽ thực thi khối lệnh của else. Chỉ một khối lệnh trong if...elif...else được thực hiện theo điều kiện. Có thể không có hoặc có nhiều elif, phần else là tùy chọn. Sơ đồ của lệnh if...elif...else d) Lệnh if lồng nhau trong Python Ta có thể viết lệnh if...elif...else trong một khối lệnh if...elif...else khác, và tạo thành lệnh if lồng nhau. Không giới hạn số lệnh được lồng vào lệnh khác. 17
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
34=>1