Tải bản đầy đủ (.docx) (18 trang)

Một số bài toán gợi động cơ cho học sinh khi giảng dạy chương trình con môn tin học lớp 11 trường THPT lang chánh

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 (196.59 KB, 18 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ
TRƯỜNG THPT LANG CHÁNH

SÁNG KIẾN KINH NGHIỆM
MỘT SỐ BÀI TOÁN GỢI ĐỘNG CƠ HOẠT ĐỘNG CHO
HỌC SINH KHI GIẢNG DẠY CHƯƠNG TRÌNH CON MÔN
TIN HỌC LỚP 11 TRƯỜNG THPT LANG CHÁNH
Người thực hiện:
Phạm Thị Diệu
Chức vụ:
Giáo viên
SKKN thuộc lĩnh vực:
Tin học

THANH HOÁ, NĂM 2021
MỤC LỤC


Mụ
c
1

Nội dung

Trang

Mở đầu

1

1.1



Lí do chọn đề tài

1

1.2

Mục đích nghiên cứu

1

1.3

Đối tượng nghiên cứu

1

1.4

Phương pháp nghiên cứu

1

Nội dung

2

2.1

Cơ sở lí luận


2

2.2

Thực trạng trước khi áp dụng SKKN

2-3

2.3

Các giải pháp đã sử dụng để giải quyết vấn đề

3-14

2.4

Hiệu quả của SKKN

15

3

Kết luận, kiến nghị

15-16

2

Tài liệu tham khảo


17

2


1. MỞ ĐẦU
1.1 Lý do chọn đề tài
Hiện nay nhà nước ta đang trong giai đoạn đổi mới phương pháp dạy học.
Yêu cầu người giáo viên phải lựa chọn nhiều phương pháp giảng dạy và xây
dựng các đề án dạy học theo chuyên đề. Mục tiêu là giúp học sinh chủ động, tích
cực trong học tập, nắm bắt được kiến thức cơ bản của bộ mơn, từ đó tạo được
lịng đam mê, hứng thú các môn học. Đặc điểm của mơn tin học khối 11 là học
ngơn ngữ lập trình học sinh rất khó khăn để tiếp thu kiến thức vì các câu lệnh
trong ngơn ngữ lập trình ngắn gọn, dễ nhầm lẫn và khó hiểu.
Khi nói đến dạy học lập trình cho học sinh, dạy học về chương trình con là
một trong những nội dung chiếm vai trò quan trọng. Bởi vì sử dụng chương
trình con để hợp lý, tiết kiệm cơng sức lập trình trong những bài tốn lớn, giúp
cho người lập trình dễ sửa chữa, kiểm tra. Vì những lý do trên tơi mạnh dạn đưa
ra “Một số bài toán gợi động cơ cho học sinh khi giảng dạy chương trình con
mơn tin học lớp 11 trường THPT Lang Chánh” để học sinh có hứng thú khi
học nội dung phần chương trình con.
1.2 Mục đích nghiên cứu
Góp phần đổi mới phương pháp dạy học, gây hứng thú học tập, tránh việc
học thụ động, học vẹt. Giúp học sinh lĩnh hội tri thức một cách khoa học, củng
cố và khắc sâu kiến thức môn Tin học theo hướng phát huy tính tích cực, chủ
động và sáng tạo của học sinh giúp học sinh tiếp thu tri thức một cách có hiệu
quả.
Qua đề tài này tơi mong muốn cung cấp cho học sinh lớp 11 trường THPT
Lang Chánh có hứng thú học nội dung phần Chương trình con, phân biệt được

hàm và thủ tục, biến cục bộ và biến tồn cục, tham số hình thức và tham số thực
sự, vận dụng chương trình con để giải các bài tốn lớn.
1.3. Đối tượng nghiên cứu
- Đối tượng: Học sinh lớp 11 trường THPT Lang Chánh
- Phạm vi: Chương trình con trên ngơn ngữ lập trình Pascal.
1.4. Phương pháp nghiên cứu
Để thực hiện đề tài tơi sử dụng các nhóm phương pháp sau đây:
- Nghiên cứu lí luận chung: Thơng qua việc trau dồi kiến thức sách giáo
khoa,sách tham khảo,diễn đàn tin học trên internet.
- Khảo sát điều tra thực tế dạy học: Thông qua việc giảng dạy trực tiếp học
sinh khối 11 trường THPT Lang Chánh.
- Tổng hợp đúc rút kinh nghiệm: Trao đổi với đồng nghiệp, tham khảo ý
kiến giáo viên cùng bộ môn, liên hệ thực tế trong nhà trường, áp dụng và rút
kinh nghiệm qua quá trình giảng dạy.
3


2.NỘI DUNG
2.1. Cơ sở lý luận
Đứng trước một bài toán lập trình tin học học sinh thường lúng túng và
khơng biết tìm thuật tốn của bài tốn từ đâu và tìm như thế nào? Điều đó có thể
dẫn tới kết quả đúng hoặc sai hoặc chệch hướng giải quyết bài tốn, hiệu suất để
tìm thuật tốn như thế là khơng cao, một số học sinh kém hơn thì khơng biết
cách tìm thuật tốn từ đâu và điều đó gây tâm lý chán nản cho các em.
Căn cứ vào thực tiễn giảng dạy môn Tin học (cụ thể là khi dạy chương 6
“Chương trình con và lập trình có cấu trúc”) ở trường THPT Lang Chánh học
sinh đã có rất nhiều khó khăn trong việc nắm bắt nội dung chương trình con và
vận dụng viết một chương trình có sử dụng chương trình con ở mức độ đơn
giản.
Để giúp học sinh định hướng tốt hơn trong q trình tìm thuật tốn, trước

khi có thể tự tìm được thuật tốn tốt hơn thì người giáo viên cần tạo cho học
sinh thói quen tìm thuật tốn từ các các bài tốn cơ bản quen thuộc mà các em
đã biết, khai thác các yếu tố đặc trưng của một số bài toán cơ bản sử dụng
chương trình con để giải quyết cho các bài toán mới. Việc áp dụng thuật toán
của các bài toán cơ bản về chương trình con xây dựng thuật tốn cho các bài
toán tương tự hoặc các bài toán mở rộng từ các bài tốn cơ bản đó là một quá
trình giúp học sinh hứng thú học tập và rèn luyện kỹ năng lập trình.
2.2. Thực trạng trước khi thực hiện các giải pháp của đề tài:
- Thuận lợi:
+ Trong bối cảnh bùng nổ của ngành CNTT học sinh đã được tiếp xúc với
máy tính từ rất sớm.
+ Đã sử dụng ngơn ngữ lập trình Pascal để viết chương trình giải quyết các
bài tốn trong q trình học.
+ Nhà trường có phịng máy cho học sinh thực hành.
- Khó khăn:
+ Về học sinh:Trường THPT Lang Chánh là trường thuộc địa bàn huyện miền
núi Lang Chánh đa số học sinh là người dân tộc thiểu số (trong đó dân tộc Thái
chiếm 53,04%, dân tộc Mường chiếm 35,58%, dân tộc Kinh chiếm 11,19%)nên
chưa có cơ hội, điều kiện tiếp xúc với cơng nghệ và máy tính. Vì vậy, tin học là một
mơn học tương đối khó đối với các em. Học sinh học trên lớp đã khơng có hứng
thú học tin học đặc biệt là các bài lập trình vì các em không học thêm hay tin học
không phải là môn mà các em thi đại học. Điều này dẫn đến ý thức tự giác của học
sinh chưa cao, đặc biệt là đối với mơn học lập trình Pascal Tin học lớp 11. Những
thao tác thực hành thì đa phần học sinh chưa nhớ vì ở nhà các em cũng khơng có
máy tính để rèn luyện các kỹ năng thực hành.

4









-

-

+ Về giáo viên: Nhà trường thiếu nhiều giáo viên bộ mơn Tin học, giáo viên
chưa có nhiều kinh nghiệm nên việc truyền đạt kiến thức cho học sinh còn nhiều bỡ
ngỡ.
2.3. Các biện pháp đã tiến hành để giải quyết vấn đề
Tất cả các nội dung, các ví dụ, bài tập trong đề tài này được xây dựng trên
ngôn ngữ lập trình Pascal.
2.3.1. Khái niệm chương trình con
2.3.1.1. Khái niệm
Để viết chương trình giải các bài tốn lớn, phức tạp người lập trình có thể
chia thành nhiều bài tốn nhỏ, mỗi bài tốn là một dãy lệnh mơ tả một số thao
tác nhất định (gọi là chương trình con). Sau đó ghép nối các chương trình con
thành chương trình chính.
Chương trình con là dãy các 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.
2.3.1.2. Lợi ích của việc sử dụng chương trình con
Tránh được việc phải 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 q trình trừu tượng hóa
Mở rộng khả năng ngơn ngữ
Thuận tiện cho việc phát triển nâng cấp chương trình
2.3.2. Phân loại và cấu trúc chương trình con

2.3.2.1. Phân loại
Trong nhiều ngơn ngữ lập trình, chương trình con thường gồm hai loại:
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ụ:
Sin(x) nhận vào giá trị thực x và trả về giá trị sin x
Sqrt(x) nhận vào giá trị x trả về giá trị căn bậc hai của x
Length(x) nhận vào xâu x và trả về độ dài của xâu x
Thủ tục (Procedure): Là chương trình con thực hiện một số thao tác nào đó, và
khơng trả về giá trị nào qua tên của nó.
Ví dụ: Các thủ tục vào/ra chuẩn hay thủ tục xử lí xâu: writeln, readln,
delete
2.3.2.2. Cấu trúc chương trình con

[]

- Phần đầu: Cấu trúc chương trình con tương tự chương trình chính,
chương trình chính, nhưng nhất thiết phải có phần đầu để khai báo tên, nếu là
hàm thì phải có khai báo kiểu dữ liệu trả về.
5







- Phần khai báo: Có thể khaibáo cho dữ liệu vào ra, các hằng được sử
dụng trong chương trình con
- Phần thân: Là dãy các lệnh được thực hiện trong chương trình con từ dữ

liệu vào và được kết quả như mong muốn. Phần này luôn nằm giữa hai từ khóa
là Begin và End. Ở giữa là các thao tác cần thực hiện. Sau từ khóa End là dấu
chấm phẩy (;).
Một số lưu ý:
Một chương trình con có thể có hoặc khơng có tham số hình thức, có thể có hoặc
khơng có biến cục bộ.
Tham số hình thức: Là tham số được đưa vào khi định nghĩa chương trình con
Tham số thực sự: Là tham số được viết trong lời gọi chương trình con
Biến cục bộ: Là các biến được khai báo trong chương trình con
Biến tồn phần: Là các biến được khai báo trong chương trình chính
- Trong thân hàm cần có lệnh: <tên hàm> :=<biểu thức>;
- Kết thúc chương trình con là dấu chấm phẩy (;)
2.3.2.3. Thực hiện chương trình con
- Để thực hiện (gọi) một chương trình con, ta cần phải có lệnh gọi nó tương
tự lệnh gọi hàm hay thủ tục chuẩn, bao gồm tên chương trình 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à các tham
số thực số thực sự.
- Lệnh gọi chương trình con sẽ thực hiện từ trên xuống dưới trong chương
trình chính.
- Khi thực hiện gọi chương trình con, các tham số hình thức dùng để nhập
dữ liệu vào của tham số thực sự tương ứng. Khi xuất dữ liệu thì tham số hình
thức lưu trữ dữ liệu ra sẽ trả giá trị cho tham số thực sự tương ứng.
2.3.2.4. Khai báo Chương trình con
- Nhắc lại cấu trúc của một chương trình
PROGRAM Tên_chương_trình; { Tên chương trình}
USES ...; {Khai báo thư viện}
CONST ...;{Khai báo hằng}
TYPE ...;{Khai báo kiểu}
VAR ...;{Khai báo biến}

Khai báo CTC {Khai báo chương trình con}
BEGIN {Chương trình chính}
<các lệnh>;
END.
Như vậy phần khai báo Chương trình con nằm ở phần cuối của phần khai
báo
6


Khai báo và lời gọi hàm
– Khai báo:
FUNCTION <tên hàm>(Danh sách các tham số):<Kiểu dữ liệu>;
[Khai báo Const, Type, Var]
BEGIN
<các lệnh trong thân hàm>;
<tên hàm>:=<Giá trị>;
END;
Chú ý ln có phép gán tên hàm cho giá trị để hàm trả về giá trị khi được
gọi
Ví dụ: tính tổng của 2 số x và y
Function tong(x,y:integer):integer; {Do có giá trị trả về}
var s:integer;
begin
s:=x+y;
tong:=s;
end;
Lời gọi hàm
<tên hàm>(danh sách các tham số thực);
Ví dụ:tong(4,5);
Khai báo và lời gọi thủ tục

– 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
<các câu lệnh>;
END;
Ví dụ:
Procedure inso(n:integer);
var i:inteher;
Begin
for i:=1 to n do
write(i:5);
end;
Lời gọi thủ tục
<tên thủ tục>(danh sách các tham số thực);
Ví dụ:
inso(6);
7


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.
* Hàm (Function)
- Kết quả của bài tố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 tốn.
* Thủ tục (Procedure)
- Kết quả của bài tố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 tốn.
Chú ý: Nếu một cơng việc có thể làm bằng hàm thì chắc chắn sẽ làm được
bằng thủ tục {tuy nhiên sẽ phức tạp hơn khi dùng hàm} nhưng một chương trình
làm bằng thủ tục thì chưa chắc ta đã làm được bằng hàm.
2.3.2.5. 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 cịn tồn
tại.
Ví dụ:
PROGRAM vidu;
Var a,b,c:integer; {3 biến tồn cục}
PROCEDURE thutuc(n:integer);{n là biến cục bộ}
var i:integer; {i là biến cục bộ}
begin
for i:=1 to 10 do writeln(i);
end;
BEGIN
a:=5;b:=6;c:=8;
thutuc( a);
thutuc( b);
thutuc( c);
readln;
END.
Trong trường hợp biến cục bộ trùng tên với biến tồn cục thì máy không bị
nhầm lẫn mà sẽ thực hiện trên biến cục bộ. Biến tồn cục khơng bị ảnh hưởng.


8


2.3.2.6. Cách truyền tham số trong chương trình con
- Chương trình con khơng cần có tham số (sau tên chương trình con) nếu
khơng dùng đến chúng hoặc dùng trực tiếp biến toàn cục
- Khi truyền tham số các tham số trong lời gọi chương trình con phải đúng
thứ tự và kiểu tương ứng với khi khai báo chương trình con.
Ví dụ:
Procedure inso(a:integer; ch:char);
begin
{các lệnh của CTC}
end;
{gọi}
inso(13,'a'); {lời gọi đúng}
inso('a',13); {loi goi sai}
inso(13);{lời gọi sai}
- 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 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 trị: là các tham số được khia 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.

2.3.2.7. Tính đệ quy của chương trình con
Một chương trình con trong Pascal có thể gọi về chính nó. Một lời gọi như
thế gọi là một lời gọi đệ quy. Ta xét ví dụ sau:
Nhập vào 1 số nguyê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!
function giai_thua(n:integer):longint;
begin
if n=0 then giai_thua:=1
else giai_thua:=n*giai_thua(n-1);
end;
Lưu ý:
9


- Khi sử dụng đệ quy phải có điều kiện kết thúc đệ quy. Trong ví dụ ta xét
điều kiện kết thúc đệ quy chính là n=0. Nếu khơng có điều kiện kết thúc này
chương trình của ta sẽ lặp vơ hạn.
- Ln có lời gọi đệ quy, trong trường hợp trên là lời gọi giai_thua(n-1);
2.3.3. Một số bài toán gợi động cơ trong việc giảng dạy chương trình con
Bài tốn1: Viết chương trình thực hiện lần lượt các cơng việc sau:
Nhập ba số thực dương a , b , c (a,b,c <105) từ bàn phím.
- Kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay khơng ?
- Tính diện tích của tam giác .
Nhắc lại kiến thức toán học:
- 3 số a,b,c là tam giác khi tổng 2 cạnh lớn hơn cạnh còn lại
- Diện tích tam giác dùng cơng thức Heron: S = ,

10


với P = (a+b+c)/2.


Chương trình mẫu
Program kiemtratamgiac;
Uses CRT;
Var a,b,c,s,p: real;
BEGIN
Clrscr;
Writeln( ‘Nhap chieu dai canh thu nhat: ‘); readln(a);
Writeln( ‘Nhap chieu dai canh thu 2: ‘); readln(b);
Writeln( ‘Nhap chieu dai canh thu 3: ‘); readln(c);
If (a+b)>c and (a+c)>b and (b+c)>a then
Begin
p=(a+b+c)/2; s:= sqrt(p*(p-a)(p-b)(p-c));
Writeln( ‘Ba so vua nhap la 3 canh tam giac’);
Writeln( ‘Dien tich cua tam giac la: ‘, s:4:2);
End;
11


Else
Writeln(‘3 so vua nhap khong phai la 3 canh tam giac’);
Readln
END.

Chương trình trên kiểm tra ba số thực có phải 3 cạnh của một tam giác, giả sử
nếu phải kiểm tra n hình tam giác thì vấn đề quả thực rất phức tạp. Ở đây ta có
thể hướng dẫn cho học sinh sử dụng chương trình con để khắc phục hạn chế đó,

thay vì phải viết nhiều lệnh nhập, ta có thể viết:
1.Hàm kiểm tra ba cạnh có phải là tam giác.
2.Thủ tục nhập ba cạnh của tam giác.
3.Hàm tính diện tích.
4.Thủ tục nhập số tam giác,tính diện tích (nếu là tam giác)
5.Chương trình chính.
Chương trình mẫu
Program Tam_Giac;
Var a:array[1..3,1..100] of real; {Bien toan cuc}
12


{ 1. Hàm kiểm tra}
Function Ktra(x,y,z: real): Boolean; {Ham co tham tri}
Begin
Ktra:= (xEnd;
{ 2. Thu tuc nhap}
Procedure NhapABC(Var a, b, c : Real; i:integer); {Thu tuc co tham bien}
Begin
Write(‘Nhap vao ba canh cua tam giac thu: ‘,i);
Repeat
Write( 'Nhap a:' ); Readln( a );
Write( 'Nhap b:' ); Readln( b );
Write( 'Nhap c:' ); Readln( c );
If Not Ktra(a,b,c) then
Writeln(‘ Ba do dai khong la 3 canh cua tam giac’);
Until Ktra(a,b,c);
End;
{ 3. Ham tinh dien tich}

Function Dientich( a, b, c:Integer ) : Real; {Ham co tham tri}
Var dt,p : Real;

{Bien cuc bo}

Begin
p := (a+b+c)/2;
dt := sqrt(p* (p-a)*(p-b)*(p-c));
Dientich := dt;
13


End;
{ 4. Thu tuc nhap so tam giac tinh dien tich (neu la tam giac) }
Procedure Tinh;
Var k,n: integer;
Begin
Write(‘ Nhap so tam giac: ‘); Readln(n);
For k:=1 to n do
NhapABC(a[1,k], a[2,k], a[3,k],k);
Writeln(‘Dien tich tam giac thu ‘,k,’:’,DT( a[1,k], a[2,k], a[3,k]):6:2);
End;
{ 5. Than chuong trinh chinh }
BEGIN
Tinh;
Readln;
END.

Từ ví dụ trên học sinh nhìn thấy được việc sử dụng chương trình con có thể
hợp lý hóa, tiết kiệm cơng sức lập trình, đồng thời giúp cho người lập trình dễ

sửa lỗi, dễ kiểm tra. Ngồi ra giáo viên giải thích cho các em thấy rõ đâu là biến
toàn cục, đâu là biến địa phương, 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?
Theo như tơi quan sát thì khi sử dụng tham biến và tham trị học sinh rất
khó để phân biệt được và nên sử dụng khi nào, ta có thể hướng dẫn học sinh làm
thêm bài tập sau:
Bài toán 2: “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 đó”.
14


Chương trình mẫu
Program Duong_tron;
Var r1,r2,r3: Real;
Procedure Nhap(r:Real; k:Byte);
Begin
Repeate
Write(‘Nhap ban kinh cua duong tron thu ‘,k,’:’); Readln(r);
If r<=0 Then Write(‘Nhap lai’);
Until r>0;
End;
BEGIN
Nhap(r1, 1);
Nhap(r2, 2);
Nhap(r3, 3);
Writeln(‘Duong tron 1 chu vi bang:’,
‘,pi*sqr(r1):6:1);

2*pi*r1:6:1,’ Dien tich bang:


Writeln(‘Duong tron 2 chu vi bang:’,
‘,pi*sqr(r2):6:1);

2*pi*r2:6:1,’ Dien tich bang:

Writeln(‘Duong tron 1 chu vi bang:’,
‘,pi*sqr(r3):6:1);

2*pi*r3:6:1,’ Dien tich bang:

Readln
END.
Chú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ả 3 đường trịn đều
bằng 0. Vấ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 ngồi chương trình con, cịn giá trị của tham trị chỉ lưu giữ
15


khi thực hiện chương trình con, nếu ra khỏi chương trình con đó 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ị.
Chương trình trên cần sửa lại như sau:
Program Duong_tron;
Var r1,r2,r3: Real;
Procedure Nhap( Var r:Real; k:Byte);
Begin
Repeate
Write(‘Nhap ban kinh cua duong tron thu ‘,k,’:’); Readln(r);

If r<=0 Then Write(‘Nhap lai’);
Until r>0;
End;
BEGIN
Nhap(r1, 1);
Nhap(r2, 2);
Nhap(r3, 3);
Writeln(‘Duong tron 1 chu vi bang:’,
‘,pi*sqr(r1):6:1);

2*pi*r1:6:1,’ Dien tich bang:

Writeln(‘Duong tron 2 chu vi bang:’,
‘,pi*sqr(r2):6:1);

2*pi*r2:6:1,’ Dien tich bang:

Writeln(‘Duong tron 1 chu vi bang:’,
‘,pi*sqr(r3):6:1);

2*pi*r3:6:1,’ Dien tich bang:

Readln
END.

16


Bài toán 3:
Cho học sinh thực hiện bài toán sau: “Sử dụng chương trình con để tìm ước

chung lớn nhất của ba số ”.
Gợi ý: Để viết hàm ước chung lớn nhất của hai số, chúng ta nên hướng dẫn
học sinh sử dụng thuật tốn Ơclit để viết chương trình nhằm tăng tốc độ tính
tốn.
Program TIM_UCLN;
Var a,b,c,tam: Integer;
Function UCLN(Var x,y: Integer): Integer;
Var tam: Integer;
Begin
While y<>0 do
Begin
Tam:= x mod y;
x:=y;
y:=tam;
End;
UCLN:=x;
End;
17


BEGIN
Write(‘nhap ba so: ‘); Readln(a,b,c);
Write(‘UCLN(‘,a,’,’,b,’,’,c,’)=’);
Tam:= UCLN(a,b);
Write(UCLN(tam, c));
Readln
END.
Mở rộng bài toán:
-


Sau khi thực hiện việc sử dụng chương trình con để tìm ước chung lớn nhất của
3 số thành cơng, chúng ta u cầu học sinh giải bài tốn:”Viết chương trình tìm
ước chung lớn nhất của n số”.

-

Để thực hiện, ta có thể hướng dẫn học sinh dùng thủ tục tìm ước chung lớn nhất
của hai số. Sau đó dùng một biến tạm là u để lưu giữ giá trị đầu tiên của dãy số,
tiếp theo ta lần lượt xác định ước chung lớn nhất của u với từng giá trị của dãy
từ vị trí thứ hai. Cuối cùng, ước chung lớn nhất của dãy chính là giá trị u.
Từ các bài tốn trên giáo viên có thể đưa ra một số bài toán cho học sinh
vận dụng như sau:
Bài tập áp dụng
Bài tập 1:
Viết chương trình cho phép thực hiện rút gọn phân số.
Hướng dẫn:
- Tìm UCLN của tử số và mẫu số.
- Chia tử và mẫu của phân số cho UCLN vừa tìm được.
Bài tập 2:
Tìm số lớn thứ nhì trong n số được nhập từ bàn phím.
Ví dụ: Nhập các số 10; 10; 9; 9; 8 thì được số lớn nhì là 9.
Hướng dẫn:
- Nhập 2 số, Xác định giá trị cho hai biến Max, Nhi.
- Lần lượt nhâp các số. Với mỗi số được nhập xét:
- Nếu So > Max thì gán Nhi = Max, Max = So.
- Nếu Nhi < So < Max thì gán Nhi = So.
18


Bài tập 3:

Viết chương trình tính giai thừa của số n (Viết là n!). Với yêu cầu:
- Nếu người dùng nhập số n < 0 thì yêu cầu nhập lại.
- Sử dụng chương trình con để tính giai thừa của một số.
n! = 1 nếu n = 0;
n! = 1.2.3.4.5...n (Tích của n thừa số).
Hướng dẫn:Lệnh n:= n-1 làm thay đổi giá trị của n nhưng khi ra khỏi
chương trình con n có giá trị khơng đổi so với trước khi gọi chương trình con.
Nhận xét: Hãy so sánh sự khác nhau khi Giai_thua được viết dưới hai dạng
Function và Procedure?
- Khi dùng Procedure cần một biến (toàn cục) để lưu giữa giá trị của n!
Biến này được truyền cho tham biến trong Procedure. Sau khi gọi nó cần lệnh để
in n!
- Khi dùng Function, có thể sử dụng nó như là một biểu thức.
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục,
với đồng nghiệp và nhà trường
Sáng kiến có khả năng áp dụng cho tất cả các đối tượng học sinh lớp 11
trường THPT Lang Chánh môn Tin học, giúp các em học lập trình tạo ra những
phần mềm có ích và thiết thực trong đời sống hàng ngày. Nội dung trong đề tài
mà tơi đã nghiên cứu có thể áp dụng rộng rãi, xen kẽ giữa các bài tập, trong
giảng dạy tin học lớp 11 nhằm nâng cao tố chất sáng tạo trong lập trình cho các
em học sinh.
Đánh giá kết quả
Sau một thời gian áp dụng cách làm này tôi nhận thấy kỹ năng lập trình về
chương trình con của các em tăng lên đáng kể, đặc biệt là hứng thú học tập.
Nhiều học sinh lớp 11A1 đã biết vận dụng các thuật tốn của các bài tốn cơ bản
về chương trình con đã biết để giải quyết các bài toán mở rộng. Điều đó cho
thấy hiệu quả của cách rèn luyện kỹ năng lập trình bằng việc gợi động cơ từ các
bài toán cơ bản. Với cách làm đơn giản này các em học sinh sẽ có hứng thú để
tiếp tục tìm hiểu và giải quyết các bài tốn khác. Các thầy, cơ có thể áp dụng
cách làm này với nhiều dạng bài tập khác nhau để thấy được hiệu quả của sáng

kiến.
Qua quá trình giảng dạy 5 lớp 11, trong đó 3 lớp tơi sử dụng phương pháp
dạy học một số bài tốn gợi động cơ khi học chương trình con. Tơi đã có một số
kết quả để so sánh như sau:
Mức độ biết, hiểu và vận dụng kiến thức về Chương trình con:
- Yếu: Học sinh khơng phân biệt được hàm và thủ tục, biến cục bộ và biến tồn
cục, tham số hình thức và tham số thực sự; chưa viết được một chương trình
hồn chỉnh.
19


Trung bình: HS phân biệt được hàm và thủ tục, biến cục bộ và biến tồn cục,
tham số hình thức và tham số thực sự; chưa viết được một chương trình hồn
chỉnh.
- Khá: Học sinh phân biệt được hàm và thủ tục, biến cục bộ và biến toàn cục,
tham số hình thức và tham số thực sự; viết được một chương trình có sử dụng
chương trình con nhưng vẫn cịn nhiều lỗi sai trong cú pháp khai báo, lời gọi
chương trình con.
- Giỏi: Học sinh phân biệt được hàm và thủ tục, biến cục bộ và biến toàn cục,
tham số hình thức và tham số thực sự; viết được một chương trình có sử dụng
chương trình con hồn chỉnh.
Lớp chưa áp dụng các kĩ thuật dạy học tích cực
Giỏi
Khá
Trung bình
Yếu
Lớp
Sĩ số
SL
%

SL
%
SL
%
SL
%
11A4 34
0
0
12
35,3
17
50
5
14,7
11A5 35
0
0
16
45,7
15
42,9
4
11,4
-

Lớp áp dụng bài toán gợi động cơ trong dạy học
Giỏi
Khá
Trung bình

Yếu
Lớp
Sĩ số
SL
%
SL
%
SL
%
SL
%
11A1 35
3
7,6
20
47,1
12
34,3
0
11A2 38
2
5,4
17
47,7
15
42,9
0
11A3 36
1
3,0

19
52,6
16
44,4
0
Trong quá trình học tập các em tỏ ra hăng hái, yêu thích mơn học, hứng thú
trong việc học lập trình, khơng cảm thấy đây là mơn học khó nữa, ngồi ra các
em được ơn lại kiến thức tốn học.
3. KIẾN NGHỊ VÀ KẾT LUẬN
3.1. Kết luận
Qua q trình giảng dạy mơn Tin ở trường THPT Lang Chánh tôi thấy rằng
các em ý 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 các bài toán chương trình con vào các bài tốn lớn để các em tiếp cận. Vì
vậy tơi mạnh dạn viết ra sáng kiến kinh nghiệm này mặc dù cách làm chưa được
đầy đủ và sâu sắc, chưa thể hiện đầy đủ được các ưu nhược điểm và cịn nhiều
thiếu sót, rất mong được sự góp ý kiến, phản hồi của qúy thầy cơ. Cuối cùng tôi
hy vọng SKKN này sẽ được các đồng nghiệp nghiên cứu và áp dụng vào thực
tiễn dạy học để rút ra những điều lý thú và bổ ích.
3.2.Một số kiến nghị
20


- Chương trình con là phần khó và nhiều kiến thức đối với học sinh lớp 11,
vì vậy tùy theo mức độ học tập của học sinh mà đưa ra các ví dụ cụ thể để giải.
Mặt khác các em phải chăm chú nghe giảng bài, làm nhiều bài tập để hiểu sâu và
nâng cao tư duy lập trình, áp dụng được vào các bài toán lớn.
- Hiện nay máy tính hư hỏng rất nhiều nên cần được cung cấp thêm để các
em có điều kiện học tập được tốt hơn.
Lang Chánh, ngày 12 tháng 5 năm 2021
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

XÁC NHẬN
CỦA THỦ TRƯỞNG ĐƠN VỊ

TÁC GIẢ

Phạm Thị Diệu

TÀI LIỆU THAM KHẢO
1. Sách giáo khoa Tin học 11- NXB Giáo dục 2013
2. Sách bài tập tin học 11- NXB Giáo dục 2013
3. Bài tập lập trình Turbo Pascal 7.0- Bùi Thế Tâm
4. Một số tài liệu về Pascal tại các diễn đàn tin học trên Internet.

21



×