Một số kinh nghiệm khi dạy PASCAL cho học sinh lớp 11 trường THPT triệu sơn 2 - Pdf 43

MỤC LỤC
A. ĐẶT VẤN ĐỀ
I. Lý do chọn đề tài ..............................................................................2
II. Mục đích nghiên cứu ........................................................................2
III. Phạm vi đề tài ..................................................................................3
IV. Đối tượng, kế hoạch và phạm vi nghiên cứu ...................................3

B. GIẢI QUYẾT VẤN ĐỀ
I. Cơ sở lý luận ................................................................................... 4
II. Cơ sở thực tiễn .....,.......................................................................... 4
III.Nội dung vấn đề cần nghiên cứu
1. Một số lỗi sai thường gặp của học sinh trong lập trình Pascal….......4
1.1. Khai báo sai miền chỉ số cho dữ liệu kiểu mảng............................ 4
1.2. Giá trị biến điều khiển vượt quá miền chỉ số của mảng ................ 4
1.3. Dùng cùng tên biến điều khiển cho các vòng lặp For lồng nhau ...5
1.4. Sử dụng dấu chấm phẩy sai vị trí ...................................................5
1.5. Không phân biệt được hằng xâu và biến ........................................6
1.6. Tràn số do kết quả tính toán vượt quá giới hạn ..............................6
1.7. Sử dụng tên hàm làm biến cục bộ ………………………………..6
1.8. Chưa hiểu thứ tự ưu tiên phép toán ………………………………6
1.9. Không hiểu nguyên tắc làm tròn số đối với số thực ..…..……….7
2. Một số kinh nghiệm dạy lập trình Pascal ...........................................7
2.1. Có nhiều dạng bài tập ......................................................................7
2.2. Trình bày thuật toán, yêu cầu học sinh viết chương trình theo đúng thuật
toán đó ....................................................................................................10
2.3. Giải bài toán trong một trường hợp riêng, yêu cầu học sinh phát hiện
thiếu sót để từ đó hoàn thiện chương trình .............................................12
2.4. Phân chia một bài toán thành nhiều bài toán nhỏ ............................13
2.5. Sửa lỗi chương trình .……………………………………………...13
3. Một số bài tập tham khảo…………………….….…………………..13
IV. Phương pháp và kết quả nghiên cứu......................................................17

thấy một số nguyên nhân chính sau đây:
+ Học sinh thường gặp khó khăn khi xác định bài toán.
+ Khó liên hệ phương pháp giải một bài toán trong toán học với thuật giải
trong tin học.
- 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ố kinh nghiệm khi dạy lập
trình Pascal cho học sinh lớp 11”.
II.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
2


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.
III.Phạm vi đề tài:
Các chú ý khi dạy ngôn ngữ lập trình nói chung, ngôn ngữ lập trình Turbo
Pascal nói riêng là rất nhiều, rât phong phú. Tuy nhiên trong phạm vi sáng

đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề
tranh luận. Cốt lõi của việc đổi mới phương pháp dạy học ở trường phổ
thông là giúp học sinh hướng tới việc học tập chủ động, chống lại thói
quen học tập thụ động. Với một số nội dung trong đề tài này, học sinh có
thể tự học, tự rèn luyện thông qua một số bài tập, dạng bài tập cụ thể.
II.Cơ sở thực tiễn:
- Qua thực tế giảng dạy ở trường Triệu Sơn 2 các năm qua, tôi nhận thấy
khi học đến chương trình tin học lớp 11 đa số học sinh đều nhận xét bộ
môn này rất khó.
- Các học sinh thường gặp khá nhiều lỗi khi viết một chương trình trong
ngôn ngữ lập trình Pascal.
- Tuy nhiên cũng có một số lượng không nhỏ học sinh rất yêu thích tin học
và thích tìm hiểu một số bài toán, dạng toán ngoài phạm vi sách giáo
khoa.
III.Nội dung vấn đề cần nghiên cứu:
1. Một số lỗi sai thường gặp của học sinh trong lập trình Pascal:
1.1.Khai báo sai miền chỉ số cho dữ liệu kiểu mảng.
Ví dụ 1: Nhập vào một mảng số nguyên gồm các số lớn hơn 3 và nhỏ hơn
100. In mảng vừa nhập[6].
Học sinh khai báo mảng như sau:
Var a: array[3..100] of integer;
1.2.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?[2].
Học sinh lập trình giải bài toán trên như sau:
4


Var a: array[1..7] of integer; i,d:integer;kt:boolean;
Begin

