Rèn luyện kĩ năng cho học sinh khi viết chương trình con bằng ngôn ngữ lập trình pascal - Pdf 44

S
Ở GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA

TRƯỜNG THPT TRẦN PHÚ NGA SƠN
----------

SÁNG KIẾN KINH NGHIỆM

RÈN LUYỆN KĨ NĂNG CHO HỌC SINH KHI VIẾT
CHƯƠNG TRÌNH CON BẰNG NGÔN NGỮ
LẬP TRÌNH PASAL

Người thực hiện: Nghiêm Thị Nhung
Chức vụ: Giáo viên
Đơn vị công tác: Trường THPT Trần Phú
SKKN thuộc môn: Tin học

THANH HÓA NĂM 2017


MỤC LỤC
Nội dung
Trang
MỤC LỤC…………………………………………………………... 1
1. MỞ ĐẦU………………………………………………………….. 2
1.1. Lý do chọn đề tài………………………………………………... 2
1.2. Mục đích nghiên cứu……………………………………………. 2
1.3. Đối tượng nghiên cứu…………………………………………… 2
1.4. Phương pháp nghiên cứu………………………………………... 2
2. NỘI DUNG SÁNG KIẾN KINH NGHIỆM……………………. 2
2.1. Cơ sở lý luận của sáng kiến kinh nghiệm……………………….. 2

1.1/ Lí do chọn đề tài
Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương
pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong
2


hoạt động học tập. Chúng ta có thể thấy định hướng đổi mới phương pháp dạy
học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi
mới phương pháp dạy học ở trường phổ thông là giúp học sinh hướng tới việc
học tập chủ động, chống lại thói quen học tập thụ động.
Tuy nhiên với bất kỳ một phương pháp nào thì giáo viên vẫn phải có một
yêu cầu chung là phải hiểu rõ về bản chất của vấn đề thì từ đó mới có khả năng
sử dụng một hoặc nhiều phương pháp thích hợp để truyền đạt hay gợi mở vấn đề
cho học sinh.
Trong suốt quá trình giảng dạy từ khi môn Tin học được đưa vào trường phổ
thông đến nay, tôi nhận thấy rằng khi giảng dạy về nội dung của Chương 6
"Chương trình con và lập trình có cấu trúc" phần lớn học sinh đều không hiểu
được cách sử dụng chương trình con như thế nào khi viết chương trình mà lý do
chính là có một số giáo viên cũng chỉ dạy những gì mình biết chứ cũng chưa
hiểu rõ bản chất của vấn đề.
Từ những lý do trên, qua quá trình giảng dạy trên lớp bản thân tôi đã chọn
đề tài “ Rèn luyện kĩ năng cho học sinh khi viết chương trình con bằng ngôn ngữ
lập trình Pascal” là đề tài Sáng kiến kinh nghiệm của mình để có thể giúp cho
giáo viên, học sinh hiểu rõ được vấn đề tương đối phức tạp này.
1.2/ Mục đích nghiên cứu
Góp phần thúc đẩy quá trình đổi mới phương pháp dạy học theo hướng phát
huy tính tích cực, chủ động của học sinh.
Góp phần nâng cao kiến thức và khả năng thực hành cho giáo viên.
Giúp học sinh có khả năng nhận thức kiến thức và tự hoàn thiện kiến thức.
1.3/ Đối tượng nghiên cứu

bộ).
Khi trình bày vấn đề này cho học sinh, tôi đã thực hiện như sau:
+ Trước hết, đặt câu hỏi chương trình con là Thủ tục (Procedure) hay Hàm
(Function)? Giải quyết chương trình con là Function khi và chỉ khi thỏa mãn
đồng thời các yêu cầu sau:
– Nếu ta muốn nhận lại một và chỉ một kết quả mà thôi.
– Kết quả phải là kiểu xác định ( kiểu vô hướng).
– Có cần dùng tên của Hàm để viết trong các biểu thức hay không ?
– Nếu không thỏa mãn các tính chất trên thì chương trình con là
Procedure.
Ví dụ :
Function BinhPhuong( x: real) : real;
Begin
BinhPhuong := x * x;
End;
(*---------------------------------------------*)
Procedure BinhPhuong( x : real; var x2: real);
Begin
x2:=x*x;
End;
Xem cách tính c= a2 + b2
- Nếu dùng Function : c: = BinhPhuong(a) + BinhPhuong(b);
- Nếu dùng Procedure với một biến trung gian tg:
BinhPhuong(a,tg); c:=tg; {c:=a2}
BinhPhuong(b,tg); c:= c+tg; {c:= a2 + b2}
+ Sau cùng, giải quyết vấn đề tham số của chương trình con.
Giải quyết :
– Chương trình con có cần tham số không?
– Nếu đối tượng của chương trình con là biến toàn cục thì biến này không
cần đưa vào làm tham số.

