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

(SKKN 2022) Dạy học ngôn ngữ lập trình Python Phần cấu trúc danh sách trong chương trình Tin học 11

28 39 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 đề (SKKN 2022) Dạy học ngôn ngữ lập trình Python Phần cấu trúc danh sách trong chương trình Tin học 11
Trường học Trường Trung học phổ thông (THPT)
Chuyên ngành Tin học
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 28
Dung lượng 888 KB

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

Nội dung

Mảng là một phần cơ bản của tất cả các ngôn ngữ lập trình, nó là tập hợp cácphần tử của một kiểu dữ liệu duy nhất.. Xuất phát từ những lý do trên tôi lựa chọn đề tài nghiên cứu “Dạy học

Trang 1

MỤC LỤC

phần cấu trúc mảng trong chương trình tin học 11 32.3 Các sáng kiến kinh nghiệm đã sử dụng để giải quyết

vấn đề

2.3.1.Các khái niệm kiểu danh sách(List)

2.3.2 Các phép toán trên danh sách

2.3.3 Các thao tác trên danh sách (list)

2.3.4 Thao tác nhập xuất dữ liệu cho danh sách

Tài liệu tham khảo

Danh mục SKKN đã được hội đồng SKKN ngành giáo

dục và đào tạo huyện, tỉnh và các cấp cao hơn xếp loại

từ C trở lên

2627

Trang 2

1 MỞ ĐẦU

1.1 Lý do chọn đề tài

Trải qua hơn 15 năm Bộ Giáo dục và Đào tạo đưa môn Tin học trở thànhmôn học bắt buộc cho khối THPT, mặc dù đã thu được những kết quả rất khả quan,song cũng còn nhiều bất cập làm môn học chưa đáp ứng được yêu cầu mà Bộ Giáodục và Đào tạo đã đề ra Đặc biệt, cho đến nay, khi CNTT là một ngành phát triểnrất nhanh và mạnh mẽ, thì chương trình môn Tin học THPT đã trở lên lạc hậu,không còn phù hợp cả về nội dung và công nghệ Do vậy đổi mới, cải tiến chươngtrình môn Tin học là một việc làm rất cần thiết

Cụ thể trong chương trình Tin học 11 hiện nay đang dạy về lập trình và ngônngữ lập trình bậc cao, và sử dụng ngôn ngữ lập trình Pascal để viết chương trìnhminh hoạ là chính Tuy nhiên ngôn ngữ này hiện nay đã quá cũ, không có tính thựctiễn, nặng về lý thuyết, một số nội dung vượt chuẩn kiến thức kỹ năng, không phùhợp với trình độ nhận thức và tâm lý lứa tuổi của học sinh

Trong thực tế hiện nay có nhiều ngôn ngữ lập trình bậc cao như C/C++,Python…, với những ưu điểm nổi trội như: Cú pháp đơn giản, tốc độ xử lý nhanh,chế độ tương tác cho phép người lập trình thử nghiệm tương tác sửa lỗi của cácđoạn mã, biên dịch và chạy trên hầu hết các nền tảng hiện nay, …,được nhiềungười dùng để phát triển website và các ứng dụng khác nhau, ngoài ra chúng còn làngôn ngữ được lựa chọn để giảng dạy trong trường học

Mảng là một phần cơ bản của tất cả các ngôn ngữ lập trình, nó là tập hợp cácphần tử của một kiểu dữ liệu duy nhất Không giống như mảng, mỗi danh sách(list) trong NNLT Python có thể lưu trữ phần tử với bất kỳ kiểu dữ liệu nào và làmđược mọi thứ mà mảng có thể làm Chúng ta có thể lưu trữ số nguyên, số thậpphân, chuỗi trong cùng một danh sách Vì thế, làm việc với danh sách khá linhhoạt Tuy nhiên, trong Python không có cấu trúc dữ liệu mảng gốc Vì vậy, chúng

ta sử dụng danh sách thay cho mảng

Xuất phát từ những lý do trên tôi lựa chọn đề tài nghiên cứu “Dạy học ngôn ngữ lập trình Python -phần cấu trúc danh sách trong chương trình tin học 11” Mục đích là dùng cấu trúc danh sách trong ngôn ngữ lập trình Python thay thế cho

