SKKN Những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal

Lập trình Pascal "khó" đối với học sinh THCS ở chỗ: môi trường lập trình Pascal có giao diện và các từ khóa đều bằng tiếng Anh, các dòng thông báo hay trợ giúp cũng vậy. Bình diện chung học sinh THCS vốn tiếng Anh không nhiều, đa số các em còn yếu về tiếng Anh. Lấy đơn vị lớp để tính thì mỗi lớp chỉ có một vài em được gọi là "thông thạo" tiếng Anh qua các bài học. Hầu hết số còn lại nằm trong trạng thái "mù tịt". Đây là một khó khăn cho việc hiểu được Pascal.

Một vấn đề nữa cũng là rào cản đối với việc các học sinh THCS tiếp cận với lập trình Pascal đó là: tư duy Toán của các em dừng lại ở mức độ Sách Giáo Khoa Toán THCS do đó kỹ năng phân tích, tổng hợp, xây dựng thuật toán cho mỗi bài toán hay vấn đề cần lập trình chưa tốt. Các em vẫn thụ động trong việc tiếp cận bài toán, sắp xếp tư duy, xây dựng thuật giải.

Từ thực tế trên, trong quá trình dạy học tôi luôn băn khoăn trăn trở làm thế nào nâng cao chất lượng kỹ năng lập trình cho học sinh lớp 8. Việc tiếp cận với môn học rất khó khăn, phải làm rất nhiều lần và thực hành rất nhiều tiết các em mới hiểu việc nhập và xuất dữ liệu. Do đó sẽ rất khó khăn để các em hình thành kỹ năng viết chương trình. Nhất là những năm gần đây Ngành giáo dục luôn thành lập đội tuyển tham dự kì thi Tin học trẻ, học sinh giỏi môn Tin học lớp 9,…. Điều đó đã thúc đẩy tôi trong quá trình giảng dạy phải nghiên cứu tìm tòi biện pháp, kinh nghiệm để giúp cho các em có sự đam mê học tập về lập trình, giúp các em biết được quy trình lập trình như thế nào và định hướng cho học sinh cách để trở thành một nhà lập trình thì cần phải biết những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal. Giúp các em yêu thích lập trình và học lập trình trong sự hứng thú.

doc 26 trang Chăm Nguyễn 16/03/2025 280
Bạn đang xem 20 trang mẫu của tài liệu "SKKN Những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: SKKN Những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal

SKKN Những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal
ờng là một trong các kiểu dữ liệu chuẩn hay kiểu dữ liệu do người lập trình định nghĩa.
	Ví dụ : 	Var x , y : real ;
	N : Kmang ; { Kmang đã được định nghĩa }
 +Phần khai báo chương trình con (thủ tục Procedure hoặc hàm Function): Phần này mô tả một nhóm lệnh được đặt tên chung là một chương trình con để khi thân chương trình chính gọi đến thì cả nhóm lệnh đó được thi hành. Phần này có thể có hoặc không tùy theo nhu cầu. Và trong chương trình tin học lớp 8 thì cũng không nên đặt nặng vấn đề này cho học sinh, chỉ làm sao để học sinh cảm thấy đơn giản nhất có thể để việc lập trình các bài toán đơn giản của các em trở nên gần gủi và bản thân các em tự viết được một chương trình đơn giản.
Lưu ý : Phần khai báo có thể có hoặc không tùy theo từng chương trình cụ thể.
* Phần thân chương trình:
Phần thân chương trình là phần đặc biệt quan trọng và bắt buộc phải có, phần này luôn nằm giữa 2 từ khoá là BEGIN và END. Ở giữa là lệnh mà các chương trình chính cần thực hiện. Đề bài yêu cầu viết chương trình thực hiện công việc gì thì ở phần thân phải có các câu lệnh dùng để thực hiện công việc đó. Sau từ khóa END là dấu chấm (.) để báo kết thúc chương trình. Các lệnh sau dấu chấm đều không có ý nghĩa.
* Lưu ý : Dấu chấm phẩy (;):
Dấu ; dùng để ngăn cách các câu lệnh của Pascal và không thể thiếu được trong quá trình viết các câu lệnh. 
* Lời chú thích:
Lời chú thích dùng để chú giải cho người sử dụng chương trình nhớ nhằm trao đổi thông tin giữa người và người, máy tính sẽ không để ý đến lời chú thích này. Lời chú thích nằm giữa ký hiệu: {  } hoặc (*  *) 
Ví dụ 2:
            PROGRAM     CT_Dau_tien ;    {Dòng tiêu đề, khai báo tên chương trình }
            USES               Crt;          	 { Khai báo sử dụng thư viện Crt }
            VAR                 x : integer ; 	{ Khai báo biến }
            BEGIN                                     { Thân chương trình chính }
	Clrscr ;	{ Xóa màn hình }
                        Writeln  (‘Nhap gia tri cua x =’) ;
	 Readln (x) ; 
	 x:= 0 ;
	 x:= x + 10 ;
                        Writeln  (‘Gia tri cua x la’ , x );
                        Readln;
            END. 	{ Kết thúc chương trình}