Trong khi lập trình chúng ta thường gặp những đoạn chương trình được lặp
đi lặp lại nhiều lần ở những chỗ khác nhau. Để tránh rườm rà, những đoạn
chương trình này được thay thế bởi các đoạn CTC tương ứng và khi cần, ta chỉ
việc gọi đoạn CTC đó ra mà không phải viết lại cả đoạn chương trình đó.
Đối với những bài toán lớn và phức tạp sẽ tương ứng với một chương trình
có thể rất lớn và dài. Do đó, việc gỡ rối và hiệu chỉnh sẽ rất khó khăn. Ta có thể
phân tách vấn đề phức tạp đó ra thành các vấn đề nhỏ hơn để dễ kiểm tra, gỡ rối
từng khối một và sau đó ghép thành một chương trình lớn. Mỗi CTC có thể
phần công cho một lập trình viên hoặc một nhóm cán bộ lập trình đảm nhiệm.
Đó là ý tưởng cơ bản của lập trình có cấu trúc.
Chương trình con là một dãy lệnh mô tả một số thao tác nhất định và có thể
được thực hiện ở nhiều vị trí trong chương trình.
2. Cấu trúc và vị trí của chương trình con trong chương trình chính:
Progam Tên_chương_trình_chính;
Uses Khai báo thư viện sử dụng;
Const Khai báo hằng;
Type Khai báo kiểu dữ liệu;
Var Khai báo biến;
Khai báo chương trình con
BEGIN {Chương trình chính}
5


Các lệnh của chương trình chính;
Lời gọi thực hiện hàm và thủ tục;
END.
Như vậy, phần khai báo chương trình con nằm ở phần cuối phần khai báo của
chương trình chính.
a. Khai báo và lời gọi thủ tục
– Khai báo:

s:=x+y;
tong:=s;
end;
– Lời gọi hàm:
Cấu trúc: <tên hàm>(danh sách các tham số thực);

6


* Lưu ý: Lời gọi hàm khác lời gọi thủ tục ở chỗ: Lời gọi hàm phải được đặt
trong một lệnh hoặc trong một lời gọi chương trình con khác còn lời gọi thủ tục
thì không.
Ví dụ về lời gọi hàm: kq:=tong(4,5);
3. Biến toàn cục và biến cục bộ
Biến toàn cục là biến được khai báo trong chương trình chính. Các biến này
có thể được dùng ở mọi nơi trong chương trình và tồn tại trong suốt thời gian
làm việc của chương trình.
Biến cục bộ (biến địa phương) là các biến được khai báo trong chương trình
con. Các biến này chỉ được sử dụng trong phạm vi chương trình con mà nó được
khai báo. Sau khi kết thúc chương trình con các biến này sẽ không tồn tại.
Ví dụ:
PROGRAM vidu;
Var a,b,c:integer; {a,b,c là 3 biến toàn cục}
PROCEDURE thutuc(n:integer);{n là tham số hình thức}
Var i:integer; {i là biến cục bộ}
Begin
For i:=1 to 10 do write(i);
End;
BEGIN
a:=5; b:=6; c:=8;

– Tham số hình thức (đối) là các tham số sau tên hàm và thủ tục trong khai báo.
– Tham số thực sự là các tham số sau tên hàm và thủ tục trong lời gọi.
– Tham số biến (tham biến): Là các tham số được khai báo sau từ khóa Var. Các
tham số thực phải là các biến chứ không được là giá trị. Tham biến có thể được
thay đổi trong chương trình con và sau khi ra khỏi chương trình con nó vẫn giữ
giá trị thay đổi đó.
– Tham số giá trị (tham trị): Là các tham số được khai báo mà không đứng sau
từ khóa Var. Các tham số thực có thể là các giá trị, hằng, biến. Tham trị có thể
thay đổi trong chương trình con nhưng sau khi kết thúc chương trình con giá trị
của nó trở về như ban đầu.
– Các tham số trong hàm luôn là các tham trị, các tham số trong thủ tục có thể là
tham trị hoặc tham biến.
5. Phân biệt cách sử dụng hàm và thủ tục
Hàm khác thủ tục ở chỗ hàm trả về một giá trị cho lệnh gọi thông qua tên
hàm còn thủ tục thì không.
*Dùng hàm
– Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô hướng, kiểu string hoặc
kiểu con trỏ).
– Lời gọi chương trình con cần nằm trong các biểu thức tính toán.
*Dùng thủ tục
– Kết quả của bài toán không trả về giá trị nào hoặc trả về nhiều giá trị hoặc trả
về kiểu dữ liệu có cấu trúc (Array, Record, File)
– Lời gọi chương trình con không nằm trong các biểu thức tính toán.
6. Tính đệ quy của chương trình con
Một chương trình con mà trong chương trình con này lại dùng chính nó để
tính toán gọi là chương trình đệ qui.
Ta xét ví dụ sau: Nhập vào một số n và tính n!
Ta đã biết n! = 1 nếu n =0 trong trường hợp n>=1 ta có n!=n*(n-1)!
Hàm tính n! như sau:
Function Giaithua(n:integer):longint;

