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

skkn tin học CHƯƠNG TRÌNH CON

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 (144.86 KB, 12 trang )

BM 01-Bìa SKKN

SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐỒNG NAI
TRƯỜNG THPT XUÂN HƯNG
Mã số: ................................

SÁNG KIẾN KINH NGHIỆM
CHƯƠNG TRÌNH CON

Người thực hiện: Nguyễn Văn Bính
Lĩnh vực nghiên cứu:
Quản lý giáo dục



Phương pháp dạy học bộ môn: Tin học 11
Phương pháp giáo dục





Lĩnh vực khác: ......................................................... 
Có đính kèm:
 Mô hình
 Phần mềm

 Phim ảnh

Năm học: 2011-2012


 Hiện vật khác


BM02-LLKHSKKN

SƠ LƯỢC LÝ LỊCH KHOA HỌC
I. THÔNG TIN CHUNG VỀ CÁ NHÂN
1. Họ và tên: NGUYỄN VĂN BÍNH
2. Ngày tháng năm sinh: 15/08/1982
3. Nam, nữ: Nam
4. Địa chỉ: Ấp 2A, Xuân Hưng, Xuân Lộc, Đồng Nai
5. Điện thoại:

(CQ)/

(NR); ĐTDĐ: 01667489510

6. Fax:

E-mail:

7. Chức vụ: Giáo Viên
8. Đơn vị công tác: TRƯỜNG THPT XUÂN HƯNG
II. TRÌNH ĐỘ ĐÀO TẠO
- Học vị (hoặc trình độ chuyên môn, nghiệp vụ) cao nhất: CỬ NHÂN
- Năm nhận bằng: 2004
- Chuyên ngành đào tạo: TOÁN – TIN HỌC
III.KINH NGHIỆM KHOA HỌC
- Lĩnh vực chuyên môn có kinh nghiệm: Giảng dạy môn Tin học
Số năm có kinh nghiệm: 6 năm

- Các sáng kiến kinh nghiệm đã có trong 5 năm gần đây:


BM03-TMSKKN

CHƯƠNG TRÌNH CON
I. LÝ DO CHỌN ĐỀ TÀI
- Lập trình là vấn đề tương đối mới đối với học sinh THPT, đặt biệt là học
sinh vùng nông thôn như trường THPT Xuân Hưng. Trong quá trình lập trình nếu
học sinh không nắm vững về chương trình con thì thường dẫn đến các sai sót dẫn tới
chương trình không đạt được kết quả như mong muốn.
- Để học sinh có thể hiểu kĩ hơn và nhận thấy được lợi ích của chương trình
con trong quá trình lập trình để giải quyết các bài toán. Tạo hứng thú trong quá trình
học tập.
II. THỰC TRẠNG TRƯỚC KHI THỰC HIỆN CÁC GIẢI PHÁP CỦA ĐỀ
TÀI
1. Thuận lợi
- Học sinh đã được tiếp cận một số thuật toán ở lớp dưới.
- Đã 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
toán trong quá trình học.
- Được sự hỗ trợ của các thành viên trong tổ.
2. Khó khăn
- Do bước đầu tiếp cận việc lập trình nên khả năng còn hạn chế.
- Khả năng diễn đạt cách giải một bài toán sang thuật toán còn nhiều khó
khăn do học sinh vùng nông thôn khả năng tin học còn hạn chế.
- Khả năng chuyển đổi từ thuật toán đã biết sang ngôn ngữ lập trình cụ thể
còn gặp nhiều khó khăn.
III.NỘI DUNG ĐỀ TÀI
1. Cơ sở lý luận
- Ngày nay việc lập trình để giải quyết các bài toán trong các lĩnh vực đã

trở nên rất phổ biến. Để giải quyết các bài toán lớn thì cách lập trình
không sử dụng chương trình con khó có thể thực hiện đặc biệt là đối với
các bài toán lớn cần nhiều người tham gia.
- Làm cơ sở cho học sinh sau này tiếp cận với phương pháp lập trình
khác.
2. Nội dung, biện pháp thực hiện các giải pháp của đề tài
- Nêu ra cách lập trình giải quyết một số bài toán thường gặp trong toán học
và các bài tập liên quan để học sinh hiểu rõ hơn cách viết chương trình con trong
Pascal từ đó có thể tự mình giải quyết một số bài toán tương tự .