a.5 : Kiểm thử chương trình (Testing program)
Chạy thử và tìm lỗi và công việc mà người lập trình cần phải làm khi viết xong chương trình để kiểm tra chương trình của mình.  Chương trình là do con người viết ra, cho nên khó có thể tránh khỏi sự nhầm lẫn. Một chương trình viết xong chưa chắc đã chạy được ngay trên máy tính để cho ra kết quả mong muốn. Kỹ năng tìm lỗi, sửa lỗi, điều chỉnh lại chương trình cũng là một kỹ năng quan trọng của người lập trình. Kỹ năng này có được bằng kinh nghiệm tìm và sửa lỗi của chính mình.
Có 2 loại lỗi cơ bản thường gặp khi lập trình:
+ Lỗi thuật toán: Lỗi này ít gặp nhất nhưng nguy hiểm nhất. Nếu nhẹ thì phải điều chỉnh lại thuật toán, nếu nặng thì có khi phải viết lại một thuật toán mới từ đầu.
+ Lỗi cú pháp: lỗi này hay gặp nhưng cũng là lỗi dễ sửa nhất. Chỉ cần nắm vững ngôn ngữ lập trình là đủ. Một người được coi là không biết lập trình nếu không biết sửa lỗi cú pháp. Và đây là lỗi thường gặp nhất đối với học sinh bắt đầu học lập trình.
Ví du 1: Tìm số lớn nhất trong 3 số a,b,c nguyên được nhập vào từ bàn phím.
Lần 1: Program tim_so_lon_nhat ;
uses crt;
var a,b,c:integer;
begin
 clrscr;
 write('nhap 3 so=');readln(a,b,c);
 if a<b then a:=b
 else if a<c then a:=c;
 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 tùy thuộc vào lúc nhập giá trị a, b, c { nếu nhập thứ tự a = 5 ; b= 7; c= 9 thì sẽ cho ta kết quả số lớn nhất là 7à 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_lon_nhat ;
uses crt;
var a,b,c, max :integer;
begin
 clrscr ;
 write('nhap 3 so = ') ; readln(a,b,c);
 max:=a ;
 if max < b then max :=b;
 if max <c then max :=c ;
 writeln ('so lon nhat la ', max);
readln
End.
Nếu nhập:
Lần nhập
A
B
C
Kết quả
1
9
8
7
9
2
8
7
9
9
3
7
9
8
9

Ví dụ 2: Viết chương trình in ra màn hình hình chữ nhật toàn dấu * với chiều dài và chiều rộng nhập từ bàn phím.
Lần 1: Program hinh_chu_nhat;
Uses crt;
Var i, cd,cr :integer;
Begin
Clrscr;
Write(‘ Nhap chieu dai hinh chu nhat’); readln(cd);
Write(‘ Nhap chieu rong hinh chu nhat’); readln(cr);
For i : = 1 to cd*cr do writeln(‘*’);
Readln
End.
Với chương trình này cũng chạy được song kết quả sai (in ra màn hình một cột toàn dấu * với chiều dài là diện tích hinh chữ nhật).
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 hinh_chu_nhat ;
Uses crt;
Var i,j, cd,cr:integer;
Begin
Clrscr;
Write(‘ Nhap chieu dai hinh chu nhat’); readln(cd);
Write(‘ Nhap chieu rong hinh chu nhat’); readln(cr);
For i: = 1 to cr do 
 	 Begin 
for j: = 1 to cd do write(‘*’);
 	Writeln;
 	 End;
 	Readln
End.
Ví dụ 3: viết chương trình tính tổng S= (n được nhập vào từ bàn phím)
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).
Ví dụ 4: 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 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 a0 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.
Ví dụ 5: 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.
a.6 Tối ưu chương trình (optimization program)
-  Một chương trình chạy đúng không có nghĩa là việc lập trình đã xong. Ta phải sửa đổi lại một vài chi tiết để chương trình có thể chạy nhanh hơn, hiệu quả hơn.
-  Thông thường trước khi kiểm thừ thì ta nên đặt mục tiêu viết chương trình sao cho đơn giản (miễn chạy ra kết quả đúng là được), sau đó khi tối ưu chương trình, ta xem lại những chỗ nào viết chưa tốt thì tối ưu lại những mã lệnh để chương trình ngắn gọn hơn, chạy nhanh hơn.
-   Không nên viết tới đâu tối ưu mã đến đó (bởi chương trình có mã tối ưu thường phức tạp và khó kiểm soát).
-  Việc tối ưu chương trình nên dựa theo 4 tiêu chuẩn chính sau:
*  Tính tin cậy : Chương trình phải chạy đúng như dự định, mô tả đúng một giải thuật đúng. Thông thường khi viết chương trình, ta luôn có thói quen kiểm tra tính đúng đắn của các bước mỗi khi có thể.
*  Tính uyển chuyển : Chương trình phải dễ sửa lỗi. Vì ít chương trình nào viết ra mà hoàn hảo ngay được mà vẫn cần phải sửa đổi lại. Chương trình viết dễ sửa đổi sẽ làm giảm bớt công sức của lập trình viên khi phát triển chương trình.
*  Tính trong sáng : Chương trình viết ra đễ đọc, dễ hiểu. Để sau một thời gian dài khi đọc lại còn hiểu mình làm cái gì? Để nếu có điều kiện thì còn có thể sửa sai (nếu phát hiện lỗi mới), cải tiến hay biến đổi để được chương trình giả quyết bài toán khác. Tính trong sáng của chương trình phụ thuộc rất nhiều vào công cụ lập trình và phong cách lập trình.
*  Tính hữu hiệu : Chương trình phải chạy nhanh và ít tốn bộ nhớ (tiết kiệm được cả không gian và thời gian).Để có một chương trình hữu hiệu, cần phải có một giải thuật tốt và những tiểu xảo khi lập trình. Tuy nhiên, việc áp dụng quá nhiều tiểu xảo có thể khiến chương trình trở nên rối rắm, khó hiểu khi sửa đổi. Tiêu chuẩn hữu hiệu nên dừng ở mức chấp nhận được, không quan trọng bằng 3 tiêu chuẩn trên. Vì phần cứng phát triển rất nhanh, yêu cầu hữu hiệu không phải đặt ra gánh nặng.
=>  Từ những phân tích trên, chúng ta thấy rằng việc làm ra một chương trình phải trải qua rất nhiều công đoạn và tiêu tốn khá nhiều công sức. Chỉ một công đoạn không hợp lý sẽ tăng chi phí viết chương trình. 
 Lời khuyên:  Đừng bao giờ viết chương trình mà chưa suy xét kỹ về giải thuật và những dữ liệu cần thao tác.
