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ố.
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:
- sang_kien_kinh_nghiem_chuyen_de_xu_ly_mang_mot_chieu_tren_ng.pdf