A. TÓM TẮT LÝ THUYẾT:
I/ 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.
II/ Phân loại và cấu trúc chương trình con
1. Phân 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ó.
- Thủ tục (procedure) là chương trình con thực hiện các tháo tác nhất định nhưng
không trả về giá trị qua tên của nó.
2. Cấu trúc chương trình con
a. Cấu trúc của thủ tục:
Procedure <tên_thủ_tục>[(danh sách tham số)];
[]
Begin
[<dãy các lệnh>];
End;
b. Cấu trúc của hàm:
- Hàm có cấu trúc tương tự như thủ tục, tuy nhiên có khác nhau phần đầu.

- Khai báo phần đầu một hàm như sau:
Function <tên_hàm>[(danh sách tham số)]:<kiểu dữ liệu>;
- Kiểu dữ liệu là kiểu dữ liệu của giá trị mà hàm trả vể và chỉ có thể là các kiểu:
integer, real, char, boolean, string.
- Khác với thủ tục, trong thân hàm cần có lệnh gán giá trị cho tên hàm:
<tên hàm> := <biểu thức>;
3. Một số khái niệm
- Tham số hình thức: 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.
- Tham số thực sự: Để 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à và ra tương ứng với các
tham số hình thức đặt trong cặp dấu ngoặc ( và ). Các hằng và biến này được gọi
là các tham số thực sự.
- Biến cục bộ là biến được khai báo để dùng riêng trong chương trình con
- Biến toàn cục là biến được dùng tại mọi vị trí trong chương trình
- Tham số giá trị ( tham trị) trong lệnh gọi thủ tục các tham số hình thức được
thay bằng các tham số thực sự tương ứng là các giá trị cụ thể được gọi là các
tham số giá trị.
- Tham số biến (tham biến) trong lệnh gọi thủ tục các tham số hình thức được
thay bằng các tham số thực sự tương ứng là các biến chứa dữ liệu ra được gọi là
các tham số biến.
- Để phân biệt tham số biến và tham trị, Pascal sử dụng từ khóa Var để khai báo
tham số biến.
B. BÀI TẬP ÁP DỤNG:
I/ BÀI TẬP SỬ DỤNG THỦ TỤC


Bài tập 1: Viết chương trình nhập vào số nguyên dương N (N≤ 300) và dãy A gồm N số
nguyên. Sắp xếp dãy số vừa nhập thành dãy không giảm và xuất dãy được sắp xếp ra ngoài

màn hình.
Phân tích:
- Thiết kế một chương trình con phục vụ việc nhập dãy số.
- Thiết kế một chương trình con phục vụ việc xuất dãy số ra màn hình.
- Thiết kế một chương trình con dùng để thực hiện công việc sắp xếp.
- Các chương trình con trên không cần trả về một giá trị cụ thể nào nên dùng
thủ tục.
- Đối với thủ tục nhập mảng cần phải dữ lại các thay đổi bên trong nên sử dụng
tham số biến.
- Đối với thủ tục sắp xếp cần giữ lại các giá trị sau khi sắp xếp nên khai báo
mảng là tham số biến, số lượng phần tử không thay đổi nên dùng tham trị.
Chương trình:
Program sapxepdayso;
Uses CRT;
Const Nmax = 300;
Type ArrInt = Array[1..300] of integer;
Var
A: ArrInt;
N: integer;
Procedure Nhap_Mang(var A: ArrInt; var M: integer);
Var i: integer;
Begin
Write(‘Nhap so phan tu cua day so:’); Readln(M);
For i:=1 to M do
Begin
Write(‘A[‘,i,’]=’); Readln(A[i]);
End;
End;
Procedure Hoan_doi(var a,b:integer);
Var tam: integer;

Begin
tam:= a;
a := b;
b:= tam;
End;
Procedure Sap_xep(var A: ArrInt; M: integer);
Var i, j: integer;
Begin
For j:=M downto 2 do
For i:=1 to j-1 do
If A[i] > A[i+1] then Hoan_doi(A[i],A[i+1]);
End;
Procedure Xuat_mang(A: ArrInt; M: integer);
Var i: integer;
Begin
For i:=1 to M do
Write(A[i]: 5);
End;
BEGIN


