Sáng kiến kinh nghiệm Một số biện pháp rèn kỹ năng thực hành trong lập trình Pascal bộ môn Tin học lớp 8

Việc giảng dạy Tin học trong nhà trường phổ thông ở Việt Nam nhiều năm nay đã xem môn Tin học là môn học không thể thiếu, bậc học Trung học cơ sở lại rất cần thiết đối với lứa tuổi phát triển về tư duy, về tâm sinh lý. Trong đó, môn Tin học được triển khai thực hiện ở tất cả các khối 6, 7, 8, 9;

Học sinh được tiếp cận nhiều trên các phương tiện hiện đại, hệ thống phòng máy với các thiết bị máy tính có cấu hình tương đối cao, hệ thống mạng cáp quang tương đối mạnh để đảm bảo phục vụ tốt nhu cầu học tập và tra cứu bộ môn Tin học của học sinh trong nhà trường;

Trong các khối lớp học thì Tin học lớp 8 là môn học tương đối khá trừu tượng, khó hiểu, nếu không nói là khô khan khó nuốt đối với các em. Việc học tốt môn Tin học lại càng khó khăn hơn đối với các em vì hầu hết kiến thức chủ yếu và trọng tâm của chương trình là lập trình trên môi trường ngôn ngữ Pascal, đòi hỏi học sinh phải chú ý tìm hiểu kỹ vấn đề, hiểu được cách giải bài toán, hiểu cách mô tả thuật giải bài toán, cách viết chương trình, kiểm lỗi, sửa lỗi chương trình và chạy thử;

Trong quá trình giảng dạy bản thân tôi nhận thấy học sinh khối 8 là khối học rất sợ môn Tin học vì kiến thức lập trình khá mới mẻ và khó hiểu. Các em phải tập trung cao độ, tìm hiểu chặt chẽ vấn đề của từng bài toán trên cơ sở hướng dẫn của giáo viên thì mong mới hiểu được cách viết lập trình cho một bài toán;

Chính vì vậy, để giúp các em hiểu được vấn đề của ngôn ngữ lập trình Pascal và hiểu được cách mô tả bài toán, lập trình viết bài toán nên tôi mạnh dạn chọn giải pháp Một số biện pháp rèn kỹ năng thực hành trong lập trình Pascal bộ môn Tin học lớp 8 để giúp học sinh tiến bộ hơn trong học tập đặc biệt là các giờ thực hành ở bộ môn Tin học khối 8 bậc Trung học cơ sở.

doc 19 trang Chăm Nguyễn 30/05/2025 160
Bạn đang xem tài liệu "Sáng kiến kinh nghiệm Một số biện pháp rèn kỹ năng thực hành trong lập trình Pascal bộ môn Tin học lớp 8", để 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: Sáng kiến kinh nghiệm Một số biện pháp rèn kỹ năng thực hành trong lập trình Pascal bộ môn Tin học lớp 8

