Tải bản đầy đủ (.doc) (19 trang)

SÁNG KIẾN KINH NGHIỆM tin 8

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (143.8 KB, 19 trang )

SÁNG KIẾN KINH NGHIỆM

ĐỀ TÀI:
“CÁC BƯỚC GIẢI BÀI TOÁN PASCAL TRONG
TIN HỌC 8”


CHƯƠNG I
TỔNG QUAN
I/ CƠ SỞ LÝ LUẬN
1. Thực trạng
Là một giáo viên giảng dạy Tin học trong trường THCS không những giúp
học sinh biết soạn thảo văn bản và sử dụng máy tính 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.
Ngôn ngữ lập trình Pascal là một loại ngôn ngữ lập trình bậc cao gồm có
các câu lệnh và từ khóa. Là một môn lập trình nên đòi hỏi người lập trình phải
có tính tư duy, có khả năng phân tích, tổng hợp. Chính vì những điều đó nên lập
trình Pascal cũng là một môn học gây khó khăn cho không ít học sinh, nhất là
học sinh lớp 8. 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, vài phút 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.
Đặc biệt, đối với những học sinh yếu, kém thì lại càng khó hơn. Mặt khác,
nhiệm vụ của năm học là không ngừng nâng cao chất lượng giảng dạy của Giáo
viên và việc học của học sinh.
Chính vì những lý do trên nên tôi đã chọn đề tài“ các bước giải bài toán
Pascal trong tin học 8”.
2. Thực tiễn
- Hiện nay, hầu hết tất cả các trường THCS đều đã đưa môn Tin học vào
giảng dạy, trong đó học sinh lớp 8 được học Quyển 3 với chương trình học là


Ngôn ngữ lập trình Pascal.
- Qua hai năm giảng dạy chương trình tin học lớp 8, tôi nhận thấy rằng kĩ năng
giải bài toán Pascal trên máy tính của các em còn yếu.
- Khi giải bài toán Pascal trên máy tính học sinh không quan tâm đến các bước
xác định thông tin vào, thông tin ra và xây dựng thuật toán. Mà chỉ tập trung
xem phải viết chương trình như thế nào. Khi viết xong cho chạy chương trình thì
học sinh chưa nhận biết được kết quả chương trình đúng hay sai. Nếu sai thì
không biết sai ở đâu.
- Trước khi thực hiện đề tài, tôi đã khảo sát học sinh khối 8 thông qua giờ
dạy lý thuyết, dạy thực hành, kiểm tra bài cũ. Tổng hợp kết quả thu được:


Tỷ lệ học
sinh giỏi

Tỷ lệ học
sinh khá

Tỷ lệ học
sinh trung
bình

Tỷ lệ học
sinh yếu

Tỷ lệ học
sinh kém

%


%

%

%

%

3 . 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 lý thuyết, thực hành.
- Tham khảo tài liệu trên sách, báo, internet,…
4. Mục tiêu
- Tìm ra phương pháp, các bước giải bài toán Pascal trong chương trình
môn Tin học 8 phù hợp nhất với học sinh.
- Vận dụng để viết chương trình Pascal giải các bài toán trong toán học

CHƯƠNG II
MÔ TẢ SÁNG KIẾN
I-

Nêu vấn đề

1.Thuận lợi:
- Được sự quan tâm, giúp đỡ tận tình của cấp trên, Ban Gíam Hiệu và tổ chức
đoàn thể trong nhà trường. Sự ủng hộ nhiệt tình của các đồng nghiệp đã giúp
cho quá trình giảng dạy Tin học của tôi đạt hiệu quả cao hơn.
- Hầu hết học sinh đều có Sách giáo khoa.
- Mỗi lớp đếu có số học sinh ham học, tích cực phát biểu xây dựng bài trong
giờ học là nguồn động viên lớn trong quá trình giảng dạy của tôi.