Clrscr;
Nhap_mang(A,n);
Sap_xep(A,n);
Xuat_mang(A,n)
Readln
END.
Bài tập tương tự:
1. Viết chương trình nhập vào một dãy số nguyên dương B gồm M phần tử (M≤300).
Tìm giá trị nhỏ nhất của dãy.

2. Viết chương trình nhập vào số nguyên dương N (N≤ 300) và dãy A gồm N số
nguyên. Sắp xếp dãy số vừa nhập thành tăng và xuất dãy được sắp xếp ra ngoài màn
hình.
Bài tập 2: Viết chương trình đọc dữ liệu từ tệp A.IN đưa vào mảng A: dòng đầu tiên trong
tệp A.IN chứa số phần tử của mảng A, dòng thứ 2 chứa các số nguyên là các giá trị của các
phần tử trong mảng mỗi số cách nhau bởi một dấu cách, sau đó tạo ra mảng B trong đó B[i]
là tổng i phần tử đầu tiên trong mảng A. Ghi các giá trị của mảng B ra tệp B.OUT.
Phân tích:
- Thiết kế một thủ tục phục vụ đọc dữ liệu từ tệp.
- Thiết kế một thủ tính các giá trị của dãy B
- Thiết kế một thủ tục ghi các giá trị của dãy B ra tệp
Chương trình:
program TEP_DL;
const input='A.IN';
output='B.OUT';
max=300;
var A, B:array[1..max] of integer;
i, n: integer;
procedure Doc_DL;
var f:text;
i: integer;
Begin
assign(f,input);
reset(f);
readln(f,n);
for i:=1 to n do
read(f,A[i]);
close(f);
End;
procedure XuLi_DL;

var i:integer;
Begin
B[1]:=A[1];
for i:=2 to n do
B[i]:=B[i-1]+A[i];
End;
Procedure Ghi_DL;
var i: integer;
f:text;
Begin
assign(f,output);


rewrite(f);
for i:=1 to n do
write(f,B[i]:3);
close(f);
End;
Begin
Doc_DL;
XuLi_DL;
Ghi_DL;
End.
Bài tập tương tự:
1 Viết chương trình sắp xếp dãy số chứa trong tệp INPUT.IN (dòng 1: Chứa số n, dòng
2:chứa n số nguyên cách nhau bởi dấu cách). Ghi dãy số được sắp tăng dần ra tệp
OUTPUT.OUT.
2 Viết chương trình đọc dãy số chứa trong tệp INPUT.IN (dòng 1: Chứa số n, dòng 2:chứa
n số nguyên cách nhau bởi dấu cách). Cho biết trong dãy số có bao nhiêu số chẵn, bao
nhiêu số lẻ và tính tổng số chẵn, tổng số lẻ rồi ra tệp OUTPUT.OUT( dòng đầu tiên

ghi 2 số: số đầu tiên là số lượng số chẵn trong dãy, số kế tiếp là tổng các số chẵn;
dòng thứ 2 ghi 2 số: số đầu tiên là số lượng số lẻ trong dãy, số kế tiếp là tổng các số
lẻ)
II. BÀI TẬP SỬ DỤNG HÀM
Bài toán 1: Viết chương trình tính n giai thừa. Trong đó n là số nguyên dương được nhập
vào từ bàn phím khi chạy chương trình.
Phân tích: Cần thiết kế một chương trình con(hàm) để tính giai thừa
Chương trình:
Program Giai_thua;
Uses CRT;
Var n: word
Fucntion GT(k: word): longint;
Var T, i: word;
Begin
T:= 1;
For i:=1 to k do
T:= T* i;
GT:=T;
End;
BEGIN
Clrscr;
Write(‘nhap n:’); readln(n);
Write(n,’!=’, GT(n));
Readln
END.
Bài tập tương tự:
1. Viết chương trình tính tổng S= a! + b! + c!. Trong đó a, b, c là các số nguyên dương
được nhập vào từ bàn phím khi chạy chương trình.
k
2. Viết chương trình tính chỉnh hợp An . Trong đó n, k là các số nguyên dương được


nhập vào từ bàn phím khi chạy chương trình.
k
3. Viết chương trình tính tổ hợp Cn . Trong đó n, k là các số nguyên dương được nhập

vào từ bàn phím khi chạy chương trình.


