Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
261,4 KB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - Lê Thị Thu Huyền NGHIÊN CỨU XÂY DỰNG HỆ THỐNG BÀI TẬP LẬP TRÌNH TRÊN PYTHON CHO HỌC SINH PHỔ THƠNG Chun ngành: KHOA HỌC MÁY TÍNH Mã số: 8.48.01.01 TĨM TẮT LUẬN VĂN THẠC SĨ HÀ NỘI - 2022 Luận văn hoàn thành tại: MỞ ĐẦU Mục tiêu giáo dục phổ thông giúp học sinh phát triển tồn diện đạo đức, trí tuệ, thể chất, thẩm mỹ kĩ bản, phát triển lực cá nhân, tính động sáng tạo, hình thành nhân cách người Việt Nam xã hội chủ nghĩa, xây dựng tư cách trách nhiệm công dân; chuẩn bị cho học sinh tiếp tục học lên vào sống lao động, tham gia xây dựng bảo vệ Tổ quốc Chính vậy, giáo dục có vai trị vơ quan trọng việc xây dựng hệ người Việt Nam phát triển tồn diện, có lý tưởng, đạo đức, có tính tổ chức kỷ luật, làm chủ tri thức đại, có tư sáng tạo, đáp ứng yêu cầu xây dựng bảo vệ tổ quốc Trong thực tế, Tin học mơn học vừa mang tính khoa học vừa mang tính kĩ thuật, ngành Tin học phát triển vũ bão, ngày xâm nhập vào ngành khoa học công nghệ đời sống, môn Tin học đưa vào nhà trường tri thức phương pháp phổ thông thành tựu nhân loại, xếp chúng thành hệ thống logic đảm bảo tính khoa học, tính tư tưởng, tính thực tiễn, tính sư phạm, phù hợp với điều kiện hoàn cảnh đất nước, đáp ứng yêu cầu cách mạng khoa học công nghệ ngày nay, phục vụ cơng cơng nghiệp hóa, đại hóa đất nước, chuẩn bị cho kinh tế tri thức Tin học giúp học sinh hình thành nên kiến thức quan trọng nhất, chuẩn bị cho học sinh hành trang để bước vào đời học lên bậc học cao Đó chìa khố mở cửa cho tương lai Hiện môn Tin học trở thành môn học bắt buộc nhà trường phổ thông, thuận lợi lớn cho việc tiến hành giảng dạy Tuy nhiên, thực tế trường phổ thông nhà trường học sinh chưa ý nhiều đến môn Tin học Vì đa số học sinh THPT cịn non kĩ lập trình Trong chương trình môn Tin học trường THPT, kĩ đề cập đến quan trọng kĩ lập trình giải tốn Nhờ có kĩ mà học sinh có trải nghiệm thú vị, thấy máy tính giúp người giải tốn, cơng việc cách tự động chương trình, nhận thức kĩ lập trình kích thích học sinh hứng thú việc tìm tịi thuật tốn ngơn ngữ lập trình (NNLT) Chương trình Tin học 2018 [1] địi hỏi mơn tin phải giúp học sinh định hướng nghề nghiệp Do yêu cầu dạy lập trình cho học sinh phải có đổi mới, phù hợp với yêu cầu sách giáo khoa thực tế NNLT Pascal dạy cho học sinh bộc lộ nhiều nhược điểm cần phải thay Hệ thống tập lập trình chưa đa dạng, chủ yếu dựa tập toán 2 Tại Hà Nội, năm học 2021 – 2022 Sở giáo dục đào tạo khuyến nghị trường dạy học lập trình cho học sinh lớp 11 ngơn ngữ lập trình Python Hiện tại, chưa có nhiều tài liệu xây dựng hệ thống tập ngôn ngữ lập trình Python, đặc biệt dành cho học sinh phổ thơng Một số tài liệu có [2] đưa vấn đề dạy ngơn ngữ lập trình Python cho học sinh, hệ thống tập chưa phù hợp với học sinh phổ thông yêu cầu Các tài liệu nước ngồi ngơn ngữ lập trình Python chủ yếu dành cho lập trình viên chuyên nghiệp chưa phù hợp với khung chương trình mơn Tin học dành cho học sinh phổ thông [6] Như vây, thấy q trình dạy học lập trình cho học sinh phổ thơng có tầm quan trọng đặc biệt Quá trình cần phát huy cao hiệu giảng dạy theo tinh thần đổi chương trình cải cách 2018 Với mong muốn đóng góp phần nhỏ PPDH mơn học cịn mẻ nhà trường THPT, xuất phát từ thực tế mục tiêu trên, học viên chọn thực đề tài luận văn tốt nghiệp chương trình đào tạo thạc sĩ có tên “Nghiên cứu xây dựng hệ thống tập lập trình Python cho học sinh phổ thông” Mục tiêu luận văn nghiên cứu sở lý thuyết thực tế để xây dựng hệ thống tập lập trình Python cho học sinh phổ thơng Để hồn thành mục tiêu trên, nội dung luận văn bố cục gồm ba chương sau: Chương 1: Tổng quan dạy lập trình cho học sinh phổ thơng Nội dung chương khảo sát tổng quan thực trạng yêu cầu dạy lập trình cho học sinh phổ thơng theo chương trình cải cách giáo dục phổ thông năm 2018 (CT2018) vấn đề liên quan Chương 2: Khảo sát đặc trưng ngơn ngữ lập trình Python Nội dung chương khảo sát yếu tố ngôn ngữ lập trình (NNLT) Python phân tích lựa chọn, thực trình bày số nội dung NNLT Python phù hợp với học sinh phổ thông Chương 3: Kết thực xây dựng hệ thống tập lập trình cho học sinh phổ thơng Nội dung chương xác định yêu cầu, xây dựng hệ thống tập lập trình hướng dẫn sử dụng phù hợp với giảng dạy lập trình Python cho học sinh phổ thông 3 CHƯƠNG - TỔNG QUAN VỀ DẠY LẬP TRÌNH CHO HỌC SINH PHỔ THƠNG 1.1 Thực trạng dạy lập trình cho học sinh phổ thông Việt Nam Nguyên nhân dẫn đến việc dạy học lập trình cho học sinh phổ thơng thời gian qua chưa đạt kết mong muốn kể sau Nguyên nhân phía giáo viên Giáo viên tin học cấp THPT địa bàn nước xét mặt chung so với mơn học khác cịn thiếu số lượng yếu chuyên môn Nhiều giáo viên Tin học thầy cô không đào tạo chuyên ngành sư phạm Tin nên lúng túng giảng dạy môn Tin học, đặc biệt việc truyền đạt cho học sinh Ngun nhân phía học sinh Ngồi số học sinh quan tâm cảm thấy hứng thú với lập trình cơng việc lập trình viên đa số học sinh tập trung vào môn học để thi đại hoc, thờ học đối phó với học lập trình Do kết học lập trình chưa đạt u cầu Bên cạnh đó, số lượng học sinh/lớp trường THPT cao (trung bình 45 - 50 học sinh) gây khó khăn dạy học lập trình Nguyên nhân sở vật chất phục vụ cho dạy học lập trình Ở số trường THPT, sở vật chất phục vụ cho dạy học lập trình cịn thiếu chưa đồng Số lượng máy tính phòng máy chưa đảm bảo đủ học sinh máy nên khó khăn cho q trình thực hành lập trình Nhiều MT cịn hỏng cấu hình thấp chưa bảo dưỡng thay kịp thời Mặt khác, NNLT Pascal dạy cho học sinh tính thực tiễn cao nên khơng gây hứng thú cho học sinh Các tài liệu hỗ trợ cho dạy học lập trình hệ thống tập, hướng dẫn thực hành cịn thiếu khơng đồng 1.2 Tổng quan chương trình mơn Tin học theo khung chương trình ban hành năm 2018 Năm 2018, Bộ Giáo dục Đào tạo ban hành “Chương trình giáo dục phổ thông – Môn tin học” kèm theo Thông tư số 32/2018/TT-BGDĐT, ngày 26 tháng 12 năm 2018 Bộ trưởng Bộ Giáo dục Đào tạo (CT2018) [1] Trong mục luận văn khảo sát tổng quan CT2018 1.2.1 Đặc điểm môn học Nội dung môn Tin học phát triển ba mạch kiến thức hồ quyện: Học vấn số hố phổ thơng (DL), Cơng nghệ thông tin truyền thông (ICT), Khoa học máy tính (CS) phân chia theo hai giai đoạn: - Giai đoạn giáo dục - Giai đoạn giáo dục định hướng nghề nghiệp 1.2.2 Quan điểm xây dựng chương trình Tính kế thừa phát triển a) Kế thừa chương trình mơn Tin học hành b) Khai thác chương trình mơn Tin học phổ thơng nước tiên tiến Tính khoa học, đại sư phạm Tính thiết thực a) Phục vụ định hướng nghề nghiệp b) Thực giáo dục STEM Tính mở a) Nội dung chương trình mở b) Hình thức giáo dục đa dạng 1.2.3 Mục tiêu chương trình Mục tiêu chung Mục tiêu cấp trung học phổ thông 1.2.4 Yêu cầu cần đạt Yêu cầu cần đạt phẩm chất chủ yếu lực chung Yêu cầu cần đạt lực đặc thù - NLa: Sử dụng quản lí phương tiện cơng nghệ thơng tin truyền thông; - NLb: Ứng xử phù hợp môi trường số; - NLc: Giải vấn đề với hỗ trợ công nghệ thông tin truyền thông; - NLd: Ứng dụng công nghệ thông tin truyền thông học tự học; - NLe: Hợp tác môi trường số 1.3 Các yêu cầu dạy lập trình học sinh phổ thơng u cầu nội dung Theo quy định CT2018, học lập trình học sinh cần biết cấu trúc liệu bản, thuật toán xếp tìm kiếm bản, viết chương trình giải toán 5 Yêu cầu phát triển lực cho học sinh Thông qua dạy lập trình cần rèn luyện cho học sinh khả tư thuật tốn, khả đặt tốn tìm tịi phương pháp giải tốn Đồng thời, bước đầu rèn luyện cho học sinh lực phản biện thông qua trình đánh giá chương trình Yêu cầu định hướng nghề nghiệp Một yêu cầu CT2018 tính định hướng nghề nghiệp tương lai cho học sinh phổ thơng Q trình dạy học lập trình cần chọn NNLT phương pháp giảng dạy phù hợp để tạo hứng thú cho học sinh với CNTT, có nghề lập trình viên 1.4 Phân tích lựa chọn ngơn ngữ lập trình phù hợp cho học sinh phổ thơng Tính đơn giản Tính đơn giản đảm bảo NNLT dễ dàng triển khai dạy học lập trình cho học sinh phổ thơng Từ khóa, từ dành riêng NNLT gần với tiếng Anh thông dụng, số lượng từ khóa từ dành riêng vừa đủ Tính phổ biến NNLT cho học sinh phổ thơng cần có cộng đồng người học sử dụng đơng đảo để tạo niềm yêu thích cho học sinh Đồng thời NNLT cung cấp tảng cho phép người học tiến xa lập trình NNLT dễ dàng thực thi nhiều tảng phần cứng IDE khác Tính chuyên nghiệp NNLT cho học sinh phải đảm bảo tính chuyên nghiệp nghĩa học sinh tiếp tục học ứng dụng NNLT bậc học cao nghề nghiệp sau Như vây, NNLT phải hỗ trợ lập trình có cấu trúc hướng đối tượng 1.5 Kết luận chương Trong chương luận văn tiến hành khảo sát thực trạng dạy lập trình cho học sinh phổ thông Việt Nam tổng quan chương trình mơn tin học theo khung chương trình ban hành cải cách năm 2018 6 CHƯƠNG - KHẢO SÁT ĐẶC TRƯNG CƠ BẢN NGƠN NGỮ LẬP TRÌNH PYTHON Chương luận văn khảo sát tổng quan ngơn ngữ lập trình Python vấn đề liên quan Từ luận văn nghiên cứu lựa chọn trình bày nội dung Python phù hợp với học sinh phổ thông Luận văn khảo sát số yêu cầu kỹ thuật đảm bảo hiệu dạy học lập trình Python cho học sinh phổ thơng 2.1 Lịch sử hình thành đặc điểm ngơn ngữ lập trình Python 2.1.1 Lịch sử hình thành Python tác giả Guido van Rossum thai nghén vào năm 1980 Trung tâm Toán học – Tin học (Centrum Wiskunde & Informatica, CWI) Hà Lan Python lần giới thiệu vào năm 1989 thức đời với phiên 0.9.0 vào tháng 2/1991 Phiên Python 3.0 mắt vào ngày 03/12 năm 2008 phát triển dạng phiên 3.x 2.1.2 Đặc điểm ngơn ngữ lập trình Python - Python ngơn ngữ lập trình mã nguồn mở, dễ hiểu, giúp NLT dễ dàng lập trình phù hợp với cho việc phát triển ứng dụng thời gian ngăn - Python ngơn ngữ lập trình đa mẫu hình - Python sử dụng kiểu động dạng kết hợp đếm tham chiếu dọn rác kiểm tra theo chu kì để quản lí nhớ - Python thiết kế để dễ dàng mở rộng - Python có thư viện lớn để hỗ trợ NLT, dễ dàng thực chức lập trình 2.2 Khảo sát yếu tố ngơn ngữ lập trình Python a Bảng chữ từ khóa Trong Python sử dụng bảng chữ tiếng Anh, chữ số thập phân số kí tự khác Điều đặc biệt Python sử dụng bảng mã Unicode nên xử lí tiếng Việt có dấu thuận tiện Python sử dụng số lượng từ khóa khơng nhiều (khoảng 32 từ khóa) Do tạo thuận lợi cho NLT khơng phải nhớ q nhiều b Các kiểu liệu đơn giản chuẩn Trong Python xử lí liệu kiểu số kiểu loogic (bool) Kiểu kí tự khơng xử lí riêng mà coi xâu gồm kí tự c Câu lệnh khối lệnh Trong Python có lệnh đơn lệnh có cấu trúc 7 Các câu lệnh đơn bao gồm phép gán (=), nhập liệu từ bàn phím input() xuất liệu hình print() Thực ép kiểu liệu câu lệnh gán: = () Hình 2.1 mơ tả thơng tin lệnh print() Hình 2.1: Thơng tin chi tiết lệnh print() d Các kiểu liệu có cấu trúc Đối với học sinh phổ thơng, luận văn khuyến nghị dạy cho học sinh phổ thông kiểu liệu có cấu trúc list, string, file e Các hàm Trong Python không mô tả nội dung chương trình (CTC) riêng mà đề cập đến hàm mà NLT tự xây dựng 2.3 Lựa chọn trình bày số nội dung Python phù hợp với học sinh phổ thơng 2.3.1 Nhóm nội dung Các nội dung nhóm nhằm trang bị cho học sinh khái niệm chung NNLT Python, kiểu liệu đơn giản chuẩn câu lệnh + Bảng chữ cái, từ khóa, câu lệnh, khối lệnh Hình 2.2: Tính tổng số chẵn tích số lẻ số tự nhiên < + Chương trình + Đặt tên Python + Hằng biến + Chú thích + Các kiểu liệu đơn giản chuẩn - Kiểu số nguyên: Tên kiểu: int - Kiểu số thực: Tên kiểu: float - Kiểu logic: Tên kiểu: bool + Câu lệnh gán: Dạng lệnh: = + Nhập liệu vào từ bàn phím Dạng lệnh: = input() (1) = (input()) (2) + Xuất liệu hình Dạng lệnh: print() + Các câu lệnh với cấu trúc rẽ nhánh + Câu lệnh if - Dạng lệnh: if : - Câu lệnh if else Dạng lệnh: if : else: - Câu lệnh if elif else Dạng lệnh: if : elif : else: + Các câu lệnh với cấu trúc lặp Câu lệnh while Dạng lệnh: while : Câu lệnh while với else Dạng lệnh: while : else: Câu lệnh for Dạng lệnh: for in : + Hàm range() Dạng lệnh: range(stop) # range(start, stop) # range(start, stop, step) # + Câu lệnh for sử dụng lệnh range() Dạng lệnh: for in range(): Câu lệnh for với else Dạng lệnh: for in : else: Các lệnh break, continue pass Lệnh break: Dạng lệnh: break Cơng dụng: Dừng vịng lặp chứa break Lệnh continue: Dạng lệnh: continue Công dụng: Bỏ qua lệnh khối lệnh lăp sau continue Lệnh pass: Dạng lệnh: pass Công dụng: Dùng để làm dấu nhắc (null), khơng làm 2.3.2 Nhóm nội dung Khái niệm Khai báo danh sách Dạng lệnh khai báo danh sách: Dạng 1: = [] Dạng 2: = [< Liệt kê phần tử phân cách dấu phẩy>] Số thứ tự (index) phần tử danh sách Thông thường, danh sách gồm n phần tử, phần tử đánh số thứ tự (index – mục) từ đầu đến cuối bắt đầu 0, kết thúc n-1 Số thứ tự âm, phần tử cuối có số thứ tự -1, phần tử –n Các thao tác danh sách Phép gán danh sách 10 Dạng lệnh: = Giải thích: gồm phần tử Phép cộng danh sách Dạng lệnh: = + Tính số phần tử có danh sách Dạng lệnh: len() Truy cập phần tử danh sách Truy cập phần tử Dạng lệnh: [] Truy cập nhiều phần tử (lát cắt – slice) Dạng lệnh: [:] Cơng dụng: Truy cập phần tử từ đến -1 Kiểm tra phần tử có thuộc danh sách khơng Dạng lệnh: in Xóa phần tử danh sách Dạng lệnh: del Cơng dụng: Xóa danh sách Các phương thức thực với danh sách append(): Thêm phần tử vào cuối list sort(): Sắp xếp phần tử list theo thứ tự tăng dần sorted(): Cho phép hiển thị danh sách theo thứ tự cụ thể không ảnh hưởng đến thứ tự thực tế danh sách Sử dụng phương thức với danh sách Dạng lệnh: . Làm việc với danh sách kiểu dãy (mảng chiều) Nhập dãy từ bàn phím: Nhập dãy từ bàn phím cách thực nhập phần tử dãy Xuất dãy hình: Xuất dãy hình thực xuất phần tử dãy Làm việc với danh sách kiểu bảng (mảng chiều) Một bảng gồm m hàng đánh số từ đến m-1 Một bảng gồm n cột đánh số từ đến n-1 Truy cập phần tử hàng i, cột j bảng: [i][j] Các yếu tố cần xác định làm việc với bảng gồm Tên bảng; Số lượng hàng cột bảng; Cách khai báo biến bảng Nhập/xuất bảng Khai báo bảng tương tự khai báo danh sách Các bước nhập bảng từ bàn phím: (1) Nhập số m nguyên dương số lượng hàng bảng 11 (2) Nhập số n nguyên dương số lượng cột bảng (3) Khai báo bảng danh sách rỗng: = [] (4) Khi nhập hàng i từ đến m-1 cần thực hiện: (4,1) Nhập phần tử từ đến n-1 để tạo thành dãy hangi (4,2) Bổ sung hangi vào bảng sử dụng phương thức: .append(hangi) Yêu cầu xuất bảng hình: Xuất phần tử bảng theo hàng i từ đến m-1 cột j từ đến n-1 Mỗi hàng bảng in dòng Các bước tạo dãy gồm số phạm vi cho trước (1) Thông báo sử dụng module random: import random (2) Xác định giá trị n số lượng phần tử dãy (3) Xác định phạm vi giá trị phần tử dãy từ gt1 đến gt2 (4) Sử dụng hàm randint(gt1, gt2) để tạo phần tử dãy gồm n số nguyên: x = random.randint(gt1, gt2) (5) Sử dụng hàm uniform(gt1, gt2) để tạo phần tử dãy gồm n số thực: x = random.uniform(gt1, gt2) 2.3.3 Nhóm nội dung Các nội dung nhóm nhằm trang bị cho học sinh thao tác làm việc với kiểu liệu có cấu trúc xâu kí tự (string) Khái niệm Xâu kí tự (string - chuỗi) dãy kí tự bảng mã Unicode, kí tự gọi phần tử xâu Số lượng kí tự xâu gọi độ dài xâu Xâu rỗng có độ dài Hằng xâu xâu kí chứa hai dấu ngoặc kép “ “ hai dấu nháy ‘ ‘ Khi xâu có chứa dấu nháy nên sử dụng hai dấu ngoặc kép để tránh nhầm lẫn Ví dụ: x = “I’m a student” Khai báo xâu kí tự Khai báo xâu kí tự rỗng: = “” Khai báo xâu kí tự có giá trị xâu: = “” Các thao tác xâu kí tự Nhập xâu kí tự từ bàn phím Dạng lệnh: = input() Công dụng: Gán cho kí tự gõ từ bàn phím Xuất xâu kí tự hình Dạng lệnh: print() 12 Cơng dụng: Xuất xâu kí tự hình Lệnh gán xâu dòng: = “” Lệnh gán xâu nhiều dịng: = “”“””” Các phép tốn xâu kí tự Phép ghép xâu Dạng lệnh: str = str1 + str2 Công dụng: Ghép xâu str2 vào sau xâu str1 để nhận xâu str Các xâu str1, str2 xâu biến xâu Hàm xác định chiều dài xâu Dạng hàm: len() Công dụng: Cho giá trị số lượng kí tự Phép so sánh xâu kí tự Một số hàm xử lí xâu kí tự Hàm in: sc in sm Nếu xâu sc chứa xâu sm hàm cho giá trị True Hàm lấy xâu con: sc = sm[::] Xâu sc gồm kí tự xâu mẹ sm bắt đầu , cách Hàm chuyển từ số sang xâu: = str() Số chuyển sang xâu số Hàm chuyển xâu số sx thành giá trị số x: x = int(sx) # Chuyển sang số nguyên x = float(sx) # chuyển sang số thực Một số phương thức xử lí xâu Hàm strip() xóa dấu cách bên trái, bên phải xâu st: = st.strip() Hàm chuyển kí tự in hoa upper(): = .upper() Hàm chuyển kí tự in thường lower(): = .lower() Hàm lề trái ljust(), phải rjust() center(): = .(, ‘ ‘) Trong đó, xâu bổ sung thêm số dấu cách lề tương ứng 2.3.4 Nhóm nội dung Các nội dung nhóm nhằm trang bị cho học sinh thao tác làm việc với kiểu liệu có cấu trúc tệp (file) Khái niệm 13 Tất liệu có kiểu liệu xét lưu trữ nhớ (RAM) liệu bị tắt máy Làm việc với tệp Làm việc với tệp gồm bước : Mở tệp; Đọc ghi liệu; Đóng tệp Ghi liệu tệp Trong Python xử lý liệu dạng chuỗi (xâu kí tự) nên ghi chuỗi tệp Muốn ghi số x tệp cần chuyển x chuỗi: str(x) Mở tệp để ghi Dạng lệnh: = open(, ‘w’) Trong đó, NLT tự đặt Ghi liệu tệp mở Dạng lệnh: .write(s) Trong đó, tệp mở để ghi, s chuỗi Công dụng: Ghi chuỗi s tệp Đóng tệp ghi Dạng lệnh: .close() Trong đó, tệp mở để ghi Cơng dụng: Đóng tệp Đọc liệu từ tệp Mở tệp để đọc Dạng lệnh: = open(, ‘r’) Trong đó, NLT tự đặt Công dụng: Mở tệp văn có tên để đọc chuỗi Đọc liệu từ tệp mở Dạng lệnh: s = .readline() Trong đó, tệp mở để đọc, s biến chuỗi Công dụng: Đọc chuỗi từ tệp gán cho s Đóng tệp đọc Dạng lệnh: .close() Trong đó, tệp mở để đọc Cơng dụng: Đóng tệp Sử dụng lệnh with Có thể sử dụng lệnh with để đồng thời mở tệp, ghi/đọc liêụ đóng tệp Khi sử dụng lệnh with tránh gây lỗi ghi/đọc liệu Sử dụng lệnh with để ghi tệp Dạng lệnh: with open(, 'w') as : 14 .write(s) Sử dụng lệnh with để đọc từ tệp Dạng lệnh: with open(, ‘r') as : s = .readline() 2.3.5 Nhóm nội dung Các nội dung nhóm nhằm trang bị cho học sinh kiến thức để xây dựng sử dụng chương trình Khái niệm Trong Python CTC mô tả dạng hàm (Function) CTC trả giá trị cụ thể gọi CTC dạng hàm Khi CTC phải có lệnh return() CTC khơng trả giá trị cụ thể gọi CTC dạng thủ tục Các thao tác CTC gồm (1) Xây dựng CTC; (2) Sử dụng CTC Khi làm việc với CTC cần quan tâm đến yếu tố sau Từ khóa: def sử dụng để khai báo CTC Tên CTC: Do NLT tự đặt tên biến Danh sách tham số/đối số: tên biến đặt dấu ‘()’ cách dấu ‘,’ Danh sách rỗng Xây dựng chương trình Sử dụng chương trình Biến tồn cục biến địa phương Chương trình đệ quy 2.3.6 Nhóm nội dung Nhóm nội dung xem phần tổng hợp nâng cao để vận dụng lập trình Python giải toán cụ thể Các thuật toán xếp Sắp xếp kiểu lựa chọn (Selection Sort), Sắp xếp kiểu xen vào (Insertion Sort) Sắp xếp kiểu bọt (Bubble Sort), Sắp xếp nhanh (Quick Sort) 2.4 Giải pháp cơng nghệ bảo đảm dạy lập trình Python cho học sinh phổ thông 2.4.1 Yêu cầu phần mềm cài đặt Python Mơi trường tích hợp dùng để phát triển (IDE - Integrated Development Environment) đóng vai trị quan trọng trình NLT viết chương trình Python nhanh chóng hiệu Hiện có nhiều IDE cho lập trình Python phù hợp với nhiều đối tượng khác 15 Luận văn đề xuất sử dụng IDLE Python (Python's Integrated Development and Learning Environment) để dạy lập trình cho học sinh phổ thơng Hình 2.3 mơ tả cửa sổ thực trực tiếp câu lệnh IDLE Python Hình 2.3: Cửa sổ thực câu lệnh trực tiếp IDLE Python Hình 2.4 mơ tả cửa sổ soạn thảo chạy chương trình IDLE Python Hình 2.4: Cửa sổ soạn thảo thực chương trình IDLE Python 2.4.2 u cầu phịng máy tính (1) Về số lượng máy tính: (2) Cấu hình máy tính: (3) Cài đặt phần mềm: Các máy tính phịng máy cần cài đặt sẵn IDLE Python thường xuyên cập nhật để tránh bị lỗi 2.4.3 Giải pháp ứng dụng E-Learning 2.5 Kết luận chương Trong chương luận văn trình bày tổng quan lịch sử hình thành đặc điểm ngơn ngữ lập trình Python, tiến hành khảo sát các yếu tố hính ngơn ngữ lập trình Python Trên sở đó, luận văn đề xuất lựa chọn trình bày nội dung dạy lập trình Python phù hợp cho học sinh phổ thơng 16 CHƯƠNG - XÂY DỰNG HỆ THỐNG BÀI TẬP LẬP TRÌNH CHO HỌC SINH PHỔ THƠNG Chương luận văn khảo sát yêu cầu hệ thống tập lập trình cho học sinh phổ thơng nhằm hỗ trợ rèn luyện kỹ lập trình Từ luận văn nghiên cứu, xây dựng hệ thống tập lập trình Python, đề xuất phương pháp hướng dẫn học sinh giải tập, phương pháp đánh giá chương trình Python học sinh khảo sát vấn đề liên quan 3.1 Các yêu cầu hệ thống tập lập trình cho học sinh phổ thơng Hệ thống tập lập trình Python cho học sinh cần đảm bảo yêu cầu tính khoa học tính sư phạm [3] 3.1.1 Các yêu cầu tính khoa học Luận văn đề xuất số yêu cầu tính khoa học hệ thống tập cần xây dựng 3.1.2 Các yêu cầu tính sư phạm Do đối tượng sử dụng hệ thống tập giáo viên học sinh phổ thông nên xây dựng hệ thống tập cần đảm bảo yêu cầu tính sư phạm 3.2 Xây dựng hệ thống tập lập trình Python Hệ thống lập trình Python xây dựng gồm 100 tập, phân chia thành phần Do giới hạn số trang luận văn, hệ thống tập trình bày chi tiết phần phụ lục Trong mục này, luận văn trình bày tổng quan hệ thống tập xây dựng Phần 1: Các tập mở đầu Phần bao gồm 20 tập đánh số từ 1.1 đến 1.20 Yêu cầu cần đạt học sinh viết câu lệnh thực câu lệnh cho kết phù hợp Từ giúp học sinh bước đầu làm quen với việc tập hợp câu lệnh để tạo thành chương trình hồn chỉnh Phần 2: Các tập danh sách, danh sách kiểu dãy kiểu bảng Phần bao gồm 12 tập đánh số từ 2.1 đến 2.12 Các tập mục hỗ trợ học sinh nắm vững kiến thức nhóm nội dung liệu có cấu trúc dạng danh sách (list) với hai dạng cụ thể kiểu dãy (mảng chiều) kiểu bảng (mảng hai chiều Phần 3: Các tập xâu kí tự Phần bao gồm tập đánh số từ 3.1 đến 3.8 Các tập mục hỗ trợ học sinh nắm vững kiến thức nhóm nội dung liệu có cấu trúc dạng xâu kí tự (string) Các tập phần giúp học sinh rèn luyện kỹ làm 17 việc với xâu kí tự đếm kí tự, đếm từ, tách số Yêu cầu cần đạt học sinh viết câu lệnh để tạo thành chương trình hồn chỉnh chạy kết phù hợp Phần 4: Các tập liệu có cấu trúc kiểu tệp Phần bao gồm 10 tập đánh số từ 4.1 đến 4.10 Các tập mục hỗ trợ học sinh nắm vững kiến thức nhóm nội dung liệu có cấu trúc dạng tệp (file) Các tập phần giúp học sinh rèn luyện kỹ làm việc với têp nhập/xuất liệu theo khuôn dạng cho trước Đồng thời tập yêu cầu học sinh vận dụng kiến thức học phần trước để lập trình Yêu cầu cần đạt học sinh viết chương trình xuất, nhập liệu tệp theo khuôn dạng qui định Phần 5: Các tập chương trình Phần bao gồm 10 tập đánh số từ 5.1 đến 5.10 Các tập mục hỗ trợ học sinh nắm vững kiến thức nhóm nội dung chương trình Đây nội dung khó học sinh học lập trình Vì thế, số tập mục yêu cầu học sinh sử dụng lại chương trình có giải tập phần để viết thành CTC Phần 6: Các tập tổng hợp nâng cao Phần bao gồm 40 tập đánh số từ 6.1 đến 6.40 Các tập mục Hỗ trợ học sinh nắm vững kiến thức nhóm nội dung xếp tìm kiếm liệu Đồng thời tập mục giúp học sinh tổng hợp kiến thức Python thuật toán đơn giản để giải toán Tin học Mục cung cấp cho học sinh tài liệu để rèn luyện chuẩn bị cho kỳ thi học sinh giỏi Tin học trẻ cấp Học sinh khuyến khích giải nhiều tập mục tốt 3.3 Hướng dẫn sử dụng hệ thống tập 3.3.1 Phương pháp hướng dẫn học sinh giải tập Các bước giải tập máy tính [3]: Bước 1: Xác định toán Xác định toán làm rõ Input/Output tốn cho Trong đó: Input: Xác định đại lượng vào (đã cho) thuộc tính chúng Output: Xác định đại lượng (cần tìm) thuộc tính chúng Bước 2: Lựa chọn thiết kế thuật toán 18 Trước hết cần tìm ý tưởng biến đổi Input thành Output tốn Từ đó, thiết kế thuật tốn phù hợp thời gian thực hiện, tài nguyên máy cần có, … Nếu có nhiều thuật tốn để giải tốn lựa chọn thuật tốn hiệu phù hợp với ngữ cảnh người sử dụng theo tiêu chí: Thời gian thực ngắn, Sử dụng nhớ, Thuật tốn dễ hiểu, phức tạp, Tốn tài ngun Bước 3: Viết chương trình Sử dụng câu lệnh phù hợp để viết chương trình Python phù hợp thuật tốn thiết kế Học sinh tiến hành theo hai giai đoạn Bước 4: Hiệu chỉnh đánh giá Sau viết xong chương trình cần kiểm thử chương trình để phát lỗi khắc phục Quá trình gọi hiệu chỉnh đánh giá chương trình Trong mục thực chi tiết hướng dẫn giải số tập hệ thống xây dựng tập trung vào ba bước 1, Bước khảo sát mục Ví dụ 3.1 (Bài tâp 1.10 - Phụ lục): Nhập vào từ bàn phím số ngun dương n khơng vượt q 10 Xuất hình số lượng ước nguyên dương n Ví dụ 3.2 (Bài tâp 2.5 - Phụ lục): Nhập vào từ bàn phím số nguyên dương n không vượt 10 Sử dụng module random, tạo dãy gồm n số nguyên có giá trị tuyệt đối khơng vượt q 10 Xuất hình giá trị maxa mind dòng tương ứng giá trị lớn số âm giá trị nhỏ số dương dãy Nếu khơng tìm max ghi số thay Ví dụ 3.3 (Bài tâp 2.12 - Phụ lục): Nhập vào từ bàn phím số nguyên dương n khơng vượt q 30 Xuất hình bảng số gồm n hàng n cột cho từ trái sang phải, từ xuống dưới, từ phải sang trái từ lên nhận dãy số tự nhiên theo thứ tự tăng từ đến n Ví dụ 3.4 (Bài tâp 3.3 - Phụ lục): Nhập vào bàn phím xâu kí tự s Xuất hình số lượng chữ số có s Ví dụ 3.5 (Bài tâp 4.8 - Phụ lục): Đọc số nguyên dương m phần tử dãy a[] gồm n số nguyên dương cho tệp MOD.INP: - Dòng đầu chứa hai số nguyên dương m n không vượt 105; - Dòng sau chứa n số nguyên dương, số không vượt 109 19 Ghi tệp MOD.OUT: - Dòng đầu ghi số d giá trị lớn số dư phép chia phần tử dãy a[] cho m - Dòng sau ghi phần tử dãy a[] có số dư chia cho m d Ví dụ 3.6 (Bài tâp 5.3 - Phụ lục): Viết chương trình ucln(a, b) tìm ước chung lớn hai số nguyên dương a, b sử dụng thuật tốn Euclid Ví dụ 3.7 (Bài tâp 5.8 - Phụ lục): Có n tầng tháp khác đặt cọc Cần chuyển n tầng tháp sang cọc với điều kiện: (1) Mỗi lần chuyển tầng tháp; (2) Không đặt tầng tháp lớn tầng tháp nhỏ; (3) Được sử dụng cọc để đặt tầng tháp Tìm cách chuyển tháp với số lần chuyển tháp thỏa mãn tốn Nhập vào từ bàn phím số nguyên dương n (n 20) Ghi tệp THAP.OUT gồm số dòng, dòng lần chuyển tháp từ cọc a sang cọc b dạng: a ‘Move’ b Ví dụ 3.8 (Bài tâp 6.25 - Phụ lục): 6.25 Dãy số (Thời gian chạy chương trình ≤ giây) Cho dãy (A) gồm n số nguyên dương a1, a2, , an Yêu cầu: Tìm số nguyên dương nhỏ m khơng có mặt dãy (A) Dữ liệu: Vào từ tệp NN.INP: - Dòng đầu chứa số nguyên dương n, n ≤ 106; - Dòng chứa n số nguyên dương không vượt 109 Kết : Ghi tệp NN.OUT số m tìm Ví dụ : NN.INP NN.OUT Giải thích Số ngun dương nhỏ khơng có mặt dãy 4 Ví dụ 3.9 (Bài tâp 6.40 - Phụ lục): 6.40 Xâu lại (Thời gian chạy chương trình ≤ giây) Cho bảng ô vuông gồm n hàng n cột Tại mỗi ô bảng người ta viết chữ in hoa chữ từ A đến Z Từ bảng cho, người ta chọn m xâu theo quy tắc: chọn xâu cần phải xóa tất chữ bảng thuộc xâu Các chữ lại bảng viết thành xâu s có thứ tự từ điển nhỏ 20 Yêu cầu: Tìm xâu s Dữ liệu: Vào từ tệp XAU.INP: - Dòng đầu chứa hai số nguyên dương n, m, số khơng vượt q 1000 - Trong n dịng tiếp theo, dòng chứa n chữ in hoa phạm vi từ A đến Z - Trong m dòng tiếp theo, dòng chứa xâu gồm chữ phạm vi từ A đến Z có độ dài khơng vượt q 200 Biết xâu chọn từ bảng cho Kết : Ghi tệp văn XAU.OUT: - Dòng đầu ghi số k số lượng chữ lại bảng - Trong trường hợp k > 0, dịng thứ hai ghi xâu s tìm 3.3.2 Phương pháp đánh giá tập lập trình học sinh Phương pháp đánh giá lời giải tập lập trình học sinh đóng vai trị quan trọng trình hướng dẫn học sinh học lập trình Python Mục đích đánh đánh giá nhằm giúp giáo viên nắm mức độ tiếp thu kiến thức lập trình, lỗi cịn gặp chương trình Từ giáo viên có kế hoạch trợ giúp học sinh lập trình tốt Mặt khác, trình đánh giá tập lập trình học sinh cịn điểm học sinh theo qui định Bộ Giáo dục Đào tạo môn Tin học Hai phương pháp đánh giá thường sử dụng phương pháp đánh giá trực tiếp phương pháp đánh giá tự động Phương pháp đánh giá trực tiếp giáo viên kiểm tra trực tiếp câu lệnh chương trình học sinh Khi thực đánh giá trực tiếp, giáo viên yêu cầu học sinh thực trực tiếp câu lệnh Trên sở đó, giáo viên phân tích cho học sinh thấy rõ tính đúng, tính hiệu câu lệnh toàn chương trình Xét ví dụ 3.1 Ngồi lời giải trình bày, học sinh phạm lỗi sau: Lỗi 1: Học sinh thực vịng lặp for while phạm vi từ đến n Điều dẫn đến thời gian thực chương trình lớn n đủ lớn Do đó, lời giải học sinh khơng đảm bảo tính hiệu chương trình Lỗi 2: Học sinh cài đặt chương trình qn trường hợp đặc biệt n số phương n = m2 Khi cặp ước nguyên dương (m, m) tính thay tính cặp ước khác Do đó, lời giải học sinh khơng đảm bảo tính chương trình Phương pháp đánh giá trực tiếp sử dụng đánh giá lời giải tập lập trình học sinh phần 1, 2, 3, Bài tập lập trình Python 21 Phương pháp đánh giá tự động giáo viên đánh giá chương trình học sinh phần mềm chấm tự động qua Test mẫu Để thực phương pháp đánh giá tự động giáo viên cần tiến hành sau: Bước 1: Giáo viên xây dựng Test mẫu bao quát hết kịch xảy tương ứng trường hợp khác tốn Trong lưu ý đến trường hợp đặc biệt liệu vào kích cỡ chúng Điều đảm bảo đánh giá tính tính hiệu chương trình Bước 2: Giáo viên sử dụng phần mềm chấm tự động để chấm điểm chương trình học sinh thơng qua Test mẫu xây dựng Giáo viên thực phân tích kết chấm tự động để sửa lỗi có học sinh Phương pháp đánh giá tự động sử dụng đánh giá lời giải tập lập trình học sinh phần 4, Bài tập lập trình Python Trong tập pần nên đánh giá tự động Từ thực tế, luận văn khuyến nghị: - Khi xây dựng Test mẫu giáo viên nên sử dụng module random Python để tạo ngẫu nhiên test Trong Test mẫu, số lượng Test khó nên chiếm khoảng 20% - Phần mềm chấm tự động nên lựa chọn phần mềm Themis hai tác giả Lê Minh Hồng Đỗ Đức Đơng Đây phần mềm miễn phí thường sử dụng chấm thi kỳ thi học sinh giỏi Tin học Phần mềm Themis tải link: https://drive.google.com/file/d/1hz_QkTicnB7pHoR4M51fL5LMLucMU38l/view 3.4 Kết luận chương Trong chương luận văn khảo sát yêu cầu hệ thống tập lập trình cho học sinh phổ thơng nhằm hỗ trợ rèn luyện kỹ lập trình Luận văn xây dựng hệ thống tập lập trình Python gồm 100 tập chia thành phần phù hợp với tiến trình dạy học lập trình 22 KẾT LUẬN Các kết đạt luận văn: - Luận văn khảo sát thực trạng dạy lập trình cho học sinh phổ thông Việt Nam tổng quan chương trình mơn tin học theo khung chương trình ban hành cải cách năm 2018 - Trên sở khảo sát yêu cầu dạy lập trình học sinh phổ thơng, luận văn phân tích lựa chọn ngơn ngữ Python để dạy lập trình cho học sinh phổ thơng - Luận văn khảo sát lịch sử hình thành, đặc điểm yếu tố ngơn ngữ lập trình Python - Luận văn phân tích lựa chọn tiến hành trình bày số nội dung ngơn ngữ Python dạng nhóm nội dung phù hợp với học sinh phổ thông - Luận văn khảo sát yêu cầu kỹ thuật đảm bảo tính hiệu trình dạy lập trình Python cho học sinh phổ thông - Luận văn nghiên cứu tổng quan yêu cầu hệ thống tập lập trình Python cho học sinh phổ thơng - Luận văn xây dựng hệ thống tập lập trình Python gồm 100 tập, chia thành phần phù hợp với học sinh phổ thông - Luận văn nghiên cứu đề xuất phương pháp hướng dẫn học sinh giải tập lập trình Python hai phương pháp đánh giá chương trình Python học sinh phương pháp đánh giá trực tiếp phương pháp đánh giá tự động Tuy nhiên, hạn chế mặt thời gian, luận văn chưa triển khai thử nghiệm đầy đủ tồn diện q trình sử dụng hệ thống tập xây dựng dạy lập trình Python cho học sinh phổ thơng Hướng phát triển tiếp theo: Luận văn thực thử nghiệm sử dụng hệ thống tập lập trình Python dạy lập trình cho học sinh phổ thơng Trên sở đó, tiếp tục hồn thiện hệ thống tập để trở thành tài liệu tốt hỗ trợ dạy học lập trình trường phổ thông 23 DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt [1] Bộ Giáo dục đào tạo (2018) – ”Chương trình giáo dục phổ thơng – Mơn tin học” Ban hành kèm theo Thông tư số 32/2018/TT-BGDĐT, ngày 26 tháng 12 năm 2018 Bộ trưởng Bộ Giáo dục Đào tạo [2] Bùi Việt Hà (2017) – ”Python bản” [3] Nguyễn Bá Kim, Lê Khắc Thành (2006) – “Phương pháp dạy học đại cương môn Tin học”, Nhà xuất Đại học sư phạm, Hà Nội, 2006 Tiếng Anh [4] Albert Sweigart (2015) - "Invent Your Own Computer Games with Python" [5] Allen B Downey (2015) – “Think Python” [6] Martin Jones (2013) – “A Programming Course for Beginners” [7] Zed A Shaw (2016) – “ Learn Python the Hard Way”, Addison-Wesley, 2016 Trang WEB [8] https://vi.wikipedia.org/wiki [9] https://www.coursera.org/learn/python [10] https://www.python.org ... có tên ? ?Nghiên cứu xây dựng hệ thống tập lập trình Python cho học sinh phổ thông? ?? Mục tiêu luận văn nghiên cứu sở lý thuyết thực tế để xây dựng hệ thống tập lập trình Python cho học sinh phổ thơng... dụng hệ thống tập giáo viên học sinh phổ thông nên xây dựng hệ thống tập cần đảm bảo yêu cầu tính sư phạm 3.2 Xây dựng hệ thống tập lập trình Python Hệ thống lập trình Python xây dựng gồm 100 tập, ... yêu cầu hệ thống tập lập trình Python cho học sinh phổ thông - Luận văn xây dựng hệ thống tập lập trình Python gồm 100 tập, chia thành phần phù hợp với học sinh phổ thông - Luận văn nghiên cứu đề