1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(SKKN 2022) CÁCH đơn GIẢN để ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, sử DỤNG TRONG VIỆC mô PHỎNG cấu TRÚC lập TRÌNH để GIÚP học SINH HIỂU sâu cấu TRÚC lập TRÌNH NGAY TRÊN lớp học

25 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cách đơn giản để định giá biểu thức trong Python, sử dụng trong việc mô phỏng cấu trúc lập trình để giúp học sinh hiểu sâu cấu trúc lập trình ngay trên lớp học
Tác giả Phạm Quang Thắng
Trường học Trường THPT Mai Anh Tuấn
Chuyên ngành Tin học
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2021
Thành phố Thanh Hóa
Định dạng
Số trang 25
Dung lượng 190,35 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

SỞ GD&ĐT THANH HÓATRƯỜNG THPT MAI ANH TUẤN SÁNG KIẾN KINH NGHIỆM Tên đề tài: CÁCH ĐƠN GIẢN ĐỂ ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, SỬ DỤNG TRONG VIỆC MÔ PHỎNG CẤU TRÚC LẬP TRÌNH ĐỂ GIÚP HỌC

Trang 1

SỞ GD&ĐT THANH HÓA

TRƯỜNG THPT MAI ANH TUẤN

SÁNG KIẾN KINH NGHIỆM

Tên đề tài:

CÁCH ĐƠN GIẢN ĐỂ ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, SỬ DỤNG TRONG VIỆC MÔ PHỎNG CẤU TRÚC LẬP TRÌNH ĐỂ GIÚP HỌC SINH HIỂU SÂU CẤU TRÚC LẬP TRÌNH NGAY TRÊN LỚP

Trang 2

MỤC LỤC

A ĐẶT VẤN ĐỀ 3

I.LỜI MỞ ĐẦU 3

II- MỤC ĐÍCH NGHIÊN CỨU: 3

III- NHIỆM VỤ NGHIÊN CỨU: 3

1 Nhiệm vụ một: 3

2 Nhiệm vụ hai: 4

3 Nhiệm vụ ba: 4

IV-PHƯƠNG PHÁP NGHIÊN CỨU: 4

V-ĐỊA ĐIỂM NGHIÊN CỨU VÀ ÁP DỤNG ĐỀ TÀI: 4

VI-ĐÓNG GÓP CỦA ĐỀ TÀI 4

B NỘI DUNG 5

I- CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ NGHIÊN CỨU: 5

1- Cơ sở lý luận 5

2- Cơ sở thực tiễn 5

II-VẤN ĐỀ LUYỆN THI HSG MÔN TIN HỌC NHÀ CỦA TRƯỜNG 5

1 Những thuận lợi và khó khăn trong công tác luyện thi học sinh giỏi bộ môn tin học 5

2 Nội dung 6

2.1 Ý tưởng chung: 6

2.2 Thiết kế một số chương trình con thực hiện tô màu, đặt đường viền, chọn Font chữ, In mảng 6

*Chương trình tạo đường viền cho ô 6

*Chương trình tô màu Cell 7

*Chương trình tô màu chữ 8

*Chương trình tạo màu chữ, tạo khung, chọn màu cho ô 8

*Chương trình in mảng trước và sau khi thực hiện thuật toán với các tùy chọn đã được quy định trước 8

*Một số chương trình con thực hiện tráo đổi biến, reset trang tính về mặc định 8

2.3.Chương trình mô phỏng thuật toán 9

2.3.1.Thuật toán sắp xếp 9

*Thuật toán sắp xếp nổi bọt 9

*Thuật toán sắp xếp Quick sort 11

2.3.2.Thuật toán tìm kiếm: 13

*Thuật toán tìm kiếm tuần tự 13

* Thuật toán tìm kiếm nhị phân 14

2.3.3.Thuật toán sàng nguyên tố 17

2.4 Một số hình ảnh mô phỏng khi chạy chương trình và cách thực hiện chương trình mô phỏng 19

