Sáng kiến Kinh nghiệm dạy lập trình Pascal

doc 18 trang sklop8 23/08/2024 400
Bạn đang xem tài liệu "Sáng kiến Kinh nghiệm dạy lập trình Pascal", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Sáng kiến Kinh nghiệm dạy lập trình Pascal

Sáng kiến Kinh nghiệm dạy lập trình Pascal
 I. PHẦN MỞ ĐẦU
1. Lí do chọn đề tài:
 Tin học là một môn học đã được đưa vào giảng dạy ở các trường THCS từ rất lâu, 
nhằm giúp cho học sinh hiểu được vai trò của Máy tính và Khoa học máy tính đối với sự 
phát triển của một xã hội hiện đại; có khả năng lựa chọn, sử dụng được các thiết bị và 
phần mềm thông dụng.
 Ngôn ngữ lập trình Pascal là một ngôn ngữ lập trình vở lòng (cơ bản nhất) trong các 
chương trình tin học đại cương. Pascal là một ngôn ngữ lập trình dùng để viết các chương 
trình ứng dụng trên máy tính. 
 Pascal không chỉ là môn học được đưa vào giảng dạy ở bộ môn Tin học 8 mà nó 
còn được lựa chọn để luyện thi HSG cấp huyện, cấp tỉnh trên địa bàn tỉnh Đăk Lăk. 
 Qua quá trình giảng dạy, bồi dưỡng, dự giờ đồng nghiệp và tìm hiểu học sinh, đặc 
biệt là qua các cuộc thi HSG hằng năm, tôi nhận thấy có một số vấn đề như sau: 
 - Học sinh không muốn học môn lập trình Pascal.
 - Học sinh gặp khó khăn khi làm bài tập.
 - Khó lựa chọn được học sinh vào đội tuyển tham gia bồi dưỡng HSG Tin học 8.
 - Học sinh không muốn đăng ký học bộ môn này để thi HSG.
 - Có học sinh tham gia dự thi HSG Tin học 8 hằng năm nhưng không đạt.
 - Một số các thầy cô giảng dạy, do trình độ học sinh còn nhiều hạn chế nên có người 
nảy sinh tâm lý chán nản cho rằng mình có giảng nhiều, nói nhiều mà học sinh không 
chịu học, không tư duy thì bỏ công sức cũng chẳng đem lại tác dụng gì cả. Từ tâm lý đó 
lời giảng của một số thầy cô chỉ chuẩn bị sơ lược, nông cạn. Họ đã vô tình làm tắt nguội 
ở các em lòng đam mê, nghiên cứu môn “Lập trình”.
 * Nguyên nhân:
 - Một số gia đình lại có ý hướng con em đầu tư vào các môn học như Toán, Ngoại 
ngữ,  để sau này các em có thể đi vào các ngành nghề có thể kiếm được nhiều tiền. Vì 
vậy một số em có ý thức xem nhẹ bộ môn, không đi sâu vào học tập, nghiên cứu hoặc 
học đối phó.
 - Phần lớn học sinh còn phải tham gia công việc gia đình và việc kiếm sống nên 
thời gian học tập, nghiên cứu, đầu tư còn hạn chế. Ý thức vượt khó trong học tập của các 
em chưa cao.
 - Nhiều học sinh còn lơ là trong việc học, không chịu học bài, không chịu nghiên 
cứu thêm kiến thức, tâm lí chủ quan. Từ đó kết quả các bài kiểm tra không đạt dẫn đến 
chán nản.
 - Chương trình Tin học 8 (mảng lập trình) rất rộng mà thời lượng thực dạy và cho 
học sinh thì rất ít nên không thể truyền tải đầy đủ hết kiến thức cho các em.
 - Việc đổi mới phương pháp dạy học, giáo viên có sử dụng phương pháp mới 
nhưng hiệu quả chưa cao, chưa có tính sáng tạo, chưa có sự linh hoạt, chưa kích thích tư 
duy sáng tạo, chưa phát huy tính tích cực của học sinh. Đặc biệt hơn nữa là về kiến thức 
“Lập trình” cả giáo viên và học sinh đều chưa đầu tư một cách thích đáng bởi thời gian 
quá ngắn mà nội dung thì khó không thể truyền đạt hết trong một vài tiết học, nếu như 
 Trang 1 II. NỘI DUNG
1. Những nội dung lí luận có liên quan trực tiếp đến vấn đề nghiên cứu
 Từ nhiều năm nay, ban giám hiệu vẫn thường xuyên tập trung chỉ đạo công tác 