luôn nhận giá trị bằng k.
Để khắc phục lỗi này, chỉ cần chú ý các vòng lặp lồng nhau phải sử
dụng biến điều khiển khác nhau.
1.4.Sử dụng dấu ; sai vị trí.
- Trước Else không có dấu chấm phẩy.
- Sử dụng dấu chấm phẩy sau từ khoá do trong các câu lệnh lặp câu lệnh
lặp rỗng không làm việc gì cả.
5


1.5.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.
1.6.Tràn số do kết quả tính toán vượt quá giới hạn.
Function GT(n:integer):integer;
Var i,t:integer;
Begin
T:=1;
For i:=2 to n do t:=t*i;
Gt:=t;
End;
Begin
Write(‘GT(8)=’, GT(8));
Readln;
End.
Khi thực hiện chương trình GT(8)=-25126 là sai vì thực tế 8!=40320
Lỗi này do khai báo hàm trả về số nguyên nên miền giá trị tối đa là 32767
1.7.Sử dụng tên hàm làm biến cục bộ.
Do lệnh trả kết quả cho tên hàm rất giống một lệnh gán bình thường nên
học sinh thường nhầm tên hàm là biến cục bộ. Vì vậy khi viết chương trình
để tiết kiệm biến cục bộ học sinh đã sử dụng tên hàm làm biến cục bộ.

+
+
2
2
2
2

Tuy nhiên trong Pascal biểu thức sau sẽ cho kết quả sai:
If 3/sqrt(2)=1/sqrt(2)+1/sqrt(2)+1/sqrt(2) then write(‘Dung!’) else
write(‘sai!’);
Khi thực hiện vế trái máy tính chỉ tính sai số 1lần, còn vế phải chịu sai số
3 lần. Do đó kết quả khi thực hiện là không giống nhau. Đây chỉ là 1 nguyên
nhân khiến cho quá trình tính toán gần đúng trên máy tính thành tính toán sai.
Để tránh điều này bạn nên tuân thủ theo các qui tắc dưới đây:
- So sánh bằng nên dùng biểu thức a − b < ε
Const e=0.0001;
….
If abs(a-b)
tập hợp A có số phần tử hữu hạn. Tìm phần tử lớn nhất trong tập A nói trên.
Khi đó ta có thể trình bày thuật toán như sau:
1. Nếu chỉ có 1 hộp thì đó chính là hộp nặng nhất và kết thúc.
2. Nếu số hộp n>1 thì
Chọn 2 hộp bất kì và đặt lên bàn cân.
Giữ lại hộp nặng hơn và cất hộp nhẹ đi chỗ khác.
3. Nếu không còn hộp chưa được cân thì chuyển sangbước 5, ngoài ra:
Chọn một hộp bất kì và để lên dĩa cân còn trống
Giữ lại hộp nặng hơn, cất hộp nhẹ sang chỗ khác
4. Trở lại bước 3
5. Hộp còn lại trên cân là hộp nặng nhất và kết thúc.
2.1.2. Bài tập về đọc hiểu chương trình:
Loại bài tập này sẽ giúp phát triển tư duy, giúp học sinh hiểu bài, nhất là
khi dạy các cấu trúc lệnh. Đối với dạng bài tập này, giáo viên nên hướng
dẫn các em thực hiện tuần tự từng lệnh theo từng câu lệnh cụ thể.
Ví dụ 2: Cho biết kết quả khi thực hiện chương trình sau:
Program vd2;
Uses crt;
Var i:integer;
Begin
Clrscr;
I:=7;
While i>1 do
Begin
If (i mod 2)0 then i:=i*3+1
Else i:=i div 2;
Writeln(i);
8