cấu trúc mảng trong ngôn ngữ lập Pascal của chương trình tin học 11 hiện tại Hivọng đây sẽ đề tài bổ sung thêm tài liệu cho học sinh và giáo viên ở các trường

Trang 3

- Giới thiệu các dạng bài tập và câu hỏi ôn tập về nội dung cấu trúc danhsách trong ngôn ngữ lập trình Python.

1.3 Đối tượng nghiên cứu

- Tổng quan có chọn lọc những kiến thức cơ bản về cấu trúc danh sách trongngôn ngữ lập trình Python để giảng dạy

- Xây dựng hệ thống câu hỏi và bài tập gắn phù hợp với trình độ Tin học 11nhằm phục vụ kiểm tra - đánh giá học sinh

1.4 Phương pháp nghiên cứu

- Phương pháp nghiên cứu lý luận nhằm thu thập thông tin lý luận để xâydựng cơ sở lý luận của đề tài

- Phương pháp nghiên cứu thực tiễn nhằm thu thập các thông tin để xây dựngnội dung của đề tài: phương pháp nghiên cứu các sản phẩm hoạt động, lấy ý kiếnchuyên gia,…

1.5 Những điểm mới nhất của sáng kiến kinh nghiệm

- Cung cấp những kiến thức về cấu trúc danh sách bằng ngôn ngữ lập trìnhPython phù hợp với năng lực và trình độ học sinh khối 11

- Hình thành các câu hỏi trắc nghiệm ở các mức độ khác nhau để gây hứngthú học tập cho học sinh

Trang 4

lý tưởng để viết script (kịch bản) và phát triển ứng dụng trong nhiều lĩnh vực, ở hầuhết các nền tảng.

Mảng là một phần cơ bản của tất cả các ngôn ngữ lập trình, nó là tập hợp cácphần tử của một kiểu dữ liệu duy nhất Tuy nhiên, trong Python, không có cấu trúc

dữ liệu mảng gốc, nó có các cấu trúc dữ liệu phức hợp như: Danh sách (List), Tậphợp (Set), Tuple hay từ điển (Dictionary) Đây là các kiểu dữ liệu phức hợp là tậphợp của nhiều dữ liệu cơ bản Nó có một ý nghĩa rất lớn trong các ngôn ngữ lậptrình nói chung và Python nói riêng Bởi nó cung cấp khả năng làm việc trên tập dữliệu chứ không chỉ là các dữ liệu đơn lẻ

Danh sách trong Python là kiểu dữ liệu tuần tự, cho phép lưu trữ nhiều kiểu

dữ liệu khác nhau trong nó, và có thể truy xuất đến các phần tử bên trong nó thôngqua vị trí của phần tử đó trong danh sách Vì vậy có thể coi mảng trong Pascal cónhiều điểm tương đồng với danh sách trong Python

Trang 5

trình Tin học 11 năm 2006 Ngôn ngữ lập trình tùy chọn được sử dụng là để thểhiện các ví dụ minh họa và là công cụ ngôn ngữ để học sinh thực hành viết đượcnhững chương trình đơn giản.Trên tinh thần loại bỏ Pascal khỏi chương trình Tinhọc 11, Các cơ sở giáo dục có thể lựa chọn giảng dạy các ngôn ngữ lập trình có tínhcập nhật, hiện đại, được dạy trong trường phổ thông nhiều nước như Python, C, C++…

2.2 Thực trạng của việc dạy học ngôn ngữ lập trình và phần cấu trúc mảng trong chương trình tin học 11

- Những năm học trước dạy học cấu trúc mảng của ngôn ngữ lập trình

Pascal, chúng ta đã biết Pascal được chọn sử dụng để dạy ngôn ngữ lập trình chohọc sinh phổ thông vì 30 năm trước nó không có đối thủ về mặt diễn tả thuật toánmột cách trong sáng Tuy nhiên, hơn 15 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

- SGK Tin học 11 trình bày các yếu tố đặc trưng riêng về Pascal quá sâu,không cần thiết Ngoài ra một số nội dung về Pascal gây quá tải cho dạy và học,nặng về lí thuyết và vượt chuẩn kiến thức kỹ năng, một số nội dung không phù hợpvới trình độ nhận thức và tâm sinh lý lứa tuổi học sinh

2.3 Các sáng kiến kinh nghiệm đã sử dụng để giải quyết vấn đề