nâng cao thành tích học tập, làm nòng cốt cho việc nâng cao chất lượng giáo dục trong 
nhà trường. Hàng năm, nhà trường đã chỉ đạo tổ chuyên môn xây dựng kế hoạch ở từng 
môn học, có đặt ra chỉ tiêu phấn đấu cụ thể, phân công giáo viên kèm cặp, giúp đỡ những 
học sinh
 Nhà trường cũng đã hướng dẫn giáo viên những yêu cầu kiến thức, lập kế hoạch bồi 
dưỡng học sinh. Phối hợp với hội cha mẹ học sinh, hội khuyến học kịp thời động viên 
khen thưởng thúc đẩy phong trào. Công tác chỉ đạo của nhà trường được đề ra đã thu 
được một số kết quả khả quan. 
 Tuy nhiên chất lượng thi học sinh chưa cao, số lượng học sinh giỏi môn Tin học 
không nhiều. Quá trình tổ chức thực hiện vẫn còn có những bất cập. Việc đầu tư nghiên 
cứu tài liệu, đầu tư thời gian nâng cao kiến thức cho học sinh ở giáo viên còn ít. Vấn đề 
điều tra, khảo sát, phân loại đối tượng, phát hiện năng khiếu ở học sinh chưa làm tốt.
 Về phía đội ngũ học sinh của trường thì đại đa số là con em các gia đình làm nghề 
nông, kinh tế gặp nhiều khó khăn, việc đầu tư, chăm lo cho con cái học tập tuy có cố 
gắng song chưa đáp ứng kịp với yêu cầu đổi mới, nội dung chương trình, phương pháp 
giáo dục hiện nay. Sự phối hợp giữa gia đình - nhà trường tuy có được cải thiện song 
chưa thực sự đi vào chiều sâu. Điều đó đã làm phiền lòng các thầy cô giáo trực tiếp giảng 
dạy, kết quả học tập của các em vì thế không cao.
 2. Thực trạng của vấn đề nghiên cứu
 2.1. Về phía thầy giáo: 
 + Với suy nghĩ một chiều về tính hiệu quả không cao trong dạy – học Lập trình, 
nhiều giáo viên ngại dạy môn Tin học 8. Họ không những không chuyển tải trọn vẹn 
những kiến thức quan trọng mà còn làm cho học sinh thấy môn học trở nên khô khan, 
khó hiểu, khó học, ...Từ đó làm cho học sinh chán nản, không thích học “Lập trình”. 
Đánh mất niềm đam mê trở thành một “lập trình viên” trong tương lai của các em. 
 + Việc đổi mới phương pháp dạy học, giáo viên có sử dụng phương pháp mới, 
nhưng còn máy móc, hiệu quả chưa cao, chưa có tính sáng tạo, chưa có sự linh hoạt, chưa 
kích thích tư duy sáng tạo, chưa phát huy tính tích cực của học sinh.
 + Một số giáo viên chưa thật sự đầu tư về công tác bồi dưỡng học sinh giỏi.
 2.2 Về phía học sinh: 
 +Tình trạng học vẹt, học thụ động, học đối phó với kiểm tra thi cử đang là hiện 
tượng phổ biến nên việc tìm kiếm thông tin là hi hữu. 
 + Học sinh rất sợ học lập trình, ngại học lập trình mà thường có xu hướng chạy theo 
các môn học tự nhiên với suy nghĩ sau này dễ tìm việc làm thực dụng hơn. Ở lớp, các em 
có thói quen nghe giảng, ghi bài, tất cả chỉ trông chờ vào những kiến thức thầy truyền thụ 
hoặc giải trên bảng, trên máy một cách máy móc, ít hoạt động hoặc nếu có chủ yếu viết 
chương trình cho có, hoặc tìm lời giải trên mạng để đối phó mà không hiểu được ý nghĩa 
của các chương trình đó như thế nào.
 Trang 3 trả lời là: khô khan, trừu tượng, khó học, khó nhớ và không mặn mà gì mấy đến hai từ 
“Lập trình”. Vì vậy việc học tập gặp rất nhiều khó khăn.
 - Đối với những môn học khác, kiến thức học sinh được giáo viên truyền đạt và 
tiếp thu từ chương trình lớp 6 đến lớp 8 nên các em có được những kiến thức cơ bản nên 
sẽ thuận lợi cho giáo viên trong việc lựa chọn học sinh có năng khiếu học. Còn bộ môn 
Tin học (hoặc Hóa học), đặc biệt là Tin học 8 thuộc lĩnh vực “Lập trình mãi đến lớp 8 các 
em mới được học Pascal với những kiến thức cơ bản và đơn giản nhất”. 
 - Bộ môn Tin học THCS thường ít được học sinh quan tâm, yêu thích vì nó là một 