Bài toán 2: Tính tổng lũy thừa S=ax+by+cz. Trong đó a, b, c là các số thực; x, y, z là các số
nguyên dương. Giá trị của các số này được nhập vào từ bàn phím khi chạy chương trình.
Program Tong_luy_thua;
Uses CRT;
Var a,b,c: real;
x, y, z: word;
Fucntion Luythua(x:real; k: word): real;
Var i: integer;
T:real;
Begin
T:= 1;
For i:=1 to k do
T:= T* x;
Luythua:=T;
End;
BEGIN
Clrscr;
Write(‘nhap a,b,c,x,y,z:’); readln(a,b,c,x,y,z);
S:=Luythua(a,x)+ Luythua(b,y)+Luythua(c,z);
Write(‘Tong luy thua:’,s:8:2);
Readln
END.

Bài tập tương tự:
xk + y q
20 20
1. Viết chương trình tính giá trị T= x y . Trong đó x, y là số thực; q, k là các số

nguyên, các so này được nhập vào từ bàn phím khi chạy chương trình.
2. Viết chương trình tính tổng S= x 100+ y200+z50. Trong đó x, y, z là các số thực được
nhập vào từ bàn phím khi chạy chương trình.
Bài tập 3: Cho chiều dài của ba cạnh tam giác. Viết chương trình tính chu vi, diện tích,
chiều dài các đường cao, chiều dài các đường trung truyến của tam giác.
Program Tam_giac;
Uses CRT;
Fucntion Chuvi(a,b,c: real): real;
Begin
Chuvi:=a+b+c;
End;
Fucntion Dientich(a,b,c: real): real;
Var p: real;
Begin
p:=(a+b+c)/2;
Dientich := sqrt(p*(p-a)*(p-b)*(p-c));
End;
Fucntion Trungtuyen(a,b,c: real): real;
Begin
Trungtuyen:=sqrt(((b*b+c*c )- a*a)/(4*a))
End;
Fucntion Chieucao( a,b,c, x: real): real;(*x là chiều cao của cạnh tương ứng cần tính*)
Begin
Chieucao := 2*Dientich(a,b,c)/x;



End;
BEGIN
Clrscr;
Write(‘nhap a, b, c:’); readln(a,b,c);
If (a+b>c) and (b+c>a) and (a+c>b) then
Begin
Write(‘Chu vi tam giac’, Chuvi(a,b,c):5:2);
Write(‘Dien tich tam giac’, Dientich(a,b,c):5:2);
Write(‘Trung tuyen m_a’, Trungtuyen(a,b,c):5:2);
Write(‘Trung tuyen m_b’, Trungtuyen(b,a,c):5:2);
Write(‘Trung tuyen m_c’, Trungtuyen(c,b,a):5:2);
Write(‘Chieu cao h_a’, Chieucao(a,b,c,a):5:2);
Write(‘Chieu cao h_b’, Chieucao(a,b,c,b):5:2);
Write(‘Chieu cao h_c’, Chieucao(a,b,c,c):5:2);
End
Else
Write(‘Ba so vua nhap khong tao thanh ba canh cua tam giac’);
Readln
END.
Bài tập tương tự:
1. Viết chương trình tính chu vi, diện tích hình chữ nhật có chiều dài và chiều rộng các
cạnh là a, b.
2. Viết chương trình tính chu vi, diện tích hình tròn có bán kính R.
3. Viết chương trình tính chu vi, diện tích hình vuông có cạnh a.
Bài toán 4: Viết chương trình nhập vào hai số nguyên dương. Tìm bội số chung nhỏ nhất
của 2 số này.
Program BT_UCLN;
Var x, y: word;
Function UCLN(a,b:word):word;

Begin
a:= abs(a);
b:=abs(b);
while a<> b do
begin
if a > b then a:=a-b;
if b > a then b:= b- a;
end;
UCLN:= a;
End;
BEGIN
Write(‘x,y:’);Readln(x,y);
Write(‘BCNN cua’, x, ‘va’, ‘y:’, (x*y) div UCLN(x,y));
Readln
END.
Bài tập tương tự:
1. Viêt chương trình tìm ước chung lớn nhất của 2 số nguyên dương.

IV. KẾT QUẢ