2.4.1 Thuật toán sắp xếp 19

2.4.2 Thuật toán tìm kiếm 21

2.4.3 Thuật toán sàng nguyên tố 22

C - KẾT LUẬN 24

I- Kết quả nghiên cứu: 24

II- KIẾN NGHỊ ĐỀ XUẤT: 24

Trang 3

A ĐẶT VẤN ĐỀ I.LỜI MỞ ĐẦU

Hiện nay trong vấn đề luyện thi học sinh giỏi môn tin học cấp trung học phổthông, mà cụ thể là ngôn ngữ lập trình pascal thuộc chương trình tin học 11, chươngtrình tin học 11 sách giáo khoa chỉ cung cấp một số kiểu dữ liệu và một số các thuậttoán cơ bản Đối với các em học sinh việc tiếp cận với NNLT là một vấn đề khó, việctiếp thu và hiểu các thuật toán cơ bản lại là một việc khó hơn rất nhiều Bởi vậy việclàm như thế nào để giúp các em học sinh đặc biệt là học sinh đội tuyển hiểu cặn kẽ vềcác thuật toán cơ bản là một vấn đề mà tất cả các giáo viên đứng đội tuyển thườngtrăn trở, trong những SKKN trước cá nhân tôi đã trình bày về cách mô phỏng thuậttoán dùng VBA trên Powerpoint, tuy nhiên đối với các thuật toán sử dụng mảng 1chiều, 2 chiều một cách đơn giản hơn ta có thể sử dụng VBA trên Excel để đơn giảnquá trình mô phỏng, bởi vì vốn dĩ mỗi ô của bảng tính chính là một phần tử của mảng

Tôi chọn đề tài: “CÁCH ĐƠN GIẢN ĐỂ ĐỊNH GIÁ BIỂU THỨC TRONG

PYTHON, SỬ DỤNG TRONG VIỆC MÔ PHỎNG CẤU TRÚC LẬP TRÌNH

ĐỂ GIÚP HỌC SINH HIỂU SÂU CẤU TRÚC LẬP TRÌNH NGAY TRÊN LỚP HỌC” để giúp các em có thể tiếp cận các thuật toán tốt hơn, và hiểu được các thuật

toán sử dụng kiểu dữ liệu mảng 1 chiều, 2 chiều Giúp cho các giáo viên trung họcphổ thông làm nhiệm vụ như tôi có thêm một tư liệu để tham khảo Trên cơ sở đócùng nghiên cứu và phát triển rộng hơn các chuyên đề về luyện thi học sinh gỏi cấptrung học phổ thông

II- MỤC ĐÍCH NGHIÊN CỨU:

- Để làm tốt công tác luyện thi học sinh giỏi môn tin học cấp trung học phổthông

- Về nội dung: Mô phỏng một số thuật toán cơ bản sử dụng VBA trên Excel

III- NHIỆM VỤ NGHIÊN CỨU:

Trang 4

2 Nhiệm vụ hai:

Mô phỏng một số thuật toán trên cơ sở các chương trình con đã được xây dựng

3 Nhiệm vụ ba:

Một số ý kiến đề xuất

IV-PHƯƠNG PHÁP NGHIÊN CỨU:

- Kinh nghiệm giáo dục của bản thân trong quá trình giảng dạy, luyện thi họcsinh giỏi môn tin học

- Trao đổi với các chuyên môn với đồng nghiệp

- Nghiên cứu tài liệu liên quan

V-ĐỊA ĐIỂM NGHIÊN CỨU VÀ ÁP DỤNG ĐỀ TÀI:

- Trường THPT Mai Anh Tuấn

VI-ĐÓNG GÓP CỦA ĐỀ TÀI

Góp phần làm phong phú thêm tư liệu luyện thi học sinh giỏi môn tin học củacác trường THPT tỉnh Thanh Hóa

Trang 5

