Đề Tài Sáng Kiến Kinh Nghiệm Rèn luyện kỹ năng lập trình cho học sinh giỏi
môn tin học
Giáo Viên: Ngô Dương Khôi
Đơn vò: Trường THCS Lương Tâm
ĐỀ TÀI:
I. ĐẶT VẤN ĐỀ
Hiện nay, khi cơng nghệ thơng tin ngày càng phát triển thì việc ứng dụng cơng
nghệ thơng tin vào tất cả các lĩnh vực là một điều tất yếu. Trong lĩnh vực giáo dục, cơng
nghệ thơng tin đã được ứng dụng trong cơng tác quản lý, giảng dạy và học tập.
Một trong các mục tiêu khi chọn ngơn ngữ lập trình Pasacal để thi học sinh giỏi
mơn tin học trong trường học là nhằm giúp học sinh khơng chỉ biết soạn thảo văn bản mà
còn phải có khả năng phân tích, tổng hợp, trừu tượng hố, khái qt hố vấn đề và đặc
biệt là phát triển tư duy, sáng tạo. Với chương trình mơn Tin Học THCS, học sinh mới
làm quen với việc lập trình nên gặp nhiều khó khăn khi tham dự các kì thi học sinh giỏi
mơn tin học.Vì thế tơi sẽ hướng cho học sinh cách để trở thành một nhà lập trình thì cần
phải nắm bước nào?
II. MỤC TIÊU CỦA ĐỀ TÀI
Chương trình Pascal là một phần mềm có cấu trúc được nhiều độc giả quan tâm và
cũng có nhiều cuốn sách do nhiều tác giả viết về ngơn ngữ lập trình này. Song với bản
thân tơi khi lựa chọn viết đề tài này là muốn chia sẽ kinh nghiệm rèn luyện kỹ năng lập
trình cho học sịnh giỏi mơn Tin học với đồng nghiệp trong và ngồi tỉnh Hậu Giang.
III. NỘI DUNG
1. Thực trạng của vấn đề
Trong q trình dạy học tơi nhận thấy, mới đầu các em cũng rất sợ khi thấy giải
một bài tốn ở ngồi thì đơn giản, có thể chỉ trong vòng vài giây là nhẩm ra kết quả. Còn
ở trong lập trình cũng bài tốn đó mà phải làm đến hàng chục phút mà lại có thể cho kết
quả sai. Điều đó đã thúc đẩy tơi rất nhiều trong việc giảng dạy, tơi phải tìm ra phương
pháp để học sinh có kỹ năng và sự say mê trong lập trình.
2. Ngun nhân
Phương pháp cơ bản giải các bài tốn trong tin học khơng chỉ dùng để giải một bài
tốn cụ thể mà còn giải 1 lớp các bài tốn cụ thể thuộc cùng một loại. Bài tốn được cấu
Một số ví dụ
Ví dụ 1: Tính diện tích hình chữ nhật.
Ta cần xác định cho bài tốn:
+ Thơng tin vào: Chiều dài là cạnh a, chiều rộng là cạnh b
+ Thơng tin ra: Kết quả diện tích khi đưa a,b vào
+ Các thơng tin cần chế biến thơng tin như:
- Lần lượt đưa a,b vào ( cho a=3,b=4)
- Áp dụng cơng thức tính diện tích hình chữ nhật: a*b
- Kết quả in ra là 12.
Ví dụ 2: Cho 2 số tự nhiên a, b.Tìm ước số chung lớn nhất của chúng.
Các bước các định bài tốn:
+ Xác định thơng tin vào: hai số tự nhiên a,b
GV: Ngô Dương Khôi Trang 2 Trường THCS Lương Tâm
Đề Tài Sáng Kiến Kinh Nghiệm Rèn luyện kỹ năng lập trình cho học sinh giỏi
môn tin học
+ Xác định thơng tin ra: số tự nhiên d thoả mãn:
d là ước của a và d là ước của b
d là số lớn nhất trong tập các ước chung của a, b
+ Xác định các thao tác chế biến thơng tin
Xây dựng hữu hạn các thao tác cho phép tính được d từ a và b.
Nhập a =16 b= 24 d =8
Ví dụ 3: Tìm tất cả các số ngun tố trong các số ngun N được nhập vào từ bàn
phím:
+ Xác định thơng tin vào:Nhập số ngun N
+Xác định thơng tin ra: Các số ngun tố (chia hết cho nó và số 1)
c/ Tìm thuật tốn
Thuật tốn là một q trình gồm một dãy hữu hạn các thao tác đơn giản được sắp
xếp theo một trình tự xác định sao cho theo đó từ Input của bài tốn sẽ tìm ra được
Output bài tốn.
Một bài tốn ta có 4 cách thể hiện thuật tốn: Các bước xác định bằng lời, lập sơ đồ
Else thay b:=b-a;
Kết thúc in ra USCLN (a,b).
GV: Ngô Dương Khôi Trang 4 Trường THCS Lương Tâm
Begin
a, b
a=b
UCLN là a
a<>
b
b:= b - a
a:= b - a
End
Đề Tài Sáng Kiến Kinh Nghiệm Rèn luyện kỹ năng lập trình cho học sinh giỏi
môn tin học
Cách 4: Viết chương trình hồn chỉnh (dùng ngơn ngữ pascal)
PROGRAM USCLN;
USES CRT;
VAR a,b, :integer;
BEGIN
CLRSCR;
WRITE('nhap 2 gia tri m,n=');READLN(a,b);
WHILE m<>n DO
IF a>b THEN a:=a –b
else b:=b-a;
WRITELN('uoc so chung lon nhat cua 2 so’,a:5);
READLN
END.
d/ Viết chương trình
Lập trình là dùng ngơn ngữ máy vi tính cụ thể nào (ngơn ngữ Pascal) để diễn tả
thuật tốn, cấu trúc dữ liệu thành câu lệnh để máy tính có thể thực hiện được và giải
S = [2, N] (tập các số cần xét )
- Tìm số đầu tiên trong S đưa vào NT
- Loại bỏ khỏi S các bội số của số ngun tố vừa tìm được
- Số đầu tiên còn lại của S là số ngun tố. Tiếp tục q trình cho đến khi S=[ ]
- Xuất NT
b. Tinh chế lần 2
Bắt đầu
NT: = [ ]
S = [2, N]
Repeat
Tìm số đầu tiên trong S
NT:= NT+ [S
0
]
Loại khỏi S các bội số của S
0
Until S=[ ];
Xuất NT;
Kết thúc;
c. Tinh chế lấn 3
Program nguyen_to;
Const
N=100;
Type
nguyen=1 N;
var
NT, S:set of nguyen;
S0,I:integer;
begin
NT:=[ ]; S:=[2 N];S0:=2;
if a[i] then
write(i:3);
readln
end.
e. Tinh chế lần 5
Trong ngơn ngữ pascal nếu dùng mảng boolean thì ta bị giới hạn N<10000. Để có
thể chạy với số lớn hơn ta khơng dùng mảng, tập hợp mà dùng như sau:
Program nguyen_to;
uses crt;
var
i,j,k,n:integer;
begin
repeat
write('nhap n=');readln(n);
until n>= 2;
for i:= 2 to n do
begin
k:=0;
for j:= 2 to trunc(sqrt(i)) do
GV: Ngô Dương Khôi Trang 7 Trường THCS Lương Tâm
Đề Tài Sáng Kiến Kinh Nghiệm Rèn luyện kỹ năng lập trình cho học sinh giỏi
môn tin học
if i mod j=0 then k:= 1;
if k=0 then write(i:3);
end;
readln
end.
Vậy đó là kỹ năng lập trình người lập trình có thể tinh chỉnh chương trình từng
bước làm sao đưa ra một phương án tối ưu cho ngwời xem dễ tiếp thu cũng như chiếm bộ
nhớ của máy tính càng ít các tốt.
if t<b then t:=b;
GV: Ngô Dương Khôi Trang 8 Trường THCS Lương Tâm
Đề Tài Sáng Kiến Kinh Nghiệm Rèn luyện kỹ năng lập trình cho học sinh giỏi
môn tin học
if t<c then t:=c;
write('so lon nhat la ',t);
readln
End.
Nếu nhập:
Lần nhập A B C Kết quả
1 5 4 7 7
2 5 7 9 9
3 9 3 5 9
Phân loại lỗi và cách sửa lỗi
- Lỗi về thuật tốn: Điều chỉnh lại thuật tốn, thêm vị trí có thể, loại bỏ thuật tốn
sai, tìm thuật tốn khác nghĩa làm lại từ đầu
Ví dụ: viết chương trình tính tổng S=
n
1
3
1
2
1
1 ++++
(n được nhập vào từ bàn
phím)
Học sinh viết chương trình khai báo biến S thuộc kiểu dữ liệu ngun thì chương
trình sẽ khơng thực hiện được phép tốn tính tổng. Do vậy để thực hiện được phép tốn
thì khai báo biến S là thuộc kiểu dữ liệu thực.
- Lỗi về cú pháp: viết lại cho đúng cú pháp của ngơn ngữ lập trình mà mình đang
sử dụng.
Ví dụ : Lỗi sau câu lệnh ta khơng sử dụng dấu chấm phẩy, hay kết thúc chương
trình khơng có dấu chấm, hay từ khố DOWNTO nếu ta viết DOWN TO thì sẽ khơng có
nghĩa.
f/ Kiểm tra
Có nhiều chương trình khó kiểm tra tình đúng đắn, nhất là chương trình tìm kiếm
lời giải tối ưu. Vì chúng chưa biết kết qủa nào là đúng nhất. Vì vậy việc tìm lỗi rất là khó
khăn.Trong q trình chạy thử một chương trình ta cần lưu ý:
- Nếu khởi đầu bằng bộ chương trình (test ) nhỏ nhưng các giá trị đặc biệt (đây là
dễ bị lỗi nhất).
- Làm nhiều các bộ test nhưng phải đa dạng tránh lặp đi lặp lại các bộ test tương tự.
- Nên kết thúc bằng các bộ test có kích thước lớn để kiểm tra tính chịu đựng của
chương trình.
g/ Thay đổi chương trình
Một chương trình đã viết xong, đã chạy thử tốt, giải quyết đúng bài tốn mà ta
mong muốn nhưng chưa có nghĩa là q trình lập trình đã xong. Mà người lập trình muốn
nó ở đây ta có thể sửa đổi nó theo một hướng khác mà nó có thể đáp ứng được một u
cầu mới. Như phần tinh chế một chương trình là rất quan trọng cho việc sửa chữa chư-
ơng trình cũ sang chương trình mới.
Ví dụ: - Nhập 3 số a,b,c kiểm tra xem 3 số đó có thể là độ dài của các cạnh một tam giác
hay khơng. Từ đó ta có thể chuyển nó sang dạng là các cạnh đó thỗ mãn tam giác cân,
đều hay là tính diện tích của tam giác đó.
- Tính tổng cho N số ngun đầu tiên được nhập vào từ bàn phím. Từ đó ta có thể triển
khai tính giai thừa, tìm số ngun tố, độ dài của dãy số đó, tính trung bình cộng cho dãy
số……
- Nhập vào mảng của dãy số từ bàn phím. Từ đó ta có thể tìm giá trị lớn, nhỏ của mảng,
trung bình độ dài của mảng, điểm của học sinh….
GV: Ngô Dương Khôi Trang 10 Trường THCS Lương Tâm
Đề Tài Sáng Kiến Kinh Nghiệm Rèn luyện kỹ năng lập trình cho học sinh giỏi
+ Viết kết quả in ra ở dạng có quy cách và khơng quy cách
+ Phép gán sai ví dụ như bài tốn tính tổng ban đầu ta phải gán S:=0; nếu gán S:=
1; thì cho kết quả sai. Hay Bài tốn tính tích thì phép gán phải ngược trở lại ban đầu
S:=1;
IV. ĐỀ XUẤT, KIẾN NGHỊ
Là một giáo viên tin học tơi muốn nói rằng chúng ta khơng chỉ dạy lý thuyết
sng mà cần phải biết kết hợp thực hành. Để từ đó học sinh mới nhận thấy được ưu
điểm của việc học chương trình này có lợi hơn ở điểm nào. Đồng thời cũng phối hợp
GV: Ngô Dương Khôi Trang 11 Trường THCS Lương Tâm
Đề Tài Sáng Kiến Kinh Nghiệm Rèn luyện kỹ năng lập trình cho học sinh giỏi
môn tin học
chương trình tốn đã học đến những phần nào để từ đó đưa các ví dụ, bài tập để học sinh
có thể nắm chắc lý thuyết cũng như thực hành trên máy tính dễ tiếp thu. Để từ đó các em
rút ra được ưu điểm của các chương trình này so với cách tính tay.
V. KHẢ NĂNG ÁP DỤNG
Với đề tài sáng kiến kinh nghiệm này, Tơi mong muốn chia sẽ kinh nghiệm với
nhiều đồng nghiệp trong và ngồi tỉnh Hậu Giang. Nhằm nâng cao chất lượng học sinh
trong các kì thi học sinh giỏi Tin học. Đây cũng là tiền đề để tạo ra một lớp người giỏi về
cơng nghệ thơng tin, để sau này phục vụ cho đất nước trong giai đoạn cơng nghiệp hóa,
hiện đại hóa. Mong nhận được sự góp ý của các thầy cơ giáo cùng như bạn bè để đề tài
của tơi được hồn thiện hơn./.
Tơi xin chân thành cảm ơn!
Duyệt của BGH Lương Tâm, ngày 20 tháng 05 năm 2014
Người viết
Ngơ Dương Khơi
GV: Ngô Dương Khôi Trang 12 Trường THCS Lương Tâm