Thông qua một số bài tập mẫu giúp cho học sinh nắm được phương pháp giải
chung, từ đó áp dụng để giải một số bài toán cơ bản có sử dụng chương trình con.
V. BÀI HỌC KINH NGHIỆM
- Trong quá trình giảng dạy cần khuyến khích học sinh tích cực tham gia thảo
luận, phát biểu ý kiến, tránh áp đặt cho học sinh.
- Có thể dùng các bài tập trên trong giờ thực hành thay cho các tiết thực hành
trong sách giáo khoa đã được giảm tải.
- Đối với các lớp có học lực thấp, có thể giảm bớt các chương trình về các thủ
tục thao tác trên mảng một chiều và tập trung nhiều hơn vào các chương trình trong

phần sử dụng hàm.
VI. KẾT LUẬN
Để học sinh đạt được kết quả tốt hơn nữa thì đòi hỏi học sinh phải nắm vững
các kiến thức về cách giải các bài toán trong toán học để phân tích các bài toán thành
thuật toán để viết chương trình.
Với đề tài này có thể mở rộng cho toàn bộ học sinh tuy nhiên cần chú ý đối
tượng áp dụng sao cho có kết quả tốt nhất.
VII.

TÀI LIỆU THAM KHẢO

Ghi tên tài liệu tham khảo và tên tác giả đã được sử dụng trích dẫn trong sáng
kiến kinh nghiệm.
1. Sách giáo khoa Tin học 11 - Hồ Sĩ Đàm – Nhà xuất bản giáo dục - 2006.
2. Sách giáo viên Tin học 11 - Hồ Sĩ Đàm – Nhà xuất bản giáo dục - 2006.
3. Sách bài tập Tin học 11 - Hồ Sĩ Đàm - Nhà xuất bản giáo dục - 2006.
4. Sách giáo khoa Tin học 10 - Hồ Sĩ Đàm - Nhà xuất bản giáo dục - 2006.

NGƯỜI THỰC HIỆN
(Ký tên và ghi rõ họ tên)

NGUYỄN VĂN BÍNH


SỞ GD&ĐT ĐỒNG NAI
TRƯỜNG THPT XUÂN HUNG

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
Xuân Hưng, ngày 15 tháng 05 năm 2012


PHIẾU NHẬN XÉT, ĐÁNH GIÁ SÁNG KIẾN KINH NGHIỆM
Năm học: 2011-2012
–––––––––––––––––

Tên sáng kiến kinh nghiệm: CHƯƠNG TRÌNH CON
Họ và tên tác giả: NGUYỄN VĂN BÍNH
Đơn vị (Tổ): Toán – Tin , trường THPT Xuân Hưng
Lĩnh vực:
Quản lý giáo dục




Phương pháp dạy học bộ môn: TIN HỌC 11
Phương pháp giáo dục



Lĩnh vực khác: .................................................... 

1. Tính mới
- Có giải pháp hoàn toàn mới



- Có giải pháp cải tiến, đổi mới từ giải pháp đã có




2. Hiệu quả
- Hoàn toàn mới và đã triển khai áp dụng trong toàn ngành có hiệu quả cao 
- Có tính cải tiến hoặc đổi mới từ những giải pháp đã có và đã triển khai áp
dụng trong toàn ngành có hiệu quả cao 
- Hoàn toàn mới và đã triển khai áp dụng tại đơn vị có hiệu quả cao 
- Có tính cải tiến hoặc đổi mới từ những giải pháp đã có và đã triển khai áp
dụng tại đơn vị có hiệu quả 
3. Khả năng áp dụng
- Cung cấp được các luận cứ khoa học cho việc hoạch định đường lối, chính
sách:
Tốt 
Khá 
Đạt 
- Đưa ra các giải pháp khuyến nghị có khả năng ứng dụng thực tiễn, dễ thực
hiện và dễ đi vào cuộc sống: Tốt 
Khá 
Đạt 
- Đã được áp dụng trong thực tế đạt hiệu quả hoặc có khả năng áp dụng đạt hiệu
quả trong phạm vi rộng: Tốt 
Khá 
Đạt 
XÁC NHẬN CỦA TỔ CHUYÊN MÔN
(Ký tên và ghi rõ họ tên)

THỦ TRƯỞNG ĐƠN VỊ
(Ký tên, ghi rõ họ tên và đóng dấu)





×