B NỘI DUNG I- CƠ SỞ LÝ LUẬN CỦA VẤN ĐỀ NGHIÊN CỨU:

1- Cơ sở lý luận

- Một số cấu trúc lập trình như: Biểu thức, câu lệnh gán, cấu trúc rẽ nhánh,

cấu trúc lặp,là tiền đề cho việc nghiên cứu các thuật toán nâng cao hơn.

2- Cơ sở thực tiễn.

- Đối với các em học sinh việc bước đầu tiếp thu các kiến thức về thuật toán cơbản là vô cùng khó khan, việc tường minh các bước thuật toán sẽ giúp các em hiểusâu sắc thuật toán và có tiền đề cho việc nghiên cứu các thuật toán nâng cao sau này

II-VẤN ĐỀ LUYỆN THI HSG MÔN TIN HỌC NHÀ CỦA TRƯỜNG.

1 Những thuận lợi và khó khăn trong công tác luyện thi học sinh giỏi bộ môn tin học.

*Khó khăn:

- Đa số các em mới được làm quen với tin học, đặc biệt về học lập trình

PASCAL các em mới chỉ thực sự tiếp xúc từ đầu năm lớp 11 Việc nắm bắt các thuậttoán khó nằm ngoài sách giáo khoa là một việc rất khó do kiến thức của các em đangcòn rất hạn chế

- Bộ môn tin học được coi là môn phụ nên việc tiến hành giảng dạy cho đội

tuyển thường phải học vào ca tối Do đó không thuận tiện cho học sinh trong vấn đề

Trang 6

2 Nội dung

2.1 Ý tưởng chung: Phần mềm bảng tính điện tử Microsoft Excel sử dụng các

hàng, các cột Giao nhau giữa các hàng và cột ta có các ô (Cells) Bản thân Cells là một đối tượng có các thuộc tính cơ bản như:

+ Giá trị trong ô (cell value)

+ Màu ô (Cell color)

+ Đườn viền quanh ô ( Cell boder)

+ Font chữ trong ô ( Cell font)

*Chương trình tạo đường viền cho ô.

Sub createFrame(row, col As Long)

Cells(row, col).Borders(xlDiagonalDown).LineStyle = xlNone

Cells(row, col).Borders(xlDiagonalUp).LineStyle = xlNone

With Cells(row, col).Borders(xlEdgeLeft)

LineStyle = xlContinuous

ColorIndex = xlAutomatic

TintAndShade = 0

Weight = xlThin

Trang 7

Cells(row, col).Borders(xlInsideVertical).LineStyle = xlNone

Cells(row, col).Borders(xlInsideHorizontal).LineStyle = xlNone

End Sub

*Chương trình tô màu Cell.

Sub fillColorCell(row, col, clr As Long)

With Cells(row, col).Interior

Pattern = xlSolid

PatternColorIndex = xlAutomatic .color = clr

.TintAndShade = 0 PatternTintAndShade = 0 End With

End Sub

Trang 8

*Chương trình tô màu chữ.

Sub fillColorWord(row, col, clr As Long)

With Cells(row, col).Font

color = clr

TintAndShade = 0

End With

End Sub

*Chương trình tạo màu chữ, tạo khung, chọn màu cho ô.

Sub FormatCell(row, i As Long, value)

Trang 9

2.3.Chương trình mô phỏng thuật toán.

Quy ước dùng trong lập trình mô phỏng:

+ Các phần tử thỏa mãn yêu cầu bài toán sẽ được tô màu vàng hoặc màu xanhlá

Một số chương trình mô phỏng bài toán như sau:

Trang 10

Dim arrayResult As Variant

Dim i, j, row, vbtemp As Long

If IsEmpty(arrayInput) = True Then Exit Sub

If lLower = -1 Then lLower = LBound(arrayInput, 1)

If lUpper = -1 Then lUpper = UBound(arrayInput, 1)

For j = (i + 1) To lUpper Step 1

