Sáng kiến kinh nghiệm
các bớc giải bài toán cho lớp bài toán trên máy vi tính
trong chơng trình tin học thcs
A Đặt vấn đề
1. Lý do
Những năm qua, Bộ GD&ĐT đã rất quan tâm đến việc ứng dụng công nghệ
thông tin (CNTT) trong lĩnh vực GD-ĐT. Đã chọn năm học 2008 - 2009 là năm học
ứng dụng CNTT, các trờng học, các Sở GD&ĐT đợc kết nối mạng Internet tốc độ
cao, đó là những thuận lợi quan trọng mà những năm học trớc không thể có đợc. Giờ
đây, phần lớn giáo viên, học sinh, nhà quản lý giáo dục có cơ hội đợc sử dụng
CNTT, đợc khai thác những chơng trình, phần mềm phục vụ cho công tác quản lý,
giảng dạy, học tập, nghiên cứu...
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. Từ năm học 2006-2007 đến nay đã có bộ sách giáo khoa Tin Học
dành cho trung học cơ sở ở bậc THCS. 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?
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à hai năm nay 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 Tin học trẻ Tỉnh Nghệ An đợ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 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 độc giả
quan tâm và cũng chính đó cũng có nhiều cuốn sách do nhiều tác giả viết. Song với
bản thân tôi khi lựa chọn viết đề tài này là muốn đa ra: các bớc giải bài toán
cho lớp bài toán trên máy vi tính trong chơng trình tin học thcs
1
Sáng kiến kinh nghiệm
B- Giải quyết các vấn đề
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 các bài toán.
2. Tìm thuật toán
3. Viết chơng trình
4. Chạy thử, sửa đổi chơng trình
I- Xác định bài toán
1. 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ế. Nhng 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ải 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, phải làm ra 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.
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á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.
2
Sáng kiến kinh nghiệm
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:
+ 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:
+ 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)
II- 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
3
Sáng kiến kinh nghiệm
- 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 và quay trở lại bớc 2.
Ngợc lại ớc số chung là b 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
- 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
a=b đúng
sai
Đúng Sai
a<>b
Cách 3: Dùng ngôn ngữ phỏng trình
Bắt đầu
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) .
4
Begin
a, b
UCLN là a
EN
D
b:= b - a
a:= b - a
Sáng kiến kinh nghiệm
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 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) để 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.
1. 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 trên
máy tính có thể cho kết qủa tồi tệ.
2. Phát triển chơng trình bằng cách tinh chế 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 tinh chỉnh các bớc cho bài toán trong 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.
3. Phơng pháp tinh chế từng bớc
Một chơng trình 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
5