môn học phụ. Nhất là Tin học lớp 8, một nội dung kiến thức cần rất nhiều tư duy và khả 
năng sáng tạo trong từng cấu trúc khi lập trình. Mặt khác Tin học 8 không như tin học 6, 
7, 9 là các phần mềm ứng dụng dễ hiểu, dễ vận dụng, dễ hình dung, dễ liên hệ thực tế 
trong cuộc sống. Tin học 8 thường có rất ít ứng dụng dễ nhận thấy do vậy khó tiếp cận, 
khó gần gũi đối với các em học sinh. Trong nhiều năm giảng dạy, tôi thấy việc tạo hứng 
thú cho học sinh yêu thích môn lập trình là một việc làm rất cần thiết và cần đầu tư. 
 - Đặc trưng của môn Tin học 8 là kiến thức về lập trình. Ngôn ngữ lập trình dường 
như rất xa lạ vì đây là kiến thức đầu tiên trong lập trình mà các em được học.
 - Lập trình Pascal "khó" đối với học sinh THCS ở chỗ: môi trường lập trình Pascal 
có giao diện và các từ khóa đều bằng tiếng Anh, các dòng thông báo hay trợ giúp cũng 
vậy. Bình diện chung học sinh THCS vốn tiếng Anh không nhiều, đa số các em còn yếu 
về tiếng Anh. Lấy đơn vị lớp để tính thì mỗi lớp chỉ có một vài em được gọi là "thông 
thạo" tiếng Anh qua các bài học. Hầu hết số còn lại nằm trong trạng thái "mù tịt". Đây là 
một khó khăn cho việc hiểu được Pascal.
 - Một vấn đề nữa cũng là rào cản đối với việc các học sinh THCS tiếp cận với lập 
trình Pascal đó là: tư duy Toán của các em dừng lại ở mức độ Sách Giáo Khoa Toán 
THCS do đó kỹ năng phân tích, tổng hợp, xây dựng thuật toán cho mỗi bài toán hay vấn 
đề cần lập trình chưa tốt. Các em vẫn thụ động trong việc tiếp cận bài toán, sắp xếp tư 
duy, xây dựng thuật giải.
 - Mặc dù giáo viên đã có nhiều cố gắng trong việc đổi mới phương pháp dạy học 
theo hướng làm tăng tính tích cực của người học. Nhưng thực tế việc thực hiện theo tinh 
thần đổi mới phương pháp dạy học vẫn chưa đạt hiệu quả cao. Trong từng tiết học, học 
sinh còn thụ động nhiều, chỉ ngồi nghe, chép là chính, không khí giờ học “Lập trình” trôi 
qua nặng nề, nhàm chán.
- Các em học sinh có năng lực với bộ môn Tin học thì thường kèm theo là giỏi bộ môn 
Toán, Lí, Hóa do đó các em có thể chọn những môn học này để học chuyên sâu.
 - Học sinh không biết tìm ra cách học làm sao cho đạt kết quả một cách tốt nhất. 
Việc học là quan trọng ở người học. Do vậy, dù chúng ta có truyền thụ thật đầy đủ kiến 
thức cho các em, vận dụng nhiều phương pháp đổi mới trong giờ học thì kết quả các em 
lĩnh hội cũng không đáng là bao nhiêu. 
 -> Đây là nguyên nhân cơ bản, nguyên nhân chính, nguyên nhân lớn nhất có ảnh 
hưởng đến kết quả học tập của các em.
 Tóm lại, với những nguyên nhân vừa mang tính khách quan, vừa mang tính chủ quan 
cùng với sự tác động của xã hội đến tâm lý của người dạy và người học. Chính vì thế tôi 
 Trang 5 Writeln (‘Nhap a, b, c:’); Readln (a, b, c);
 If (a>b) and (a>c) Then Writeln (a,’ lon nhat’)
 Else If (b>a) and (b>c) Then Writeln (b,’ lon nhat’)
 Else Writeln (c,’ lon nhat’);
 If (a<b) and (a<c) Then Writeln (a,’ nho nhat’)
 Else If (b<a) and (b<c) Then Writeln (b,’ nho nhat’) 
 Else Writeln (c,’ nho nhat’);
 Readln;
 End.
 ❖ Phương pháp 2:
 -Ý tưởng:
 + Nếu a>b thì ta gán a cho Max, b cho Min, ngược lại thì ta gán Max cho b, Min 