Sáng kiến kinh nghiệm Một số biện pháp rèn kỹ năng thực hành trong lập trình Pascal bộ môn Tin học lớp 8
đơn giản nhất, dần dần tăng mức độ khó lên từ từ, không nên quá vội vàng để học sinh tiếp xúc với những bài quá khó. Nếu các em chưa thông hiểu, chưa giải quyết được vấn đề của bài tập đó, bản thân giáo viên nên giải thích hướng dẫn các em mô tả, phân tích cụ thể để từ đó hiểu rõ hơn bài tập mình đang làm; 
Để thực hiện tốt kỹ năng lập trình các em cần nắm vững các công thức toán học của bài toán để có thể chuyển đổi công thức ấy sang biểu thức Pascal. Cho học sinh ghi nhớ lại các công thức toán học mà các em chưa biết, chưa hiểu vào vở bài tập. Ví dụ một số công thức cơ bản như sau: 
+ Tính diện tích hình chữ nhật: SCN = chiều dài × chiều rộng. Khi đó ta chuyển sang biểu thức Pascal sẽ là: S:=a*b; nên lưu ý học sinh khi viết xong cuối dòng công thức phải có dấu chấm phẩy; 
+ Tính diện tích hình vuông: SHV = cạnh × cạnh. Khi đó ta chuyển sang biểu thức Pascal sẽ là: Dientich:=a*a; nên lưu ý học sinh khi viết xong cuối dòng công thức phải có dấu chấm phẩy;
+ Tính chu vi hình tam giác: SABC = cạnh a + cạnh b + cạnh c. Khi đó ta chuyển sang biểu thức Pascal sẽ là: CV:=a+b+c; nên lưu ý học sinh khi viết xong cuối dòng công thức phải có dấu chấm phẩy;
Ngoài ra, trong tiết học thực hành để khích lệ động viên tinh thần các em giáo viên nên biểu dương những học sinh có thành tích tốt bằng nhiều biện pháp, có thể cho điểm khuyến khích, động viên, khen thưởng trước lớp và điều quan trọng hơn nữa là những học sinh có tư duy tốt cùng với thầy hướng dẫn lại các bạn trong quá trình thực hành; 
Cấu trúc cơ bản nhất của một bài lập trình Pascal:
Về mặt lý thuyết giáo viên nên cung cấp chắc chắn cho học sinh cấu trúc chung của một bài lập trình theo cú pháp như sau:
PROGRAM 	; 
[]; 
BEGIN
	; 
READLN; 
END.
Bên cạnh đó, cũng cần lưu ý học sinh cách đặt tên chương trình đúng quy tắc, đảm bảo không sai cú pháp khi đặt tên chương trình, tên chương trình không được trùng với các từ khóa: PROGRAM, BEGIN, USES, VAR, END,..., dùng dấu gạch nối xen giữa nếu tên dài quá 8 ký tự và phải đảm bảo tên không dài quá 127 ký tự, tên chương trình phải được đặt bằng tiếng việt không dấu, không sử dụng dấu cách; 
Các biến ở phần khai báo phải đảm bảo phù hợp với bài toán và phù hợp với kiểu dữ liệu cần nhập. 
+ Cú pháp khai báo tên thư viện: ; Ví dụ khai báo thư viện Crt, Graph... là: USES CRT,GRAPH; 
+ Cú pháp khai báo tên hằng: ; Ví dụ khai báo tên biến Pi khi tính diện tích hình tròn là: Const Pi=3.14; 
+ Cú pháp khai báo biến: ; Ví dụ khai báo các biến a, b khi thực hiện bài toán tính tổng hai số tự nhiên a và b biết rằng a, b là 2 ký tự được nhập vào từ bàn phím là các số nguyên: Var a,b:Integer; 
+ Câu lệnh nhập dữ liệu vào từ bàn phím: Read(); hoặc Readln(); Ví dụ: Readln(CD,CR); 
+ Câu lệnh cho phép xuất dữ liệu hoặc kết quả ra màn hình, câu lệnh này thường sử dụng khá nhiều trong thực tế: Write(); hoặc Writeln(); Ví dụ xuất ra màn hình kết quả dòng chữ WELCOME TO NGUYEN VAN XO SECONDARY SCHOOL ta có thể viết như sau: Writeln(‘Welcome to Nguyen Van Xo Secondary School’); 
+ Câu lệnh gán được dùng để tính toán giá trị của biểu thức bên phải được kết quả cuối cùng thì gán cho tên biến phía bên trái là: :=; Ví dụ: S:=a+b; hoặc CV:=(a+b)*2; ,
Các phép toán số học, các hàm tính toán cơ bản trong Pascal: Phép cộng (+), phép trừ (-), phép nhân (*), phép chia (/), chia lấy phần nguyên (DIV), chia lấy phần dư (MOD), hàm tính giá trị tuyệt đối cho số thực hoặc số nguyên ABS(x), hàm tính bình phương cho số thực hoặc số nguyên SQR(x), hàm tính căn bậc hai cho số thực hoặc số nguyên SQRT(x), hàm tính lôgarít tự nhiên của x với x là số thực LN(x), EXP(x), SIN(x), COS(x). 
2. Cấu trúc câu lệnh điều kiện IF...THEN: 
Trong Pascal để mô tả cấu trúc rẻ nhánh ta thường dùng câu lệnh IF...THEN với hai trường hợp thiếu và đủ: 
+ Trường hợp 1 câu lệnh cấu trúc rẻ nhánh dạng thiếu có cú pháp đầy đủ như sau: IF THEN ; Nếu điều kiện có giá trị đúng thì câu lệnh sau từ khóa then được thực hiện, nếu điều kiện có giá trị sai thì câu lệnh sau từ khóa then sẽ không được thực hiện và bị bỏ qua. Ví dụ: IF A=10 THEN WRITELN(‘BAI LAM CUA BAN RAT XUAT SAC’); 
+ Trường hợp 2 câu lệnh cấu trúc rẻ nhánh dạng đầy đủ có cú pháp như sau: 
	IF THEN 
 	ELSE ; 
	Nếu điều kiện cho giá trị đúng câu lệnh 1 sau từ khóa then được thực hiện và bỏ qua câu lệnh 2, nếu điều kiện cho giá trị sai thì câu lệnh 2 sau từ khóa Else được thực hiện và bỏ qua câu lệnh 1; 
	Ví dụ: 