3. Hiệu quả của sáng kiến kinh nghiệm:
	Với những bước cơ bản và cụ thể trên sẽ giúp cho học sinh có được những kỹ năng hiệu quả nhất trong quá trình viết chương trình dù bài toán đó có đơn giản hay phức tạp. Khi các em đã có những nền tảng vững chắc thì quá trình lập trình của các em sẽ trở nên đơn giản và ngắn ngọn. Với từng kỹ năng cơ bản của việc giải một bài toán bằng ngôn ngữ lập trình Pascal ta thấy qua từng bước sẽ giúp cho học sinh trở nên sáng tạo, chịu khó học hỏi và trau dòi kinh nghiệm. Rèn cho học sinh một môi trường năng động và khả năng tư duy nhạy bén. Khi học sinh đã trở nên thành thạo thì khi tiếp cận một bài toán học sinh sẽ thao tác nhanh hơn và chuyên nghiệp hơn như việc xác định bài toán, xây dựng thuật toán và đưa ra những chương trình ngắn gọn, hiệu quả và tối ưu nhất.
Ví dụ 1: Viết chương trình tính tổng 2 số nguyên được nhập từ bàn phím
Bước 1: Xác định Input, Output
            Input	: Hai số nguyên a và b;
            Output	: Tổng s=a+b;
