Tải bản đầy đủ (.pdf) (11 trang)

Sáng kiến kinh nghiệm 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 (425.11 KB, 11 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 uá 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 uả 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 uá trình lập trình đ giải uyết các bài toán. Tạo hứng th trong uá 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 uyết các bài
toán trong uá 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ế.
- hả 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ế.
- hả 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 uyết các bài toán trong các lĩnh vực đã
tr nên rất phổ biến. Đ giải uyế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 uyế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 uan đ 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 uyết một số bài toán tương tự .


A. TÓM TẮT LÝ THUYẾT:
I/ há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ị ua 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ị ua 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.
- hai 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>;
i 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.
há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.
2. Viết chương trình tính chỉnh h p Ank . 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.
3. Viết chương trình tính tổ h p Cnk . 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
1. Viết chương trình tính giá trị T= 20 20 . Trong đó x, y là số thực; , k là các số
x y

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= x100+ 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 ua 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 uá 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 uả 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 uả 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 uả 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 uả cao 

- Hoàn toàn m i và đã tri n khai áp dụng tại đơn vị có hiệu uả 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 uả 
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
( ý tên và ghi rõ họ tên)

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



×