Else DeltaAm;
End.
Trong đó DeltaKhong, DeltaDuong, DeltaAm là 3 tên chương trình con mà bạn
sẽ hình thành tiếp theo với các khung gồm tên chương trình con cùng với hai từ
khóa Begin và End; vừa đủ để khi dịch thì chương trình dịch không báo lỗi về
các chương trình con này.
PROGRAM Giai_PT_Bac2;
{--------------------------------------------------------------------------}
Procedure DeltaKhong;
Begin
End;
{-------------------------------------------------------------------------}
Procedure DeltaDuong;
Begin
End;
{-------------------------------------------------------------------------}
Procedure DeltaAm;
Begin
End;
{------------------------------chương trình chính---------------------}
Begin
DocvaTinhDelta;
9


If Delta=0 then DeltaKhong
Else If Delta>0 then DeltaDuong
Else DeltaAm;
End.
8.2. Tiếp theo mới là đến việc hoàn thiện từng chương trình con một cách riêng

Program Bai1;{giải phương trình bậc nhất ax+b=0 bằng thủ tục}
Uses crt;
Var i,j: integer;
Procedure Giaipt (a,b:real);
Begin
Writeln(‘giai phuong trinh:’,a:4:1,’x+’,b:4:1,’=0’);
If a0 then writeln(‘nghiem x=’,-b/a:4:2)
else
10


If b0 then writeln(‘phuong trinh vo nghiem’)
else writeln(‘phuong trinh vo so nghiem’);
End;
BEGIN{thân chương trình chính}
Clrscr;
Writeln(‘ket qua giai phuong trinh’);
Giaipt(4.5,13.5);
For i:=-1 to 1 do
For j:=0 to 2 do Giaipt(i,j);
Readln;
END.
Bài tập 2. Nhập vào một mảng một chiều A1,A2,…,AN chứa các số nguyên sau
đó sắp xếp dãy tăng rồi in ra màn hình.
Phân tích:
Có thể chia bài toán ra thành 3 công việc lớn sau:
a- Nhập dãy số A1,A2,…,AN.
b- Sắp xếp dãy A1,A2,…,AN tăng
c- In dãy A1,A2,…,AN ra màn hình
Mỗi việc a,b,c thuộc về một lĩnh vực riêng nên có thể xây dựng thành các

Procedure Nhap_Mang(var A: ArrInt; var N: integer; ten:char);{Nhập N giá trị
vào mảng A với tên mảng là ten}
Var i: integer;
Begin
Write(‘Nhap day’,ten,’.’);
For i:=1 to N do
Begin
Write(ten,’[‘,i,’]=’);
Readln(A[i]);
End;
End;
Procedure Sap_tang(var A: ArrInt; N: integer);
Var i, j,tg: integer;
Begin
For i:=1 to N-1 do
For j:=i+1 to N do
If A[i] > A[j] then
Begin
tg:=A[i];
A[i]:=A[j]
A[j]:=tg;
End;
Procedure Xuat_mang(A: ArrInt; N: integer; ten:char);{Hiện N giá trị của mảng
A ra màn hình}
Var i: integer;
Begin
Writeln(‘Day’,ten,’nhu sau:’);
For i:=1 to N do Write(A[i]: 10:1);Writeln
End;
BEGIN