Lưu ý: nên viết theo cách ở trên vì chúng ta sẽ dễ nhận ra là dùng bao nhiêu biến.
Bước 2: Xây dựng thuật toán
-  Bước 1: Nhập 2 số nguyên a và b;
-  Bước 2: Tính tổng S= a+b;
-  Bước 3: Hiển thị giá trị tổng s ra màn hình
Bước 3: Viết chương trình Pascal hoàn chỉnh
Program vidu ;	 	{ Tên chương trình là vidu }
Var a,b,S: integer ; 	{ Khai báo 3 biến kiểu số nguyên }
Begin
            Write(‘Nhap a=’); 	{ Hiển thị trên màn hình: Nhap a= }
       	  Readln(a); { Giá trị được nhập từ bàn phím sẽ gán cho a: ví dụ nhập 5 và nhấn enter thì hiểu là: a=5 }
            Write(‘Nhap b=’); 
 readln(b); 	
            S:=a+b; { Sau khi đã có 2 giá trị của a và b rồi, sẽ tính giá trị tổng S }
            Write(‘Tong la: ’,S); 	{ Đưa giá trị tổng S ra màn hình }
            Readln; { Dừng màn hình để xem kết quả chờ nhấn phím để quay lại }
End. 	{ Kết thúc chương trình }
 Ví dụ 2: Viết chương trình “Tìm ước chung lớn nhất (UCLN) của hai số nguyên dương M và N”. 
Bước 1: Xác định bài toán : 
Input	 : Nhập hai số nguyên dương M và N
Output	 : UCLN của hai số nguyên dương M và N
Bước 2: Xây dựng thuật toán : 
- Bước 1: Nhập M, N
- Bước 2: Nếu M = N thì lấy giá trị chung này làm UCLN rồi chuyển đến bước 5.
- Bước 3: Nếu M > N thì M ¬ M – N ngược lại N ¬ N – M ; 
- Bước 4: Quay lại bước 2 ;
- Bước 5: Đưa ra kết quả UCLN rồi kết thúc.
Bước 3: Viết chương trình : 
Program UCLN ;
Uses crt ;
Var M, N : integer ;
Begin
	Clrscr ;
	Write (‘Nhập N, M =’) ;
	Readln (N, M) ;
	While M N do
	If M > N then M:= M – N else N:= N – M ;
	Writeln (‘UCLN =’, M) ;
	Readln ;
End.
- Khả năng áp dụng:
Với kinh nghiệm trên qua học kỳ 2 năm học 2016-2017 tôi đã vận dụng so với học kỳ 1 năm học 2016-2017 tôi đã đạt được kết quả đáng mừng. Qua một cuộc điều tra nhỏ về tính hứng thú học tập của học sinh, số liệu được thể hiện như sau:
 Khối lớp 8 của năm học 2016-2017 khi lên lớp 9 của năm học 2017-2018 đã mạnh dạn đăng ký thi học sinh giỏi khối 9 cho bộ môn tin học về việc lập trình bằng ngôn ngữ Pascal (thi thực hành trên máy tính). Ngoài ra các em còn tham gia các kì thi được tổ chức trên Internet. Qua thời gian triển khai và áp dụng phương pháp, tôi nhận thấy giờ học lập trình bằng ngôn ngữ lập trình Pascal thực sự thu hút các đối tượng học sinh hơn chứ không còn là giờ học của các đối tượng học sinh khá giỏi. Các đối tượng học sinh hỗ trợ được cho nhau để cùng học, cùng tiến bộ. Học sinh mạnh dạn đăng kí tham gia các kì thi về lập trình. Đặc biệt là học sinh ở trường đã tiến bộ rõ rệch ở bộ môn toán và hứng thú học toán hơn nhiều. Kỹ năng lập trình của các em không còn lúng túng mà trở nên chuyên nghiệp hơn. Qua đó nhiều em đã định hướng cho công việc của mình trong tương lai và có tác động tích cực đến nhận thức của các em. Tạo cho các em ngày càng yêu, đam mê công nghệ phần mềm và giúp các em có được nền tảng cơ bản nhất để tiếp cận bất kỳ ngôn ngữ lập trình khác.
