Sáng kiến kinh nghiệm Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++

I. CƠ SỞ LÝ LUẬN:

Để giải quyết các bài toán về mảng một cách tối ưu, học sinh phải biết khái

niệm về mảng một chiều, các thuật toán thông dụng trên mảng; Học sinh phải có

kỹ năng nhận dạng bài toán khi được phát biểu dưới nhiều dạng khác nhau và lựa

chọn thuật toán thích hợp để giải quyết.

II. THỰC TRẠNG CỦA VẤN ĐỀ:

Môn Tin học khá mới, việc tổ chức thi HSG tỉnh cho các trường THPT

không chuyên khoảng mười lăm năm trở lại đây. Nên đối với giáo viên việc tìm

tòi, học tập, nghiên cứu để nâng cao trình độ gặp rất nhiều khó khăn. Hầu hết, đội

ngũ giáo viên của các trường không chuyên đều quen với ngôn ngữ lập trình

Pascal, chưa mạnh dạn chuyển sang dạy ngôn ngữ C + + và Python bởi vì không

quen và chương trình mắc lỗi không biết khắc phục. Vì vậy, trong quá trình tập

huấn về ngôn ngữ lập trình C++ của sở Giáo dục Nghệ An, tự nghiên cứu về ngôn

ngữ lập trình Python tôi luôn trăn trở và tích cực trao đổi kinh nghiệm, thảo luận về

nội dung, phương pháp, kỹ thuật với đồng nghiệp cùng trường và một số ở trường

khác trong khu vực. Chúng tôi đều có nhận xét về những khó khăn khi dạy học và

bồi dưỡng học sinh giỏi bộ môn Tin học như sau:

- Tài liệu viết về C++, Python rất nhiều nhưng khi đi vào giải quyết những

bài toán cụ thể thường hay mắc lỗi và không biết cách xử lý.

- Cú pháp câu lệnh và hàm trong C++ , Python khác so với Pascal.

- Chưa hiểu hết các thư viện trong C++, Python.

- Tài liệu về bộ môn Tin học để bồi dưỡng HSG không nhiều, đặc biệt

chương trình chuẩn về C++ , Python rất hiếm cho nên việc tìm kiếm tài liệu dạy

học phù hợp trình độ học sinh rất vất vả.

- Hệ thống bài tập ít ỏi, rời rạc nên việc tổng hợp bài tập và đề thi thành các

dạng bài tập phục vụ dạy học mất rất nhiều thời gian.

- Các đề thi Tin học thường không có đáp án. Giáo viên và học sinh muốn

trao đổi với các bạn trường chuyên thì gặp trở ngại về ngôn ngữ lập trình. Thực tế,

qua các kỳ thi HSG tỉnh Nghệ An đã có rất nhiều học sinh, giáo viên khó hiểu khi

bài thi làm đúng nhưng điểm thi vẫn rất thấp và sự khó hiểu đó vẫn cứ kéo dài do

đáp án tham khảo và test chấm không được công bố.

pdf43 trang | Chia sẻ: thuydung3ka2 | Ngày: 04/03/2022 | Lượt xem: 2007 | Lượt tải: 6Download
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ng cấp tính năng quản lý bộ 
nhớ tự động, được gọi là bộ thu gom rác. C ++ không có tính năng như vậy và tất 
cả việc quản lý bộ nhớ diễn ra theo cách thủ công. 
Vậy trong cách sử dụng mảng một chiều trên C++và Python có gì khác nhau? 
- Thứ nhất, trong C++ khi khai báo mảng là ta phải khai báo luôn kích thước của 
mảng còn trong Python không yêu cầu khai báo kích thước mảng. 
Ví dụ: Khai báo mảng một chiều trong C++: float A[100];hệ thống phải cấp phát 
100 ô nhớ sẵn 
- Thứ hai, trong C++ mảng là các phần tử cùng kiều còn trong Python các phần tử 
khác kiểu. 
Ví dụ: Trong C++: int A[100]; 
 bool C[50]; 
 Trong Python: A=[1,3,4,7,3] 
 B=[1,4.5, “Việt Nam”,[1,2,3]] 
