Tải bản đầy đủ (.doc) (15 trang)

SKKN: Giảng dạy theo hướng phát huy tính tích cực của học sinh trong lập trình lập trình Pascal

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (106.32 KB, 15 trang )

Giảng dạy theo hướng phát huy tính tích cực của học sinh trong lập trình lập
trình Pascal

Phần I: MỞ ĐẦU
1. Lý do về tính cấp thiết
- Bước sang thế kỷ XXI - Thế kỷ của sự phát triển mạnh mẽ khoa học, kỹ
thuật và công nghệ, trước yêu cầu mới của của sự nghiệp công nghiệp hoá hiện đại hoá đất nước đòi hỏi các nhà trường phải đào tạo nên những con
người lao động thông minh, sáng tạo, độc lập, tự chủ, vì lợi ích của cộng
đồng, của nhân loại. Để đạt được mục tiêu này ngành giáo dục đã đưa bộ môn
Tin vào nhà trường giúp cho thầy và trò tiếp cận với công nghệ mới - công
nghệ hiện đại của nền văn minh thông tin, thích ứng với sự phát triển của xã
hội.
- Khi tin học được đưa vào nhà trường nghiên cứu như các bộ môn khoa
học khác, các kiến thức tin học được đúc kết từ trong thực tiễn và phát triển
dựa trên nhu cầu khai thác của người dùng, do đó có nhiều điều kiện thuận lợi
để sử dụng các phương tiện dạy học - phát huy tính tích cực trong học tập của
học sinh. Tuy nhiên, kỹ năng vận dụng những tri thức đã học vào việc giải
quyết những bài toán trong thực tiễn của học sinh còn nhiều hạn chế.
- Mặt khác, vào giữa những năm 60 của thập kỷ này, khi mà việc lập trình
cho máy tính mang nặng tính kinh nghiệm, tính “nghệ thuật”; Với những
chương trình nhìn chung là khó đọc, khó kiểm soát lỗi ngay cả chính tác giả
đã tạo ra nó, và đặc biệt là không có cách nào khẳng định được tính đúng đắn
của một chương trình, ngoài việc kiểm tra chương trình ấy thông qua một số
lần chạy thử với những dữ liệu vào khác nhau, nếu thấy kết quả những lần
chạy thử đó là đúng thì khẳng định là chương trình đúng. Từ đó nảy sinh vấn
1


đề làm thế nào giải quyết được những tồn tại nêu trên. Vấn đề này đã lôi kéo
nhiều nhà Tin học lý thuyết nổi tiếng quan tâm và tham gia. Phương pháp lập
trình có cấu trúc được đề xuất trong bối cảnh ấy.


- Lập trình có cấu trúc cho phép tạo ra những chương trình sáng sủa, dễ
đọc, dễ hiểu, dễ kiểm tra và điều quan trọng là có thể chứng minh được tính
đúng đắn của một chương trình.
- Tư tưởng chính của lập trình có cấu trúc là modul hoá chương trình, nghĩa
là từ một chương trình lớn, có thể phân ra thành những chương trình nhỏ, hay
những chương trình con, tương đối độc lập nhau và có thể giải quyết mộ cách
độc lập từng chương trình một. Trên cơ sở đó, có thể kiểm chứng tính đúng
đắn của mỗi chương trình con, rồi ghép nối lại thành chương trình hoàn chỉnh.
- Trong khi viết chương trình, 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 làm cho chương trình trở nên
dài dòng. Trong Pascal cho phép viết đoạn chương trình đó thành một chương
trình con, mỗi khi cần, ta viết thủ tục gọi chương trình con đó ra cùng với
những tham số tương ứng. Cách đó làm cho chương trình trở nên ngắn gọn,
sáng sủa và tiết kiệm được công sức lập trình.
- Với những bài toán lớn, phức tạp sẽ tương ứng với một chương trình rất
lớn, rất dài; việc nhìn khái quát tổng thể cả chương trình, cũng như việc gỡ
rối, sửa lỗi là rất khó khăn. Việc xây dựng một chương trình con cho phép
tách chương trình lớn thành những chương trình nhỏ hơn, đơn giản hơn làm
cho việc kiểm tra, sửa chữa chương trình được dễ dàng, thuận tiện hơn. Sau
khi tạo xong các chương trình con này ta chỉ việc ghép chúng lại thành một
chương trình hoàn chỉnh. Chính lý do này làm cho giá thành xây dựng toàn bộ
chương trình giảm xuống và bớt đi được công sức thủ công của người lập
trình. Chính vì vậy, tôi muốn vận dụng cách viết và sử dụng chương trình con
trong lập trình có cấu trúc để giúp cho học sinh có kỹ năng giải quyết một số