If (arrayResult(i) > arrayResult(j)) Then

Cells(row, i + 4) = "|" & str(i + 1) & "|" & str(j + 1) & "|"

Call Library.Swap(arrayResult(i), arrayResult(j))

Call Library.FormatCell(row, i + 5, arrayResult(i))

Call Library.FormatCell(row, j + 5, arrayResult(j))

row = row + 1

End If

Trang 11

*Thuật toán sắp xếp Quick sort.

Private Sub QuickSort(ByRef arrayInput As Variant, ByVal low As Long, ByValhigh As Long)

Dim pi As Long

If (low < high) Then

pi = Partition(arrayInput, low, high)

Call QuickSort(arrayInput, low, pi - 1)

Call QuickSort(arrayInput, pi + 1, high)

While (left <= right)

If (left > high) Then

Trang 12

Call Library.Swap(arrayInput(left), arrayInput(right))

Cells(row, 4) = "|" & left + 1 & "|" & right + 1 & "|"

Call Library.FormatCell(row, left + 5, arrayInput(left))

Call Library.FormatCell(row, right + 5, arrayInput(right))

row = row + 1

left = left + 1

right = right - 1

Loop

Call Library.Swap(arrayInput(left), arrayInput(high))

Cells(row, 4) = "|" & left + 1 & "|" & high + 1 & "|"

Call Library.FormatCell(row, left + 5, arrayInput(left))

Call Library.FormatCell(row, high + 5, arrayInput(high))

Call Library.printArray(arrayInput, arrayColor, row + 1, 5)

row = row + 3

Partition = left

End Function

Trang 13

2.3.2.Thuật toán tìm kiếm:

Thuật toán tìm kiếm điển hình được dùng để mô phỏng là: Tìm kiếm tuần tự; Tìm kiếm nhị phân.

*Thuật toán tìm kiếm tuần tự.

Trang 14

Dim i, j, typeArray As Long

Dim arrayValueInput As Variant

Trang 15

Dim privot, i As Long

If left = right Then

Trang 17

Call Library.printArray(arrayInput, arrayColor, row, LBound(arrayInput) + 5) row = row + 2

Call BinarySearch(arrayInput, x, privot + 1, right, typeArray)

2.3.3.Thuật toán sàng nguyên tố.

Public arrayColor() As Long

Public arrayCheck(150) As Boolean

Public x As Long

Public row As Long

Public Const maxValue = 149

Trang 19

Các bước thực hiện chương trình:

Bước 1: Nhập giá trị đầu vào cho bài toán.

- Tại ô B6 ta nhập giá trị cho các phần tử của mảng Mỗi phần tử của mảng

phần cách nhau bởi ký tự “;”.

Bước 2: Đưa thiết lập các ô trong bảng tính dùng trong việc mô phỏng thuật toán về

mặc định bằng cách nháy chuột vào nút lệnh

trên sheet(“Sắp xếp”)

Bước 3: Thực hiện chức năng mô phỏng thuật toán:

+ Nháy chuột vào nút lệnh nếu muốn môphỏng thuật toán sắp xếp nổi bọt

Hình ảnh mô phỏng với dãy A: 9;8;7;4;3;2;1

Và kết quả sắp xếp và mô phỏng như sau:

Trang 20

+ Nháy chuột vào nút lệnh nếu muốn môphỏng thuật toán sắp xếp quick sort.

Hình ảnh mô phỏng với dãy A: 9;8;7;4;3;2;1

Và kết quả sắp xếp và mô phỏng như sau:

Trang 21

2.4.2 Thuật toán tìm kiếm.

Bước 1: Nhập giá trị đầu vào cho bài toán.

- Tại ô B6 ta nhập giá trị cho các phần tử của mảng Mỗi phần tử của mảng

phần cách nhau bởi ký tự “;”.

- Nhập giá trị cho khóa tìm kiếm tại ô “B7”

