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

Hướng dẫn học sinh lớp 11a1, 11a2 trường THPT quan sơn tiếp cận nhanh chương trình con và lập trình có cấu trú

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 (293.81 KB, 21 trang )

 S¸ng KiÕn Kinh NghiÖm
häc 2017 - 2018

N¨m

PHẦN I. MỞ ĐẦU
I. Lí do chọn đề tài
Xuất phát từ thực tiễn của việc dạy tin và học môn Tin học hàng ngày trên
lớp. Trong quá trình dạy và học đó tôi gặp không ít khó khăn, một trong những
khó khăn lớn nhất đó là việc dạy cho học sinh nắm được kiến thức chương trình
con và lập trình có cấu trúc. Trước tình hình trên hàng loạt câu hỏi đặt ra trước
mắt tôi đó là làm thế nào để khi giảng môn Tin mà học sinh có thể hiểu bài và
học tốt.
Với tư cách là người trực tiếp đứng lớp giảng dạy môn Tin học hàng ngày
việc dạy học sinh hiểu rõ về chương trình con và lập trình có cấu trúc không
phải là vấn đề đơn giản vì lẽ đó sau một thời gian suy nghĩ, tìm tòi và nghiên
cứu tôi đã lựa chọn đề tài “Hướng dẫn học sinh lớp 11A1, 11A2 Trường
THPT Quan Sơn tiếp cận nhanh Chương trình con và lập trình có cấu
trúc”. Nhằm giúp bản thân tôi tháo gỡ một phần khó khăn, vướng mắc trong
quá trình dạy lập trình cho học sinh ở đây.
Mặt khác, sự phát triển mạnh mẽ của ngành tin học và truyền thông đã tác
vào nền kinh tế đất nước đặc biệt Việt Nam gia nhập tổ chức thương mại Quốc
tế WTO nên bộ giáo dục và đào tạo đã đưa môn tin học vào trường THPT toàn
quốc năm học 2006-2007 với tư cách là một môn học chính thống vấn đề đặt ra
bộ môn tin học và đặt biệt người đứng trên mục giảng như tôi phải tìm ra
phương pháp giảng dạy chương VI chương trình con và lập trình có cấu trúc để
nâng cao chất lượng truyền thụ kiến thức và rèn luyện kỹ năng cho người học.
II. Mục đích nghiên cứu
- Theo quan điểm cũ dạy học là truyền thụ những kiến thức, kinh nghiệm,
kỹ năng kỷ xảo cho người học, theo quan điểm dạy học tích cực thì dạy học lấy
học sinh làm đối tượng trung tâm dù có quan điểm nào đi nữa người giáo viên


nên tìm tòi những cách dạy học phù hợp với đối tượng học sinh từng vùng miền
khác nhau. Đặc biệt là miền núi cao mà tôi là người trực tiếp giảng dạy, nhiều
đêm trăn trở tìm tòi, suy nghĩ làm thế nào? cách nào đưa các em học và tiếp thu
tốt chương VI “Chương trình con và lập trình có cấu trúc” trang 90 SGK tin học
11 Nhà xuất bản Giáo dục năm 2007. Để từ đó các em tư duy tốt học tốt các
môn học khác.
- Với đề tài này tôi không có ham muốn gì khác ngoài mục đích góp phần
vào những người làm công tác giảng dạy môn tin học tháo gỡ những khó khăn
vướng mắc trên, đồng thời cũng góp phần nhỏ trong việc cải cách, nâng cao chất
lượng giáo dục nói chung và dạy học bộ môn Tin học nói riêng.

 Gi¸o Viªn: L©m §×nh Huúnh

1


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Tôi luôn trăn trở tiếp thu bài của học sinh mình phải nghiên cứu một
phương giảng dạy bài học này để làm sáng tỏ được bản chất của vấn đề nghiên
cứu đó chính là nhiệm vụ trọng tâm của tôi trong đề tài này.
III. Đối tượng nghiên cứu
- Như đã đề cập ở trên đề tài nghiên cứu này tôi không có tham vọng gì hơn
ngoài việc tháo gỡ những băn khoăn làm thế nào học sinh để học sinh tốt
chương VI “Chương trình con và lập trình có cấu trúc”. Vì thế đối tượng
nghiên cứu của tôi ở đây là học sinh khối 11cụ thể là học sinh lớp 11A1 và lớp
11A2 trường THPT Quan Sơn làm sao để các em học tốt chương VI này.
IV. Phương pháp nghiên cứu
Mọi vấn đề, mọi đề tài nghiên cứu thì khâu chuẩn bị và xác định mục đích

nghiên cứu bao giờ cũng đóng một vài trò hết sức quan trọng. Ở trong đề tài này
điều quan trọng là khâu chuẩn bị và việc chọn phương pháp để kết quả của đề tài
là đi đến đích thì cần xác định được một phương phương pháp hiệu quả không
lãng phí thời gian cũng như công sức. Như kinh nghiệm cho thấy đề tài có thành
công hay không còn phụ thuộc vào phương pháp tiến hành vì lẽ trên trong đề tài
nghiên cứu này tôi đã sử dụng một số phương pháp sau:
 Phương pháp tiếp cận đối tượng điều tra.
 Phương pháp kiểm tra đánh giá học sinh.
 Phương pháp tổng hợp và đánh giá kết quả.