2


bài toán được nhanh hơn, chính xác hơn và việc kiểm soát toàn bộ chương
trình cũng thuận tiện hơn.


3


2. Mục đích của việc nghiên cứu
- Mục đích của việc nghiên cứu sử dụng chương trình con trong lập trình có
cấu trúc nhất là lập trình Pascal nhằm giúp học sinh phát huy tính tích cực, tự
giác, chủ động, sáng tạo, rèn luyện thói quen làm việc độc lập và kỹ năng lập
trình, giảm bớt thời gian, công sức khi lập trình; giúp cho việc kiểm tra, sửa
chữa chương trình trở nên đơn giản hơn, dễ dàng hơn và thuận tiện hơn. Bên
cạnh đó, học sinh còn biết vận dụng để giải quyết các bài toán thường gặp
trong thực tế; gây hứng thú trong học tập, làm cho “Học” là quá trình kiến
tạo; là niềm say mê để từ đó học sinh biết khai thác và xử lý thông tin, tự hình
thành hiểu biết, năng lực và phẩm chất.

3. Kết quả cần đạt được
- Phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh; tạo
thói quen làm việc độc lập; bồi dưỡng cho học sinh phương pháp tự học, khả
năng hợp tác; rèn luyện kĩ năng lập trình và kỹ năng vận dụng kiến thức vào
việc giải quyết các bài toán thường gặp trong thực tiễn; tác động đến tình
cảm, đem lại niềm vui, hứng thú và trách nhiệm học tập cho học sinh.

4. Đối tượng, phạm vi và kế hoạch nghiên cứu
- Đối tượng nghiên cứu là học sinh trung học phổ thông.
- Phạm vi và kế hoạch nghiên cứu:
Khối 11 (Lớp 11B5, 11B6) - Trường THPT XXX

4



Phần II: NỘI DUNG
1. Cơ sở lý luận của vấn đề nghiên cứu tổng kết kinh nghiệm
1.1 Một số khái niệm
- Lập trình: Là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập
trình cụ thể để mô tả dữ liệu và diễn đạt các thao tác của thuật toán.
- Ngôn ngữ lập trình: Là ngôn ngữ để viết chương trình.
- Chương trình: Là cách mô tả thuật toán bằng một ngôn ngữ mà máy tính
có thể hiểu và thực hiện được.
- Thuật toán: Là dãy hữu hạn các thao tác được sắp xếp theo một trình tự
xác định sao cho sau khi thực hiện dãy thao tác đó từ Input ta thu được Output
của bài toán.
- 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 (đựơc gọi) từ nhiều vị trí khác nhau trong chương trình.
1.2 Lợi ích của việc sử dụng chương trình con
- Tránh việc phải viết lặp đi, lặp lại cùng một dãy lệnh nào đó trong một
chương trình.
- Hỗ trợ việc thực hiện viết các chương trình lớn.
- Phục vụ cho quá trình trìu tượng hoá.
- Mở rộng khả năng ngôn ngữ.
- Thuận tiện cho việc phát triển và khả năng nâng cấp chương trình.
1.3 Phân loại chương trình con
- Chương trình con có 2 loại cơ bản: Chương trình con hàm
Chương trình con thủ tục

5


+ Hàm (Function): Là một chương trình con thực hiện một số thao tác nào
đó và trả về giá trị qua tên hàm.
+ Thủ tục (Procedure): Là một chương trình con thực hiện các thao tác