Kết quả kiểm tra học kì II lớp 8 năm học 2016-2017 (lập trình)
TT
Lớp
Sĩ số
Kết quả kiểm tra
Giỏi
Khá
TB
Yếu
Kém
Trên TB
SL
%
SL
%
SL
%
SL
%
SL
%
SL
%
1
8A
36
8
22.2
12
33.3
11
30.5
5
14.0


31
86.1
2
8B
38
6
15.8
14
36.8
12
31.6
4
10.5
2
5.3
32
84.2
3
8C
37
7
18.9
14
37.8
10
27.0
5
13.5
1
2.8
31
83.8
Tổng cộng
21
14.3
40
27.2
33
22.4
14
9.5
3
2.0
94
84.7

-Lợi ích kinh tế - xã hội:
Tạo cho học sinh trung học cơ sở những kĩ năng cần thiết, nền tảng vững chắc trong quá trình lập trình. Giúp cho các em có được sự năng động, nắm bắt khoa học kĩ thuật tiên tiến của thời đại đồng thời tạo cho thế hệ trẻ trong tương lại ngày càng nhạy bén và chuyên nghiệp trong công việc. Xây dựng một đội ngũ thế hệ trẻ trong tương lai về kỹ năng lập trình vững vàng và sáng tạo nhằm tạo sự phát triển nguồn nhân lực trí thức về công nghệ phần mềm góp phần đưa nước nhà trở thành một nước công nghiệp hóa – hiện đại hóa.
	Thế giới ngày càng hiện đại với nhiều công nghệ tiên tiến phục vụ cho con người và cho xã hội.
III.KẾT LUẬN:
Tin học là môn học mới đối với học sinh phổ thông. Để tạo hứng thú học tập cho học sinh và từng bước nâng cao chất lượng bộ môn đòi hỏi người giáo viên phải tìm tòi, đổi mới phương pháp dạy học phù hợp, hiệu quả.
Trong quá trình dạy học sinh lập trình, vận dụng những kỹ năng cơ bản để giải bài toán trên máy tính bằng ngôn ngữ lập trình Pascal tôi đã tạo cho học sinh niềm đam mê, hứng thú, sáng tạo và đặc biệt các giờ học không còn là nỗi ám ảnh của học sinh nữa và các em ở trường đã tiến bộ rõ rệch về kỹ năng lập trình từ những bài toán đơn giản đến nâng cao. 
Trên đây là một số kinh nghiệm của bản thân rút ra được trong quá trình hướng dẫn dạy học sinh những kỹ năng cơ bản về lập trình. Rất mong nhận được sự góp ý của quý thầy cô, bạn bè đồng nghiệp để tôi có thể hoàn chỉnh hơn kinh nghiệm này, góp phần nâng cao kỹ năng và chất lượng dạy học lập trình cho học sinh lớp 8
Thanh Sơn, ngày 10 tháng 01 năm 2018
	 NGƯỜI THỰC HIỆN
	Vương Thị Lan Hương
TÀI LIỆU THAM KHẢO
1. Nhiệm vụ năm học của Phòng Giáo dục và Đào tạo huyện Thanh Sơn (các năm 2010-2011, 2011-2012, 2013- 2014, 2015- 2016).
2. Sách Bài tâp: Ngôn ngữ lập trình Pascal của tác giả Quách Tuấn Ngọc.
3. Giáo trình trung tâm tin học PUTRA của tác giả Thạc sĩ Văn Ngọc Sáng.
4. Thông tư Số: 01/2011/TT-BNV ngày 19 tháng 01 năm 2011 của Bộ Nội vụ.
5. Sách giáo khoa Tin học 8 – Quyển 3, nhà xuất bản giáo dục Việt Nam
6. Sách Bài tập Tin học 8 – Quyển 3, nhà xuất bản giáo dục Việt Nam

File đính kèm:

  • docskkn_nhung_ky_nang_co_ban_de_giai_bai_toan_tren_may_tinh_ban.doc