- Thứ ba, Cách tham chiếu đến phần tử mảng trên Python mở rộng hơn C++, ngoài 
cách tham chiếu giống trong C++ theo cú pháp: Biến mảng[chỉ số]. Python còn sử 
dụng thêm cấu trúc tham chiếu sau: 
>>> A=[2,3,5.6,"Việt Nam",'true'] 
>>> A[:2] # tham chiếu đến các phần tử trước 2 
[2, 3] 
>>> A[2:] # tham chiếu đến các phần tử sau 2 
[5.6, 'Việt Nam', 'true'] 
>>> A[-2]# tham chiếu đến phần tử - 2 
'Việt Nam' 
- Thứ tư, Trong Python có nhiều hàm có sẵn mà C++ không có. 
Ví dụ: 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
27 
+) Hàm max() tìm giá trị lớn nhất của mảng 
 A=[9,5,9,6,8,4,8,9,3] 
Print(max(A)) #Cho giá trị là 9 
Print(min(A)) # Cho giá trị là 2 
Prin(A.count(9)) # Cho giá trị là 3 
- Thứ năm, trong C ++ cần dấu ngoặc nhọn và dấu chấm phẩy để hoạt động. 
Python chủ yếu phụ thuộc vào thụt đầu dòng lệnh. 
- Thứ sau, cấu trúc trong C++ phức tạp còn Python đơn giản, dễ dùng hơn. Code 
trong C++ có thể chuyển sang code trên Python dễ dàng hơn 
 Để tìm hiểu mỗi lên hệ giữa Python và C++,chúng ta cùng xét một số bài 
toán sau: 
4.2. Bài toán áp dụng 
Bài toán1: Tìm phần tử lớn nhất của dãy số nguyên 
Viết chương trình nhập số nguyên dương N (N  250) và dãy N số nguyên 
dương a1, a2 ,..., aN, mỗi số đều không vượt quá 500. 
Yêu cầu: Tìm giá trị lớn nhất dãy A. 
Dữ liệu vào: 
- Dòng đầu tiên chứa một số tự nhiên N (N < 250) 
- N dòng tiếp theo, mỗi dòng chứa một số tự nhiên là một phần tử của dãy A. 
Dữ liệu ra: - Dòng 1: Ghi giá trị lớn nhất dãy A. 
Ví dụ: 
*) Phân tích và ý tưởng giải quyết bài toán: 
- Chọn maxA=A[0] 
- Duyệt A[1..n] so sánh maxA với A[i] để tìm giá trị lớn nhất 
 Nếu A[i]>maxA thì maxA=A[i] 
Thuật toán này có thể thực hiện trên C++ và Python 
Dữ liệu vào Dữ liệu ra 
10 
7 4 7 6 9 8 5 9 6 8 
9 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
28 
*) Chương trình trong ngôn ngữ Python 
*) Chương trình trong ngôn ngữ C++ 
Đối với Python chúng ta có thể dùng hàm max có sẵn, chương trình ngắn 
gọn hơn rất nhiều.Chương trình minh họa: 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
29 
Bài toán 2:Tìm giá trị lớn thứ 2 
Viết chương trình nhập số nguyên dương N (N  250) và dãy N số nguyên 
dương a1, a2 ,..., aN, mỗi số đều không vượt quá 1000. 
Yêu cầu: Tìm giá trị lớn thứ 2 trong dãy A. 
Dữ liệu vào: 
- Dòng đầu tiên chứa một số tự nhiên N (N < 250) 
- N dòng tiếp theo, mỗi dòng chứa một số tự nhiên là một phần tử của dãy A. 
Dữ liệu ra: - Dòng 1: Ghi giá trị lớn hai trong dãy A. 
Ví dụ: 
*) Phân tích và ý tưởng giải quyết bài toán: 
Gọi số lớn nhất trong mảng là max1, số lớn thứ hai trong mảng là max2. 
i) So sánh phần tử thứ nhất A[0] với phần tử thứ hai A[1] trong mảng A. Phần tử 
nào có giá trị lớn hơn là max1, phần tử còn lại là max2 
ii) Từ phần tử thứ 3 trở đi. Với mỗi A[i] (i từ 2 đến n) xảy ra các trường hợp sau: 
* TH1: max2<max1<A[i] 
gán Max1 bằng A[i] và thay giá trị Max2 bằng Max1 
* TH2: max2<A[i]<max1 
gán Max2 bằng A[i] 
* TH3: A[i]<max2 <max1 (các trường hợp còn lại) 
Dữ liệu vào Dữ liệu ra 
10 
7 4 7 6 9 8 5 9 6 8 
8 
Max2 Max1 A[i
] 
Max2 Max1 A[i] 
Max2 Max1 A[i] 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
30 
Bỏ qua (không làm gì) 
*) Chương trình tham khảo trên Python 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
31 
*) Chương trình tham khảo trên C++ 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
32 
Bài toán 3: Đếm chữ số 
Cho dãy n số nguyên dương A [ 1...n ] và một chữ số k. Hãy đếm số lần xuất 
hiện chữ số k trong dãy A đã cho. 
Ví dụ: 
Với dãy A [] = { 11, 12, 13, 14, 15 } và k = 1 thì có 6 lần xuất hiện chữ số 1 
trong dãy A 
Đầu liệu vào: 
 Dòng đầu tiên của đầu vào chứ số nguyên T cho biết số bộ dữ liệu cần kiểm 