Bước 2: Đưa thiết lập các ô trong bảng tính dùng trong việc mô phỏng thuật toán về

mặc định bằng cách nháy chuột vào nút lệnh

trên sheet(“Tìm kiếm”)

Bước 3: Thực hiện chức năng mô phỏng thuật toán:

+ Nháy chuột vào nút lệnh nếu muốn môphỏng thuật toán tìm kiếm tuần tự

Hình ảnh mô phỏng với dãy A: 1;2;3;4;5;6;8;9;10;11 và khóa K = 10

Và kết quả mô phỏng thuật toán như sau (vị trí tìm thấy được tô màu xanh lá):

Trang 22

+ Nháy chuột vào nút lệnh nếu muốn môphỏng thuật toán tìm kiếm tuần tự.

Hình ảnh mô phỏng với dãy A: 1;2;3;4;5;6;8;9;10;11 và khóa K = 10

Và kết quả mô phỏng thuật toán như sau (vị trí tìm thấy được tô màu xanh lá):

2.4.3 Thuật toán sàng nguyên tố.

- Thuật toán mô phỏng chạy với N lớn nhất là 150

Bước 1: Nhập giá trị cần kiểm tra nguyên tố.

hiện thuật toán và kiểm tra

Hình ảnh mô phỏng với giá trị X cần kiểm tra là 149:

Trang 23

Kết quả: X=149 là số nguyên tố.

Hình ảnh mô phỏng với giá trị X cần kiểm tra là 148:

Kết quả X=148 không là số nguyên tố

Do thời gian có hạn, cá nhân tôi không xây dựng kịp thêm một số các thuậttoán cơ bản khác Tôi sẽ xây dựng thêm các giải thuật cơ bản tại địa chỉ:

https://1drv.ms/u/s!AplRVRhD64SEaaEEjQ033gown1Q?e=cg6sGP

Mong rằng sẽ nhận được ý kiến đóng góp xây dựng từ quý bạn đồng nghiệp để tôi cóthể xây dựng chương trình mô phỏng tốt hơn

Trang 24

C - KẾT LUẬN

I- Kết quả nghiên cứu:

Qua quá trình dạy đội tuyển học sinh giỏi môn tin học THPT từ năm 2008 chotới nay Tôi đã tiến hành dạy qua các năm:

Năm 2009: Vấn đề mô phỏng thuật toán đang sử dụng phương pháp thuyết trình.

Các em khó hình dung về hoạt động của thuật toán Nên vì đó kết quả không cao lắm.Kết quả: 1 giải khuyến khích

Năm 2010 trở đi: Bước đầu mô phỏng các thuật toán sử dụng VBA trên Power

point, và VBA trên Excel Các bước xây dựng mô phỏng cũng tiết kiệm được thờigian công sức và chủ động hơn trong ý đồ muốn đưa ra cho học sinh

Kết quả:

Năm 2010: 1 giải ba, 1 giải khuyến khích

Năm 2011: Hai giải ba

Năm 2013: 1 giải ba

Năm 2021: 1 giải ba

Mặc dù kết quả qua các năm chưa được cao Đó là đặc thù của các trường THPT.Các em có rất ít thời gian học tập môn tin học vì phải chuyên tâm vào việc học tập cácmôn Toán, Lý, Hóa Việc học tập môn tin học phải tiến hành vào ca tối Vì vậy nếucác em được tiếp thu đầy đủ các chuyên đề lập trình nâng cao thì kết quả sẽ cao hơnrất nhiều

II- KIẾN NGHỊ ĐỀ XUẤT:

Qua quá trình giảng dạy đội tuyển học sinh giỏi từ năm 2009 đến nay Rút ra từkinh nghiệm bản thân tôi có một số đề xuất sau:

- Nên có hệ thống chuyên đề luyện thi học sinh giỏi cho giáo viên có nguồn

tư liệu tham khảo

- Hệ thống đề thi học sinh giỏi không nên vượt quá xa chương trình THPT

