Sang kien kinh nghiem tin hoc 8 - Pdf 65

Sáng kiến kinh nghiệm
các bớc giải một bài toán cho lớp bài toán trên máy vi tính
A Đặt vấn đề
1. Lý do
Hiện nay nớc ta cũng nh các nớc trên thế giới đang cạnh tranh về nghành
công nghệ chế tạo máy cũng nh các sản phần phần mềm giúp ích cho con ngời trên
mọi lĩnh vực. Vậy làm thế nào để làm đợc điều đó : nhờ vào ngành công nghệ
thông tin. Ngày xa xa con ngời không biết đọc, không biết viết đó là một nỗi khỗ
vô cùng, còn ngày nay con ngời không biết sử dụng máy vi tính thì coi nh là
không biết đọc, không biết viết. Vậy khi biết sử dụng máy vi tính rồi chúng ta sẽ
làm gì hay chỉ ngồi chơi điện tử, các trò giải trí, soạn thảo các bài văn bản mà thôi
?
Là một giáo viên tin học một trong các mục tiêu khi đa tin học vào trờng
học 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. Những năm qua môn tin học ở THCS cha có sách giáo khoa cụ thể hớng
dẫn cho học sinh về cách phân tích lập trình. Vì vậy học sinh cha có tính độc lập
sáng tạo mà phải nhờ vào giáo viên rất nhiều. Nhng năm nay đã có sách giáo khoa
hớng dẫn cho học sinh cụ thể qui trình lập trình nh thế nào.Vì thế mà 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 bớc cơ bản
nào?
2. Cơ sở thực tiễn
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. Song 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à năm nay nghành giáo dục có phát động
phong trào giải toán trên mạng. Điều đó đã thúc đẩy tôi rất nhiều trong việc dạy
học là làm sao đa ra đợc cho các em sự đam mê và phát triển tài năng của học
sinh trong việc đào tạo nhân tài cho đất nớc .
Ngôn ngữ lập trình PASCAL là một phần mềm có cấu trúc và rất đợc nhiều

hiện từ A đến B.
2. Bài toán trên máy vi tính
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, nhng nó lại đợc diễn đạt theo một các 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.
3. 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:
2
Sáng kiến kinh nghiệm
+ 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 toán:
+ Xác định thông tin vào: hai số tự nhiên a,b
+ 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ố nguyên tố trong các số nguyên N đợc nhập vào từ
bàn phím:

Nhập a, b
While a khác b
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;
4
Begin
a, b
UCLN là a
EN
D
b:= b - a
a:= b - a
Sáng kiến kinh nghiệm
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.
III- 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) để

a a. Tinh chế 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. 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 ( chơng trình hoàn chỉnh)
Program nguyen_to;
Const
N=100;
Type
nguyen=1..N;
var
NT, S:set of nguyen;

for j:= 2 to N div i do
a[i*j]:=false;
for i:= 1 to N do
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
7
Sáng kiến kinh nghiệm
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
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

a,b,c,t:integer;
begin
clrscr;
write('nhap 3 so=');readln(a,b,c);
t:=a;
if t<b then t:=b;
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
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à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

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('moi so deu la 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.
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ừ khoá DOWNTO nếu ta viết DOWN TO thì
sẽ không có nghĩa.
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 cha 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 lu ý:
- Nếu khởi đầu bằng bộ chơng trình(test ) nhỏ nhng các giá trị đặc biệt
(đây là dễ bị lỗi nhất).
10
Sáng kiến kinh nghiệm
- Làm nhiều các bộ test nhng 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.

11


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