Trên đây là một số phương pháp cơ bản mà tôi đã vận dụng trong nghiên cứu và
hoàn thiện đề tài.

 Gi¸o Viªn: L©m §×nh Huúnh

2


 S¸ng KiÕn Kinh NghiÖm
häc 2017 - 2018

N¨m

Phần II: GIẢI QUYẾT VẤN ĐỀ
I. Cơ sở lý luận
1. Khái niệm chương trình con
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.
2. Lợi ích của việc sử dụng chương trình con
Tránh được việc phải viết đi viết lặp đi lặp lại cùng một dãy lệnh
Hổ trợ việc thực hiện 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 phát triển, nâng cấp chương trình
3. Phân loại chương trình con
- Turbo Pascal cho phép xây dưng hai loại chương trình con đó là thủ tục
(Procedure) và hàm (Function) trong đó
- Thủ tục là một chương trình con dùng để thực hiện một số thao tác xử lý nào
đó để giải quyết một công việc cụ nào đó đã dược phân mảnh.
- Hàm là một chương trình con dùng để xác định một giá trị của đại lượng ra
nào đó có kiểu dữ liệu đơn giản (số, kí tự, xâu kí tự, logic). Giá trị của đại lượng
ra này được gọi là giá trị trả về của hàm.
4.Cú pháp của thủ tục
a.Một thủ tục được định nghĩa theo cú pháp sau:
PROCEDURE TênThủTục[<Danh sách các tham số hình thức>];
Các định nghĩa và khai báo địa phương;
Bgin
Các câu lệnh xử lý; {thân của thủ tục}
End;
Trong đó:
TênThủTục: là một định danh do người sử dụng đặt tên theo nguyên tắc đặt tên
của Turbo Pascal.
Danh sách tham số hình thức: Là tên của các đối tượng đóng vai trò nhận
thông tin vào cho thủ tục hoạt động, tham số hình thức có hai loại: tham biến và
tham trị. các tham số hình thức đều được xác định rõ kiểu dữ liệu của chúng và
nếu là kiểu dữ liệu của người dùng thì kiểu này phải được định nghĩa trước đó
chứ không thể định nghĩa trực tiếp. Nếu là tham biến thì phải có từ khoá Var
đứng trước.
Các định nghĩa và khai báo cục bộ: Là các khai báo hằng, kiểu, biến, chương
trình con của nó. Các đối tượng được khai báo ở đây chỉ được dùng cho thủ tục
này và các chương trình con chứa trong nó.

Các câu lệnh xử lý là hệ thống câu lệnh được cài đặt nhằm thực hiện giải thuật
đã thiết kế cho thủ tục.
b. Lời gọi thủ tục
 Gi¸o Viªn: L©m §×nh Huúnh

3


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Sau khi thủ tục đã được định nghĩa, muốn sử dụng thủ tục đó thì phải thực hiện
lời gọi thủ tục. lời gọi thủ tục được thực hiện như sau:
- Nếu thủ tục có tham số hình thức thì lời gọi thủ tục phải có tên thủ tục và
các tham số thực tế kèm theo như sau:
- ………….;
- TênThủTục[<danh sách tham số thực tế>];
- …………;
- Nếu thủ tục không có tham số hình thức thì lời gọi thủ tục chỉ có tên thủ
tục;
- ………...;
- TênThủTục;
- …………;
- Nếu định nghĩa thủ tục có bao nhiêu tham số hình thức thì lưòi gọi thủ tục
phải có bấy nhiêu tham số thực tế. Các tham số thực tế theo thứ tự sẽ lần
lượt thay thế cho các tham số hình thức, các tham số thực tế được phân
cách bởi một dấu phẩy.
- Tham số thực tế thay thế cho tham số hình nào thì phải có đúng kiểu dữ
liệu của tham số hình thức đã khai báo.
Ngoài ra cần chú ý:

Tham số thực tế thay cho tham trị có thể là hằng, biến, biểu thức hay lời gọi hàm
(vì đây là các đại lượng có giá trị xác định đóng vai trò nhận thông tin vào cho
thủ tục hoạt động).
Tham số thực tế thay cho tham biến bắt buộc phải là biến đã được khai báo
trong phạm vi thủ tục có thể sử dụng được (vì chỉ có biến được khai báo ngoài
thủ tục mới có thể lưu trữ thông tin ra).
Khi thực hiện lời gọi thủ tục, nếu có truyền biến cho tham biến hoặc tham trị thì
trong quá trình xử lý giá trị của biến có thể bị thay đổi. Tuy nhiên khi thủ tục
hoạt động xong thì:
Nếu tham số thực tế là biến truyền theo kiểu tham trị thì biến đó sẽ lấy giá trị
của nó trước khi truyền cho thủ tục.
Nếu tham số thực tế là biến truyền theo kiểu tham biến thì biến đó sẽ giữ lại giá
trị của lần thay đổi sau cùng.
+ Ngoài ra Turbo Pascal cho phép trong thân chương trình các chương trình con
có thể có lời gọi đến các chương trình con đã được định nghĩa trước đó.
Ví dụ:
Program Vidu1;
var m,n:word;
Begin
writeln;
repeat until keypressed;
end;
PROCEDURE P1(m:word; Var n:word);
Begin
 Gi¸o Viªn: L©m §×nh Huúnh