Clrscr;
write(‘Nhap a,b,c=’); readln(a,b,c);
minmax(a,b,c,min,max);
Writeln(‘Min=’,min,’Max=’,max);
Readln;
END.
2. Một số bài tập về hàm
Bài tập 1. Viết chương trình con tính an.
Sau đây là một chương trình được viết ra với những lỗi mà học sinh mới học
thường hay mắc phải
Chương trình viết sai :
Var b,m,x:real;
Function Amu(a:real; n:real):real;
Var t:real;
Begin
Write(‘a,n=’); readln(a,n);
If a
Begin
If a
Begin
T:=1;
For i:=1 to N do T:=T*i;
GT:=T;
End;
End;
Giải thích thêm:
Trong CTC ta khai báo biến i, T là các biến địa phương vì biến i,T chỉ tồn tại
một cách tạm thời. Sau khi kết thúc tính toán N! trong CTC thì ta không có nhu
cầu dùng đến i và T nữa.
Điểm chú ý thứ hai thuộc về nguyên tắc là tên của Function (ở đây là GT) chỉ
nên dùng để nhận kết quả (GT:=T), tên của Function chỉ nên viết ở vế trái của
phép gán để nhận giá trị của biểu thức. Không được dùng thẳng GT trong khi
tính toán ở vế trái của phép gán. Tức là nên tránh viết:
For i:=1 to N do GT:=GT*i;
Hoặc có thể chương trình được viết như sau (sử dụng tính đệ qui của CTC)
Function Giaithua(N:integer):integer;
Begin
If N=0 then Giaithua:=1
Else Giaithua:=n*Giaithua(n-1);
End;
Bài tập 3. Viết chương trình con tìm max, min của ba số nguyên. Chương trình
chính: nhập 3 số nguyên. Tìm số bé nhất, số lớn nhất. Thông báo kết quả ra màn
hình.
Chương trình:
Program Tim_minmax;{phương án 2 dùng 2 CTC dạng hàm}
Uses crt;
Var a,b,c,kq1,kq2: integer;
Function min(a,b,c:integer):integer; {dữ liệu trả về là số nguyên}
Var tg:integer;{sử dụng biến trung gian tg}

2.4/ Hiệu quả của sáng kiến kinh nghiệm
Trong quá trình trao đổi, thảo luận và trình bày, tôi thực sự cảm thấy phấn
khởi khi thấy các em học sinh nắm được những vấn đề lý thuyết cơ bản về
chương trình con – nhận dạng được các loại bài tập – phương pháp giải từng loại
bài tập có hệ thống như trên. Đa số các em biết ứng dụng và giải quyết được các
bài toán có sử dụng chương trình con. Các em cũng thấy giờ học nhẹ nhàng hơn,
có hứng thú đối với tiết học do vậy mà việc tiếp thu kiến thức có hiệu quả hơn
và đặc biệt giờ thực hành sau đó có hiệu quả rõ rệt.
Qua tiết dự giờ của các đồng nghiệp, tôi thấy tiết dạy áp dụng phương pháp
này được các đồng nghiệp đánh giá cao, có tính cải tiến và đổi mới từ những giải
pháp đã có và và đã triển khai áp dụng tại đơn vị có hiệu quả cao.
Để có số liệu khách quan và chính xác, tôi chọn dạy 2 lớp 11B và 11E . Lớp
thực nghiệm (TN) là lớp 11B và lớp đối chứng (ĐC) là lớp 11E. Hai lớp này có
trình độ tương đương nhau về các mặt:
- Số lượng học sinh.
- Chất lượng học tập nói chung và môn Tin học nói riêng
Để xác định hiệu quả, tính khả thi của đề tài. Việc kiểm tra, đánh giá chất lượng
nắm bắt kiến thức của học sinh ở lớp thực nghiệm và lớp đối chứng được tiến
hành bằng các bài kiểm tra, kết quả của một trong các bài kiểm tra đó như sau:
Số học sinh
Số học sinh không
làm được
làm được
Lớp
Sĩ số
Ghi chú
Số lượng Tỉ lệ (%) Số lượng Tỉ lệ (%)
11B
40
5

riêng và giáo viên dạy tin học nói chung có thể có những cách dạy hay và phù
hợp với đặc trưng bộ môn, với mỗi bài học và đối tượng học sinh.
3.2/ Kiến nghị
Trên cơ sở vật chất hiện có của Nhà trường đối với bộ môn tin học, việc
việc dạy và học của thầy và trò còn gặp rất nhiều khó khăn, như: thiết bị không
đồng bộ, máy đang còn là dạng phòng học cải tạo nên không đảm bảo cả về tiêu
chuẩn và chất lượng.
Vì vậy, để có thể nâng cao chất lượng hơn nữa, rất mong Nhà trường cũng
như sở, ngành có kế hoạch đầu tư về cơ sở vật chất cũng như tạo điều kiện quan
tâm đối với đội ngũ giáo viên tin học và đặc biệt xây dựng được một đội ngũ
quản trị các phòng máy tại các Nhà trường.
Xin chân thành cảm ơn!
XÁC NHẬN
CỦA THỦ TRƯỞNG ĐƠN VỊ

Thanh Hóa, ngày 25 tháng 5 năm 2017
Tôi xin cam đoan đây là SKKN của mình viết,
không sao chép nội dung của người khác.

Người viết

Nghiêm Thị Nhung

18


TÀI LIỆU THAM KHẢO
- Sách giáo khoa Tin học 11
- Bài tập ngôn ngữ lập trình Pascal của Quách Tuấn Ngọc.
- Internet.


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