IF 9<3 THEN WRITELN(‘BAN NEN HOC BOI DUONG TOAN’)
ELSE WRITELN(‘BAN NEN HOC BOI DUONG TIN HOC’); 
Giáo viên trong quá trình cho học sinh thực hành nên hết sức lưu ý học sinh các quy tắc khi sử dụng các câu lệnh cấu trúc rẻ nhánh như dấu chấm phẩy được đặt sau dòng lệnh của từ khóa Else, hoặc trong quá trình sử dụng lệnh rẻ nhánh cũng cần lưu ý có thể sử dụng câu lệnh ghép sau từ khóa Else thì phải đặt giữa hai từ khóa BEGIN và END; 
3. Cấu trúc câu lệnh lặp với số lần biết trước FOR...DO: 
Cũng cần lưu ý học sinh khi giảng dạy lý thuyết lẫn thực hành, câu lệnh lặp với số lần biết trước lúc nào cũng có hai dạng là lệnh lặp dạng tiến và lệnh lặp dạng lùi mà sách giáo khoa chưa đề cập đến; 
Lặp dạng tiến:
   	FOR := TO  DO ;
 	Ví dụ 1: Sắp xếp các lệnh sau đây thành một bài lập trình hoàn chỉnh trong Pascal để thực hiện hiển thị các số từ 1 2 3 4 5 mỗi số cách nhau 3 khoảng trắng?
PROGRAM SAP_XEP;
USES CRT;
VAR i:INTEGER;    
BEGIN
 CLRSCR; 
 FOR i:=1 TO 5 DO WRITE(i:4); 
 READLN; 
END.
Lặp dạng lùi (Dạng này dùng cho học sinh khá giỏi giới hạn SGK chưa đề cập đến):
   	FOR := DOWNTO  DO ;
Đối với lệnh lặp dạng lùi áp dụng cho bài tập trên cần thực hiện cú pháp các câu lệnh tương tự nhưng chỉ khác ở chỗ câu lệnh lùi có dạng cú pháp như sau: FOR i:=5 DOWNTO 1 DO WRITE(i:4); 
Cấu trúc câu lệnh lặp với số lần chưa biết trước: 
Để thực hành tốt các dạng bài tập câu lệnh lặp với số lần chưa biết trước học sinh cần thiết nắm vững kiến thức lý thuyết thông qua cú pháp:
While do ; 
Với cú pháp này câu lệnh có ý nghĩa nếu câu lệnh kiểm tra điều kiện đúng thì sẽ thực hiện câu lệnh. Sau một vòng lặp chúng ta có thể thao tác tăng hoặc giảm biến để cho điều kiện sẽ bị sai sau một số vòng lặp; 
Ví dụ: Hãy lập vào chương trình nhập hai số nguyên dương n và x. Tính lũy thừa Nx. 
Program Luy_thua; 
Var x,n,Tich,Luythua:Integer; 
Begin
 	Writeln(‘Nhap vao so nguyen duong N va X: ’); Readln(n,x); 
 	Tich:=1;
 	Luythua:=1;
	While Luythua<=n do
 	Begin
 	Tich:=Tich*x; 
 	Luythua:=Luythua+1;
	End; 
	Writeln(‘Ta co N luy thua x la: ’,Tich); 
	Readln; 