4


 S¸ng KiÕn Kinh NghiÖm

N¨m
häc 2017 - 2018
if (m>n) then m:=m-n
else m:=n-m;
n:=2*m;
writeln(‘m=’,m,’n=’,n);
End;
BEGIN
m:=5; n:=8;
{1}
writeln(‘m=’,m,’n=’,n); {2}
P1(m,n);
{3}
Wait;
{4}
Writeln(‘,m=’,m,’n=’,n); {5}
Wait;
{6}
END;
Khi chạy chương trình trên thì kết quả thực hiện của các dòng lệnh được giải
thích như sau:
{1} Gán giá trị cho biến m và n, ta được m=5 và n= 8.
{2} Viết giá trị của biến m = 5 và n= 8 ra màn hình.
{3} Thực hiện lời gọi thủ tục P1. Trong thủ tục này có sự thay đổi giá trị của m
và n vì m>n có giá trị False nên thực hiện phép gán m:=n-m, tức là m=3, sau đó
thực hiện phép gán n:=2*m, tức n=6. cuối cùng viết giá trị của m=3 và n= 6 tại
thời điểm này ra màn hình.
Khi kết thúc thủ tục này vì m truyền theo kiểu tham trị và n truyền theo kiểu
tham biến nên m lấy lại giá trị ban đầu của nó tức m=5 và n lưu giữ giá trị của
lần thay đổi sau cùng, tức n=6.

{4} thực hiện thủ tục Wait.
{5} Viết giá trị của m và n tại thời điểm này ra màn hình, tức m=5 và n=6.
{6} thực hiện thủ tục Wait.
như vậy khi thực hiện chương trình trên sẽ cho kết quả in ra màn hình như sau:
m=5 n=8
m=3 n=6
ấn phím bất kỳ để tiếp tục
m=5 n=6
ấn phím bất kỳ để tiếp tục
5.Biến toàn cục và biến cục bộ
* Biến toàn cục là các biến được khai báo sau từ khoá VAR của chương trình
chính.
* Biến cục bộ: là các biến được khai báo sau từ khóa VAR trong các chương
trình con.
USES CRT;
VAR
Khai báo biến toàn cục;
PROCEDURE AAA (danh sách các tham số hình thức);
Var
Khai báo các biến địa phương;
Begin
 Gi¸o Viªn: L©m §×nh Huúnh

5


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
...................................;

End;
BEGIN
....................................;
END.
Phạm vi sử dụng của biến địa phương là trong thân của chương trình con
khai báo chúng và trong các chương trình con chứa trong chương trình con này.
Thời gian tồn tại của chúng là từ khi chương trình con được gọi thực hiện cho
đến khi thực hiện xong. Còn phạm vi sử dụng biến toàn cục là trong toàn bộ
chương trình (trong chương trình chính và trong tất cả các chương trình con của
nó) và thời gian tồn tại của chúng là khi chương trình đang hoạt động.
6.Chú ý
Tên của các tham số hình thức và tên của các biến địa phương trong cùng
một chương trình con không được trùng nhau.
Tên của các biến địa phương có thể trùng tên với biến toàn cục. Tuy nhiên
khi chương trình con được gọi, nếu có sử dụng biến trùng tên thì trong quá trình
chương trình con hoạt động, Turbo Pascal sẽ hiểu đó là biến địa phương, khi đó
biến toàn cục tạm thời bị che dấu cho đến khi chương trình con hoạt động xong.
Biến toàn cục có thể tham gia trong các chương trình con, mọi tác động
ảnh hưởng đến nó vẫn giống như khi chúng tham gia trong chương trình chính.
Ngược lại biến địa phương chỉ tham gia trong chương trình con khai báo chúng,
không thể tham gia trong chương trình chính.
Ví dụ 2:
Uses CRT;
Var a, b, c: Word;
PROCEDURE
P1(m, n:word);
Var a:word;
Begin
If m>n then a:=m
Else a:=n;

Writeln(‘a=’,a,’b=’,b,’c=’,c);
End;
BEGIN
a:=5; b:=8; c:=10;
{1}
P1(b,c);
{2}
Writeln(‘a=’,a,’b=’,b,’c=’,c); {3}
END.
Các bước thực hiện chương trình được giải thích như sau:
{1} Gán giá trị cho các biến toàn cục a, b, c.
{2} Thực hiện lời gọi thủ tục P1 với m=b=8 và n=c=10. Trong thủ tục này có
biến địa phương a trùng tên với biến toàn cục. Vì m>n có giá trị False nên phép
gán a:=n được thực hiện, tức là a:=10 được thực hiện (chú ý ở đây a là biến địa

 Gi¸o Viªn: L©m §×nh Huúnh

6


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
phương). Sau đó viết ra màn hình giá trị của a biến địa phương và b, c là biến
toàn cục.
Như vậy khi thực hiện chương trình trên sẽ cho kết quả in ra màn hình như sau:
a= 10 b=8 c=10
a=5 b=8 c=10
Trong đó dòng đầu được viết bởi câu lệnh Writeln trong thủ tục P1 với a là biến
địa phương và dòng sau được viết bởi câu lệnh Writeln trong chương trình chính