- Nhìn chung, học tập theo phương pháp mới thì học sinh có hứng thú học tập
hơn so với so với phương pháp dạy học truyền thống. Vì thế, có điều kiện phát
triển tư duy và khả năng diễn đạt của các em.
2. Khó khăn:
- Yêu cầu học sinh phải có ý thức học tập tốt, chăm chỉ yêu thích môn học thì
mới đáp ứng được mục tiêu tiết học. Học sinh phải tự khám phá những hiểu biết
đối với bản thân và ghi nhớ vận dụng vào cuộc sống của mình. Còn học sinh yếu
kém chưa cố gắng thì không theo kịp.
3. Ý nghĩa và tác dụng của đề tài
- Đưa ra các bước giải bài toán Pascal trên máy tính trong chương trình
môn Tin học 8 phù hợp nhất với học sinh.


- Tạo hứng thú cho học sinh khi 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.
4. Phạm vi nghiên cứu của đề tài
- Trong quá trình giảng dạy môn tin học trung học cơ sở quyển 3 dành cho
học sinh khối lớp 8
II. Mô tả giải pháp
Phương pháp cơ bản giải các bài toán Pascal 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.
1. Xác định bài toán:
a. 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 sinh lớp 8 do chương trình học toán của các em chỉ mới đến
giải phương trình bậc nhất là cao nhất. Nên việc đưa các lớp bài toán vào giải
cho các em đang còn một phần nào bị hạn chế. Nhưng bất kỳ một bài toán nào
thì chúng ta cũng đọc đề rồi xác định nó : A  B.
Trong đó: - A là giả thiết : điều kiện ban đầu hoặc cái đã cho khi bắt đầu giải
bài toán.
- B là kết luận: mục tiêu cần đạt được hay cái phải tìm khi kết thúc bài
toán .
 Là suy luận: giải pháp cần xác định hay chuỗi các thao tác thực hiện
từ A đến B.
b. Từ bài toán đến chương trình Pascal:
Bài toán trên máy cũng mang đầy đủ các tính chất của bài toán tổng quát
trên, nhưng nó lại được diễn đạt theo một cách khác.
- A: là đưa thông tin vào (Input )
- B: là đưa thông tin ra (Output)