nhất định nhưng không trả về giá trị nào qua tên của nó.
1.4 Cấu trúc chương trình con
- Cấu trúc chung:
<Phần đầu>
[<Phần khai báo>]
Begin
[<Các lệnh>]; {Phần thân chương trình con}
End;
- Cấu trúc của Hàm:
Function Tên_hàm ([khai báo các tham số, nếu cần]): kiểu DL;
[<Phần khai báo của hàm>] { Label, Const, Type, Var, ... }
Begin
<Các lệnh>; {Phần thân hàm}
End;
- Cấu trúc của thủ tục:
Procedure Tên_thủ tục ([khai báo các tham số, nếu cần]);
[Begin
<Các lệnh>; {Phần thân thủ tục}
End;

6


1.5 Sử dụng chương trình con
- Cách gọi chương trình con:
Tên chương trình con (cùng với tham số, nếu có);
- Các tham số được sử dụng trong chương trình con
+ Tham số hình thức: được viết trong phần khai báo tên chương trình
con.

+ Tham số thực sự: được viết trong lời gọi chương trình con.
+ Tham biến: Là tham số hình thức viết sau Var. Khi đó tham số thực sự
của nó phải là biến, không được là giá trị. Tham số thực sự có thể bị thay đổi
trong chương trình con và sau khi ra khỏi chương trình con nó vẫn giữ nguyên
giá trị thay đổi đó.
+ Tham trị: Là tham số hình thức không có Var. Khi đó tham số thực sự
của nó có thể là giá trị, biến hoặc biểu thức. Tham số thực sự có thể bị thay
đổi trong chương trình con, nhưng sau khi ra khỏi chương trình con nó lại
mang giá trị ban đầu.

2. Thực trạng vấn đề nghiên cứu tổng kết kinh nghiệm
- Với những chương trình lớn thường rất dài, nhìn chung là khó đọc, khó
kiểm soát lỗi nhất là đối với học sinh trung học phổ thông, và đặc biệt là
không có cách nào khẳng định được tính đúng đắn của một chương trình,
ngoài việc kiểm tra chương trình ấy thông qua một số lần chạy thử với những
dữ liệu vào khác nhau, nếu thấy kết quả những lần chạy thử đó là đúng thì
khẳng định là chương trình đúng. Để giúp cho học sinh say mê với môn học,
giảm bớt thời gian và công sức khi lập trình; rèn luyện khả năng làm việc độc
lập, tích cực, chủ động, sáng tạo, có tinh thần hợp tác khi làm việc theo nhóm,
biết vận dụng những kiến thức đã học để giải quyết một số bài toán thường
gặp trong thực tiễn, từ đó nảy sinh vấn đề là phải hướng dẫn cho học sinh
cách viết và sử dụng chương trình con trong lập trình Pascal làm cho chương

7


trình sáng sủa, dễ đọc, dễ hiểu, dễ kiểm tra và điều quan trọng là có thể chứng
minh được tính đúng đắn của một chương trình.

3. Một số ví dụ

- VD1: Viết chương trình tính: an+bm+cp+dq
- VD2: Viết chương trình tính: n! + m! + p! + q!
a

c

m

p

- VD3: Viết chương trình tính: S = b + d + n + q
- VD4: Viết chương trình:
+ Sắp xếp dãy a = {a1, a2, a3, ..., an} tăng dần

+ Sắp xếp dãy a tăng dần sao cho số chẵn đứng trước, số lẻ đứng sau
+ Sắp xếp dãy a tăng dần sao cho chẵn lẻ xen kẽ
3.1 Chương trình VD3
- Chương trình không sử dụng chương trình con
Program congPS;
var a,b,c,d,m,n,p,q:integer;
tu,mau,t1,m1,uc:integer;
S:real;
Begin
writeln('Nhap phan so a/b');
repeat
write('Nhap tu so a = ');
readln(a);
write('Nhap mau so b = ');
readln(b);
if b=0 then writeln('Nhap lai phan so');

until (b<>0);
writeln('Nhap phan so c/d');
repeat
write('Nhap tu so c = ');
readln(c);
write('Nhap mau so d = ');
8


readln(d);
if d=0 then writeln('Nhap lai phan so');
until (d<>0);
writeln('Nhap phan so m/n');
repeat
write('Nhap tu so m = ');
readln(m);
write('Nhap mau so n = ');
readln(n);
if n=0 then writeln('Nhap lai phan so');
until (n<>0);
writeln('Nhap phan so p/q');
repeat
write('Nhap tu so p = ');
readln(p);
write('Nhap mau so q = ');
readln(q);
if q=0 then writeln('Nhap lai phan so');
until (q<>0);
tu:=(a*d*n*q+c*b*n*q+m*b*d*q+p*b*d*n);
mau:=(b*d*n*q);

t1:=tu;
m1:=mau;
while t1<>m1 do
if t1>m1 then t1:=t1-m1
else m1:=m1-t1;
uc:=m1;
tu:=tu div uc;
mau:=mau div uc;
writeln('S = ',tu,'/',mau);
readln;
End.
- Chương trình sử dụng chương trình con
Program congPS;
var a,b,c,d,m,n,p,q:integer;
tu,mau:integer;
S:real;
Procedure Nhap_PS(Var t,m:integer);
begin
repeat
write('Nhap tu so: ');
readln(t);
write('Nhap mau so: ');
readln(m);
if m=0 then writeln('Nhap lai phan so');
9


until (m<>0);
end;
Function UCLN(x,y:integer):integer;

begin
while x<>y do
if x>y then x:=x-y
else y:=y-x;
UCLN:=y;
end;
Procedure Toi_gian_PS(Var t,m:integer);
Var k: integer;
Begin
k:=UCLN(t,m);
t:=t div k;
m:=m div k;
writeln(t,'/',m);
end;
Begin
writeln('Nhap phan so a/b');
Nhap_PS(a,b);
writeln('Nhap phan so c/d');
Nhap_PS(c,d);
writeln('Nhap phan so m/n');
Nhap_PS(m,n);
writeln('Nhap phan so p/q');
Nhap_PS(p,q);
tu:=(a*d*n*q+c*b*n*q+m*b*d*q+p*b*d*n);
mau:=(b*d*n*q);
write('S = ');
Toi_gian_PS(tu,mau);
readln;
End.
3.2 Chương trình VD4 (Làm việc theo nhóm)

- Chia nhỏ bài toán rồi giao cho các thành viên trong nhóm
+ Nhóm trưởng: Tổng hợp và viết chương trình chính
+ Thành viên 1: Viết chương trình con sắp xếp dãy a tăng dần
+ Thành viên 2: Tách mảng a thành 2 mảng chẵn và mảng lẻ
+ Thành viên 3: Sắp xếp dãy a chẵn trước, lẻ sau
+ Thành viên 4: Sắp xếp dãy a tăng dần sao cho chẵn, lẻ xen kẽ

10


- Các thành viên làm việc độc lập rồi gửi chương trình cho nhóm trưởng
tích hợp
Program BT_Sapxep;
Type mang = array[1..100] of integer;
Var a,b,c:mang;
n,nb,nc:integer;
Procedure Nhap_mang;
Var i:integer;
begin
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
end;
Procedure In_mang(Var m:mang);
Var i:integer;
begin
for i:=1 to n do
write(m[i],' ');

writeln;
end;
Procedure SX(Var m:mang);
Var i,j,tg:integer;
begin
for i:=1 to n-1 do
for j:=n downto i+1 do
if a[j]begin
tg:=a[j];
a[j]:=a[j-1];
a[j-1]:=tg;
end;
end;
Procedure CL(Var m:mang);
Var i:integer;
Begin
nb:=0;
nc:=0;
for i:=1 to n do
begin
if m[i] mod 2=0 then
begin
inc(nb);
11


b[nb]:=m[i];
end
else

begin
inc(nc);
c[nc]:=m[i];
end;
end;
end;
Procedure SX_CL;
Var i:integer;
begin
for i:=1 to nb do
write(b[i],' ');
for i:=1 to nc do
write(c[i],' ');
writeln;
end;
Procedure CL_xenke;
Var i:integer;
begin
if ncbegin
for i:=1 to nc do
write(b[i],' ',c[i],' ');
for i:=nc+1 to nb do
write(b[i],' ');
end
else
begin
for i:=1 to nb do
write(b[i],' ',c[i],' ');
for i:=nb+1 to nc do

write(c[i],' ');
end;
end;
Begin
write('Nhap so phan tu cua mang n = ');
readln(n);
Nhap_mang;
writeln;
write(' In mang a: ');
In_mang(a);
writeln;
write(' Mang a duoc sap xep tang dan: ');
12


SX(a);
In_mang(a);
writeln;
CL(a);
write(' Sap xep mang a chan truoc le sau:
SX_CL;
writeln;
write(' Sap xep chan le xen ke: ');
CL_xenke;
readln;
End.

');

4. Kết quả thực hiện

- Sau thời gian khảo sát ở 2 lớp 11 B5 và 11 B6 tôi nhận thấy các em sử
dụng được chương trình con ở các mức độ như sau:
Lớp

Lớp 11 B5

Lớp 11 B6

Nhận biết

100%

100%

Thông hiểu

87%

92%

Vận dụng

75%

81%

Kỹ năng lập trình

60%


68%

Mức độ

13


Phần III: KẾT LUẬN VÀ KHUYẾN NGHỊ
1. Những đánh giá cơ bản
- Qua việc hướng dẫn cho học sinh sử dụng chương trình con trong lập
trình Turbo Pascal ở 2 lớp 11B5, 1B6 tôi thấy các em đã biết cách làm việc
theo nhóm có hiệu quả, rèn luyện cho các em tinh thần tự giác, phát huy tính
tích cực, chủ động sáng tạo, có tinh thần đoàn kết, hợp tác trong công việc.
Đặc biệt là rèn luyện kỹ năng lập trình, các em biết xử lý bài toán, biết viết và
sử dụng chương trình con trong chương trình để tiết kiệm được thời gian,
công sức lập trình, chương trình trở nên ngắn gọn, dễ hiểu, dễ nâng cấp và dễ
hiệu chỉnh.

2. Các khuyến nghị được đề xuất từ sáng kiến kinh nghiệm
- Để triển khai thực sự, có hiệu quả thì việc áp dụng ở toàn bộ học sinh
khối 11 cần phải thường xuyên cho bảo dưỡng và bổ sung các thiết bị phòng
máy tính đảm bảo đủ số lượng máy tính cho học sinh được thực hành, tránh
trường hợp thiếu máy tính học sinh phải ngồi chơi trong các giờ thực hành
dẫn đến lãng phí thời gian mà học sinh không vận dụng được kiến thức đã học
vào việc giải quyết các bài toán trong thực tiễn. Vậy rất mong các ngành, các
cấp lãnh đạo đầu tư hơn nữa các thiết bị, đồ dùng dạy học cho các phòng máy
tính của nhà trường.
- Tuy nhiên do hạn chế về mặt thời gian và kinh nghiệm nên đề tài nghiên
cứu của tôi không tránh khỏi những thiếu sót. Vì vậy tôi rất mong nhận được
sự góp ý của Ban giám hiệu nhà trường, cùng toàn thể các thầy, các cô để đề

tài nghiên cứu của tôi được hoàn thiện tốt hơn, tối ưu và có ích hơn.
Xin chân thành cảm ơn !

14


Phần IV: TÀI LIỆU THAM KHẢO
1. Cấu trúc dữ liệu và giải thuật - Đỗ Xuân Lôi
2. Lập trình Turbo Pascal - Quách Tuấn Ngọc
3. Nhập môn Tin học - Phùng Văn Ổn
4. Sách giáo khoa 11 - Nhà xuất bản giáo dục

15



×