với a là biến toàn cục.
7. Hàm
a. Một hàm được định nghĩa theo cú pháp sau:
FUNCTION TênHàm[<Danh sách các tham số hình thức>]:<Kiểu>;
Các khai báo địa phương;
Begin
Các câu lệnh xử lý {Thân của hàm}
End;
Trong đó:
- Tên Hàm: là một định danh do người sử dụng đặt theo nguyên tắc đặt tên của
Turbo Pascal.
- Danh sách tham số hình thức: giống như đối với thủ tục.
- Kiểu: là kiểu của giá trị trả về của hàm
- Các khai báo địa phương: Giống như đối với thủ tục.
- Các câu lệnh xử lý: Giống như đối với thủ tục. Tuy nhiên đối với thân của
hàm bắt buộc phải có câu lệnh gán tên hàm bằng giá trị trả về của hàm, giá trị
này có thể dưới dạng một biểu thức có kiểu là kiểu của giá trị trả về của hàm
theo cú pháp:
TênHàm:= Biểu thức;
Trong đó kiểu của biểu thức phải trùng với kiểu của giá trị trả về của hàm.
b. Lời gọi hàm
Khi sử dụng hàm thì phải thực hiện lời gọi hàm. Thực hiện lời gọi hàm là
để lấy giá trị trả về của hàm. Vì vậy lời gọi hàm phải được đặt trong một biểu
thức có xử lý giá trị của nó. Khi thực hiện lời gọi hàm thì cũng phải truyền tham
số thực tế cho nó giống như đối với thủ tục.
Ví dụ:
Uses CRT;
Var m,n,a:Word;
Function SO_NGAU_NHIEN: Word;
Begin

Randomize;
SO_NGAU_NHIEN: = Random(100)+1;
End;
Function
USCLN(m,n:Word): Word;
Var a:Word;
BEGIN
 Gi¸o Viªn: L©m §×nh Huúnh

7


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
If m>n then a:=n
Else a:=m;
While (m mod n<>0) Or (n mod a<>0) Do a:=a-1;
USCLN:=a;
End;
BEGIN
M:=SO_NGAU_NHIEN;
N:=SO_NGAU_NHIEN;
Writeln(‚USCLN của ’‚m,’ và ‚’n,’ là:’,USCLN(m,n))
END.
Chương trình trên gồm có 2 hàm:
Hàm SO_NGAU_NHIEN; có giá trị trả về của hàm là lấy ngẫu nhiên một số
nguyên dương bé hơn hoặc 100.
Hàm USCLN(m,n) có giá trị trả về của hàm là ước số chung lớn nhất của hai số
nguyên dương m và n.

II.Thực trạng của vấn đề
1.Thực trạng của vấn đề cần nghiên cứu
Theo quan điểm cũ dạy học là truyền thụ những kiến thức, kinh nghiệm, kỹ
năng kỷ xảo cho người học, theo quan điểm dạy học tích cực thì dạy học lấy học
sinh làm đối tượng trung tâm dù có quan điểm nào đi nữa người giáo viên nên
tìm tòi những cách dạy học phù hợp với đối tượng học sinh từng vùng miền
khác nhau. Đặc biệt là miền núi cao mà tôi là người trực tiếp giảng dạy, nhiều
đêm trăn trở tìm tòi, suy nghĩ làm thế nào? cách nào đưa các em học và tiếp thu
tốt chương VI Chương trình con và lập trình có cấu trúc trang 90 SGK tin
học 11 Nhà xuất bản Giáo dục năm 2007.
Trong chương này có 2 bài học gồm bài học 17 chương trình con và phân
loại và bài 18 các ví dụ về cách viết và sử dụng chương trình con đều là các bài
học khó cho học sinh nên tôi quyết định nghiên cứu, tìm tòi phương pháp dạy
học để dạy học sinh tiếp thu một cách tốt nhất. Mục tiêu làm sáng tỏ chương
trình con cụ thể: câu hỏi về tham số hình thức khi nào là tham số thực sự, tham
biến, biến cục bộ, biến toàn cục, giá trị trả về của hàm, cách truyền tham số đi từ
bài toán nhỏ đến bài toán tổng quát, từ dễ đến khó thì kết quả tiếp thu bài giảng
của học sinh là tăng khi áp dụng đề tài nghiên cứu này.
2.Tình trạng thực tế khi chưa thực hiện đề tài
Trước thực tế học sinh luôn phản ánh với giáo viên rằng bộ môn này khó
hiểu và trừu tượng. Khi kiểm tra với mức độ đề tương đương với các ví dụ trong
sách giáo khoa, các em vẫn mơ hồ và đạt kết quả chưa cao.
3.Khảo sát thực tế
Giáo viên ra một bài toán cho học sinh các lớp 11A1, 11A2 của khối 11 Bài
toán:
 Gi¸o Viªn: L©m §×nh Huúnh

8



 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Kết quả như sau:
Lớp 11A1
Lớp 11A2
Tổng số
36 HS
42 HS
học sinh
Cách dạy
Dạy tổng quát
Dạy bài toán tổng quát

Số HS bài
0
5
25
6
0
2
33
7
toán
Xếp loại giỏi
khá
tb
yếu
giỏi
khá