tra. Mỗi bộ dữ liệu gồm: 
• Dòng đầu chứa lần lượt 2 số nguyên n và k là số phần tử trong dãy A [] và 
chữ số k(1 ≤ n ≤ 100 ; 0 ≤ k ≤ 9) ; 
• Dòng thứ 2 chứa n số nguyên cách nhau một dấu cách, mô tả các phần tử 
của dãy A(1 ≤ A [ i ] ≤ 1000 ( i = 1....n )) 
Đầu liệu ra 
Ứng với mỗi bộ dữ liệu. Chương trình của bạn cần in ra một dòng chứa kết 
quả của bài toán tương ứng với bộ dữ liệu đầu vào đó. 
Ví dụ 
Dữ liệu vào Dữ liệu ra 
5 2 
22 32 42 56 22 
6 
*) Phân tích và ý tưởng giải quyết bài toán 
- Viết hàm đếm chữ số bằng k của một số 
- Duyệt từ đầu dãy đến cuối dãy để đếm số chữ số bằng k của dãy A 
*) Chương trình tham khảo trên Python 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
33 
*) Chương trình tham khảo trên ngôn ngữ C++ 
Bài toán 4. TRÒ CHƠI CON SỐ MAY MẮN. 
(Đề thi HSG lớp 11 – Tỉnh Nghệ An – Năm học 2012-2013) 
Nhân dịp lễ giáng sinh, công viên trung tâm tổ chức trò chơi "Con số may 
mắn". Mỗi em nhỏ đến tham dự sẽ được phát một số nguyên dương. Công viên có 
một thiết bị quay số, mỗi lần quay sẽ tạo ngẫu nhiên một số nguyên dương không 
vượt quá 104. Người dẫn chương trình sẽ thực hiện N lần quay số. Số nào xuất hiện 
nhiều nhất trong N lần quay được gọi là con số may mắn và em nhỏ nào có con số 
may mắn thì sẽ được phần thưởng (có thể có nhiều con số may mắn). 
Yêu cầu: Cho N con số xuất hiện trong N lần quay. Bạn hãy giúp người dẫn 
chương trình xác định số lần xuất hiện của con số may mắn. 
Dữ liệu vào: 
- Dòng đầu là số N (1 <N <104). 
- Dòng tiếp theo có N số là các số xuất hiện trong N lần quay (các số trên cùng một 
dòng cách nhau một dấu cách). 
Dữ liệu ra: Chỉ một con số duy nhất là số lần xuất hiện của con số may mắn. 
Ví dụ: 
Dữ liệu vào Dữ liệu ra 
10 
4 3 4 4 15 5 4 5 3 
4 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
34 
*) Phân tích và ý tưởng giải quyết bài toán: 
Bản chất bài toán là tìm tần suất xuất hiện nhiều nhất của các số trong dãy. 
+) Thuật toán trên ngôn ngữ C++ 
Ta sử dụng kỹ thuật dùng mảng đánh dấu để tìm tần suất xuất hiện nhiều 
nhất của các số trong dãy. 
- Sử dụng mảng A với kiểu chỉ số [0..10000], ban đầu toàn bộ các phần tử 
của mảng đều bằng 0; 
- Đọc các giá trị từ tệp vào biến x. Tính tần suất xuất hiện số x bằng lệnh 
{ 
cin>>x; a[x] ++; 
} 
- Duyệt tìm giá trị lớn nhất Max trong mảng A, đó chính là kết quả cần tìm. 
for(i=0;i<10000;i++) 
 if (a[i]>max1) max1=a[i]; 