End. 
Cấu trúc dữ liệu kiểu mảng:
Đối với nội dung này, giáo viên cần cho học sinh hiểu rõ khái niệm kiểu mảng, hiểu được cách khai báo các phần tử và cách truy cập đến các phần tử của mảng, học sinh cần hiểu được cách cài đặt thuật toán một số bài đơn giản với dữ liệu kiểu mảng, thực hiện việc khai báo mảng, truy cập, tính toán các phần tử của mảng, học sinh cần hiểu rõ các thành phần khai báo dữ liệu kiểu mảng; 
Để học sinh nắm được nội dung này tương đối khó khăn đối với trình độ học sinh lớp 8, chính vì vậy ta vừa dạy cho học sinh loại mảng một chiều, vừa nâng cao cho học sinh loại mảng hai chiều: 
+ Khai báo mảng một chiều theo hai cách khác nhau, cách thứ nhất là ta khai báo trực tiếp theo cú pháp sau:
Var : Array[m1..m2] of ;
 Trong đó: m1, m2 có cùng kiểu dữ liệu xác định phạm vi của chỉ số m1<=m2; 
Ví dụ: 	VAR M:ARRAY[1..5] OF INTEGER; 
+ Đối với cách thứ hai ta thực hiện khai báo gián tiếp theo hai bước với cú pháp như sau: 
Bước 1: Type =Array[m1..m2] of ; 
Bước 2: Var :; 
Ví dụ: Type M=Array[1..5] of Integer; 
 Var a:M; 
Tùy theo yêu cầu từng bài toán mà ta có thể sử dụng cách trực tiếp hay gián tiếp, học sinh cần hiểu và đọc kỹ đề từng bài toán. 
Chương trình có thể được viết theo cách 1 có nội dung code như sau: 
Program Nhietdo_Tuan;
Uses Crt; 
Var t1,t2,t3,t4,t5,t6,t7:Real;
 Dem:Byte
Begin
	Clrscr;
 	Write(‘Nhap vao nhiet do cua 7 ngay: ’); 
 	Readln(t1,t2,t3,t4,t5,t6,t7);
 	tb:=(t1+t2+t3+t4+t5+t6+t7)/7;
 	Dem:=0;
 	If t1>tb then Dem:=Dem+1; 
 	If t2>tb then Dem:=Dem+1;
 	If t3>tb then Dem:=Dem+1;
 	If t4>tb then Dem:=Dem+1;
 	If t5>tb then Dem:=Dem+1;
 	If t6>tb then Dem:=Dem+1;
 	If t7>tb then Dem:=Dem+1;
	Writeln(‘Nhiet do trung binh tuan la: ’,tb:8:1);
	Writeln(‘So ngay co nhiet do cao hon trung binh la: ’,dem); 
 	Readln; 
End. 
Nếu viết theo cách thứ hai ta sẽ có đoạn code được viết như sau: 
Program Nhietdo_Tuan; 
Uses Crt; 
Var A:Array[1..7] of Real; 
 Tong,tb:Real;
 i,dem:byte; 
Begin
 	Clrscr; 
 	Tong:=0; dem:=0;
 	For i:=1 to 7 do
 	 	Begin
 	Writeln(‘Nhap nhiet do ngay thu’,i,’’); 
 	Readln(A[i]); 
 	Tong:=Tong+A[i];
 	End; 
 	tb:=Tong/7;
 	Writeln(‘Nhiet do trung binh cua ca tuan la: ’,tb:8:1); 
 	For i:=1 to 7 do 
 	If A[i]>tb then dem:=dem+1; 
 	Writeln(‘So ngay co nhiet do cao hon trung binh la: ’,dem); 
	Readln; 