tb
yếu
Phần
0%
13.8
69.5
16.7
0
4.7
78.5
16.8
trăm
4. Mục tiêu của đề tài
Giúp cho học sinh có cái nhìn trực quan sinh động hơn đối với môn Tin học.
Hiểu được ý nghĩa của chương trình con trong lập trình Pascal và ứng dụng của
CNTT vào giải các bài toán thực tế. Giúp hs củng cố tri thức, kỹ năng kỹ xảo và
rèn luyện cho học sinh có tư duy khoa học, logic, tác phong sáng tạo, say mê
môn học lập trình pascal.
Với kinh nghiệm nhỏ bé của mình tôi hi vọng có thể góp phần làm cho việc
giảng dạy chương trình con trong dạy học lập trình bằng NNLT Pascal của bộ
môn Tin học được dễ dàng hơn, giúp các em học sinh trường THPT Quan Sơn
nói riêng và học sinh các trường THPT nói chung tiếp thu bài tốt hơn.
Tôi là một giáo viên đứng lớp đã dạy học sinh tiếp thu phần chương trình
con và lập trình có cấu trúc, chương này có 2 bài học nhưng nội dung bài học
kiến thức rộng, các khái niệm, cú pháp của chương trình con, danh sách tham số
hình thức, tham biến, biến cục bộ, biến toàn cục, phân biệt thủ tục và hàm làm
cho học sinh khó hiểu. nhiều học sinh hỏi khi nào sử dụng tham số hình thức khi
nào không?, khi nào dùng hàm? khi nào dùng thủ tục?.
III.Giải pháp thực hiện
1.Giải pháp 1:

Nghiên cứu vấn đề danh sách tham số hình thức và khi nào là tham biến.
Bài 1: Viết thủ tục hoán đổi giá trị của hai biến nguyên x, y ta xây dựng thủ tục
với x và y đều là tham số giá trị ta có chương trình như sau:
Program Tin_Hoc;
Var a, b:integer;
Procedure Hoan_doi(x,y:Integer);
Var TG: Integer;
Begin
TG:=x;
x:=y;
y:=TG;
 Gi¸o Viªn: L©m §×nh Huúnh

9


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
end;
Begin
a:=5;
b:=10;
{1}
Writeln(a:6,b:6);
{2}
Hoan_doi(a,b);
{3}
Writeln(a:6, b:6);
{4}

readln;
End.
Kết quả thực hiện chương trình:
{1} đầu tiên gán giá trị của biến toàn cục a=5 và biến toàn cục b=10
{2} Viết giá trị của hai biến này ra màn hình
{3}Lời gọi thủ tục Hoan_doi(a,b) lúc này x nhận giá trị a còn y nhận giá trị b
qua phép gán TG ở trên, do x, y đều truyền theo tham số giá trị nên khi thực
hiện thủ tục giá trị sẽ không thay đổi tức là chương trình in ra là:
5
10
5
10
Bài 2: Viết thủ tục hoán đổi giá trị của hai biến nguyên x, y với x và y là tham số
biến.
Program Tin_Hoc;
Var a, b:integer;
Procedure Hoan_doi(var x,y:Integer);
Var TG: Integer;
Begin
TG:=x;
x:=y;
y:=TG;
end;
Begin
a:=5;
b:=10;
{1}
Writeln(a:6,b:6);
{2}
Hoan_doi(a,b);

{3}
Writeln(a:6, b:6);
readln;
{4}
End.
Chú ý: Do cả hai biến đều chứa dữ liệu ra nên cần sử dụng từ khoá Var để khai
báo cho cả hai biến tức là x và y là tham biến kiểu nguyên.
Kết quả thực hiện chương trình:
{1} đầu tiên gán giá trị của biến toàn cục a=5 và biến toàn cục b=10
{2} Viết giá trị của hai biến này ra màn hình
 Gi¸o Viªn: L©m §×nh Huúnh

10


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
{3}Lời gọi thủ tục Hoan_doi(a,b) lúc này x nhận giá trị a còn y nhận giá trị b
qua phép gán TG ở trên, do x, y đều truyền theo tham biến nên khi thực hiện thủ
tục giá trị sẽ thay đổi.
Khi thực hiện thủ tục Hoan_doi, biến a sẽ nhận giá trị của biến b và biến b sẽ
nhận giá trị của biến a. nếu giá trị của biến a là 5 còn giá trị của biến b là 10 thì
trên màn hình có hai dòng:
5
10
10
5
Bài 3: Viết thủ tục hoán đổi 2 số nguyên x và y với x là tham số giá trị còn y là
tham biến.

Program Tin_Hoc;
Var a, b:integer;
Procedure Hoan_doi(x:Integer;Var y:Integer);
Var TG: Integer;
Begin
TG:=x;
x:=y;
y:=TG;
end;
Begin
a:=5;
b:=10;
{1}
Writeln(a:6,b:6);
{2}
Hoan_doi(a,b);
{3}
Writeln(a:6, b:6);
{4}
readln;
End.
Kết quả thực hiện chương trình:
{1} đầu tiên gán giá trị của biến toàn cục a=5 và biến toàn cục b=10,
{2} Viết giá trị của hai biến này ra màn hình
{3}Lời gọi thủ tục Hoan_doi(a,b) lúc này x nhận giá trị a còn y nhận giá trị b
qua phép gán TG ở trên, Khi thực hiện thủ tục Hoan_doi do x truyền theo kiểu
tham số giá trị còn y truyền theo kiểu tham biến nên khi thực hiện thủ tục kết
quả viết ra màn hình là
5 10
5 5