5
T (3
kiểu string; j có thể thuộc kiểu real,…
2.2.Trình bày thuật toán, yêu cầu học sinh viết chương trình theo đúng thuật
toán đó:
10


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 một thuật toán đã
được trao đổi. Khả năng hiểu được nhanh ý tưởng của người khác cũng chính là
yêu cầu trong hoạt động nhóm. Phát triển khả năng này là phát triển một phẩm
chất tư duy quí báu để các em biết hợp tác trong công việc, một trong những yêu
cầu của người lao động, sáng tạo trong thời đại mới, thời đại mà một sản phẩm
là sự kết tinh lao động của nhiều người.
Ví dụ 5: Lập chương trình cắt bỏ các kí tự trống thừa của một xâu cho
trước[6]. Hãy viết chương trình theo thuật toán sau:
- Bước 1: i:=1;Tword:= ‘’;XauM:= ‘’;
- Bước 2: Kiểm tra xau[i] ‘ ’. nếu đúng thì đến bước 3, sai đến bước 5.
- Bước 3: Tword:=Tword+xau[i]
- Bước 4: Kiểm tra i
Học sinh có thể viết chương trình theo thuật toán 2.
2.3.Giải bài toán trong một trường hợp riêng, yêu cầu học sinh phát hiện
thiếu sót để từ đó hoàn thiện chương trình:
Ví dụ 6: Viết chương trình đếm và in ra các số trong 1 xâu đã cho.
Cho đoạn chương trình giải quyết công việc trên như sau:
I:=1; dem:=0;
While i= ‘0’) and (xau[i]= ‘0’) and (xau[i]
tượng. Hãy cho biết các số mà chuyên gia tin học đã xác định mà số biển xe mà
ông ta đã dự đoán đúng.[7].
Ý tưởng:
Có thể có nhiều cách giải khác nhau nhưng tất cả đều cần phải giải quyết các
vấn đề:
- Kiểm tra xem một số có là số nguyên tố hay không?
- Tìm dạng biểu diễn nhị phân của một số.
- Kiểm tra một số có là đối xứng không?
- Chọn các số đối xứng (trong hệ thập phân) thích hợp để kiểm tra.
Chương trình:
PROGRAM BienSo;
Uses crt;
13


Var m,i,j,k,n,l:integer;
a,b: array[1..14] of integer;
Procedure ChuyenMa(i:integer);
Begin
i:=0;
while i0 do
begin
i:=i+1;
a[i]:=i mod 2;
i:=i div 2;
end;
End;
Function NgTo(i:integer):boolean;
var b:boolean;
j:integer;

for k:=0 to 9 do
begin
n:=101*b[m] + 10*k;
if ngto(n) then
begin
chuyenma(n);
if doixung then
begin
write('Bien so can tim: ',n:5,' Ma nhi phan la ');
for j:=1 to l do write(a[j]:2);
writeln;
end
else
writeln('So ngto doi xung nhung ma nhi phan khong doi xung ',n:5);

end;
end;
END.[7].
Bài 2. Quan hệ
Có N người mang tên tương ứng là 1, 2, ..., N và tình trạng quen biết của N
người này được cho bởi mảng đối xứng A[1..N,1..N] trong đó A[i,j] = A[j,i] = 1
nếu i quen j và bằng 0 nếu i không quen j. Hãy xét xem liệu có thể chia N người
đó thành 2 nhóm mà trong mỗi nhóm hai người bất kì đều không quen nhau?
Dữ liệu vào được cho bởi file QUANHE.INP trong đó dòng thứ nhất ghi số
nguyên dương N


IV. Phương pháp và kết quả nghiên cứu
1. Phương pháp nghiên cứu:
Viết sáng kiến kinh nghiệm thường xuyên liên tục cũng là nhiệm vụ chính
trị của mỗi giáo viên, nhưng cần phải lựa chọn phương pháp nghiên cứu đúng
đắn và phù hợp với nhà trường trung học phổ thông. Sáng kiến kinh nghiệm
đang trình bày của tôi dựa theo các luận cứ khoa học hướng đối tượng, cụ thể:
thuyết trình, quan sát, điều tra cơ bản, phân tích kết quả thực nghiệm sư
phạm,v.v… phù hợp với bài học và môn học.
2. Kết quả nghiên cứu:
- Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2015-2016 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
11A1 49
88%
12%
2
11A2 48
62.5%
37.5%
3
11A3 50
56%
44%

11C2

41

30

37

41

11C3

53

30

33

46

17


C. KẾT LUẬN VÀ KIẾN NGHỊ
I. Kết luận:
Trong nội dung của đề tài này, với mong muốn giúp cho việc dạy và học
ngôn ngữ lập trình nói chung và Pascal nói riêng của giáo viên và học sinh
được tốt hơn.
Trên đây là toàn bộ kinh nghiệm của tôi qua nhiều năm liền dạy ở khối
lớp 11 cũng như tham khảo qua nhiều nguồn thông tin, tư liệu khác nhau, rất



DANH MỤC TÀI LIỆU THAM KHẢO
[1] http:\\thuvienphapluat.vn
[2]Hội Tin học Việt Nam - Tạp chí “Tin học và nhà trường”
[3] SGK Tin học 10
[4] Hồ Sĩ Đàm (chủ biên)- Sách giáo khoa, sách giáo viên tin học 11
[5] GS-TS Hoàng Kiếm -“Giải một bài toán trên máy tính như thế nào”
[6] Quách Tuấn Ngọc - Ngôn ngữ lập trình Pascal
[7] Các bài tập tham khảo ở đĩa CD “100 bài toán-tin”

19




Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status