Tải bản đầy đủ - 0 (trang)
Xác định bài toán:

Xác định bài toán:

Tải bản đầy đủ - 0trang

-  : 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 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 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 tố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 tốn:

Thuật tố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 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ơ đồ 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 tố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 tố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 hồ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 tố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 tố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 tốn đó là gì? Do đó việc giảm các bước cho bài

tố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 tố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 hồ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 tố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 tố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ố ngun 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 hồ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 tố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 a
else if a
write('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 hồn tồ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ả ln đú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 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à 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 hồn tồ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ừ khố 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 q 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à q 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 đó thỗ

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 tố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 q 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 tố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 tố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 tốn Pascal

trong lập trình.

- Bài tố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 tố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ừ khố 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 tố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 tố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!



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Xác định bài toán:

Tải bản đầy đủ ngay(0 tr)

×
x