Bài 4: Viết thủ tục hoán đổi 2 số nguyên x và y với x là tham biến còn y là tham
số giá trị.
Program Tin_Hoc;
Var a, b:integer;
 Gi¸o Viªn: L©m §×nh Huúnh

11


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Procedure Hoan_doi(Var x:Integer;y:Integer);
Var TG: Integer;
Begin
TG:=x;
x:=y;
y:=TG;
end;
Begin
a:=5;
b:=10;
{1}
Writeln(a:6,b:6);
{2}
Hoan_doi(a,b);
{3}
Writeln(a:6, b:6);
{4}
Readln;

End.
Kết quả thực hiện chương trình:
{1} đầu tiên gán giá trị của biến toàn cục a=5 và biến toàn cục b=10, {2} Viết
giá trị của hai biến này ra màn hình {3}Lời gọi thủ tục Hoan_doi(a,b) lúc này x
nhận giá trị a còn y nhận giá trị b qua phép gán TG ở trên, Khi thực hiện thủ tục
Hoan_doi do x truyền theo kiểu tham biến còn y truyền theo kiểu tham số giá trị
nên khi thực hiện thủ tục kết quả viết ra màn hình là
5
10
10 10
2.Giải pháp 2:
Nghiên cứu về hàm và biến cục bộ, biến toàn cục
Bài 5: Viết chương trình tìm USCLN của M, N nguyên dương nhập từ bàn
phím, không sử dụng hàm.
+ Chương trình như sau:
Program Uoc_Chung_Lon_Nhat;
Var M,N:Integer;
Begin
Writeln('nhap gia tri M va N nguyen tu Ban phim');
Readln(M,N);
While (M<>N) Do
If (M>N) then M:=M-N
Else N:=N-M;
Writeln('USCLN=',M);
Readln;
End.
Bài 6: Viết chương trình tìm USCLN của 2 số nguyên dương x, y sử dụng hàm;
 Gi¸o Viªn: L©m §×nh Huúnh

12



 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Program USCLN_cua_2_SO_Nguyen;
Var x,y:Integer;
Function UCLN(x,y:integer):integer;
var a:integer;
Begin
If x>y then a:=y
Else a:=x;
While (x mod a<>0) or (y mod a<>0) do a:=a-1;
UCLN:=a;
end;
Begin
Writeln('nhap hai so nguyen cho truoc x va y');
readln(x,y);
Writeln('Uoc so chung lon nhat cua ',x,' va',y,' la:=',UCLN(x,y));
readln;
end.
Bài 7. Viết chương trình rút gọn phân số trong đó có sử dụng hàm tìm ước số
chung lớn nhất của 2 số nguyên dương x,y cho trước.
Cách 1:
Program Rut_Gon_Phan_So_Cach1;
Var b,tuso,mauso,x,y:Integer;
Function UCLN(x,y:integer):integer;
var a:integer;
Begin
If x>y then a:=y

Else a:=x;
While (x mod a<>0) or (y mod a<>0) do a:=a-1;
UCLN:=a;
end;
Begin
Writeln('nhap tu so va mau so cua phan so');
readln(tuso,mauso);
b:=UCLN(tuso,mauso);
if b>1 then
Begin
tuso:=tuso div b;
mauso:=mauso div b;
end;
writeln(tuso/mauso:10:1);
 Gi¸o Viªn: L©m §×nh Huúnh

13


 S¸ng KiÕn Kinh NghiÖm
häc 2017 - 2018
readln;
end.
Cách 2:
Program Rut_Gon_Phan_So_Cach2;
Var tuso,mauso,a:Integer;
Function UCLN(x,y:integer):integer; {bat dau ham UCLN }
var sodu:integer;
Begin
While (y<>0) do

Begin
Sodu:=x mod y;
x:=y;
y:=sodu;
end;
UCLN:=x;
End; {het ham UCLN }
Begin
Writeln('nhap tu so va mau so vao');
Readln(tuso, mauso);
a:=UCLN(tuso,mauso);
if a>1 then
Begin
Tuso:=tuso div a;
Mauso:=mauso div a;
End;
Writeln(tuso:5, mauso:5);
Readln;
End.
Bài 8: Viết hàm tìm giá trị lớn nhất trong 2 số nhập từ bàn phím

N¨m

Program
tim_gia_tri_lon_nhat_hai_so;
Var a,b:real;
Function Max(a,b:real):real;
Var TG:real;
Begin
If (a>b) then TG:=a

else TG:=b;
Max:=TG;
end;
 Gi¸o Viªn: L©m §×nh Huúnh

14


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Begin
Writeln('nhap hai so thuc vao chuong trinh');
readln(a,b);
Writeln(' gia tri lon nhat cua hai so la',Max(a,b):10:2);
readln;
end.
Bài 9: Viết chương trình tìm giá trị lớn nhất trong 3 số nhập từ bàn phím trong
đó có sử dụng hàm tìm giá trị lớn nhất trong 2 số.
Program tim_gia_tri_lon_nhat_ba_so;
Var a,b,c,M:real;
Function Max(a,b:real):real;
Var TG:real;
Begin
If (a>b) then TG:=a
else TG:=b;
Max:=TG;
end;
Begin
Writeln('nhap ba so thuc a, b, c vao chuong trinh');