-  : là chương trình tạo từ các lệnh cơ bản của máy tính cho
phép biến đổi từ A đến B.
* 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 toá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 thực hiện lần lượt:
- Nhập a,b vào (vd 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 ba cạnh a, b và c. Hãy kiểm tra a, b, c có thể là ba cạnh của một tam
giác cân hay không?
Ta cần xác định cho bài toán:
+ Thông tin vào: ba cạnh a, b, c
+ Thông tin ra: a, b, c là ba cạnh của một tam giác cân hay không?
Các thông tin này thực hiện lần lượt:
+ Nhập ba cạnh a, b, c vào
+ Áp dụng quy tắc nhận biết tam giác cân: a = b hoặc b = c hoặc a = c
+ Kết quả
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 số lớn nhất trong 2 số nguyên dương a,b được nhập từ bàn phím .
Ta có thể giải bằng các cách sau
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 thì sang bước 3


ngược lại a < b thì sang bước 4
- Bước 3: Tìm được số lớn là a và kết thúc chương trình
- bước 4: Tìm được số lớn là b và kết thúc chương trình
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

- Hình ôvan thể hiện bắt đầu và kết thúc
- Các mũi tên quy định trình tự các thao tác
Begin
Nhập a, b

a >
b
đúng
a là sô lớn

sai
b là số lớn

end

Cách 3: Dùng ngôn ngữ tiếng việt và Pascal mô phỏng chương trình
Bắt đầu
Nhập a, b
IF a>b then a là số lớn
Else b là số lớn
Kết thúc in ra số lớn

Cách 4: Viết chương trình hoàn chỉnh (dùng ngôn ngữ pascal)


PROGRAM So_lon;
USES CRT;
VAR
a,b :integer;
BEGIN

CLRSCR;
write('nhap 2 gia tri a,b=');Readln(a,b);
if (a>b) then writeln(‘ số lớn là:’, a)
else
writeln(‘số lớn là:’,b);
readln
End.
3. Viết chương trình:
Lập trình là dùng ngôn ngữ máy 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.
* Phát triển chương trình bằng cách cắt giảm từng bước
Một bài toán ta có thể đưa ra nhiều cách giải khác nhau, song là một giáo
viên thì chúng ta cần giúp học sinh viết chương trình làm sao người xem nhìn
vào có thể dễ hiểu được bài toán đó là gì? Do đó việc giảm các bước cho bài
toán Pascal trên máy tính là phương pháp khoa học, có hệ thống giúp ta phân
tích các thuật toán và cấu trúc dữ liệu từ đó thành một chương trình. Muốn lập
trình giỏi không phải chỉ cần nắm ngôn ngữ lập trình là đủ. Mà vấn đề cốt yếu là
biết phương pháp phát triển dần dần để chuyển các ý tưởng ra thành chương
trình hoàn chỉnh.
* Phương pháp cắt giảm từng bước
Một chương trình ta nên bắt đầu được viết bằng lời tự nhiên (tiếng Việt)
thể hiện sự phân tích tổng thể của người lập trình được thể hiện
Ở từng bước sau các câu lệnh được phân tích chi tiết hơn, bằng những lời
khác nhau tương ứng với sự phân tích công việc thành các việc nhỏ chi tiết hơn
dễ hiểu và chính xác hơn. Song ngôn ngữ lập trình pascal người lập trình có thể
đưa ra phương pháp tinh chỉnh từng bước là thể hiện tư duy giải quyết vấn đề
bài toán từ trên xuống trong đó các bước là hướng về ngôn ngữ lập trình làm sao
cho bài toán đưa ra được phương pháp lập trình tối ưu, sáng sủa.



* Ví dụ: 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
a. lần 1
- Lấy 2 tập
NT= [ ] (để chứa các số nguyên tố tìm được)
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ố nguyên tố vừa tìm được
- Số đầu tiên còn lại của S là số nguyên tố. Tiếp tục quá trình cho đến khi S=[]
- Xuất NT
b. cắt giảm lần 2
Bắt đầu
NT: = [ ]

Loại khỏi S các bội số của S0

S = [2,..N]

Until S=[ ];

Repeat
Tìm số đầu tiên trong S

Xuất NT;
Kết thúc;

NT:= NT+ [S0]
c. cắt giảm lần 3 ( chương trình hoàn chỉnh)
Program nguyen_to;


for j:= 2 to N div i do

Const N=100;

a[i*j]:=false;

Var a:array[1..N] of boolean;

for i:= 1 to N do

i,j:integer;

if a[i] then

begin

write(i:3);

a[1]:=false;

readln

for i:=2 to N do a[i]:=true;

end.

for i:= 2 to N div 2 do

d. cắt giảm lần 4



Tuy nhiên 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;

begin

uses crt;

k:=0;

var

for j:= 2 to trunc(sqrt(i)) do

i,j,k,n:integer;
begin

if i mod j=0 then k:= 1;
if k=0 then write(i:3);

repeat
write('nhap n=');readln(n);

end;
readln


until n>= 2;

end.

for i:= 2 to n do
Như vậy, người lập trình có thể cắt giảm, điều 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.
4. Chạy Thử, thay đổi, kiểm tra chương trình:
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.
Ví du 1: Tìm số lớn nhất trong 3 số a,b,c nguyên dương được nhập vào từ bàn
phím.
Lần 1: Program tim_so;
uses crt;
var a,b,c:integer;
begin
clrscr;
write('nhap 3 so='); readln(a,b,c);

if aelse if awrite('so lon nhat la ',a);
readln
End.


Với chương trình này cũng chạy được song đáp số có lúc đúng, có lúc sai
tuỳ thuộc vào lúc nhập giá trị a,b,c {nếu ta nhập thứ tự a=5,b=7,c=9. Thì sẽ cho

ta kết quả số lớn nhất là 7. Vậy thì sai hoàn toàn}
Do đó người lập trình cần phải biết cách tìm lỗi. Sữa lỗi, điều chỉnh viết
lại chương trình cũng là kỹ năng quan trọng của người lập trình. Vậy với ví dụ
trên để kết quả luôn đúng thì ta có thể viết lại chương trình
Lần 2: Program tim_so;

t:=a;

uses crt;

if t
var a,b,c,t:integer;

if t
begin

write('so lon nhat la ',t);

clrscr;

readln

write('nhap 3 so=');readln(a,b,c);

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

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.
Ví dụ 1:: 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 a<>0 then


writeln('phuong trinh vo so nghiem');
else
if b=0 then
writeln('phuong trinh co nghiem',-b/a:4:2)
else
writeln('phuong trinh vo nghiem')
readln

end.
Với chương trình trên hoàn toàn có thể chạy được song kết quả sẽ không
đúng khi nhập dữ liệu a, b vào . Do vậy ta phải sắp xếp lại thuật toán để cho
một kết quả đúng như yêu cầu :

program ptb1;
var a,b:real;
begin
write('nhap cac he so=');readln(a,b);
if a<>0 then
if b=0 then writeln('phuong trinh vo nghiem')
else
writeln('phuong trinh co nghiem',-b/a:4:2)
else
writeln('phuong trinh vo so nghiem');
readln
end.
- 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.


- Lỗi sai 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.
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ư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 quá trình chạy thử một chương trình ta cần lưu ý:
- 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
giống nhau

- 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.
4.4. Thay đổi chương trình:
Một chương trình đã viết xong, đã chạy thử tốt, đã cho ra kết quả đúng
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 ở
đâ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 nhueng vẫn ra kết quả đúng như yêu cầu thay đổi. nói đơn giản hơn
là ta có thể chữa từ chương trình cũ sang chương trình
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 đó.
Nên khi giải một bài toán Pascal cần nắm được các tiêu chuẩn sau để có
một chương trình giúp bài toán có một kết quả tốt.
- Có một giải thuật đúng.
- Chương trình có thể sửa đổi
- Dễ đọc, dễ hiểu.
- Chạy chương trình nhanh và tốn ít dung lượng bộ nhớ về không gian và
thời gian.
5. Khả năng áp dụng
- Đề tài này có thể vận dụng cho tất cả học sinh mới bắt đầu làm quen
ngôn ngữ lập trình Pascal.
6. Kết quả
- Trong quá trình giảng dạy tôi đã áp dụng sáng kiến nêu trên, qua khảo
sát thực tế của học sinh, tôi đã thấy chất lượng học của học sinh có sự thay đổi
rõ .


- Học sinh hứng thú học môn Tin học hơn nhất là tiết thực hành.
- 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.


C. KẾT LUẬN
- Để đưa ra một phương pháp tối ưu cho một bài toán Pascal tin học 8
không đơn giản. Bởi một bài toán chúng ta có thể đưa ra nhiều phương pháp giải
khác nhau. Song trong lập trình người giải không sử dụng đúng cách giải thì một
bài toán lại đi ngược lại và cho các kết quả khác nhau. Điều đó chứng tỏ cho
thấy người lập trình Pascal cần phải nắm được các bước giải bài toán Pascal
trong lập trình.
- Bài toán cho kết quả sai là do nhiều nguyên nhân mà tôi đã trình bày ở
phần trước như:
+ Lỗi về thuật toán
+ Chọn kiểu dữ liệu sai
+ Lỗi về cú pháp
+ Lỗi sai 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.
- Để nâng cao chất lượng dạy và học môn tin chúng ta không chỉ 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 ở đ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 Pascal 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 môn 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. 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
hơn, đả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 cảm ơn!