*) Chương trình tham khảo trên ngôn ngữ C++ 
+) Thuật toán trên ngôn ngữ Python 
- Bài toán thực hiện trên Python lại rất đơn giản, chúng ta dùng hàm count() để 
đếm tần số xuất hiện của a[i] trong List a. 
- Duyệt mảng A từ đầu trở đi, so sánh tần số của A[i] để tìm ra tần số lớn nhất. 
Dùng đoạn lênh: for k in range(N): 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
35 
 x=A.count(A[k]) 
 if x>max1: 
max1=x 
5. Bài tập áp dụng: 
Trong quá trình viết chương trình ngoài việc lựa chọn phương án tốt nhất, 
giáo viên và học sinh cần chú trọng cách diễn đạt câu lệnh mô tả các thao tác của 
thuật toán vì nó góp phần không nhỏ trong việc rút ngắn thời gian thực hiện 
chương trình. Sau đây tôi xin đưa ra một số bài toán sử dụng mảng một chiều có 
thể mô tả trên ngôn ngữ lập trình C++ và Python như sau:. 
Bài 1: Phần tử lãnh đạo 
Cho dãy A gồm N số nguyên. Hãy tìm tất cả các phần tử lãnh đạo trong dãy. 
Một phần tử được gọi là lãnh đạo nếu nó lớn hơn các phần tử đứng bên phải nó 
trong dãy. Chú ý, phần tử cuối cùng trong dãy luôn là một phần tử lãnh đạo. 
Dữ liệu vào: 
- Dòng đầu chứa số nguyên N(1 ≤ N ≤ 105) 
- Dòng sau chứa N số nguyên, các số cách nhau một dấu cách là các phần tử 
của dãy A(│A[i]│≤ 109 , i = l..N) 
Dữ liệu ra: 
- In ra dãy các phần tử lãnh đạo trong A theo trật tự từ trái qua phải của 
chúng trong A. 
Dữ liệu vào Dữ liệu ra 
6 
16 17 4 3 5 2 
17 5 2 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
36 
*) Hướng dẫn: 
- Phần tử cuối cùng là phần tử lãnh đạo 
- Duyệt mảng A từ vị trí N-1 lùi về 1: 
 Nếu A[i]>=ld thì ld=A[i] (với ld là phần tử lãnh đạo) 
Bài 2: Dãy trật tự luân phiên 
Cho dãy A gồm N số nguyên khác nhau. Hãy in ra dãy A theo trật tự: Đầu 
tiên là số lớn nhất, tiếp theo đến số bé nhất, tiếp đến là số lớn thứ nhì, tiếp đến là số 
bé thứ nhì, v.v... 
Dữ liệu vào: 
• Dòng đầu chứa số nguyên N(1≤N≤105) 
• Dòng sau chứa N số nguyên, các số cách nhau một dấu cách là các phần tử 
của dãy A(1≤Ai,≤105, i=1..N) 
Dữ liệu ra 
• In dãy A theo kết quả của bài toán 
Dữ liệu vào Dữ liệu ra 
4 
2 1 4 3 
4 1 3 2 
*) Hướng dẫn: 
- Dùng mảng thống kê tần suất và thực hiện in bằng 2 chỉ số i và j từ hai đầu luân 
phiên nhau 
Bài 3 (Đề thi HSG lớp 11 - Tỉnh Nghệ An - Năm học 2016-2017) 
Cho dãy gồm n số nguyên a1, a2, , an và 2 sô nguyên không âm L, R 
(L≤R). 
Yêu cầu: Đếm số cặp (i,j) thỏa mãn điều kiện: i≤j và L≤ |ai++aj|≤R 
Dữ liệu vào: từ file văn bản SEQ.INP gồm: 
- Dòng đầu tiên chứa 3 số nguyên n, L, R (n≤105; 0≤L≤R≤109) 
- Dòng thứ hai chứa n số nguyên dương a1,a2,,an (ai≤109) 
Dữ liệu ra: Ghi ra file văn bản SEQ.OUT gồm một số nguyên duy nhất là số 
lượng cặp (i,j) đếm được. 
Ví dụ: 
Dữ liệu vào Dữ liệu ra 
3 0 1 
1 -1 2 
4 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
37 
Hướng dẫn: Sử dụng kỹ thuật dùng mảng nhớ tổng: 
- Sử dụng mảng S để lưu tổng của các phần tử: S[i] là tổng các số từ 1 đến i. 
Lúc đó tổng các phần tử từ i đến j là S[j] – S[i-1]. 
- Duyệt tìm số lượng cặp chỉ số (i,j) thỏa mãn điều kiện: 
 L≤ |S[j] -s[i-1]|≤R 
