Nhận thức được tầm quan trọng của việc dạy học Tin học lập trình, mong muốn tìm ra phuơng pháp dạy học mới, giúp học sinh dễ dàng hơn trong việc tiếp cận và vận dụng kiến thức tôi đã ngh
Trang 11 MỞ ĐẦU
1.1 - Lí do chọn đề tài
Trong bối cảnh hiện nay, cả thế giới đang bước vào thời kì công nghiệp 4.0
thì công nghệ thông tin được coi là ngành quyền lực bậc nhất với hàng loạt ứng
dụng trong mọi lĩnh vực của đời sống - từ sản xuất, kinh doanh đến giáo dục, y
tế, văn hóa Để tối ưu hóa năng suất lao động, tiết giảm nhân lực lao động thủ công, tiết kiệm chi phí sản xuất thì hàng loạt những công nghệ thông minh được
ra đời như công nghệ tự động hóa, trao đổi dữ liệu… Để làm được điều này cần thiết phải có một bộ phận người lập trình Việc đưa bộ môn lập trình vào giảng dạy trong nhà trường THPT là một nhu cầu tất yếu và thực sự cần thiết, đón đầu những yêu cầu của thực tiễn trong kỉ nguyên thông tin, trong xã hội tự động hóa
Bộ môn lập trình được đưa vào giảng dạy trong chương trình Tin học 11
là một môn khoa học có tính trừu tượng và tính phổ dụng cao Tin học lập trình không chỉ giúp học sinh tìm hiểu những đoạn chương trình đơn giản mà còn huớng cho học sinh những nhận thức mới, luyện cho học sinh khả năng tự tìm tòi khám phá từ đó góp phần phát triển tư duy nhận thức của học sinh, rèn luyện cho học sinh khả năng tự độc lập suy nghĩ giải quyết vấn đề
Nhận thức được tầm quan trọng của việc dạy học Tin học lập trình, mong muốn tìm ra phuơng pháp dạy học mới, giúp học sinh dễ dàng hơn trong việc tiếp cận và vận dụng kiến thức tôi đã nghiên cứu, xây dựng và hệ thống hóa một số các bài tập lập trình đưa vào giảng dạy Tin học 11 bước đầu đã có hiệu quả tích cực Từ các kinh nghiệm trong quá trình nghiên cứu và áp dụng trong thực tiễn
giảng dạy, tôi xin trình bày thông qua sáng kiến kinh nghiệm đề tài: ''Giúp học sinh hình thành và phát triển tư duy thông qua việc xây dựng và sử dụng 1 số bài tập khi dạy Tin học lớp 11 THPT''.
1.2 - Mục đích nghiên cứu
Mục đích nghiên cứu của sáng kiến kinh nghiệm này là hệ thống hóa các bài tập ngôn ngữ lập trình trong chương trình Tin học 11 nhằm hình thành và phát triển những phẩm chất tư duy của học sinh
1.3 - Đối tượng nghiên cứu
Sáng kiến kinh nghiệm có đối tượng nghiên cứu là các bài tập lập trình trong sách giáo khoa Tin học 11 và các bài tập có liên quan được chọn lọc nhằm hình thành và phát triển tư duy cho học sinh
Trang 21.4 - Phương pháp nghiên cứu
Để trình bày sáng kiến kinh nghiệm này, tôi đã sử dụng phối kết hợp nhiều phương pháp như: nghiên cứu tài liệu, thuyết trình, quan sát, thực nghiệm so sánh, phân tích kết quả thực nghiệm, … phù hợp với môn học thuộc lĩnh vực Tin học
Trang 32 NỘI DUNG
2.1 - Cơ sở lí luận
Theo nội dung chương 1 – Mục tiêu và nhiệm vụ của môn Tin học thì nhiệm vụ của bộ môn Tin học đã được Bộ Giáo Dục xác định rõ: “ Trên cơ sở cung cấp những tri thức cơ bản, có hệ thống, bộ môn Tin học còn phải rèn luyện cho học sinh những năng lực trí tuệ chung như kĩ năng tư duy, trừu tượng, kĩ năng thực hành cần thiết” Về tư duy, cần hình thành và phát triển các thao tác chủ yếu: tư duy logic, phân tích, so sánh, tổng hợp, khái quát hoá, trừu tượng hoá Về thực hành cần chú trọng đến kĩ năng sử dụng máy tính, kĩ năng vận dụng Tin học vào thực tiễn Cũng cần chú ý luyện tập cho học sinh thói quen gắn liền các thao tác tư duy với các kĩ năng thực hành như là một thể thống nhất trong hoạt động nhận thức”[6]
2.2 - Thực trạng
2.2.1 - Giới thiệu khái quát về trường
Trường THPT Đặng Thai Mai nơi tôi công tác đóng trên địa bàn xã Quảng Bình, huyện Quảng Xương Nơi đây phần đông các em học sinh xuất thân từ gia đình nông nghiệp thuần túy, điều kiện kinh tế còn nhiều khó khăn Rất nhiều em phải ở nhà với ông bà, do bố mẹ đi làm ăn xa Điều này có ảnh hưởng ít nhiều đến ý thức học tập của các em Một số em bỏ bê học hành, mất thời gian vào các hoạt động vô bổ như game, facebook… dẫn đến kết quả học tập giảm sút
Bên cạnh đó, còn một bộ phận không nhỏ học sinh và phụ huynh chưa đánh giá hết tầm quan trọng của môn Tin học, coi môn Tin học chỉ là môn phụ Các
em chỉ chú tâm vào học các môn được coi là chính để phục vụ cho việc thi tốt nghiệp, đại học Do các em học sinh này không thực sự chú tâm vào học tập môn Tin học, dẫn đến kết quả môn học cũng không cao
Tuy nhiên, được sự quan tâm sâu sát của Ban Giám Hiệu và các tổ chức trong nhà trường, thầy và trò trường THPT Đặng Thai Mai vẫn luôn nỗ lực trong việc dạy, học và đạt một số thành tích nhất định
Đối với bộ môn Tin học, nhiều năm liên tục nhà trường đều có học sinh đạt giải trong kì thi chọn học sinh giỏi cấp tỉnh Năm học 2017- 2018 có 1 học sinh đạt giải nhì và 1 học sinh đạt giải ba (đạt tỉ lệ 100% số học sinh tham gia thi)
2.2.2 - Thực trạng trước khi nghiên cứu
Có một thực tế là học sinh rất thích thú khi được trải nghiệm cùng
Trang 4chiếc máy tính, hào hứng khi biết sẽ được học về ngôn ngữ lập trình – ngôn ngữ để viết nên các chương trình chạy được trên máy tính và ứng dụng vào đời sống Tuy nhiên các kiến thức ngôn ngữ lập trình trong chương trình Tin học 11 rất trừu tượng khó hiểu nên việc học sinh không nắm vững được các kiến thức trong sách giáo khoa, khi giải bài tập học sinh áp dụng một cách máy móc kiến thức dần trở nên phổ biến, từ đó làm giảm kĩ năng tư duy của học sinh Trong các giờ thực hành học sinh chưa thực sự chú tâm để chạy chương trình chỉ chạy các chương trình có sẵn trong sách giáo khoa và các bài giáo viên làm sẵn trên lớp hay làm việc riêng cho giờ thực hành
Các bài tập trong sách giáo khoa Tin học 11 còn tương đối khó, dàn trải chưa thực sự phù hợp với mức độ tư duy của học sinh, đặc biệt là học sinh các lớp cơ bản của trường THPT Đặng Thai Mai Việc tiếp cận và giải quyết các bài tập này ở học sinh còn thụ động, chưa có hiệu quả cao, học sinh cũng rất khó khăn trong việc vận dụng kiến thức để giải quyết các bài tập tương tự
2.3 - Các giải pháp đã sử dụng để giải quyết vấn đề
2.3.1 - Bài tập lập trình
2.3.1.1 - Các khái niệm
Theo tài liệu sách giáo khoa Tin học 10, bài 4 - Bài toán và thuật toán thì
“Trong Tin học, bài toán là một việc ta muốn giao cho máy tính thực hiện” Muốn máy tính thực hiện được công việc trên thì bài toán phải được lập trình trên máy tính Việc đưa thông tin vào máy tính, biến đổi và tìm ra kết quả có thể diễn đạt theo sơ đồ:
A -> B
Trong đó: A: input là thông tin vào; B: output là thông tin ra
Và quá trình biến đổi thông tin từ A thành B có thể được hiểu là giải quyết một bài tập lập trình [1]
2.3.1.2 - Tác dụng của bài tập lập trình trong việc dạy và học Tin học ở trường trung học phổ thông
- Bài tập lập trình là một hình thức củng cố, ôn tập hệ thống hoá kiến thức một cách sinh động
- Bài tập lập trình là một phương tiện rất tốt để phát triển tư duy và khả năng sáng tạo của học sinh
Trang 5- Bài tập lập trình là phương tiện rất tốt để làm tăng hứng thú học tập của học sinh
- Thông qua việc giải bài tập lập trình còn luyện cho học sinh phẩm chất độc lập suy nghĩ, tính kiên trì dũng cảm, khắc phục khó khăn để vượt lên
- Bài tập lập trình là phương tiện nghiên cứu tài liệu mới khi trang bị kiến thức cho học sinh
- Bài tập lập trình là phương tiện rất tốt để kiểm tra việc lĩnh hội kiến thức mới, nhớ các kiến thức đã học, kiểm tra năng lực tư duy sáng tạo của học sinh
2.3.1.3 - Các phương pháp hướng dẫn giải bài tập lập trình
- Hướng dẫn theo mẫu có sẵn: là sự hướng dẫn hành động theo mẫu có sẵn trong đó chỉ rõ cần thực hiện những hành động nào vào trình tự nào để đi đến kết quả
- Hướng dẫn tìm tòi: kiểu hướng dẫn này mang tính chất gợi ý, tìm tòi để học sinh phát hiện ra các khả năng giải quyết vấn đề, tự xác định các hành động cần thực hịên để tìm ra kết quả
- Hướng dẫn định hướng khát quát chương trình hoá: là sự hướng dẫn cho học sinh tự tìm tòi để giải quyết
2.3.2 - Xây dựng và sử dụng hệ thống bài tập ngôn ngữ lập trình nhằm hình thành và phát triển phẩm chất tư duy của học sinh
2.3.2.1- Những cơ sở để xây dựng hệ thống bài tập ngôn ngữ lập trình
Căn cứ vào mục đích của đề tài là phát triển những phẩm chất tư duy của học sinh thông qua việc sử dụng hệ thống bài tập ngôn ngữ lập trình trong chương trình Tin học 11 THPT Vì thế trong tôi sẽ cố gắng lựa chọn hệ thống bài tập để đáp ứng mục đích trên
Căn cứ vào yêu cầu của vấn đề lựa chọn bài tập ngôn ngữ lập trình trên cơ
sở việc phân bậc hoạt động Các bài tập phải đi từ dễ đến khó, từ đơn giản đến phức tạp về một quan hệ giữa các đối tượng trong bài toán hay giữa các yêu cầu trong một bài toán
Trong hệ thống bài tập đưa thêm một số bài tập mang tính chất tổng hợp kiến thức với mục đích làm phong phú đa dạng hoá các bài tập ngôn ngữ lập trình
và thông qua việc hướng dẫn học sinh giải các bài tập đó giúp học sinh phát triển năng lực tư duy của mình
Trang 6Căn cứ và thực tế dạy học, phải làm sao thông qua hệ thống bài tập tạo cho học sinh năng lực tìm tòi, tự giải quyết vấn đề
Để làm cơ sở cho việc lựa chọn hệ thống bài tập ngôn ngữ lập trình cần phải biết đuợc thực trạng dạy và học ngôn ngữ lập trình lớp 11 hiện nay, biết đuợc nội dung kiến thức cần truyền thụ và rèn luyện để phát triền năng cao kiến thức của học sinh Từ đó rút ra được các yêu cầu cụ thể và lựa chọn đuợc thống bài tập cho hợp lý
Hoạt động dạy và học là hoạt động của cả thầy và trò, trong đó nguời thầy giữ vai trò chủ đạo và tích cực Xuất phát từ đó lựa chọn hệ thống bài tập ngôn ngữ lập trình phải có tác dụng thúc đẩy sự tích cực hoá hoạt động của học sinh trong quá trình ngôn ngữ lập trình
Các bài tập dưới đây chỉ là những bài tập đặc trưng trong hệ thống bài tập đuợc xây dựng theo huớng của đề tài
2.3.2.2- Xây dựng hệ thống bài tập ngôn ngữ lập trình và sử dụng trong giảng dạy Tin học 11
Dựa vào các cơ sở trên ta có thể xây dựng hệ thống bài tập ngôn ngữ lập trình nhằm hình thành và phát triển phẩm chất tư duy của học sinh theo các tiêu chí sau :
- Xây dựng hệ thống bài tập theo hướng gợi mở
- Xây dựng hệ thống bài tập từ phân bậc
- Xây dựng hệ thống bài tập tổng hợp
2.3.2.2.1 - Xây dựng hệ thống bài tập theo hướng gợi mở
Khi xây dựng hệ thống bài tập này giáo viên có thể đưa ra học sinh những bài tập đơn giản và một số bài tập mẫu cho học sinh nhằm truyền đạt tư duy có sẵn cho học sinh từ đó học sinh làm quen dần với những thao tác tư duy và hình thành các thao tác tư duy riêng của mình
Bài toán 1: Lập trình tính tổng S= 1+2+3+ +n Với n là số nguyên dương được nhập từ bàn phím
Xác định bài toán :
Input: số nguyên duơng n
Output: Tổng S = 1+2+3+ +n
Chương trình:
Program bai_1;
Trang 7Var s,i,n:integer;
Begin
Write ('nhap n='); readln (n);
s:=0;
For i:=1 to n do s:=s+i;
Writeln('tong la:',s);
Readln;
End.
Với bài toán này ta có thể hình thành cho học sinh những tư duy sau:
Thao tác phân tích: Chia công việc thành các bước sau:
Buớc 1: Gán s:=0 Cộng phần tử thứ nhất= 1 và tổng s= 0+1=1
Bước 2: s:=1 Cộng phần tử thứ hai =2 vào tổng s=s+2=1+2=3
Bước 3: s:=3 Cộng phần tử thứ ba =3 vào tổng s=s+3=3+3=6
Các thao tác tương tự: Tương tự cho các bước còn lại là bước 4 đến bước
n
Khái quát cho bước thứ i:
Bước i: Cộng lần lượt phần tử thứ i vào tổng s với i chạy từ 1 đến n Cho i chạy
từ 1 đến n, s:=s+i
Thao tác tổng hợp: Tổng hợp cho n buớc vào dựa vào khái quát bước thứ i
với i chạy từ 1 đến n ta có giải tính tổng s
Khi kiểm ra việc giải bài tập của học sinh giáo viên có thể hỏi một số câu để học sinh tư duy và trả lời Để trả lời câu hỏi đó học sinh phải có một quá trình tư duy lôgic áp dụng các thao tác tư duy Từ đó hình thành và phát triển tư duy của học sinh
* Một số câu hỏi để phát triển tư duy cho học sinh :
a Tại sao lại gán tổng s=0 ?
b Nêu quá trình của việc vòng lặp for to do ?
c Có thể sử dụng vòng lặp khác để giải bài toán này được toán được không?
Bài toán 2: Nhập và in ra màn hình một xâu bất kì.
* Ngoài hệ thống bài tập trên ta có thể xây dựng hệ thống bài tập trắc nghiệm trên máy vi tính Trong hệ thống bài tập này gồm những câu trắc nghiệm đơn giản củng cố kiến thức cho học sinh bước đầu hình thành cho học sinh các thao tác tư
Trang 8duy, có thể một số câu hỏi bắt buộc học sinh phải có một quá trình tư duy thì mới
có thể tìm ra được đáp số [2]
Bài toán 1: Kiểu dữ liệu sau kiểu dữ liệu nào có giá trị lớn nhất?
a word c byte
b integer d longint
Đáp án: d
Bài toán 2: Kết quả của chương trình sau là gì?
Var x,y: integer ;
Begin
x:=10; y:=15;
If (x>y) then x:=x-y else y:=y-x
End
a x=10, y=5 c x=10, y=15
b x=5, y=15 d Chuơng tình báo lỗi
Đáp án: a
Bài toán 3 : Hãy cho biết đoạn chuơng trình cho kết quả là gì ?
tong :=0;
For i:=1 to 10 do
If i mod 3=0 then tong:=tong+i*i
a 18 b 126
c 55 d 10
Đáp án: b [2]
2.3.2.2.2 - Xây dựng hệ thống bài tập phân bậc
Khi xây dựng hệ thống bài tập này với những bài tập bước đầu chỉ là những bài tập với các mức độ đơn giản sau đó nâng dần các mức độ khó hơn điều
đó đòi hỏi học sinh phải có một quá trình tư duy thì mới giải quyết được các yêu cầu đó Điều này giúp học sinh phát triển được tư duy của mình Ta có thể xây dựng được bài tập phân bậc theo các tiêu trí khác nhau
* Xây dựng hệ thống bài tập phân bậc dựa vào sự phức tạp của đối tượng của bài
toán:
Bài toán 1: Lập trình tính tổng S=1 2 +2 2 + 3 2 + +n 2 với n là số nguyên dương được nhập từ bản phím.
Xác định bài toán:
Trang 9Input: số nguyên dương
Output: Tổng s=12+22+32+ +n2
Bài toán 2 : Lập trình tính tổng S=1 k +2 k +3 k + +n k với n, k là số nguyên dương nhập từ bàn phím.
Xác định bài toán:
Input: Số nguyên dương n, k
Output: Tổng s
* Xây dựng hệ thống bài tập phân bậc dựa vào mức độ yêu cầu
Có thể nâng dần mức độ yêu cầu của các câu trong cùng một bài hoặc các bài Những bài toán ban đầu chỉ là những bài toán đơn giản chỉ cần áp dụng những thao tác tư duy đơn giản cũng có thể giải quyết được Nhưng ở bài toán về sau mức độ yêu cầu ngày càng tăng đòi hỏi phải tổng hợp các thao tác tư duy đúng lúc, đúng thời điểm mới giải quyết được
Bài toán 1.1 : Nhập vào một mảng có các phần tử là các số nguyên dương Lập trình in ra màn hình mảng vừa nhập.
Xác định bài toán:
Input: Nhập các số nguyên dương
Output: Mảng gồm các số nguyên dương
Bài toán 1.2: Nhập mảng gồm n phần tử là số nguyên dương In ra màn hình các phần tử là nguyên tố.
Xác định bài toán:
Input: các số nguyên dương
Output: các số nguyên tố trong mảng
Bài toán 1.3: Nhập mảng gồm n phần tử là số nguyên dương Đếm xem trong mảng có bao nhiêu phân tử là số nguyên tố có 2 chữ số.
Xác định bài toán:
Input: các số nguyên dương
Output: tổng các số nguyên tố trong mảng
Bài toán 2.1: Nhập vào từ bàn phím một xâu Hãy in ra màn hình xâu vừa nhập
Xác định bài toán
Input: Các kí tự
Output: In xâu
Trang 10Bài toán 2.2: Lập chương trình nhập vào một xâu bất kỳ Sau đó nhập thêm một kí tự, kiểm tra xem kí tự đó xuất hiện bao nhiêu lần trong xâu
Xác định bài toán:
Input: Xâu kí tự
Output: số lần xuất hiện kí tự trong câu
Bài toán 2.3: Nhập vào màn hình một xâu kí tự Đếm và in ra màn hình số từ trong xâu Từ là các chữ cái viết gần nhau không có kí tự trống
Xác định bài toán
Input: Xâu, một kí tự
Output: Số từ trong một câu [2]
2.3.2.2.3 - Xây dựng hệ thống bài tập tổng hợp
Việc xây dựng hệ thống bài tập này nhằm mục đích có thể hình thành tư duy học sinh một cách tổng hợp Vì để giải được các bài toán này học sinh phải sử dụng rất nhiều các thao tác tư duy Bài tập này có thể tổng hợp kiến thức của một chương hoặc cả chương trình học [2]
Bài toán 1: Dùng chương trình con viết chương trình đọc vào một mảng, xác định phần tử lớn nhất, nhỏ nhất trong mảng.
Xác định bài toán:
Input: mảng có các phần tử là số nguyên
Output: số lớn nhất, nhỏ nhất của mảng
Bài toán 2: Dùng chương trình con viết chương trình tính
C(m,n) = m!/(n!*(m-n)!)
Xác định bài toán
Input: Số m,n
Output: C(m,n)
Bài toán 3: Viết chương trình tính diện tích tam giác khi biết toạ độ 3 đỉnh A(x1,y1), B(x2,y2), C(x3,y3)
Xác định bài toán
Input: Nhập toạ độ 3 đỉnh A,B,C
Output: S tam giác ABC
2.3.2.3 - Sử dụng hệ thống bài tập đã xây dựng trong dạy học lập trình Tin học 11