1. ĐẶT VẤN ĐỀ
1.1. Lý do, thực trạng vấn đề:
Là một giáo viên tin học, một trong các mục tiêu khi dạy môn tin học trong nhà
trường là nhằm giúp học sinh không chỉ biết soạn thảo mà còn phải có khả năng phân
tích, tổng hợp, trừu tượng hoá, khái quát hoá vấn đề và đặc biệt là phát triển tư duy,
sáng tạo. Vì thế mà trong bài viết này tôi sẽ hướng cho học sinh lớp 8 cách để trở
thành một nhà lập trình thì cần phải nắm các bước cơ bản nào?
Trong quá trình dạy tôi nhận thấy ở các em học sinh. Mới đầu các em cũng rất
sợ khi thấy giải một bài toán ở ngoài thì đơn giản và chỉ trong vòng vài giây có thể
nhẩm ra kết quả. Còn ở trong lập trình cũng bài toán đó mà phải làm đến hàng chục
phút mà lại có thể cho kết quả sai. Nhưng bằng những tâm huyết của mình và cũng
như sự yêu thích của học sinh. Nhất là những năm gần đây nghành giáo dục có phát
động phong trào giải toán trên mạng (Violympic) cũng như thành lập đội tuyển tham
dự các kì thi “Học sinh giỏi bộ môn Tin học” và “Tin học trẻ” được tổ chức quy mô
hàng năm. Điều đó đã thúc đẩy tôi rất nhiều trong việc dạy học là làm sao giúp cho
các em có sự đam mê học tập bộ môn tin học và phát triển tài năng của học sinh.
1.2. Mục đích nghiên cứu:
Đưa ra các bước giải bài toán trên máy vi tính trong chương trình môn Tin học
lớp 8 phù hợp nhất với học sinh.
Tạo cho học sinh rất hứng thú học môn Tin học nhất là tiết thực hành và rèn
luyện cho học sinh tính tư duy, tính sáng tạo trong quá trình lập trình.
1.3. Đối tượng, phạm vi nghiên cứu
Học sinh khối 8 trường THCS Thạnh Phú 1, Huyện Cờ Đỏ, TP Cần Thơ.
1.4. Kết quả cần đạt được
Phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh; tạo thói
quen làm việc độc lập; bồi dưỡng cho học sinh phương pháp tự học, khả năng hợp
tác; rèn luyện kĩ năng lập trình và kỹ năng vận dụng kiến thức vào việc giải quyết các
bài toán thường gặp trong thực tiễn; tác động đến tình cảm, đem lại niềm vui, hứng
thú và trách nhiệm học tập cho học sinh.
3
3%
2.2. Các biện pháp tiến hành
- Qua dự giờ và trao đổi kinh nghiệm với đồng nghiệp.
- Qua các tiết thực hành, tiết lý thuyết
- Tham khảo tài liệu trên sách, báo, internet,…
2.3. Một số biện pháp thực hiện
2.3.1. Mục tiêu
Tìm ra những phương pháp, các bước giải bài toán trên máy vi tính trong
chương trình môn Tin học 8 phù hợp nhất với học sinh.
Trên cơ sở nghiên cứu tính tích cực của học sinh trong giờ học môn Tin học 8,
đề xuất một số ý kiến nhằm nâng cao chất lượng dạy và học.
2.3.2. Mô tả giải pháp
Phương pháp cơ bản giải các bài toán trong tin học không chỉ dùng để giải một
bài toán cụ thể mà còn giải 1 lớp các bài toán cụ thể thuộc cùng một loại. Bài toán
được cấu tạo từ hai yếu tố cơ bản: Thông tin vào (Input) và thông tin ra (Output).
Phương pháp tổng quát để giải một bài toán bằng máy vi tính dựa trên ngôn ngữ
pascal thì cần các bước:
1. Xác định bài toán.
2. Xây dựng thuật toán.
3. Viết chương trình.
4. Chạy thử, sửa đổi chương trình.
4
2.3.2.1. Xác định bài toán:
* Khái niệm bài toán
Trong quá trình học người học sinh hay bất kỳ một cá nhân nào luôn phải liên tục
giải quyết các bài toán. Trong cuộc sống là 1 chuỗi các bài toán mà ta phải đối đầu
giải quyết không một chút đơn giản mà nhiều lúc phải bực mình. Song đối với học
5
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ố nguyên tố trong các số nguyên N được nhập vào từ bàn
phím:
+ Xác định thông tin vào: Nhập số nguyên N
+ Xác định thông tin ra: Các số nguyên tố (chia hết cho nó và số 1)
2.3.2.2. Tìm thuật toán:
Thuật toán là một quá 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 toán sẽ tìm ra
được Output bài toán .
Một bài toán ta có 4 cách thể hiện thuật toán: Các bước xác định bằng lời, lập
sơ đồ khối, ngôn ngữ phỏng trình, dùng một ngôn ngữ lập trình (Pascal).
Ví dụ: Tìm ước số chung lớn nhất của 2 số nguyên dương a,b . Ta có thể giải
bằng các cách trên.
Cách 1: Các bước xác định bài toán bằng lời:
- Bước 1: Nhập 2 số nguyên dương là a,b
- Bước 2: So sánh giá trị a và b . Nếu a bằng b thì sang bước 3, ngược lại a khác b thì
sang bước 4
- Bước 3: Tìm được ước số chung là a và kết thúc chương trình
- Bước 4: Nếu a lớn hơn b thì ước số chung lớn nhất là a:=a-b và quay trở lại
bước 2. Ngược lại ước số chung là b:=b-a và quay trở lại bước 2
Cách 2: Giải bài toán bằng sơ đồ
- Có hình thoi thể hiện các thao tác so sánh
- Hình chữ nhật thể hiện các phép tính toán, các câu lệnh
IF a>b then thay a :=a -b
Else thay b:=b-a;
Kết thúc in ra USCLN (a,b) .
Cách 4: Viết chương trình hoàn chỉnh (dùng ngôn ngữ pascal)
PROGRAM USCLN;
USES CRT;
VAR
a,b, :integer;
BEGIN
CLRSCR;
WRITE('nhap 2 gia tri a,b=');READLN(a,b);
WHILE ab 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.
7
2.3.2.3. 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 toá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
quyết đúng bài toán mà người lập trình mong muốn.
* Kỹ năng lập trình
- Rèn luyện được cho học sinh kỹ năng cài đặt thành công các thuật toán bằng
một ngôn ngữ lập trình.
- Đã gọi là kỹ năng thì chỉ có thể có được thông qua rèn luyện tích cực.
- Kinh nghiệm cho thấy một thuật toán do sắp đặt vụng về, lộn xộn thì khi chạy
- 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+ [S0]
Loại khỏi S các bội số của S0
Until S=[ ];
Xuất NT;
Kết thúc;
c. Tinh chế lấn 3 ( chương trình hoàn chỉnh)
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;
repeat
while not (S0 in S) do
S0:=S0+1;
NT:=NT+[S0];
I:=S0;
While I
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= 2;
for i:= 2 to n do
begin
k:=0;
for j:= 2 to trunc(sqrt(i)) do
if i mod j=0 then k:= 1;
10
if k=0 then write(i:3);
end;
readln
end.
Như 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 người xem dễ tiếp thu và đạt được tốc
độ tính toán cao nhất cũng như chiếm bộ nhớ của máy tính càng ít càng tốt.
2.3.2.4. Chạy thử, thay đổi, kiểm tra chương trình:
2.3.2.4.1. Chạy thử:
Một chương trình đã viết xong chưa chắc đã chạy được trên máy vi tính để cho
kết quả mong muốn.
if t
Readln
End.
2.3.2.4.2. Phân loại lỗi và cách sửa lỗi:
- Lỗi về thuật toán: Điều chỉnh lại thuật toán, thêm vị trí có thể, loại bỏ thuật
toán sai, tìm thuật toán khác nghĩa là làm lại từ đầu.
1
2
1
3
Ví dụ 1: viết chương trình tính tổng S= 1 + + + .... +
1
(n được nhập vào từ bàn phím)
n
Học sinh viết chương trình khai báo biến S thuộc kiểu dữ liệu nguyên (Integer)
thì chương trình sẽ không thực hiện được phép toán tính tổng. Do vậy để thực hiện
được phép toán thì khai báo biến S là thuộc kiểu dữ liệu thực (Real).
- Lỗi về trình tự: Phải xem lại thuật toán, phân tích lại từ trên xuống dưới để
đặt lại cho đúng với thuật toán.
Ví dụ 2: Viết chương trình giải phương trình bậc nhất ax+b=0 với a,b được nhập vào
từ bàn phím.
program ptb1;
var
a,b:real;
begin
write('nhap cac he so=');readln(a,b);
if a0 then
Ví dụ 3: 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ừ khoá BEGIN nếu ta viết BE GIN thì sẽ không có
nghĩa.
2.3.2.4.3. 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 quả nào là đúng nhất. Vì vậy việc tìm lỗi
rất là khó khăn. Trong quá 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.
2.3.2.4.4. 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 toán mà ta
mong muốn nhưng chưa có nghĩa là quá 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 yê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.
14
* 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 đó thoã 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ố nguyên đầ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ố nguyên tố, độ dài của dãy số đó, tính trung bình
cộng cho dãy số……
Lớp
Lớp 8A1
Mức độ
Nhận biết
Thông hiểu
Vận dụng
Kỹ năng lập trình
100%
87%
75%
60%
- Trong công tác bồi dưỡng học sinh giỏi, tôi nhận thấy rằng: Người thầy cần
không ngừng học hỏi và tự học hỏi để nâng cao trình độ chuyên môn, nghiệp vụ và
đúc kết, rút kinh nghiệm, thường xuyên xây dựng, bổ sung chương trình và sáng tạo
trong phương pháp giảng dạy.
Qua những năm đảm nhiệm bồi dưỡng học sinh giỏi ở trường nhờ áp dụng
những kinh nghiệm trên ở năm học 2014 – 2015 và năm học 2015 - 2016 đã thu được
kết quả rất khả quan.
Số học sinh giỏi đạt
cấp Huyện
Năm học
2013-2014
Năm học
dạy lý thuyết suông 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.
Tóm lại đây là chương trình học khá mới mẻ, các bài toán đưa ra để xây dựng
một chương trình chưa có gì lạ phức tạp. Bởi có nhiều bài hay thì học sinh lớp 8 chưa
học đến. Cho nên giáo viên cần phải nắm chắc các phương pháp để truyền đạt. Đồng
thời cũng phối hợp chương trình toán đã học đến những phần nào để từ đó đưa ra 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. Và để 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 ở chỗ nào.
Đề xuất: Tôi mong ước rằng trong tương lai, phòng máy vi tính sẽ được mở
rộng, đảm bảo số lượng máy tính tạo điều kiện cho các em học sinh được thực hành
nhiều hơn. Vì có như vậy chất lượng dạy và học của giáo viên và học sinh mỗi ngày
đạt chất lượng cao hơn.
Trên đây là một số biện pháp mà tôi đã áp dụng vào dạy tin học khối 8. Tuy đã
được đúc rút từ kinh nghiệm giảng dạy thực tế và đã cho kết quả khả quan. Nhưng
trong quá trình thực hiện bài viết này sẽ không tránh khỏi những thiếu sót. Rất mong
nhận được sự góp ý bổ ích của các thầy cô giáo và các bạn đồng nghiệp để bài viết
được hoàn thiện hơn./.
Xin chân thành cảm ơn!
DUYỆT CỦA BGH
Thạnh phú, ngày 26 tháng 02 năm 2016
Người viết
Nguyễn Văn Hai
17