- Tổ chức các chuyên đề bồi dưỡng cho giáo viên Vì đa số giáo viên đềuchưa được đào tạo bài bản về các chuyên đề lập trình nâng cao

Trang 25

- Chương trình mới luyện thi học sinh giỏi sử dụng C++ hoặc phython Bảnthan đa số giáo viên chưa hiểu sâu về các NNLT này Nên sở Giáo dục cần có nhữnglớp tập huấn về các NNLT mới này Để đa số giáo viên đang có lối tư duy kiểu NNLTtruyền thống sẽ dễ dàng tiếp thu về lối tư duy lập trình hiện đại ngày nay.

Tôi xin cam đoan sáng kiến kinh nghiệm này là của tôi, nếu không phải tôi xinhoàn toàn chịu trách nhiệm

Tôi xin chân thành cảm ơn!

Xác nhận của hiệu trưởng

Nga sơn, ngày 23 tháng 05 năm 2021 Người thực hiện

Phạm Quang Thắng

Ngày đăng: 06/06/2022, 07:41

HÌNH ẢNH LIÊN QUAN

Hình ảnh mô phỏng với dãy A: 9;8;7;4;3;2;1 Và kết quả sắp xếp và mô phỏng như sau: - (SKKN 2022) CÁCH đơn GIẢN để ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, sử DỤNG TRONG VIỆC mô PHỎNG cấu TRÚC lập TRÌNH để GIÚP học SINH HIỂU sâu cấu TRÚC lập TRÌNH NGAY TRÊN lớp học
nh ảnh mô phỏng với dãy A: 9;8;7;4;3;2;1 Và kết quả sắp xếp và mô phỏng như sau: (Trang 20)
Bước 2: Đưa thiết lập cá cô trong bảng tính dùng trong việc mô phỏng thuật toán về mặc   định   bằng   cách   nháy   chuột   vào   nút   lệnh - (SKKN 2022) CÁCH đơn GIẢN để ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, sử DỤNG TRONG VIỆC mô PHỎNG cấu TRÚC lập TRÌNH để GIÚP học SINH HIỂU sâu cấu TRÚC lập TRÌNH NGAY TRÊN lớp học
c 2: Đưa thiết lập cá cô trong bảng tính dùng trong việc mô phỏng thuật toán về mặc định bằng cách nháy chuột vào nút lệnh (Trang 21)
Hình ảnh mô phỏng với giá trị X cần kiểm tra là 149: - (SKKN 2022) CÁCH đơn GIẢN để ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, sử DỤNG TRONG VIỆC mô PHỎNG cấu TRÚC lập TRÌNH để GIÚP học SINH HIỂU sâu cấu TRÚC lập TRÌNH NGAY TRÊN lớp học
nh ảnh mô phỏng với giá trị X cần kiểm tra là 149: (Trang 22)
Hình ảnh mô phỏng với dãy A: 1;2;3;4;5;6;8;9;10;11 và khóa K= 10 - (SKKN 2022) CÁCH đơn GIẢN để ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, sử DỤNG TRONG VIỆC mô PHỎNG cấu TRÚC lập TRÌNH để GIÚP học SINH HIỂU sâu cấu TRÚC lập TRÌNH NGAY TRÊN lớp học
nh ảnh mô phỏng với dãy A: 1;2;3;4;5;6;8;9;10;11 và khóa K= 10 (Trang 22)
Hình ảnh mô phỏng với giá trị X cần kiểm tra là 148: - (SKKN 2022) CÁCH đơn GIẢN để ĐỊNH GIÁ BIỂU THỨC TRONG PYTHON, sử DỤNG TRONG VIỆC mô PHỎNG cấu TRÚC lập TRÌNH để GIÚP học SINH HIỂU sâu cấu TRÚC lập TRÌNH NGAY TRÊN lớp học
nh ảnh mô phỏng với giá trị X cần kiểm tra là 148: (Trang 23)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w