Bài 4: (Đề thi HSG lớp 11 - Tỉnh Nghệ An - Năm học 2017-2018) 
Cho một dãy số nguyên a1, a2, a3, , an và một số nguyên k. Một dãy con ai, 
..., aj (1≤i≤j≤n) được gọi là hoàn hảo nếu như ai + ai+1 + ai+2 + + aj=k. Hãy đếm 
xem có bao nhiêu dãy con hoàn hảo từ dãy đã cho. 
Dữ liệu vào: Vào từ file văn bản PSEQ.INP 
Dòng đầu tiên chứa số n(0<n≤105) và số k (|k| ≤104) cách nhau bởi dấu cách. 
Dòng tiếp theo chứa n số nguyên ai (|ai|)≤104), các số nguyên cách nhau ít 
nhất một dấu cách. 
Dữ liệu ra: Ghi ra file văn bản PSEQ.OUT một số duy nhất là kết quả tìm được. 
Dữ liệu vào Dữ liệu ra 
5 5 
1 2 3 4 5 
2 
Hướng dẫn: Sử dụng kỹ thuật dùng mảng nhớ tổng. 
+ Dùng mảng S để lưu tổng: S[i] là tổng các phần tử từ 1 đến i. 
- Duyệt tìm số lượng cặp chỉ số (i,j) thỏa mãn điều kiện: S[j]-S[i-1] =k. 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
38 
PHẦN III. KẾT LUẬN 
I. Hiệu quả của sáng kiến kinh nghiệm: 
 Đề tài đã được áp dụng vào việc dạy học đại trà cho học sinh của trường 
trong năm học 2020-202 đã nhận được kết quả tích cực như sau: 
• Về giá trị khoa học của sáng kiến kinh nghiệm: Sáng kiến đã đưa ra những 
giải pháp cụ thể để nâng cao hiệu quả trong công tác giảng dạy bộ môn Tin 
học. 
• Về hịệu quả kinh tế: Với các giải pháp mà tác giả đưa ra có tính khả thi, dễ 
áp dụng, tiết kiệm thời gian, mang lại hiệu quả kinh tế cho nhà trường. 
• Về hiệu quả xã hội: Công trình đã góp phần nâng cao hiệu quả công tác 
giảng dạy môn Tin học và góp cho giáo viên, học sinh sớm tiếp cận với 
chương trình giáo dục phổ thông mới. Tạo niềm đam mê môn học cũng như 
yêu thích ngành Công nghệ thông tin. 
• Quy mô, phạm vi đã áp dụng tại Đơn vị: Công trình này có thể áp dụng 
trong trường trung học phổ thông, cho tất cả giáo viên giảng dạy môn Tin 
học. 
• Đề tài được trình bày hình thức đẹp mắt, bố cục hợp lý, công phu, mạch lạc, 
có tính thuyết phục. Nội dung đề tài là tư liệu quý được dùng để làm tài liệu 
tham khảo cho giáo viên và học sinh. 
 Đề tài đã được áp dụng vào việc dạy học tại trường THPT nơi tôi công tác 