End.
Nếu so sánh 2 cách viết ta có nhận xét như sau: Đối với cách thứ nhất phải khai báo 30 biến đơn, sử dụng 30 lệnh if...then. Còn đối với cách thứ hai chỉ cần khai báo một mảng gồm 30 phần tử, ta sử dụng lệnh For i:=1 to 30 do... 
Như vậy một cách nhìn rõ ràng giáo viên hướng dẫn cho học sinh phân tích bài toán khi sử dụng biến đơn cùng kiểu dữ liệu, thì việc sử dụng biến mảng sẽ thuận lợi hơn rất nhiều trong việc thực hiện lập trình các bài toán xử lý dãy số, học sinh sẽ rút ngắn thời gian và công việc lập trình đỡ vất vả hơn khi xử lý các bài tập thực hành; 
Đối với phần mảng hai chiều dù trong chương trình không có nhưng giáo viên cũng cần bổ sung cho các em đặc biệt là những học sinh giỏi bộ môn và có tính tư duy cao. Các hình thức đơn giản nhất của mảng đa chiều là mảng hai chiều. Một mảng hai chiều, trong bản chất, một danh sách các mảng một chiều. Để khai báo một mảng số nguyên hai chiều kích thước x, y, bạn sẽ viết một cái gì đó như sau: Var ArrayName:Array[1..x,1..y] of element-type; 
Trường hợp loại yếu tố có thể là bất kỳ kiểu dữ liệu hợp lệ Pascal và ArrayName sẽ là một định danh Pascal hợp lệ. Một mảng hai chiều có thể được hình dung như một bảng, trong đó sẽ có x số hàng và số y của cột. Như vậy, mỗi phần tử trong mảng a được xác định bởi một tên phần tử có dạng a [i] [j], trong đó một là tên của mảng, và i và j là những kí hiệu mà duy nhất xác định mỗi yếu tố trong một; 
Mảng nhiều chiều, như mảng một chiều, được khởi tạo bằng cách chuyển nhượng thông qua, hoặc bằng cách xác định một subscript cụ thể hoặc sử dụng một cho vòng lặp; 
Bài tập: Viết chương trình nhập vào mảng 2 chiều C có n hàng, m cột. Xuất ra những phần tử của mảng 2 chiều C thỏa điều kiện là những số chẳn. 
Program Mang_2C;
Uses Crt; 
Type mang=Array[1..15,1..15] of integer; 
Var c:mang; 
 m,n:byte; 
 i,j,k: Integer; 
Begin 
 	Clrscr; 
 	Write('Nhap so hang n = '); Readln(n); 
 	Write('Nhap so cot m = '); Readln(m); 
 	{nhap mang} 
 	For i:=1 to n do 
 	For j:=1 to m do 
 	Begin 
 	Write('C[',i,',',j,']='); 
 	Readln(c[i,j]); 
 	End; 
 	{in matran} 
 	For i:=1 to n do 
 	Begin 
 	For j:=1 to m do 
 	If c[i,j]mod 2= 0 then Write(c[i,j]:6); 
 	End; 