2.3.1.Các khái niệm kiểu danh sách(List)

- Danh sách (List) trong Python là một tập hợp các phần tử, mà mỗi phần tử

có kiểu dữ liệu giống nhau hoặc khác nhau

- Khai báo một danh sách như sau:

ds3=[1,”xin chào”, 4.5] #Danh sách hỗn hợp gồm 3 phần tử

ds4=[“Nhớ”,“Hà Nội”,“Hoa sữa”] #Danh sách các chuỗi kí tự, gồm 3 phần tử

Trang 6

ds5=[“Máy tính”, [1,2],[“a”]] #Danh sách hỗn hợp gồm 3 phần tử.

Để truy cập tới một phần tử trong danh sách, ta dùng cú pháp sau:

<biến danh sách>[chỉ số của phần tử đó]

Trong đó các phần tử trong danh sách được đánh chỉ số 0,1,2 từ trái quaphải và -1,-2,-3, từ phải qua trái

Chú ý : Nếu truy cập vào chỉ số không tồn taijtrong danh sách trình thông

dịch sẽ báo lỗi IndexError :list index out of range

Trang 7

2.3.2 Các phép toán trên danh sách

a Nối (ghép) danh sách và lặp danh sách

* Nối (ghép) danh sách : ký hiệu dấu +

<biến danh sách 1>+<biến danh sách 2>+…….+<biến danh sách n>

Kết quả trả về danh sách gồm <biến danh sách 1>, <biến danh sách 2>,

…,<biến danh sách n> là các phần tử được ghép liên tiếp nhau

Trang 9

c Phép toán Min, Max trong danh sách

2.3.3 Các thao tác trên danh sách (list)

a Lấy số lượng phần tử trong danh sách:

Trang 10

c Lấy các phần tử liên tiếp trong danh sách

Dạng 1 : <biến danh sách>[a :b]

=> Trả về danh sách gồm các phần tử có chỉ số từ a đến chỉ số b-1 trong

<biến danh sách>

Trang 11

Dạng 3 : <biến danh sách>[ a:]

=> Trả về danh sách gồm các phần tử có chỉ số từ a đến hết trong <biến danhsách>

Như vậy <biến danh sách>[ a:]== <biến danh sách>[ a:n]

Trong đó: n=len(<biến danh sách>)

Trong đó: n=len(<biến danh sách>)

Trang 12

Dạng 2 : <biến danh sách>.extend(list)

=>Nối danh sách list vào <biến danh sách>

Trang 13

Sự khác nhau giữa hai phương thức append() và extend() thông qua ví dụsau :

Kết quả :

Như vậy ds2.append(ds3) nghĩa là thêm danh sách <ds3> vào danh sách

<ds2> như một phần tử của danh sách <ds2>

ds1.extend(ds3) thêm các phần tử của danh sách <ds3> vào danh sách <ds2>

e Cách thay đổi giá trị của một phần tử trong danh sách

<biến danh sách>[chỉ số]=giá trị mới

<biến danh sách>.index(x)

=> Trả về chỉ số của phần tử đầu tiên trong <biến danh sách> có giá trị bằngx

Trang 14

<biến danh sách>.copy()

=>trả về bản sao của <biến danh sách>

Trang 15

<biến danh sách>.count(x)

=>trả về số lần xuất hiện của phần tử x trong <biến danh sách>

ds=[1,4,3,4,9,8,10]

print(ds.count(4))

=> 2

i Thủ tục insert()

<biến danh sách>.insert(n,x)

=>Đây là thủ tục để thêm một phần tử x vào vị trí n trong <biến danh sách>

<biến danh sách>.sort()

=>thực hiện sắp xếp các phần tử của <biến danh sách> tăng dần

Trang 16

l Hàm reverse()

<biến danh sách> reverse()

=>thực hiện đảo ngược vị trí xuất hiện các phần tử trong <biến danh sách>

<biến danh sách> remove(x)

=>thực hiện xóa phần tử x xuất hiện đầu tiên trong <biến danh sách>

del <biến danh sách>[chỉ số]

=>thực hiện xóa phần tử có [chỉ số] trong <biến danh sách>

Trang 17

2.3.4 Thao tác nhập xuất dữ liệu cho danh sách

a Thao tác nhập dữ liệu từ bàn phím cho các phần tử cùng kiểu trong danh sách