cho a {Tìm số lớn nhất và nhỏ nhất trong hai số a, b. Sau khi thực hiện dòng lệnh trên 
Max sẽ nhận được giá trị lớn nhất, Min sẽ nhận được giá trị nhỏ nhất}.
 + Nếu c>Max thì ta gán c cho Max, ngược lại nếu c<Min thì ta gán c cho Min {So 
sánh c với giá trị lớn nhất (Max) và nhỏ nhất (Min)}.
 - Chương trình:
 Program LN_NN;
 Var a, b, c, Max, Min: Integer;
 Begin
 Write (‘Nhap lan luot 3 so a, b, c:’); Readln (a, b, c); 
 If (a>b) Then Begin Max:=a; Min:=b; End;
 Else Begin Max:=b; Min:=a; End;
 If (c>Max) Then Max:=c Else If (c<Min) Then Min:=c; 
 Write(‘So lon la:’,Max,’ So nho la:’,Min);
 Readln; 
 End.
 ❖ Phương pháp 3:
 - Ý tưởng:
 + So sánh giá trị a và b, nếu a>b thì đổi giá trị a và b. {Sau khi đổi giá trị thì sẽ cho 
kết quả a <b}.
 + So sánh giá trị b và c, nếu b>c thì đổi giá trị b và c. {Sau khi đổi giá trị thì sẽ cho 
kết quả a, b b hay b>a }.
 + Lại so sánh giá trị a và b, nếu a>b thì đổi giá trị a và b. {Sau khi đổi giá trị thì sẽ 
cho kết quả a < b và b < c}.
 - Chương trình:
 Program LN_NN;
 Var a,b,c,tam:Integer; 
 Begin
 Write('Nhap gia tri a, b, c tuong ung: ');Readln(a,b,c); 
 If a>b Then begin Tam:=a; a:=b; b:=tam end;
 If b>c Then begin Tam:=b; b:=c; c:=tam end; 
 Trang 7 ❖ Phương pháp 2:
 - Bổ sung kiến thức:
 + N là số Nguyên tố khi n>=2 và n không chia hết cho số nào có giá trị trong 
khoảng từ 2 đến n – 1. Tuy nhiên trên thực tế thì chỉ cần n không chia hết cho số nào có 
giá trị trong khoản từ 2 đến số nguyên gần với căn n nhất nhưng nhỏ hơn n 
{Trunc(Sqrt(n))}.
 + Giả sử A và B là hai giá trị kiểu Boolean. Kết quả của các phép toán được thể 
hiện qua bảng dưới đây: 
 - Ý tưởng:
 + Giống như phương pháp 1 tuy nhiên ở đây chúng ta không đếm mà sử dụng 
phương pháp đánh dấu của kiểu boolean. Tức ta xét trường hợp n có chia hết cho i hay 
không, nếu n chia hết cho i thì ta đánh dấu là False {Giả sử biến KT có biểu dữ liệu là 
Boolean thì nếu n chia hết cho i thì KT:=False, ban đầu ta gán KT:=True}.
 + Kiểm tra biến KT, nếu KT là True {tức biến KT nhận tất cả là True} thì n là số 
nguyên tố, ngược lại n không phải số nguyên tố {tức biến KT có nhận lớn hơn hoặc bằng 
một giá trị False}.
 - Chương trình:
 Program KT_SONT;
 Var i,n:Integer; Kt:Boolean;
 Begin
 Write('Nhap gia tri N: ');Readln(n); 
 Kt:=True;
 If n < 2 Then Kt:=False Else
 For i:=2 To Trunc(Sqrt(n)) Do
 If n Mod i = 0 Then Kt:=False; 
 If Kt Then Write(n,' la so nguyen to')
 Else Write(n,' Khong la so nguyen to');
 Readln; 
 End.
 => Nhận xét:
 - Phương pháp 1: Giúp cho học sinh có cái nhìn tổng quan hơn khi xác định n có 
phải là số nguyên tố hay không thông qua phương thức đếm số lần n có chia hết cho giá 
trị nào trong khoảng từ [2..n-1] hay không, theo định nghĩa thì số nguyên tố là số chỉ chia 
hết cho 1 và chính nó {tức nếu N là số nguyên tố chỉ khi n chia hết cho 1 và n}. Vậy nếu 
n còn chia hết cho số nào trong khoảng [2..n-1] thì n không phải nguyên tố.
 - Phương pháp 2: Phương giáp này giúp học sinh tìm hiểu được nhiều kiến thức 
hơn trên nền kiến thức của phương pháp 1. Khi cho i chạy từ 2 đến trunc(sqrt(n)) thì số 
lần thực hiện vòng lặp được giảm đi một nữa, sẽ tiết kiệm được thời gian khi chạy 
chương trình; mặt khác giúp học sinh ôn lại kiến thức lấy kết quả phép so sánh của kiểu 
dữ liệu Boolean, một kiểu dữ liệu mà chúng ta cũng rất hay sử dụng trong các bài tạo 
vòng lặp.
 Bài toán 2: Viết chương trình nhập vào 2 số nguyên dương a, b khác nhau.
 Trang 9

File đính kèm:

  • docsang_kien_kinh_nghiem_day_lap_trinh_pascal.doc