Trên cơ sở những gì mà học sinh được học tập về môn lập trình Pascal, học sinh có thể sử dụng một cách thành thạo các ngôn ngữ khác để hoàn thành tốt hơn những ứng dụng trong thực tế. Bởi vì, ngôn ngữ Pascal có tính cấu trúc mạnh, có cơ sở và nó đòi hỏi chương trình phải chặt chẽ, logic. Đặc biệt, khi học về chương trình con, học sinh có thể hiểu một cách sâu sắc hơn về ngôn ngữ lập trình, nhìn nhận vấn đề một cách sáng sủa hơn, chặt chẽ hơn và nhất là chương trình con có thể giúp cho các em hoàn thành những chương trình lớn hơn vượt ra những bài toán bình thường mà nội bộ môn học đòi hỏi. Chính vì vậy, việc hình thành kỹ năng cho học sinh trong việc dạy học chương trình con là một công việc quan trọng, đòi hỏi mỗi giáo viên cần phải nỗ lực tìm tòi, sáng tạo giúp cho học sinh nhìn nhận vấn đề một cách tích cực hơn, sáng tạo hơn và nhất là giúp cho các em có thể yêu thích hơn nữa ngôn ngữ lập trình Pascal, cảm thấy hứng thú mỗi khi có tiết học, đặc biệt là các em học sinh giỏi. Sau này khi ra trường, các em có cơ hội dễ dàng tìm việc, nhất là trong tình hình hội nhập, bùng nổ công nghệ thông tin như hiện nay, tin học không thể thiếu khi muốn tìm việc làm với mức lương như ý muốn.Với tất cả những lý do nêu trên, tôi quyết định chọn đề tài : “Vai trò của chương trình con trong lập trình Pascal”. Nói thì dễ nhưng việc thực hiện là cả một quá trình. Với cương vị là một giáo viên, tôi rất mong muốn được học hỏi nhiều để làm sao truyền đạt hết kiến thức của mình cho các em. Tôi rất mong được sự đóng góp ý kiến của quý thầy cô cũng như của đồng nghiệp cho chuyên đề của tôi được hoàn chỉnh.
Trang 1VAI TRÒ CỦA CHƯƠNG TRÌNH CON TRONG
LẬP TRÌNH PASCAL
BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN
1 Lời giới thiệu
Tin học là môn tự chọn bắt buộc dành cho các đối tượng học sinh THCS Môn Tin học đã được đưa vào dạy ở cấp Tiểu học, nhưng dưới hình thức tự chọn không bắt buộc Vì vậy nội dung môn Tin học ở cấp THCS được xây dựng trên giả thiết là môn học mới Những năm qua môn tin học ở THCS chưa có sách giáo viên cụ thể hướng dẫn cho học sinh về cách lập trình nên việc học của học sinh phụ thuộc rất lớn ở mỗi giáo viên đứng lớp
Mỗi học sinh đến với bộ môn tin học ở cấp THCS thường cảm thấy khó khăn ở kiến thức lập trình khối lớp 8 đặc biệt là thi học sinh giỏi Quả thật như vậy vì với các em, ngôn ngữ lập trình dường như rất xa lạ vì đây là kiến thức đầu tiên trong lập trình mà các em được học Là một giáo viên tin học, mục tiêu chính của tôi là 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
Như vậy, phương pháp giảng dạy môn Tin học như thế nào thì hợp lí? Làm sao để các em phát huy tính học tập của mình một cách tốt nhất, hiệu quả nhất? Và Cốt lõi của vấn đề này là việc đổi mới phương pháp dạy học để 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
Đổi mới phương pháp dạy học là một vấn đề hết sức quan trọng Là một giáo viên giảng dạy bộ môn Tin học, theo tôi không phải cứ tìm được nhiều bài toán khó, bài toán hay để giảng dạy cho học sinh Mà vấn đề đặt ra là chúng ta cần phải tích cực tìm tòi, sáng tạo trong việc đưa ra những bài toán đó để giúp cho học sinh có sự hứng thú, tìm tòi sáng tạo trong quá trình giài quyết học tập,
từ đó biết vận dụng linh hoạt trong các tình huống cụ thể ngoài thực tế
Như chúng ta đã biết các vấn đề về Tin học được đưa vào giảng dạy ở chương trình bậc học phổ thông hiện nay Khi nói đến vấn đề dạy học lập trình
Trang 2chương trình con là một trong những vấn đề chiếm vai trò quan trọng Bởi vì, sử dụng chương trình con để hợp lý hóa, tiết kiệm công sức lập trình Đồng thời, chương trình con có thể giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Vấn
đề đặt ra là: Hình thành kỹ năng vận dụng của học sinh về chương trình con như thế nào? Vai trò của chương trình con? Đó chính là vấn đề mà bản thân tôi hết sức quan tâm
Để thực hiện được điều đó, theo tôi chúng ta cần phải tìm tòi, nghiên cứu tìm ra những bài toán phù hợp, kích thích được sự độc lập, tích cực của học sinh trong học tập Trên cơ sở đó, học sinh có thể tự mình tìm ra được những ý tưởng sáng tạo vận dụng thiết thực vào cuộc sống thực tế khi nhu cầu nảy sinh, khi đó các em có thể tự mình hoàn thành được ý tưởng đó
Trên cơ sở những gì mà học sinh được học tập về môn lập trình Pascal, học sinh có thể sử dụng một cách thành thạo các ngôn ngữ khác để hoàn thành tốt hơn những ứng dụng trong thực tế Bởi vì, ngôn ngữ Pascal có tính cấu trúc mạnh, có cơ sở và nó đòi hỏi chương trình phải chặt chẽ, logic Đặc biệt, khi học
về chương trình con, học sinh có thể hiểu một cách sâu sắc hơn về ngôn ngữ lập trình, nhìn nhận vấn đề một cách sáng sủa hơn, chặt chẽ hơn và nhất là chương trình con có thể giúp cho các em hoàn thành những chương trình lớn hơn vượt ra những bài toán bình thường mà nội bộ môn học đòi hỏi Chính vì vậy, việc hình thành kỹ năng cho học sinh trong việc dạy học chương trình con là một công việc quan trọng, đòi hỏi mỗi giáo viên cần phải nỗ lực tìm tòi, sáng tạo giúp cho học sinh nhìn nhận vấn đề một cách tích cực hơn, sáng tạo hơn và nhất là giúp cho các em có thể yêu thích hơn nữa ngôn ngữ lập trình Pascal, cảm thấy hứng thú mỗi khi có tiết học, đặc biệt là các em học sinh giỏi Sau này khi ra trường, các em có cơ hội dễ dàng tìm việc, nhất là trong tình hình hội nhập, bùng nổ công nghệ thông tin như hiện nay, tin học không thể thiếu khi muốn tìm việc làm với mức lương như ý muốn
Với tất cả những lý do nêu trên, tôi quyết định chọn đề tài :
“Vai trò của chương trình con trong lập trình Pascal” Nói thì dễ nhưng
việc thực hiện là cả một quá trình Với cương vị là một giáo viên, tôi rất mong muốn được học hỏi nhiều để làm sao truyền đạt hết kiến thức của mình cho các
em Tôi rất mong được sự đóng góp ý kiến của quý thầy cô cũng như của đồng nghiệp cho chuyên đề của tôi được hoàn chỉnh
2 Tên sáng kiến:
Trang 3“Vai trò của chương trình con trong lập trình Pascal ”
6 Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử: 02/2014
7 Mô tả bản chất của sáng kiến:
Phần thứ nhất: NỘI DUNG SÁNG KIẾN
A Mở đầu:
Vai trò là giúp cho học sinh nhận biết được ý nghĩa, lợi ích của chương
trình con để từ đó có thể giải quyết bài toán dài, phức tạp Những bài toán dài, phức tạp rất khó nhận biết chương trình thực hiện những công việc gì và việc hiệu chỉnh chương trình cũng khó khăn Vì vậy để giải quyết một bài toán lớn, phức tạp ta đi phân thành các bài toán con, mỗi bài toán con để giải quyết trên máy tính là một khối lệnh và mỗi khối lệnh đó xây dựng thành một chương trình
con Vậy: “ 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í trong chương trình” Qua
khái niệm chương trình con ta nhận thấy được phần nào vai trò của chương trình con Chương trình con thường gồm hai loại:
1 Hàm ( Function) là chương trình con thực hiện một số thao tác nào đó và
trả về một giá trị qua tên của nó
+ Ví dụ: sqrt(x) nhận giá trị x và trả về giá trị căn bậc hai của x
length(x) nhận xâu x và trả về độ dài của xâu x,
sqr(x) nhận giá trị x và trả về giá trị bình phương của x
Khai báo và lời gọi hàm
Trang 4FUNCTION <tên hàm> (Danh sách các tham số): <Kiểu dữ liệu>;
[Khai báo Const, Type, Var]
<tên hàm>(danh sách các tham số thực);
2 Thủ tục ( Procedure) là 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ó
Khai báo và lời gọi thủ tục như sau:
Khai báo:
PROCEDURE <tên thủ tục>(Danh sách các tham số);{không có giá trị trả về}
[Khai báo Const, Type, Var]
BEGIN
< Dãy các câu lệnh>;
END;
Lời gọi thủ tục
<tên thủ tục>(danh sách các tham số thực);
Chú ý: Danh sách tham số có thể có hoặc không có
Trong đó:
+ Tham số hình thức ( tham số): Các biến được khai báo cho dữ liệu vào/ra
được gọi là tham số hình thức của chương trình con Các biến được khai báo để dành riêng cho chương trình con gọi là biến cục bộ.
Trang 5+ Biến của chương trình con không sử dụng cho chương trình chính và
chương trình con khác, nhưng mọi chương trình con đều sử dụng được biến của chương trình chính, do vậy biến của chương trình chính gọi là biến toàn cục.+ Tham số thực sự( tham số thực): Tên chương con với tham số (nếu có) là các hằng và biến chứa dữ liệu vào và ra tương ứng với các tham số hình thức đặt trong cặp ngoặc ( và) Các hằng và biến này được gọi là tham số thực sự
Vậy khi nhận thấy được vai trò của chương trình con trong lập trình, học sinh có thể liên hệ, vận dụng sáng tạo vào giải quyết các bài toán trong lập trình và các bài toán trong tình huống thực tế và từ đó hình thành cho học sinh phương pháp để có thể vận dụng chương trình con vào đa dạng các bài toán
Để làm được điều này không phải là việc làm ngắn ngủi chỉ bắt đầu dạy từ một tri thức nào đó, mà phải xuyên suốt quá trình dạy học
Thường khi bắt đầu một nội dung lớn, chẳng hạn một phân môn hay một chương ta nên cố gắng xuất phát từ thực tế Còn đối với từng bài hay từng phần của bài thì cần tính tới những khả năng hình thành từ nội bộ Tin học Vậy để hiểu được rõ vai trò của chương trình con trong lập trình thì câu trả lời sẽ được giải quyết trong phần B
B Vai trò của chương trình con trong lập trình.
a Đáp ứng nhu cầu xóa bỏ sự hạn chế
Xét bài toán : “Viết chương trình cho máy tính chu vi, diện tích và đường
chéo của bốn hình chữ nhật theo hai kích thước của mỗi hình Trong đó:
- Hình thứ nhất có hai kích thước là a1, a2
- Hình thứ hai có hai kích thước là b1, b2
- Hình thứ ba có hai kích thước là a1+b1 và a2*b2”.
- Hình thứ tư có kích thước a1+b1+a2 và a2*b2*b1
Var a1, b1, a2, b2, c1, c2, c3, c4, d1, d2, d3, d4, m1, m2, m3, m4 : Real;
Begin
Writeln('Nhap hai canh cua hinh chu nhat thu nhat:');
Write('a1 = '); Readln(a1);
Trang 6Writeln(' Nhap hai canh cua hinh chu nhat thu hai: ');
Writeln('Dien tich bang : ',d1:0:2);
Writeln('Duong cheo bang: ',m1:0:2);
Writeln('Hinh chu nhat thu hai: ');
Writeln('Chu vi bang : ',c2:0:2);
Writeln('Dien tich bang : ',d2:0:2);
Writeln('Duong cheo bang: ',m2:0:2);
Writeln('Hinh chu nhat thu ba: ');
Writeln('Chu vi bang : ',c3:0:2);
Writeln('Dien tich bang : ',d3:0:2);
Writeln('Duong cheo bang: ',m3:0:2);
Trang 7Writeln('Hinh chu nhat thu tu: ');
Writeln('Chu vi bang : ',c4:0:2);
Writeln('Dien tich bang : ',d4:0:2);
Writeln('Duong cheo bang: ',m4:0:2);
Readln
End.
Chương trình trên để thực hiện được yêu cầu của đề bài, chúng ta phải viết
đi viết lại bốn dòng liên tiếp tính chu vi, diện tích và đường chéo của từng hình chữ nhật Giả sử nếu phải tính đến n hình chữ nhật thì vấn đề quả thực là hết sức phức tạp Trong bài toán trên ta còn chưa có phần kiểm tra điều kiện nhập vào của mỗi hình Nếu có thêm điều kiện này, chắc chắn chương trình còn dài nữa Vấn đề đặt ra là: làm thế nào có thể xóa bỏ được sự hạn chế này? Ở đây, chúng
ta có thể hướng dẫn cho học sinh sử dụng chương trình con để khắc phục sự hạn chế đó Thay vì phải viết nhiều lần lệnh nhập, tính đi tính lại cho từng hình ta có thể viết 2 thủ tục:
- Thủ tục nhập hai cạnh của hình chữ nhật
- Thủ tục Tính ba giá trị cho mỗi hình
Chương trình như sau:
Var a1, b1, a2, b2: Real;
Procedure Nhap(Var x, y: Real; i: Byte);
Begin
Writeln('Nhap hai kich thuoc cua hinh chu nhat thu ',i,':');
Repeat
Write('Canh thu nhat: '); Readln(x);
Write('Canh thu hai : '); Readln(y);
If (x <= 0) Or (y <= 0) Then Writeln('Nhap lai!');
Until (x > 0) And (y > 0);
End;
Trang 8b Hướng tới sự tiện lợi hợp lý hóa công việc
Xét bài toán : “Nhập vào 1 dãy n số nguyên lớn hơn 1 Viết ra màn hình
tất cả các số của dãy thỏa mãn điều kiện là số nguyên tố”.
Writeln('Dien tich bang : ',a * b:0:2);
Writeln('Duong cheo bang: ',sqrt(a * a + b * b):0:2);
Trang 9Write('Nhap so phan tu: '); Readln(n);
Writeln('Nhap cac phan tu cua day Chu y: A[k] >= 2');
là với bài toán trên chúng ta có thể sửa chữa thành bài toán: “Viết ra màn hình
tất cả các số của dãy thỏa mãn điều kiện là hợp số” chỉ bằng hai câu lệnh:
- Dòng lệnh Writeln(‘Cac so nguyen to cua day so tren la:’); Sửa thành:
Writeln(‘Cac so la hop so cua day so tren la:’);
- Dòng lệnh : If NgTo(A[k]) Then Write(A[k]:6) ta thay bằng dòng lệnh If Not
NgTo(A[k]) Then Write(A[k]:6)
c Chính xác hóa một khái niệm
Có những khái niệm mà học sinh đã biết ở từng bài riêng lẻ chưa thể đưa ra ngay những nhận xét, những kết luận chính xác liên quan tới khái niệm đó; tới một thời điểm nào đó có đủ điều kiện thì chúng ta có thể gợi lại vấn đề và giúp học sinh chính xác hóa khái niệm đó Chẳng hạn, ta cần chính xác hóa khái niệm
Trang 10sử dụng tham biến của chương trình con Sau khi học cách sử dụng tham trị, chúng ta có thể yêu cầu học sinh làm bài tập sau:
“Viết một thủ tục nhập vào số đo bán kính của 3 đường tròn Sau đó tính chu
vi và diện tích của mỗi đường tròn đó”.
Trang 11Chúng ta có thể yêu cầu học sinh thực thi chương trình trên và chạy thử
Học sinh sẽ phát hiện ra là kết quả chu vi và diện tích của cả ba đường tròn đều bằng 0
Trang 12Vấn đề đặt ra là: Chương trình sai ở chỗ nào? Lúc này giáo viên có thể khẳng định sự phân biệt giữa tham biến và tham trị, các giá trị của tham biến được lưu giữ khi ra ngoài chương trình con, còn giá trị của tham trị chỉ lưu giữ khi thực hiện chương trình con, nếu ra khỏi chương trình con nó sẽ không còn lưu giữ giá trị đó Điều này sẽ giúp cho chúng ta chính xác hóa khái niệm tham biến và tham trị cho học sinh.
+ Tham số giá trị ( gọi tắt là tham trị): Các tham số hình thức được thay bằng các tham số tương ứng là các giá trị cụ thể
+ Tham số biến ( gọi tắt là tham số biến): Các tham số hình thức được thay bằng các tham số thực sự tương ứng là tên các biến chứa dữ liệu ra
Vậy chương trình trên cần sửa lại như sau:
Kết quả sau khi sửa lại chương trình:
Trang 13d Hướng tới sự hoàn chỉnh hệ thống
Để có thể giúp học sinh nắm bắt được các kiến thức về chương trình con một cách có hệ thống Sau khi học xong về chương trình con, chúng ta có thể đưa ra sơ đồ sau:
Tiếp theo, để giúp cho học sinh nhìn thấy vấn đề có hệ thống một các rõ ràng hơn, đặc biệt là giúp cho học sinh hiểu rõ các vấn đề về chương trình con Chẳng hạn đâu là biến toàn cục, đâu là biến cục bộ, khi nào dùng tham biến, khi nào dùng tham trị, các chương trình con gọi lẫn nhau như thế nào?, Chúng ta
có thể đưa ra ví dụ sau:
“Viết chương trình nhập vào số cạnh của n tam giác, sau đó tính diện tích
của mỗi tam giác vừa nhập và tổng diện tích của tất cả các tam giác đó”.
Var a:array[1 3,1 100] Of Real; {Bien toan cuc}
Function Ktra(x, y, z: Real): Boolean; {Ham co tham tri}
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Trang 14Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac! Nhap lai:'); Until Ktra(a, b, c);
End;
Function DT(m, n, p:Real): Real; {Ham co tham tri}
Var d: Real; {Bien cuc bo}
Begin
d := (m + n + p) / 2;
DT := sqrt(d * (d - m) * (d - n) * (d - p));
End;
Procedure Tinh; {Thu tuc khong co tham chieu}
Var k, n, j: Integer; tong: Real; {Bien cuc bo}
Tong := tong + DT(a[1, k], a[2,k], a[3,k]);
Writeln('Dien tich cua tam giac thu ',k,': ',DT(a[1, k], a[2, k], a[3, k]):6:1); End;
Writeln('Tong dien tich cua ',n,' tam giac la: ',tong:6:1);
End;
Begin
Tinh;
Readln
Trang 15e Lật ngược vấn đề
Xuất phát, chúng ta cho học sinh thực hiện bài toán sau: “Viết chương
trình đổi một xâu ký tự thành chữ HOA”.
mã ASCII, nếu gặp ký tự viết hoa, ta cộng mã ASCII của nó thêm 32 đơn vị Chương trình như sau:
Trang 16Write('Doi sang chu thuong: ');
For i := 1 to Length(x) Do Begin
Xuất phát từ bài toán: “Viết chương trình tìm độ dài 3 đường cao của một tam
giác khi biết độ dài 3 cạnh của tam giác đó”.
Trang 17Procedure Nhap(Var m, n, p: Real);
Begin
Repeat
Write('Nhap do dai canh thu nhat: '); Readln(m);
Write('Nhap do dai canh thu hai : '); Readln(n);
Write('Nhap do dai canh thu ba : '); Readln(p);
If Not Ktra(m, n, p) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac! Nhap lai:'); Until Ktra(a, b, c);
Trang 18Tương tự, chúng ta yêu cầu học sinh giải bài toán sau:
“Viết chương trình tìm độ dài 3 đường trung tuyến của một tam giác khi biết
ba cạnh của tam giác”.
Write('Nhap do dai canh thu nhat: '); Readln(a);
Write('Nhap do dai canh thu hai : '); Readln(b);
Write('Nhap do dai canh thu ba : '); Readln(c);
If Not Ktra(a, b, c) Then
Writeln('Ba do dai vua nhap khong phai la 3 canh tam giac! Nhap lai:'); Until Ktra(a, b, c);