<biến danh sách>=[<kiểu>(<biến chạy>) for <biến chạy> in input().split()]

Trong đó:

 split() dùng để cắt chuỗi

 <biến danh sách>, <biến chạy>) được đặt theo quy tắc đặt tên biến

 <kiểu> là kiểu int hoặc float

Với cách này khi nhập dữ liệu từ bàn phím cho danh sách thì các phần tửngăn cách nhau bởi ít nhất một dấu cách, và kết thúc nhập bằng enter

Ví dụ :

Kết quả là :

Trang 18

b Dùng hàm append để nhập các phần tử cùng kiểu cho danh sách.

Kết quả là :

Trang 19

c Dùng phép toán ghép danh sách để tạo danh sách là các phần tử cùng kiểu.

d Đưa danh sách ra màn hình

for i in ds :

print(i)

2.3.5 Một số ví dụ

Ví dụ 1 Tìm phần tử lớn nhất của dãy số nguyên

Input: Số nguyên dương N (N  250) và dãy N số nguyên dương a 1 , a 1 , ,

a n , mỗi số đều không vượt quá 500.

Output: Chỉ số và giá trị của phần tử lớn nhất trong dãy số đã cho (nếu có nhiều phần tử lớn nhất chỉ cần đưa ra một trong số chúng).

Trang 20

Kết quả

Ví dụ 2 Sắp xếp dãy số nguyên bằng thuật toán tráo đổi

Input: Số nguyên dương N (N  250) và dãy N số nguyên dương a 1 , a 1 , ,

a n , mỗi số đều không vượt quá 500.

Output: Dãy số A đã được sắp xếp thành dãy không giảm.

Trang 22

Kết quả :

Trang 23

2.3.6 Một số bài tập luyện tập.

a Các câu hỏi trắc nghiệm

Câu 1 :Kiểu dữ liệu danh sách là gì ?

A Là tập hợp các phần tử của một kiểu dữ liệu hoặc nhiều kiểu dữ liệu.

B Là một phần không câng thiết của tất cả các ngôn ngữ lập trình.

C Là tên cho biến, hàm trong NNLT Python

D Là đoạn lệnh dùng để lặp lại một khối lệnh khi điều kiện kiểm tra là đúng Câu 2 :Kết quả đầu ra của đoạn lệnh dưới đây là gì ?

ds=[1,5,9,int(”0 ”)]

print(sum(ds))

Câu 3 : Kết quả đầu ra của đoạn lệnh dưới đây là gì ?

Câu 6 : Kết quả đầu ra của đoạn lệnh dưới đây là gì ?

ds=[”Bơi ”,”Võ ”, ”Bóng chuyền ”, ”Cầu lông ”, ”Xe đạp ” ]

x=len(ds)

print(”Độ dài của danh sách ds là ”,x)

Trang 24

Câu 7 : Kết quả đầu ra của đoạn lệnh dưới đây là gì ?

ds=[”Bơi ”,”Võ ”, ”Bóng chuyền ”, ”Cầu lông ”, ”Xe đạp ” ]

Bóng chuyền Bóng chuyền Bóng chuyền

Cầu lông Cầu lông

Xe đạp

Câu 8 : Trong NNLT Python sắp xếp các phần tử trong danh sách theo thứ tự tăng

dần thì sử dụng phương thức nào :

Câu 9: Trong NNLT Python, phương thức dùng để thêm phần tử vào cuối danh

sách là :

Câu 10: Trong NNLT Python, hàm dùng để trả về độ dài của danh sách là :

Câu 11: Trong NNLT Python, để xoá tất cả các phần tử có trong danh sách thì sử

dụng phương thức nào :

Câu 12 : Cho khai báo danh sách sau :

