Cho đến nay Pascal vẫn được dùng để giảng dạy về lập trình trong trường THPT và Đại học trên thế giới và nhiều thế hệ sinh viên đã "vào đời” thông qua việc học Pascal như ngôn ngữ vỡ lòn
Trang 1SÁNG KIẾN KINH NGHIỆM
Đề tài:
MỘT SỐ PHƯƠNG PHÁP NÂNG CAO HIỆU QUẢ VIỆC DẠY LẬP TRÌNH
TIN HỌC LỚP 11 Ở TRƯỜNG THPT TRẦN PHÚ
I LÝ DO CHỌN ĐỀ TÀI
- Công nghệ thông tin là một ngành khoa học đang phát triển rất mạnh mẽ
Sự bùng nổ thông tin trong thời đại ngày nay, tốc độ phát triển của công nghệ thông tin khiến cho người thầy không thể truyền tải hết mọi điều cho học trò, mà dù có kéo dài thời gian để dạy hết mọi điều thì rồi các kiến thức đó cũng nhanh chóng trở nên lạc hậu
- Do đó người thầy cần phải tìm ra phương pháp dạy học tích cực hơn, gợi động cơ học tập trong quá trình giảng dạy để tăng hiệu quả dạy và học Trong việc giảng dạy cho học sinh, ngoài việc giúp học sinh lĩnh hội những kiến thức cơ bản, thầy giáo còn phải biết kích thích tính tích cực, sự sáng tạo say mê học hỏi của học sinh trong việc học tập của các em Bởi vì, việc học tập tự giác, tích cực, chủ động và sáng tạo đòi hỏi học sinh phải có ý thức về những mục tiêu đặt ra và tạo được động lực bên trong thúc đẩy bản thân họ hoạt động để đạt các mục tiêu đó Điều này được thực hiện trong dạy học không chỉ đơn giản bằng việc nêu rõ mục tiêu mà quan trọng hơn còn
do gợi động cơ, phương pháp của người thầy, cách truyền đạt, thiết kế một bài
học .
- Pascal là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh, được Niklaus Wirth phát triển vào năm 1970 là ngôn ngữ đặc biệt thích hợp cho kiểu lập trình có cấu trúc Pascal dựa trên ngôn ngữ lập trình Algol và được đặt tên theo nhà toán học và triết học người Pháp Blaise Pascal Cho đến nay Pascal vẫn được dùng để giảng dạy về lập trình trong trường THPT và Đại học trên thế giới và nhiều thế hệ sinh viên đã "vào đời” thông qua việc học Pascal như ngôn ngữ vỡ lòng trong các chương trình học đại cương Pascal ngày nay vẫn còn được sử dụng khá phổ biến, cả trong giảng dạy lẫn trong công nghiệp phát triển phần mềm.Trong chương trình Tin học cấp trung học phổ thông lớp 11, học sinh được học ngôn ngữ lập trình Pascal được học các xây dựng bài toán, thuật toán và lập trình giải các bài toán cũng như nội dung thi học sinh giỏi môn Tin học đều sử dụng Pascal để giải các bài toán đó
- Qua những năm dạy học, tôi nhận thấy khi học Pascal học sinh thường không hứng thú với môn học này vì nhiều lý do như: khô khan, khó hiểu, đòi hỏi tư duy nhiều, các thuật ngữ bằng Tiếng anh và nội dung liên quan tới Toán học cũng là vấn
Trang 2đề khó khăn làm cho môn học pascal trở nên không hứng thú đối với học sinh Do đó
để học được đòi hỏi học sinh phải có hứng thú, đặc biệt với học sinh giỏi môn Tin học
cần có sự đam mê, yêu thích tìm tòi học hỏi mới có thể gắn bó, theo học lâu dài môn
Pascal Đó cũng chính là lý do tôi viết: “Một số biện pháp nâng cao hiệu quả việc dạy lập trình tin học lớp 11 ở trường THPT Trần Phú” Mong muốn giới thiệu một số kinh nghiệm của bản thân trong việc tạo hứng thú cho học sinh khi học pascal, một khi đã
có hứng thú kết hợp với phương pháp cũng như công cụ thiết kế bài giảng sinh động chắc chắn học sinh của chúng ta sẽ học môn lập trình này tốt hơn
II CƠ SỞ LÝ LUẬN VÀ THỰC TIỄN
a Hiện nay trong lí luận dạy học nói chung và lí luận dạy học môn Tin học nói riêng yêu cầu sử dụng khá nhiều phương pháp: phương pháp thảo luận, phương pháp đặt câu
hỏi, phương pháp chia nhóm Các cách thiết kế bài giảng nhằm mục đích áp dụng phương pháp hiện đại để bồi dưỡng cho học sinh năng lực ham muốn học hỏi, tư duy sáng tạo, năng lực tự giải quyết vấn đề, rèn luyện và phát triển năng lực tự học sáng
tạo, nghiên cứu, nghĩ và làm việc một cách tư duy tự chủ Đồng thời để thích ứng với
sự phát triển tư duy của học sinh trong xã hội mới và tiếp cận với các công nghệ tiên
tiến trong xã hội, trên thế giới Bên cạnh đó, trong các kỹ thuật dạy học mới, vai trò của
người thầy có sự thay đổi là: “hướng dẫn học sinh biết tự mình tìm ra hướng giải quyết
những vấn đề nảy sinh trong quá trình học tập, biết cách làm việc độc lập, làm việc tập
thể Thầy là người định hướng, là người cố vấn giúp học sinh tự đánh giá, cũng như
giúp học sinh luôn đi đúng con đường tìm hiểu, lĩnh hội kiến thức.”
b Trong những năm qua bản thân tôi và cũng như những đồng nghiệp trong nhà
trường đã thử rất nhiều phương pháp dạy học mới thay thế cho phương pháp truyền thống nhưng vẫn còn có một số hạn chế trong quá trình sử dụng phương pháp mới, phương pháp thảo luận thì chưa tạo được sự thích thú, sôi nổi, học sinh còn thụ động trong các vấn đề thảo luận một nội dung nào đó dẫn đến các em lại một lần nữa rơi vào trạng thái bị động không biết thảo luận từ đâu Phương pháp đặt câu hỏi giáo viên hỏi, học sinh trả lời cũng có một số hạn chế khi giáo viên đưa ra câu hỏi chung chung hoặc chưa thực sự trọng tâm thì dẫn đến học sinh sẽ hiểu sai vấn đề, học khi giáo viên hỏi câu hỏi không thực sự lôi cuốn cùng làm học sinh nhàm chán và không muốn xung phong phát biểu trả lời, chỉ có một số em tích cực mới tham gia xây dựng bài, qua những hạn chế đó, bản thân tôi trong những năm dạy học và cùng dự giờ các đồng nghiệp tôi nhận ra mình phải thay đổi cách dạy, cách truyền đạt, phương pháp giảng dạy và cách thiết kế một bài dạy làm sao thật sôi nổi, nhấn mạnh được các trọng tâm nội dung bài học, bên cạnh cách truyền đạt và phương pháp dạy hài hòa của người thầy Với bộ môn Tin học trong trường THPT thì chương trình Tin học 11 rất khó, các
Trang 3em bắt đầu làm quen với lập trình một bài toán nào đó bằng ngôn ngữ lập trình Pascal Pascal rất khó, khô khan, đòi hỏi tư duy của các em rất nhiều, lập trình Pascal kết hợp giữa thuật toán trong Toán học cùng với ngôn ngữ lập trình, đòi hỏi các em phải vững kiến thức Toán để xây dựng các thuật toán, để hiểu rõ được một ngôn ngữ lập trình các em cần phải vững Tiếng Anh, vì vậy để cần phải có một phương pháp dạy học, cách truyền đạt, thiết kế một bài giảng phù hợp là cần thiết
- Giải pháp bản thân tôi đưa ra trong đề tài này nhằm hoàn thiện các giải pháp mà trước đây khi bản tôi kinh nghiệm chưa nhiều, và các hạn chế mà đồng nghiệp còn
vướng phải khi áp dụng tại đơn vị
III TỔ CHỨC THỰC HIỆN CÁC GIẢI PHÁP
- Nhìn được những khó khăn trong quá trình giảng dạy, bản thân tôi suy nghĩ đến vấn đề làm sao, làm như thế nào, xây dựng nội dung bài học ra sao để các em bước đầu nắm được kiến thức cơ bản nhất của lập trình, cụ thể là lập trình với ngôn ngữ pascal và các em phải thực sự hứng thú, đam mê, yêu thích lập trình và phải xây dựng được các nội dung cụ thể từng chương trong chương trình học, làm sao hệ thống hóa được các nội dung một cách nhẹ nhàng để ngay cả học sinh yếu, trung bình cũng có thể hội tụ được kiến thức của từng phần trong bộ môn Như vậy việc chuẩn bị kĩ lượng nội dung cần truyền tải đến các em, ngoài ra để các em lĩnh hội được nội dung bài học một cách tốt nhất mà bản thân tôi nghĩ nó cũng rất quan trọng đó là tạo được hứng thú, sự đam mê học tập cho các em, làm cho các em đam mê, thích thú với những bài tập, những đoạn chương trình, tìm tòi xem khi viết đoạn chương trình chạy trên máy thành quả của mình đạt được là kết quả gì Trong quá trình giảng dạy tôi nhận thấy người thầy phải làm rõ cho học sinh một số nội dung trọng tâm bằng cách
dễ dàng nhất, đơn giản nhất để các em có cái nhìn tổng quan đến chi tiết của từng chương trong bộ môn tin học 11
1 Khả năng truyền đạt
- Khi truyền đạt, giảng dạy pascal trên lớp do đặc thù môn học đòi hỏi mức độ tư duy nhất định ở học sinh, các em khó tư duy nên giáo viên khi truyền đạt kiến thức mới cũng như tìm thuật toán cần đưa ra các vấn đề liên quan đến cuộc sống hằng ngày của các em với các con số phép tính cơ bản giúp các em dễ hình dung được vấn
đề cũng như công việc các em phải giải quyết
+ Ví dụ 1: Khi giảng về câu lệnh lặp, ta có 2 loại vòng lặp: “lặp với số lần lặp
biết trước và lặp với số lần lặp chưa biết trước”, để học sinh phân biệt được 2 loại lặp này, giáo viên nên đưa ra một số ví dụ đơn giản, tường minh sao cho học sinh thấy được bản chất của vấn đề:
Trang 4 Cần đổ đầy một bể chứa 50 lít nước bằng một cái ca có dung tích là 1 lít, thì
ta phải thực hiện 50 lần đổ nước từ cái ca đó vào bể nước lặp với số lần lặp
biết trước, đối với trường hợp này nếu xây dựng thuật toán và sử dụng cấu trúc
lặp trong ngôn ngữ lập trình pascal ta dùng vòng lặp: “for - do” và cụ thể ta có:
for i:=1 to 50 do <câu lệnh>; (câu lệnh ở trong trường hợp này là “đổ nước từ
ca”)
Cần đổ đầy một bể chứa 50 lít nước bằng một cái ca không biết dung tích của ca thì không biết sẽ đổ bao nhiêu lần, chỉ biết cho tới khi nào đầy bể thì
ngưng lặp với số lần lặp chưa biết trước Ta sử dụng cấu trúc lặp “While – do” và cụ thể ta có: While <bể> <= 50 do <câu lệnh>; (câu lệnh: “đổ nước từ
ca”)
+ Ví dụ 2: Khi giảng bài toán tìm số lớn nhất (nhỏ nhất) trong một dãy số, chúng
ta đưa ví dụ cho các em dễ liên tưởng như “Em làm thế nào tìm được bạn cao nhất (thấp nhất) lớp”, hay đối với bài toán sắp xếp dãy số tăng dần (giảm dần) ta có thể đưa ví dụ thực tế “Em là lớp trưởng, làm thế nào để có thể xếp hàng từ thấp đến cao (cao đến thấp) cho các bạn trong lớp”
2 Phương pháp dạy học:
- Không gì thú vị bằng trong giờ học tự mình ra đề bài và tự mình giải được bài tập
đó Do đó ngoài những bài tập do giáo viên đưa ra, nên lồng các tiết thực hành, làm bài tập cho các em tự ra đề (các đề bài toán đơn giản gắn liền với nội dung bài học tiết học đó) rồi giải, một khi các em tự ra đề là các em đã hiểu rõ nội dung bài học và
đã nắm được hướng giải quyết bài toán đó nên khi giải rất nhanh và được giáo viên khích lệ kịp thời sẽ khiến các em rất phấn chấn, thích thú, mong muốn ra được nhiều bài tập hơn nữa
- Giáo viên khi dạy xong phần lý thuyết, ra một số bài tập liên quan đến nội dung bài học sau khi hướng dẫn, giải thích cho các em hiểu được ý nghĩa của bài toán, sử dụng thuật toán thì cho thêm nhiều bài tập tương tự cùng một nội dung để khuyến khích các em hiểu rõ hơn, sâu hơn về nội dung đó
- Ngoài ra, trong các tiết học nên tổ chức cho các em hoặc các nhóm tự ra đề (một
số đề đơn giản) và yêu cầu nhóm khác giải, các em sẽ giải bài tập chéo của nhau, giáo viên là người sẽ tổng hợp lại những mặt ưu điểm nổi trỗi của các em và phân tích những chỗ các em còn sai hay mắc phải, cộng điểm cho các em khi làm đúng Chắc chắn không khí học lúc này sẽ rất vui, có không khí ganh đua trong học tập rất tích cực
Trang 5- Dưới tư duy và ngôn ngữ của học sinh lúc đó giáo viên chúng ta có thể lưu lại được nhiều bài tập hay, gần gũi với học sinh để từ đó làm ngân hàng bài tập phục vụ cho giảng dạy
3 Công cụ thiết kế bài giảng
- Do đặc thù của môn tin học nên công cụ cũng là một yếu tố mang lại sự hứng thú rất cao với những hình ảnh minh họa các bài toán gần gũi với cuộc sống từ đó giúp các em có được cái nhìn tổng quan về bài toán cụ thể Bên cạnh đó sử dụng công cụ thiết kế bài giảng chúng ta tạo ra được những trò chơi hào hứng bổ ích trong không khí chơi mà học giúp các em cũng cố lại nội dung và kiến thức đã học một cách thật thoải mái
4 Nội dung minh họa
truyền đạt, phương pháp dạy và cách thiết kế bài giảng sao cho nó phù hợp với
từng đối tượng học sinh, từng em một, làm cho các em đam mê, thích thú với những bài tập, những đoạn chương trình, tìm tòi xem khi viết đoạn chương trình chạy trên máy thành quả của mình đạt được là kết quả gì Tôi sẽ đưa ra một số tình huống, nội
dung cần truyền đạt bản thân đã dạy cho học sinh trong chương VI “Chương trình con và lập trình có cấu trúc”, người thầy phải làm rõ cho học sinh một số nội dung
trọng tâm, các em có cái nhìn tổng quan đến chi tiết rồi lúc đó mới đưa ra các tình huống bài tập cho các em tự giải quyêt hoặc chính các em là người sẽ đề ra bài tập cho các nhóm khác cùng xây dựng từ đó đưa đến kết luận, ý nghĩa của chương trình, bài học
4.1 Một số khái niệm và biến.
a Thủ tục (Procedure):
- Thủ tục là chương trình con thực hiện các thao tác nhất định nhưng không trả về giá trị nào qua tên của nó
- Có 2 loại thủ tục:
+ Thủ tục không tham số
+ Thủ tục có tham số
* Cấu trúc của thủ tục không tham số PROCEDURE < Tên thủ tục > ; { Các khai báo hằng, biến, kiểu cục bộ } BEGIN
{ các lệnh trong nội bộ thủ tục }
END ;
Trang 6Ví dụ : Tìm số lớn nhất trong 3 trị số nguyên
Program so_lon_nhat;
var a, b, c : integer;
Procedure GTLN;
var max : integer;
begin
if a > b then max := a else max := b;
if c > max then max := c;
Writeln (' So lon nhat la: ', max:5);
end ; begin Writeln ('Nhap 3 so nguyen : ' );
Readln (a, b, c );
GTLN;
readln;
end
Trong chương trình trên, thủ tục GTLN được khai báo trước khi nó được truy xuất, các biến a, b, c được gọi nhập vào ở chương trình chính và biến max được định nghĩa bên trong thủ tục Điều này cho ta thấy, không phải lúc nào cũng cần thiết khai báo biến ngay đầu chương trình chính
Cấu trúc của thủ tục có tham số
- Khi viết một thủ tục, nếu có các tham số cần thiết, ta phải khai báo nó
(kiểu, số lượng, tính chất, ) Các tham số này gọi là tham số hình thức (formal
parameters)
- Một thủ tục có thể có 1 hoặc nhiều tham số hình thức Khi các tham số hình thức có cùng một kiểu thì ta viết chúng cách nhau bởi dấu phẩy (,) Trường hợp các kiểu của chúng khác nhau hoặc giữa khai báo tham số truyền bằng tham biến và truyền bằng tham trị (phần giới thiệu về tham số hình thức sẽ nói rõ cho học sinh nắm bắt ở phần này) thì ta phải viết cách nhau bằng dấu chấm phẩy (;)
PROCEDURE<Tên thủ tục >(<DS tham số hình thức : kiểu biến>);
{ Các khai báo hằng, biến, kiểu cục bộ }
BEGIN { các lệnh trong nội bộ thủ tục } END ;
Trang 7Ví dụ: Hoán đổi 2 số nguyên a và b.
program vidu_hoandoi;
uses crt;
var a,b:integer;
procedure hoan_doi(var x,y:integer);
var TG: integer;
begin
TG:=x;
x:=y;
y:=TG;
end;
begin
clrscr;
a:=5; b:=10;
writeln(a:5, b:5);
hoan_doi(a,b);
writeln('gia tri sau hoan doi: ', a:5,b:5);
readln;
end
Chương trình trên x, y được gọi là tham số hình thức của thủ tục hoan_doi
b Hàm (Function) :
- Hàm là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó
- Cấu trúc một hàm tự đặt gồm:
FUNCTION <Tên hàm> (<Tham số hình thức : kiểu biến>) :
<Kiểu kết quả> ;
{ các khai báo hằng, biến, kiểu cụcbbộ }
BEGIN { các khai báo trong nội bộ hàm }
END ;
Trong đó:
+ Tên hàm là tên tự đặt cần tuân thủ theo nguyên tắc đặt tên trong Pascal + Kiểu kết quả là một kiểu vô hướng, biểu diễn kết quả giá trị của hàm.
+ Một hàm có thể có 1 hay nhiều tham số hình thức, khi có nhiều tham số hình thức cùng một kiểu giá trị thì ta có thể viết chúng cách nhau bằng dấu phẩy (,) Trường hợp các tham số hình thức khác kiểu thì ta viết chúng cách nhau bằng dấu chấm phẩy (;)
+ Trong hàm có thể sử dụng các hằng, kiểu, biến đã được khai báo trong chương trình chính nhưng ta có thể khai báo thêm các hằng, kiểu, biến dùng
x,y gọi là tham số hình thức
Trang 8riêng trong nội bộ hàm Chú ý là phải có một biến trung gian có cùng kiểu kết
quả của hàm để lưu kết quả của hàm trong quá trình tính toán để cuối cùng ta
có 1 lệnh gán giá trị của biến trung gian cho tên hàm
Ví dụ: Tìm giá trị nhỏ nhất của 3 số thực a,b và c
program minbaso;
var a,b,c:real;
function Min(a,b:real):real;
begin
if a<b then Min:=a else Min:=b;
end;
begin write('nhap 3 so:');readln(a,b,c);
writeln('so nho nhat trong 3 so: ', Min(Min(a,b),c):3:1);
readln;
end
Ta có function Min(a,b:real):real; Đây là một hàm số có tên là Min với 2
tham số hình thức là a,b Kiểu của a,b là kiểu thực Hàm Min sẽ cho kết quả là
kiểu số thực
c Biến toàn cục (global variable): Còn được gọi là biến chung, là biến
được khai báo ở đầu chương trình, nó được sử dụng bên trong chương trình chính và
cả bên trong chương trình con Biến toàn cục sẽ tồn tại trong suốt quá trình thực hiện chương trình.
program vidu_hoandoi;
uses crt;
procedure hoan_doi(x:integer; y: integer);
var TG: integer;
begin
TG:=x;
x:=y;
y:=TG;
end;
begin
clrscr;
a:=5; b:=10;
writeln(a:5, b:5);
hoan_doi(a,b);
writeln('gia tri sau hoan doi: ', a:5,b:5);
readln; end
Trang 9d Biến cục bộ (local variable): Còn được gọi là biến riêng, là biến được khai
báo ở đầu chương trình con, và nó chỉ được sử dụng bên trong thân chương trình con hoặc bên trong thân chương trình con khác nằm bên trong nó (các chương trình con lồng nhau) Biến cục bộ chỉ tồn tại khi chương trình con đang hoạt động, nghĩa là biến cục bộ sẽ được cấp phát bộ nhớ khi chương trình con được gọi để thi hành, và nó sẽ được giải phóng ngay sau khi chương trình con kết thúc
program vidu_hoandoi;
uses crt;
var a,b:integer;
procedure hoan_doi(x:integer; y: integer);
begin
TG:=x;
x:=y;
y:=TG;
end;
begin
clrscr;
a:=5; b:=10;
writeln(a:5, b:5);
hoan_doi(a,b);
writeln('gia tri sau hoan doi: ', a:5,b:5);
readln;
end
e Tham số hình thức (formal parameter) là các biến được khai báo ngay sau
Tên chương trình con, nó dùng để nhận giá trị của các tham số thực truyền
đến Tham số hình thức cũng là một biến cục bộ, ta có thể xem nó như là các đối số của hàm toán học Tham số hình thức có 2 loại:
+ Tham số hình thức là tham trị, là các tham số hình thức không có từ khóa khai báo biến (var) đứng trước nó, các giá trị chỉ có tác dụng bên trong chương trình con, ra khỏi chương trình con không còn giá trị
+ Tham số hình thức là tham biến là các tham số hình thức có từ khóa khai báo biến (var) đứng trước nó, các giá trị có tác dụng bên trong chương trình con và cả chương trình lớn
Trang 10program vidu_hoandoi;
uses crt;
var a,b:integer;
procedure hoan_doi( var x:integer; y: integer);
var TG: integer;
begin TG:=x;
x:=y;
y:=TG;
end;
begin clrscr;
a:=5; b:=10;
writeln(a:5, b:5);
hoan_doi(a,b);
writeln('gia tri sau hoan doi: ', a:5,b:5);
readln;
end
f Tham số thực (actual parameter) là một tham số mà nó có thể là một biến
toàn cục, một biểu thức hoặc một giá trị số (cũng có thể biến cục bộ khi sử dụng chương trình con lồng nhau) mà ta dùng chúng khi truyền giá trị cho các tham số hình thức tương ứng của chương trình con
program vidu_hoandoi;
uses crt;
var a,b:integer;
procedure hoan_doi(x:integer; y: integer);
var TG: integer;
begin TG:=x;
x:=y;
y:=TG;
end;
begin
clrscr;
a:=5; b:=10;
writeln(a:5, b:5);
hoan_doi(a,b);
writeln('gia tri sau hoan doi: ', a:5,b:5);
readln;
end
Tham biến Tham trị
Tham số thực sự; trong trường hợp này là biến a,b