MỤC LỤC
A. PHẦN I: MỞ ĐẦU
1.
2.
3.
4.
Lý do chọn đề tài .............................................................................................2
Mục đích nghiên cứu ...................................................................................... 2
Đối tượng nghiên cứu.......................................................................................3
Phương pháp nghiên cứu............................... ..................................................3
B. PHẦN II: NỘI DUNG SÁNG KIẾN KINH NGHỆM
2.1. Cơ sở lí luận của sáng kiến kinh nghiệm..................................................3
2.2. Thưc trạng vấn đề trước khí áp dụng sáng kiến kinh nghiệm...................3
2.3. Sáng kiến kinh nghiệm và các giải pháp đã sử dụng để giải quyết vấn đề.
I. Một số lỗi sai thường gặp của học sinh trong lập trình Pascal
1) Sử dụng dấu ; sai vị
trí..................................................................................3
2) Không phân biệt được hằng xâu và biến......................................................4
3) Khai báo sai miền chỉ số cho dữ liệu kiểu mảng..........................................4
4) Khai báo biến thuộc kiểu dữ liệu này nhưng trong phần thân chương trình
lại dùng biến với kiểu dữ liệu khác..............................................................4
5) Tràn số do kết quả tính toán vượt quá giới hạn .......................................... 4
6) Không hiểu nguyên tắc làm tròn đối với số thực.........................................4
7) Chưa nắm chắc nguyên lí hoạt động của vòng lặp For................................4
8) Giá trị biến điều khiển vượt quá miền chỉ số của mảng...............................5
9) Chưa hiểu thứ tự ưu tiên phép toán..............................................................5
II. Giải pháp sử dụng để giải quyết vấn đề
1) Bài tập về đọc hiểu chương trình.................................................................6
2) Bài tập về sửa lỗi chương trình....................................................................6
sinh dễ mắc sai lầm khi lập trình giải quyết các bài toán. Nguyên nhân dẫn
đến những khó khăn mà học sinh thường gặp là rất phong phú.
• Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học sinh việc học ngôn
ngữ lập trình Turbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình
bậc cao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt đông
cũng như ích lợi của các chương trình hoạt động trong máy tính, các máy tự
động… Qua đó giúp các em có thêm một định hướng, một niềm đam mê về
tin học, về nghề nghiệp mà các em chọn sau này.
Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Một số lưu ý khi dạy lập trình Pascal
cho học sinh lớp 11”.
2) Mục đích nghiên cứu:
• Do gặp phải những khó khăn trên nên khi lập trình giải các bài toán học sinh
thường mắc rất nhiều lỗi, thậm chí có những lỗi các em mắc phải nhiều lần
do không hiểu nguyên nhân xuất hiện lỗi. Vì vậy trong nội dung đề tài này
tôi nêu ra một số lỗi phổ biến các em thường mắc phải và cách sửa các lỗi
này.
• Tuy vậy, đối với đối tượng học sinh khá giỏi, đa phần các em rất hào hứng
với việc học lập trình, cụ thể là ngôn ngữ lập trình Turbo Pascal. Do đó trong
đề tài này tôi cũng trình bày thêm một số lưu ý cũng như kinh nghiệm dạy
lập trình Pascal đề giúp học sinh có thể hiểu bài một cách nhanh chóng, nắm
chắc kiến thức và kĩ năng lập trình Pascal và một số ví dụ mở rộng, nâng cao
với đối tượng học sinh này.
2
3) Đối tượng nghiên cứu:
• Đối tượng nghiên cứu: học sinh các lớp 11A1, 11A2 , 11A3 trường THPT
Nông Cống I.
4) Phương pháp nghiên cứu:
• Trực tiếp qua các bài dạy.
- Sử dụng dấu chấm phẩy sau từ khoá do trong các câu lệnh lặp
2) ) Không phân biệt được hằng xâu và biến: học sinh cần phải chú ý hằng xâu
đặt trong cặp nháy đơn còn biến thì không cần đặt trong cặp nháy đơn.
Writeln(' Nhap phan tu thu ',i,' cua mang');
3
Nhap phan tu thu, cua mang: là hằng xâu.
i: là biến.
3) Khai báo sai miền chỉ số cho dữ liệu kiểu mảng.
Ví dụ : Nhập vào một mảng số nguyên gồm các số lớn hơn 5 và nhỏ hơn 100.
In mảng vừa nhập.
Học sinh khai báo mảng như sau:
Var a: array[5..100] of integer;
4) Khai báo biến thuộc kiểu dữ liệu này nhưng trong phần thân chương trình
lại dùng biến đó với kiểu dữ liệu khác.
Ví dụ: Khai báo biến a thuộc kiểu nguyên, nhưng trong phần thân chương trình
lại có câu lệnh a:=a/2; biểu thức a/2 thuộc kiểu số thực, biến a thuộc kiểu
nguyên không thể lưu trữ giá trị số thực.
5) ) Tràn số do kết quả tính toán vượt quá giới hạn.
Tính tổng các số nguyên từ 50 đên 500
Var SUM,i:integer;
Begin
SUM:=0;
For i:=50 to 500 do SUM:=SUM+i;
Writeln('Tong:=',SUM);
End.
Song trong thực tế, tổng SUM sẽ lớn hơn 32767 tức là tràn ô nhớ. Vì vậy, cần
khai báo tổng SUM à Real thì chương trình mới chạy được.
6) ) Không hiểu nguyên tắc làm tròn số đối với số thực.
If a[i]>a[j] then
begin
t:=a[i];
4
a[i]:=a[i+1];
a[i+1]:=t;
end;
Nhiều học sinh tự sửa lại câu lệnh For j:=N downto 2 do bằng câu lệnh
For j:=2 to n do, vì nghĩ hai câu lệnh này như nhau.
8) Giá trị biến điều khiển vượt quá miền chỉ số của mảng.
Ví dụ 2: Nhập vào một dãy số gồm 7 phần tử và cho biết dãy vừa nhập có tạo
thành cấp số cộng không?
Học sinh lập trình giải bài toán trên như sau:
Var a: array[1..7] of integer; i,d:integer;kt:boolean;
Begin
Write(‘nhap day so:’);
For i:=1 to 7 do
Begin
Write(‘a[’ ,i, ‘]’);
Readln(a[i]);
End;
d:=a[2]-a[1];kt:=true;i:=1;
while (kt) and (i
var a:array[1..100] of integer;
Begin
Clrscr;
write('N:='); readln(N);
for i:=1 to N do readln(a[i]);
for i:=1 to N div 2 do
begin
t:=a[i]; a[i]:=a[n-i+1]; a[n-i+1]:=t;
end;
for i:=1 to n do write(a[i]:5);
Readln;
End.
2. Bài tập về sửa lỗi chương trình:
• Trong lập trình Pascal việc giúp học sinh nhận ra lỗi sai và cách sửa các lỗi là
vô cùng cần thiết. Để có thể sửa lỗi nhanh chóng cần có sự tích luỹ kinh
nghiệm những lỗi thường hay gặp. Nếu có điều kiện sử dụng máy chiếu trong
các tiết học này sẽ đem lại hiệu quả trực quan cao. Cả lớp có thể nhìn thấy
toàn chương trình và quy trình dịch cũng như sửa lỗi của giáo viên.
• Lỗi về cú pháp thì được chương trình dịch phát hiện và báo, nhưng lỗi ngữ
nghĩa thì không.
Function UCLN(var a,b:vord):word;
Begin
While ab do
6
If a>b then a:=a-b
else b:=b-a;
UCLN:=a;
end;
nhớ và không sát với yêu cầu của bài toán)
Ví dụ: Cho dãy A gồm n số nguyên dương a1, a2,a3...an. Tìm giá trị nhỏ nhất của
dãy và đưa ra vị trí của số đó.
Học sinh viết khai báo như sau:
7
Const nmax=50;
Var A: array[1..nmax] ò integer;
n,i,min,csmin:integer;
Bài toán cho ta là dãy số nguyên dương nhưng học sinh khai báo là Integer có
nghĩa là khi nhập giá trị cho phần tử mảng âm vẫn thoả mãn điều này sai với yêu
cầu của bài toán.
4. Bài tập về viết thuật toán:
• Theo định nghĩa trong sách giáo khoa Tin học 10, thuật toán là một dãy
hữu hạn các thao tác được sắp xếp theo một trình tự xác định, sao cho sau
khi thực hiện dãy thao tác ấy từ INPUT ta nhận được OUTPUT. Nói cách
khác, trình bày thuật toán tức là chỉ ra các bước cần thực hiện để đi đến
kết quả.
• Việc trình bày thuật toán trước khi viết chương trình là hết sức quan
trọng. Thuật toán đúng thì chương trình mới có khả năng đúng, còn một
thuật toán sai chắc chắn là cho một chương trình sai. Tuy nhiên đối với
phần lớn học sinh lớp 11 thường bỏ qua bước này do tâm lý học sinh
không thích các loại bài tập như thế.
• Trong nhiều trường hợp tưởng như không cần thuật toán cụ thể học sinh
vẫn viết được chương trình. Thực tế thuật toán đó không được viết ra
nhưng đã hình thành sẵn trong đầu người viết.
• Một bài toán có thể có nhiều cách giải khác nhau ứng với mỗi cách giải
ta có một thuật toán. Để giúp học sinh có khả năng nhanh chóng nắm
được ý tưởng của người khác cần luỵên cho các em biết giải bài toán theo
Trong thực tế. chúng ta thường gặp những vấn đề lớn mà với sức của một
người thì không thể giải quyết được. khi gặp những vấn đề như vậy, ta thường nhờ
bạn bè, người thân giúp một tay, mỗi người lo một phần việc.Khi giải một bài toán,
ta thường chia bài toán lớn ban đầu thành nhiều bài toán con để việc giải bài toán
ban đầu trở nên dễ dàng hơn, … Và như vậy, khi cần giải quyết một vấn đề nào đó
bằng máy tính, để viết một chương trình phức tạp ta có thể viết từng phần chương
trình giải quyết từng vấn đề nhỏ.
Như vậy, việc phân chia một bài toán thành nhiều bài toán nhỏ sẽ giúp cho việc
giải quyết bài toán mạch lạc, vịêc kiểm tra sai sót thuận tiện, có thể thấy kết quả ở
từng bước và có thể điều chỉnh kịp thời. Cụ thể chính là rèn luyện tư duy và khả
năng sư dụng chương trình con.
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, bản thân,
đồng nghiệp và học sinh.
• Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2014-2015 khi
chưa thực hiện đề tài:
STT Lớp
Sỉ số Đạt yêu cầu Không đạt yêu cầu
1
11C1 49
70%
30%
2
11C2 48
62.5%
37.5%
3
11C5 50
44%
56%
• Khi thực hiện thực nghiệm qua các đối tượng học sinh đã nêu trên, đa số các
Không đạt yêu cầu
8%
15%
34%
III. KẾT LUẬN VÀ KIẾN NGHỊ
• Có thể nói sáng kiến kinh nghiệm trên là một trong những vấn đề tuy đơn
giản nhưng lại là nền tảng vững chắc để bước đầu các em hiểu rõ và yêu
thích môn học. Nó cũng là một tài liệu hữu ích đối với những giáo viên
vừa mới đứng lớp giảng dạy lập trình Pascal.
• Việc ứng dụng của sáng kiến đã được vận dụng ngay tại tại trường THPT
Nông Cống I và đem lại hiệu quả trông thấy thông qua các số liệu khảo
sát. Hy vọng sáng kiến này sẽ được nhiều đồng nghiệp cùng chuyên môn
ở các trường tham khảo và hướng tiếp tục nghiên cứu phát triển mở rộng
hơn nữa để sáng kiến được hoàn thiện hơn.
DANH MỤC TÀI LIỆU THAM KHẢO
1. Hội Tin học Việt Nam - Tạp chí “Tin học và nhà trường”
2. Hồ Sĩ Đàm (chủ biên)- Sách giáo khoa, sách giáo viên tin học lớp 11
3. GS-TS Hoàng Kiếm -“Giải một bài toán trên máy tính như thế nào”
4. Quách Tuấn Ngọc - Ngôn ngữ lập trình Pascal
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN Thanh Hoá, ngày 1 tháng 5 năm
VỊ
2016
Tôi xin cam đoan đây là SKKN của
mình viết, không sao chép nội dung
của người khác.
10