readln(a,b,c);
Writeln('gia tri lon nhat cua ba so la:',Max(Max(a,b),c):10:2);
readln;
end.
3.Sử dụng hàm
Việc sử dụng hàm hoàn toàn tương tự với việc sử dụng hàm chuẩn, khi viết
lệnh gọi gồm tên hàm và tham số thực sự tương ứng với các tham số hình thức.
Lệnh gọi hàm có thể tham gia vào biểu thức như một toán hạng và thậm chí
là tham số của lời gọi hàm, thủ tục khác xét chương trình sau để làm sáng toả
nội dung
Program tim_gia_tri_lon_nhat_hai_so;
Var M, a,b:real;
Function Max(a,b:real):real;
Var TG:real;
Begin
If (a>b) then TG:=a
else TG:=b;
Max:=TG;
end;
Begin
 Gi¸o Viªn: L©m §×nh Huúnh

15


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Writeln('nhap hai so thuc vao chuong trinh');
readln(a,b);

Writeln(' gia tri lon nhat cua hai so la',Max(a,b):10:2);
M:=2*max(a,b)+1 ;
Writeln('gia tri goi ham la nhu toan hang', M);
readln;
end.
4.Bài tập kiến nghị
Bai 1: Viết hàm tìm giá trị nhỏ nhất trong 2 số nhập từ bàn phím
Bài 2: Viết chương trình tìm giá trị lớn nhất trong 3 số nhập từ bàn phím trong
đó có sử dụng hàm tìm giá trị lớn nhất trong 2 số.
Bài 3: Viết hàm tính giai thừa của số nguyên dương N nhập từ bàn phím
5. Hiệu quả và kết quả đạt được khi đổi mới phương pháp giảng dạy học
Dạy học bài toán nhỏ đến bài toán tổng quát đã thu được kết quả đáng
khích lệ đúng theo sự phát triển trí tuệ người học tức là học từ dễ đến khó sẽ
tăng hiệu quả cao khi giảng các bài học thuộc chương IV chương trình con và
lập trình có cấu trúc trang 90 SGK tin học 11 Nhà xuất bản Giáo dục năm 2007.
Mặt khác tuỳ theo mức tiếp thu bài giảng của học sinh và thực tế từng lớp học
tập của học sinh mà chuyển sang bài toán khó dần hơn để giảng dạy.
Minh họa cụ thể qua số liệu bảng 2 sau:
Lớp 11A1
Lớp 11A2
Tổng
số học
36 HS
42 HS
sinh
Cách
Dạy từ ví dụ dễ đến ví dụ tổng Dạy từ ví dụ dễ đến ví dụ tổng quát
dạy cũ
quát và khó hơn
và khó hơn

số HS
3
10
23
0
1
12
29
0
Xếp
giỏi
khá
tb
yếu
giỏi
khá
tb
yếu
loại
Phần
8.3
27.7
64
0.0
2.3
28.5
69.2
0.0
trăm


 Gi¸o Viªn: L©m §×nh Huúnh

16


 S¸ng KiÕn Kinh NghiÖm
häc 2017 - 2018

N¨m

Phần III: KẾT LUẬN - KIẾN NGHỊ
1. Kết luận
Do việc học môn Tin của học sinh khối 11 bằng ngôn Ngữ lập trình Pascal
còn nhiều hạn chế nên việc đưa ra “Hướng dẫn học sinh lớp 11A1, 11A2
Trường THPT Quan Sơn tiếp cận nhanh Chương trình con và lập trình có
cấu trúc” giúp học sinh pháp triển tư duy là rất cần thiết, đúng với ý đồ thực
hiện SGK Tin học của bộ GD & ĐT.
Đi từ tư duy thấp đến cao và đảm bảo kiến thức từ dễ đến khó. Nếu học
sinh mà học tốt thì ta có thể trực tiếp đi vào giải bài toán lớn kiến thức khó, còn
học sinh yếu thì ta có thể giải bài toán nhỏ để học sinh tiếp thu nhanh chóng và
dễ dàng nắm bắt được nội dung bài học một cách dễ dàng.
Qua quá trình giảng dạy lớp 11A1, lớp 11A2 ở trường THPT Quan Sơn, tôi
thấy các em đều ý thức được tầm quan trọng của việc giải bài toán Tin học đặc
biệt là vận dụng chương trình con thủ tục và hàm vào các bài toán lớn để các em
tiếp cận. Vì vậy để đề tài thực sự tác động hiệu quả tới một bộ phận lớn học sinh
tôi cho rằng các thầy cô cần phải chọn lọc nhiều bài tập cơ bản đến nâng cao và
phù hợp hơn nữa đối với từng đối tượng học sinh.
Trên đây là một số kinh nghiệm của bản thân mà tôi muốn giới thiệu để các
đồng nghiệp tham khảo; đồng thời mong nhận được những trao đổi, góp ý của
đồng nghiệp để tôi có thể rút kinh nghiệm cho bản thân và đạt hiệu quả cao hơn