a=list(”3456789 ”

Để in giá trị phần tử thứ 2 của danh ra màn hình ta viết :

A print(a[2]) B print(a[1]) C print(a(2)) D print(a(1))

b Bài tập thực hành

Nhập vào một dãy n số nguyên a Đọc ra màn hình các thông tin sau :

1 Tổng các phần tử của dãy

2 Số lượng các số hạng dương và tổng của các số hạng dương

3 Trung bình cộng của cả dãy Trung bình cộng các phần tử dương của List.Trung bình cộng các phần tử âm của List

4 Số hạng âm lớn nhất của dãy và chỉ số của nó

5 Số hạng dương nhỏ nhất của dãy và chỉ số của nó

6 Số lượng các số hạng dương liên tiếp có tổng lớn nhất

7 Đoạn con có các số hạng dương liên tiếp có tổng lớn nhất (nếu có nhiềuđoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó)

8 Số lượng các phần tử bằng giá trị X (nguyên) cho trước

9 Số lượng các phần tử >= giá trị X (nguyên) cho trước

Trang 25

2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục

Trên cơ sở nghiên cứu và hoàn thành biện pháp, tôi đã tiến hành áp dụngbiện pháp này tại trường THPT chuyên Lam Sơn, kết quả thu được cụ thể như sau:

- Góp phần đổi mới nội dung, phương pháp và hình thức tổ chức dạy họcmôn Tin học, tạo ra sự tương tác đa chiều: GV – HS, HS – HS

- Thông qua việc quan sát, tôi nhận thấy các em học sinh rất say mê và hứngthú trong học tập

- Phát huy phẩm chất và năng lực về tư duy, tìm tòi, sáng tạo của học sinh

Trang 26

3 KẾT LUẬN VÀ ĐỀ NGHỊ

Sau thời gian học tập và nghiên cứu tôi đã hoàn thành SKKN “Dạy học ngôn ngữ lập trình Python -phần cấu trúc danh sách trong chương trình tin học 11” Nội dung của SKKN nhằm mục đích cung cấp các kiến thức cơ bản về

cấu trúc danh sách trong ngôn ngữ lập trình Python, chuyển nội dung phần cấu trúcmảng của ngôn ngữ lập trình Pascal trong chương trình sách giáo khoa Tin học 11hiện tại, thành cấu trúc danh sách của ngôn ngữ lập trình Python Đồng thời đưa racác dạng bài tập và câu hỏi ôn tập về nội dung cấu trúc danh sách trong ngôn ngữlập trình Python

Tuy nhiên, do thời lượng học tập trên lớp ít, tài liệu học tập không có nhiềunên việc triển khai dạy học lập trình các ứng dụng trong thực tế và các bài toánnâng cao còn hạn chế

Trong thời gian tới tôi sẽ cố gắng hoàn thiện chương trình tốt hơn, để tiếp tụctiến hành giảng dạy cho khóa học tiếp theo

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

XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ Thanh Hóa, ngày 6 tháng 5 năm 2022

Tôi xin cam đoan SKKN này không sao sao chép nội dung của người khác.

Nguyễn Thị Huyền

Trang 27

Tài liệu tham khảo

1 Python rất là cơ bản của Võ Duy Tuấn

2 Đồ án tốt nghiệp: “Tìm hiểu ngôn ngữ lâp trình Python, viết chương trình thửnghiệm dự báo sự biến động của giá chứng khoán” của SV Lê Gia Tiến trường Đại học quản lý và công nghệ Hải Phòng

Trang 28

DANH MỤC SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC HỘI ĐỐNG SÁNG KIẾN

KINH NGHIỆM NGÀNH GIÁO DỤC VÀ ĐÀO TẠO HUYỆN, TỈNH VÀ

CÁC CẤP CAO HƠN XẾP LOẠI TỪ C TRỞ LÊN

Họ và tên tác giả: Nguyễn Thị Huyền

Chức vụ và đơn vị công tác: Giáo viên trường trung học phổ thông chuyên Lam Sơn

loại (ngành GD

cấp huyện/tỉnh;Tỉnh )

Kết quả đánh giá xếp loại

(A,B, hoặc C)

Năm học đánh giá xếp loại

1 Một số giải pháp nâng cao

chất lượng dạy học hệ điều

hành thuộc chương II-Tin

3 Thuật toán Tìm Kiếm nhị

phân trong bồi dưỡng học

sinh giỏi cấp Tỉnh môn Tin

học

Hội đồng KHGD

Ngày đăng: 05/06/2022, 10:05

HÌNH ẢNH LIÊN QUAN

d. Đưa danh sách ra màn hình - (SKKN 2022) Dạy học ngôn ngữ lập trình Python Phần cấu trúc danh sách trong chương trình Tin học 11
d. Đưa danh sách ra màn hình (Trang 19)

TỪ KHÓA LIÊN QUAN

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

w