Readln; 
End. 
Trong nội dung này giáo viên vận dụng để bồi dưỡng cho các em học sinh giỏi bộ môn, có ham thích học tập và nghiên cứu bộ môn; 
Bên cạnh các kinh nghiệm tích lũy được, bản thân tôi còn nhận thấy cần vận dụng nhiều phương pháp giúp cho tôi tập trung vào nghiên cứu đó là: phương pháp điều tra, phương pháp quan sát, phương pháp phân tích, tổng hợp, phương pháp thống kê để từ đó có biện pháp điều chỉnh chuyên môn giảng dạy cho phù hợp với các đối tượng học sinh; 
Rèn luyện kỹ năng lập trình đặc biệt là lập trình Pascal là một việc không phải một sớm một chiều có thể nhanh chóng giỏi và giải quyết mọi bài toán. Qua nhiều năm kinh nghiệm giảng dạy bộ môn Tin học, bản thân tôi thấy nếu muốn các em học sinh giỏi về kỹ năng thực hành lập trình cần trang bị cho các em theo các cách sau: Xem các code ví dụ (Look at the Example Code), đừng chỉ đọc các code ví dụ – hãy chạy thử nó (Don’t just Read exam code – Run It), hãy viết mã riêng của bạn càng sớm càng tốt (Write your own code as soon as possible), tìm hiểu cách sử dụng một công cụ Debug (Learn to use a Debugger), Tìm kiếm thêm những nguồn tài tài liệu khác (Seek our more sources); 
* 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 và cho cả việc bồi dưỡng học sinh giỏi và phụ đạo học yếu kém trong phạm vi nhà trường.
* Lợi ích kinh tế - xã hội.
- Trong quá trình giảng dạy năm học 2016 – 2017 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 bộ môn đạt kết quả cao hơn so với ban đầu. Các em học sinh rất thích thú và một số em ham mê nghiên cứu học môn Tin học nhất là các tiết vào giờ 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ác em tự giải quyết vấn đề mà lâu nay còn vướn mắc chưa giải quyết được.
PHẦN C. KẾT LUẬN VÀ KIẾN NGHỊ.
Để giải một bài toán trên máy tính thật sự không hề đơn giản dù cho chúng ta biết nếu vận dụng phương pháp toán học thì việc xử lý không hề khó nhưng khi chúng ta thực hiện yêu cầu trên máy tính bằng ngôn ngữ lập trình thì vạn điều khó. Song song đó bản thân giáo viên phải trăn trở làm thế nào để giúp học sinh giải quyết vấn đề một cách nhanh chóng hiệu quả đòi hỏi các em thật sự tập trung và khơi dậy trong tinh thần các em niềm đam mê học tập; 
Muốn được vậy giáo viên bộ môn Tin học cần trang bị dần dần cho các em các kỹ năng trong các tiết thực hành, giúp các em hiểu cách xây dựng bài toán, mọ tả thuật toán, đến việc viết chương trình, nhận biết các lỗi và sửa lỗi chương trình để ngày ngày nâng cao khả năng đồng thời để góp phần nâng dần chất lượng dạy và học tin ở các trường Trung học cơ sở; 
Là một giáo viên tin học tôi muốn nói rằng chúng ta không chỉ dạy lý thuyết suông mà cần phải rèn luyện cho học sinh các kỹ năng thực hành, khơi gợi cảm giác dễ chịu mà không phải bị gò bó. Để 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 hơn ở điểm nào.
Tóm lại để giúp các em viết được một chương trình hoàn chỉnh thỏa mãn yêu cầu của bài toán đặt ra trên máy tính thì học sinh phải có tư duy lôgic về thuật toán, khả năng sử dụng máy tính thành thạo, sử dụng các câu lệnh và khai báo kiểu dữ liệu một cách hợp lý. Với tham vọng nâng cao chất lượng giảng dạy bộ môn đặc biệt là môn Tin học lớp 8, hy vọng thời gian tới bộ môn Tin học ở đơn vị chúng tôi đạt nhiều kết quả đáng kể, cũng như chất lượng giáo dục đào tạo huyện nhà ngày càng phát triển hơn so với các quận huyện trong toàn thành phố; 
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 kết từ kinh nghiệm giảng dạy thực tế. Nhưng trong quá trình thực hiện đề tài 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./.
Thái Mỹ, ngày 22 tháng 01 năm 2017
 	 Chủ nhiệm đề tài 
 Phan Nghĩa Bình Nam 

File đính kèm:

  • docsang_kien_kinh_nghiem_mot_so_bien_phap_ren_ky_nang_thuc_hanh.doc