trong việc áp dụng đề tài. Bản thân tôi cũng hi vọng rằng đề tài này sẽ được
đông đảo giáo viên, nhất là giáo viên bộ môn Tin học áp dụng rộng rãi, phổ biến
nhằm nâng cao hiệu quả trong sự nghiệp “trồng người”.
2.Kiến nghị
Đây là một đề tài khó vừa rộng vừa sâu, nặng nhất trong chương trình tin
học lớp 11 do đó tôi đề nghị giáo viên giảng bài tuỳ theo mức độ học tập của học
sinh mà đưa các ví dụ cụ thể để giải. mặt khác các em phải chăm chú nghe giảng
và làm nhiều bài tập để hiểu sâu và nâng cao tư duy về sử dụng chương trình
con trong lập trình.
Kiến nghị với sở GD&ĐT Thanh Hoá tăng cường cung cấp phòng máy tính
để cho học sinh học tập được tốt hơn.
3.Những hạn chế của đề tài
Mặc dù đã cố gắng rất nhiều nhưng do hạn chế về mặt thời lượng nên đề tài
thực hiện không tránh khỏi những thiếu sót và sai lầm, trong đó không giải
quyết được nhiều bài toán khác nhau để học sinh tham khảo mà vẻn vẹn từ hai
bài học từ chương VI “Chương trình con và lập trình có cấu trúc”.
 Gi¸o Viªn: L©m §×nh Huúnh

17


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
Mặt khác môn tin học là môn học mới đưa vào trường THPT giảng dạy
chính khoá hơn 10 năm do đó giáo viên chưa nhiều kinh nghiệm còn hạn chế
mong các đồng nghiệp góp ý kiến.
XÁC NHẬN CỦA
THỦ TRƯỞNG ĐƠN VỊ


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

Lâm Đình Huỳnh

 Gi¸o Viªn: L©m §×nh Huúnh

18


 S¸ng KiÕn Kinh NghiÖm
N¨m
häc 2017 - 2018
DANH MỤC CÁC ĐỀ TÀI SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC
HỘI ĐỒNG KHOA HỌC NGÀNH XẾP LOẠI
Họ và tên tác giả: Lâm Đình Huỳnh
Chức vụ: Giáo viên tin học
Đơn vị công tác: Trường THPT Quan Sơn

TT

Tên đề tài SKKN

Cấp đánh
Kết quả
giá xếp loại đánh giá
Sở GD&ĐT xếp loại
tỉnh Thanh

(A, B,
Hoá
hoặc C)

Năm học đánh
giá xếp loại

Một số bài tập chương trình
con rèn luyện tư duy và phát
1

triển năng lực lập trình của
học sinh 11A1, 11A2 trường

Sở GD&ĐT
tỉnh Thanh
Hoá

C

2014 - 2015

Sở GD&ĐT
tỉnh Thanh
Hoá

B

2016-2017


THPT Quan Sơn
“Một số thuật toán tổng quát
2

để phát triển tư duy cho học
sinh lớp 10A1, 10A2 trường
THPT Quan Sơn”

 Gi¸o Viªn: L©m §×nh Huúnh

19


 S¸ng KiÕn Kinh NghiÖm
häc 2017 - 2018
TÀI LIỆU THAM KHẢO

N¨m

1. Hồ Sĩ Đàm –Tin Học 11 – Nhà xuất bản Giáo dục
2.Các vấn đề về lập trình Pascal- Trần Đức Huyên- NXB Giáo Dục
3.Quách Tuấn Ngọc-Bài tập ngôn ngữ lập trình Pascal-NXB Thống Kê.
4.PGS.PTS Bùi Thế Tâm-Bài tập lập trình Turbo Pascal 7.0-NXB Giao thông
vận tải.
5.Phương pháp giải các bài toán trong Tin học - Trần Đức Huyên, NXB Giáo
Dục.

 Gi¸o Viªn: L©m §×nh Huúnh

20



 S¸ng KiÕn Kinh NghiÖm
häc 2017 - 2018

N¨m
Mục lục

PHẦN I. MỞ ĐẦU...............................................................................................1
I. Lí do chọn đề tài.......................................................................1
II. Mục đích nghiên cứu................................................................1
III. Đối tượng nghiên cứu.............................................................2
IV. Phương pháp nghiên cứu........................................................2
Phần II: GIẢI QUYẾT VẤN ĐỀ.......................................................................3
I. Cơ sở lý luận.............................................................................3
1. Khái niệm chương trình con..............................................................................3
2. Lợi ích của việc sử dụng chương trình con.......................................................3
3. Phân loại chương trình con................................................................................3
4.Cú pháp của thủ tục............................................................................................3
5.Biến toàn cục và biến cục bộ..............................................................................5
6.Chú ý..................................................................................................................6
7. Hàm...................................................................................................................7
II.Thực trạng của vấn đề..............................................................8
1.Thực trạng của vấn đề cần nghiên cứu...............................................................8
2.Tình trạng thực tế khi chưa thực hiện đề tài.......................................................8
3.Khảo sát thực tế..................................................................................................8
4. Mục tiêu của đề tài............................................................................................9
III.Giải pháp thực hiện..................................................................9
1.Giải pháp 1:........................................................................................................9
2.Giải pháp 2:......................................................................................................12

3.Sử dụng hàm.....................................................................................................15
4.Bài tập kiến nghị...............................................................................................16
5. Hiệu quả và kết quả đạt được khi đổi mới phương pháp giảng dạy học.........16
Phần III: KẾT LUẬN - KIẾN NGHỊ..............................................................17
1. Kết luận...........................................................................................................17
2.Kiến nghị..........................................................................................................17
3.Những hạn chế của đề tài.................................................................................17

 Gi¸o Viªn: L©m §×nh Huúnh

21



×