mang lại hiệu quả như sau: 
* Hiệu quả chung: 
Đối với học sinh đã có sự tiến bộ rõ rệt về các mặt sau: 
- Năng lực phân tích, nhận dạng và lựa chọn được thuật toán thích hợp để 
giải quyết các bài toán về dãy số. 
- Khả năng tư duy thuật toán, phát huy tính sáng tạo. 
- Năng lực vận dụng các kiến thức đã học vào giải quyết vấn đề. 
- Trình bày thuật toán, diễn đạt chương trình rõ ràng, chuẩn xác. 
- Hăng say học tập, nghiên cứu, làm việc khoa học. 
- Đam mê việc học lập trình và rất yêu thích ngành CNTT. 
- Đa số học sinh đều thích lập trình trên Python hơn C++ 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
39 
*) Hiệu quả thực nghiệm sư phạm: 
1. Bảng thống kê kết quả bài kiểm tra học kỳ 1 sau khi áp dụng SKKN cho 5 
lớp 11 năm học 2020-2021: 
Lớp Sĩ số 
0-3.0 3.5-4.5. 5.0-6.5 7.0-8.5 9.0-10 
SL % SL % SL % SL % SL % 
11A 44 0 0 0 0% 2 4.5% 7 15.9% 35 79.6% 
11A1 42 0 0 1 2.4% 12 28.6% 15 35.7% 14 33.3% 
11A4 42 0 0 3 7.1% 23 54.8% 10 23.8% 6 14.2% 
11A5 41 0 0 2 4.9% 16 39% 11 26.8% 12 29.3 
11D1 41 0 0 3 7.3% 25 61% 8 19.5% 5 12.2% 
Tổng 210 0 0 9 4.3% 78 37.1% 51 24.3% 72 34.3% 
2. Bảng thống kê kết quả bài kiểm tra học kỳ 1 khi chưa áp dụng SKKN cho 
5 lớp 11 năm học 2019- 2020: 
Lớp Sĩ số 
0-3.0 3.5-4.5. 5.0-6.5 7.0-8.5 9.0-10 
SL % SL % SL % SL % SL % 
11A 42 0 0 1 2.4% 16 38.1% 20 47.6% 5 11.9% 
11A1 43 0 0 7 16.7% 21 50% 10 23.8% 5 11.6% 
11A4 40 2 0 8 19.1% 24 57.1% 5 11.9% 1 2.5% 
11A5 39 2 0 10 23.8% 20 47.6% 7 16.7% 0 0% 
11D1 43 3 0 18 42.9% 18 42.9% 3 7.1% 1 2.3% 
Tổng 207 7 3.4% 44 21.3% 99 47.8% 45 21.7% 12 5.8 
Từ kết quả thu được ở bảng trên ta nhận thấy có sự chuyển biến rõ rệt về chất 
lượng học tập của học sinh. So sánh kết quả tương đối giữa 2 năm ta thấy: 
− Khi chưa thực hiện SKKN thì: 
+ Mức điểm yếu 3,4%, kém là: 21.3% 
+ Mức điểm trung bình 47,8%, khá là: 21.7% 
+ Mức điểm giỏi là: 5.8% 
− Sau khi thực hiện SKKN thì: 
+ Mức điểm yếu giảm còn 0%, kém giảm còn: 4.3% 
+ Mức điểm trung bình 37.1%, khá:24.3% 
+ Mức điểm giỏi tăng: 34.3% 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
40 
II. Kết luận chung: 
Hiện nay, hầu hết các lĩnh vực trong xã hội đã ứng dụng CNTT để giải quyết 
các công việc một cách nhanh chóng, chính xác và hiệu quả hơn. Trong đó, các 
ngôn ngữ lập trình, các nhà lập trình chuyên nghiệp đóng vai trò rất quan trọng 
trong việc xây dựng các chương trình ứng dụng để phục vụ cho cuộc sống. 
Bởi vậy, việc phát hiện những học sinh có năng lực, yêu thích lập trình và 
bồi dưỡng HSG Tin học trở thành một việc làm quan trọng và cấp thiết, góp phần 
phát triển đội ngũ lập trình viên, phát triển nền kinh tế, tri thức của đất nước. 
III. Khả năng ứng dụng đề tài vào thực tiễn: 
Qua những kinh nghiệm đúc kết được trong quá trình nghiên cứu, đề tài của 
tôi có khả năng ứng dụng vào thực tiễn, không chỉ ở trường tôi trong những năm 
học tới mà có thể ứng dụng ở bất cứ địa phương nào, ngôi trường nào. 
IV. Khả năng mở rộng của đề tài: 
Trên cơ sở của đề tài này chúng ta hoàn toàn có thể ứng dụng vào giải quyết 
các bài toán có cần sự đánh dấu trên xâu, tìm xâu con dài nhất trên xâu ký tự, có 
thể phát triển, mở rộng đề tài để giải quyết các bài toán phức tạp hơn trên xâu, trên 
mảng 1 chiều.Ngoài ra ta có thể áp dụng tư tưởng, cách thức của đề tài vào các 
phần nội dung khác của chương trình. 
V. Kiến nghị: 
Trong quá trình dạy học mỗi thầy cô cần cố gắng xây dựng nội dung khoa 
học, lựa chọn phương pháp phù hợp, thu hút, tạo sự hứng thú, tạo động cơ học tập 
cho học sinh với bộ môn Tin học. 
Để nâng cao trình độ chuyên môn, nghiệp vụ các giáo viên cần tăng cường 
trao đổi học tập kinh nghiệm lẫn nhau. 
Đề tài của tôi hoàn thành nhờ vào sự nhiệt tình giúp đỡ của các bạn bè đồng 
nghiệp. Rất mong tiếp tục nhận được sự góp ý, nhận xét của các đồng nghiệp để tôi 
có thêm kinh nghiệm và đạt kết quả tốt hơn trong công tác dạy học. 
Tôi xin chân thành cảm ơn! 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
41 
TÀI LIỆU THAM KHẢO 
1. Sách giáo khoa Tin học lớp 11 
2. Sách bài tập Tin học lớp 11 
3. Python cơ bản của Bùi Việt Hà 
4. Trang web Codelearn.vn 
5. Diễn đàn Tin học, thuật toán VNOI.info. 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
42 
MỤC LỤC 
PHẦN I. ĐẶT VẤN ĐỀ: .............................................................................................. 1 
I. LÝ DO CHỌN ĐỀ TÀI: ......................................................................................... 1 
II. MỤC ĐÍCH NGHIÊN CỨU ................................................................................. 1 
III. ĐỐI TƯỢNG, THỜI GIAN NGHIÊN CỨU: ...................................................... 2 
IV. PHƯƠNG PHÁP VÀ NHIỆM VỤ NGHIÊN CỨU: .......................................... 2 
PHẦN II. NỘI DUNG NGHIÊN CỨU ....................................................................... 3 
I. CƠ SỞ LÝ LUẬN: ................................................................................................. 3 
II. THỰC TRẠNG CỦA VẤN ĐỀ: ........................................................................... 3 
III. GIẢI QUYẾT VẤN ĐỀ: ...................................................................................... 3 
1. Khái quát về ngôn ngữ lập trình Python và C++ ................................................... 3 
1.1. Khái quát về ngôn ngữ lập trình Python ............................................................. 3 
1.2 . Khái quát về ngôn ngữ lập trình C++ ................................................................ 4 
2. Kiểu mảng một chiều trên ngôn ngữ lập trình Python ........................................... 4 
2.1. Khái niệm List một chiều .................................................................................... 4 
2.2. Khai báo kiểu List ............................................................................................... 5 
2.3. Cách tham chiếu đến phần tử. ............................................................................. 6 
2.5. Các phép toán và phương thức của List .............................................................. 8 
2.6 . Bài toán áp dụng ............................................................................................... 11 
Bài toán 1: Viết chương trình thực hiện công việc sau: ........................................... 11 
3. Kiểu mảng một chiều trên ngôn ngữ lập trình C++ ............................................. 16 
3.1. Khái niệm mảng một chiều ............................................................................... 16 
3.2. Khai báo mảng một chiều ................................................................................ 17 
3.3. Cách tham chiếu đến phần tử. ........................................................................... 17 
3.4. Nhập và xuất mảng một chiều trong C++ ......................................................... 17 
4. Mỗi liên hệ của xử lý mảng trong Python và C++ ............................................... 25 
4.1. So sánh C++ và Python .................................................................................. 25 
4.2. Bài toán áp dụng ............................................................................................. 27 
5. Bài tập áp dụng:.................................................................................................... 35 
PHẦN III. KẾT LUẬN .............................................................................................. 38 
Chuyên đề xử lý mảng một chiều trên ngôn ngữ lập trình Python và C++ 
43 

File đính kèm:

  • pdfsang_kien_kinh_nghiem_chuyen_de_xu_ly_mang_mot_chieu_tren_ng.pdf
Sáng Kiến Liên Quan