Sở dĩ tôi chọn chủ đề “chương trình con và phân loại” làm đề tài cho sáng kiến vì tôi thiết nghĩ ở học kỳ I các em đã được học cấu trúcchung của một chương trình pascal thì việc chuyển s
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA
TRƯỜNG THPT LƯƠNG ĐẮC BẰNG
SÁNG KIẾN KINH NGHIỆM
TÊN ĐỀ TÀI CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI
Người thực hiện: Trịnh Thị Kim Dung Chức vụ: Giáo viên
Đơn vị công tác: Trường THPT Lương Đắc Bằng SKKN thuộc lĩnh vực (môn): Tin
THANH HÓA NĂM 2021
Trang 2MỤC LỤC
1.1 Lý do chọn đề tài 1.2 Mục đích nghiên cứu 1.3 Đối tượng nghiên cứu 1.4 Phương pháp nghiên cứu 1.5 Những điểm mới của sáng kiến kinh nghiệm
2 Nội dung của sáng kiến kinh nghiệm
2.1 Cơ sở lý luận 2.2 Thực trạng của vấn đề nghiên cứu 2.3 Nội dung, biện pháp thực hiện các giải pháp 2.4 Hiệu quả của sáng kiến kinh nghiệm
3 Kết luận, kiến nghị
3.1 Kết luận 3.2 Kiến nghị
Trang
1 1 1 1 1 1 2 2 2 2 14 14 15 15
Trang 31 MỞ ĐẦU 1.1 Lý do chọn đề tài
Công nghệ thông tin nói chung và tin học nói riêng là một ngành khoa họcphát triển mạnh mẽ và có nhiều ứng dụng trong hầu hết các lĩnh vực của cuộcsống Môn tin học là một môn học mới mẽ của học sinh Trung học phổ thông, họcsinh chưa có khái niệm về công nghệ thông tin, khái niệm thuật toán trong cácngôn ngữ lập trình Môn tin học trong khối THPT thì môn tin học ở khối lớp 11được đánh giá là khó nhất Sở dĩ tôi chọn chủ đề “chương trình con và phân loại”
làm đề tài cho sáng kiến vì tôi thiết nghĩ ở học kỳ I các em đã được học cấu trúcchung của một chương trình pascal thì việc chuyển sang học chương trình conkhông còn là vấn đề khó khăn đối với các em, từ đó gây hứng thú trong học tậplàm cho các em yêu mến môn học và không cảm thấy khó khi nói đến môn tin họcnói chung và lập trình pascal nói riêng
Năm học 2019 – 2020 tôi đã trực tiếp giảng dạy 2 lớp 11 được chuyển từtrường THPT Lê Viết Tạo sang (do sát nhập trường) Trong quá trình giảng dạymôn Tin học, tôi thấy gần như các em không chú tâm học môn Tin học nói chung
và học về chương trình con nói riêng, hơn nữa các em cho rằng Tin học không phải
là môn khối, do đó các em không có hứng thú trong khi học Là một giáo viên bộmôn tôi cảm thấy rất buồn, từ đó tôi đã có ý nghĩ sẽ đưa ra những bài tập, những ví
dụ rất cơ bản gần gũi với môn học của các em như: toán, lý,…nhằm thu hút sự chú
ý học tập của các em, giúp các em yêu thích môn học hơn
Dưới đây tôi xin trình bày về sáng kiến: “Phương pháp dạy học chương
trình con và phân loại trong chương trình Tin học 11 thông qua một số bài tập tiêu biểu” Rất mong được sự góp ý chân thành từ các giáo viên và học sinh về
sáng kiến kinh nghiệm này để giúp tôi có những bài giảng hay để học sinh học tốtmôn Tin học hơn
1.2 Mục đích nghiên cứu
Mục đích nghiên cứu nhằm giúp các em hứng thú hơn với môn tin học nóichung và lập trình pascal nói riêng Nhằm giúp các em nắm được hoạt động, cấutrúc của chương trình con để giải quyết các bài tập có liên quan Qua đó giúp các
em giải quyết tốt các bài tập lập trình, yêu thích môn học hơn
1.3 Đối tượng nghiên cứu:
Học sinh lớp 11 các trường THPT nói chung và trường THPT Lương ĐắcBằng huyện Hoằng Hóa, tỉnh Thanh Hóa nói riêng
1.4 Phương pháp nghiên cứu
Phương pháp nghiên cứu là chỉ ra cấu trúc của chương trình con, lợi ích củaviệc sử dụng chương trình con Đưa ra bài tập cho học sinh nghiên cứu , từ đóhướng dẫn cụ thể cho học sinh làm bài tập đó Yêu cầu học sinh chỉ ra cú pháp ,hoạt động của chương trình con, phân biệt được thủ tục và hàm
1.5 Những điểm mới của sáng kiến kinh nghiệm
Trong sáng kiến này tôi đã vận dụng những kiến thức đã học lý thuyết vào cácbài tập mà tôi lựa chọn, các bài tập thông dụng, gần gũi với cuộc sống hàng ngày,những tính toán, suy luận logic gần gũi với môn học của học sinh như môn toán, mônlý,… và các môn học tư duy khác Các bài tập này đã được kiểm nghiệm
Trang 4bằng chương trình thực hành và học sinh rút ra được những kiến thức bổ ích cho bài học và các chương trình sau này.
2 NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM
2.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ụngchươ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ầnnhiề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áplập trình khác
2.2 Thực trạng của vấn đề nghiên cứu 2.2.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ônngữ lập trình Pascal để viết chương trình giải quyết cá bài toán trong quá trình học
Mặt khác sử dụng chương trình con để hợp lý, tiết kiệm công sức lập trình Đồngthời chương trình con giúp cho người lập trình dễ sửa chữa, dễ kiểm tra Khi học
về chương trình con, học sinh có thể hiểu sâu sắc hơn về ngôn ngữ lập trình, có thểgiúp cho các em hoàn hành những chương trình lớn hơn Chương trình con cũng làchương trình tổng hợp các kiến thức các em đã học
2.2.2 Khó khăn
Có thể nói chương trình tin học lớp 11 là một phần nội dung mới và khónhất trong chương trình tin học THPT 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 chuyển đổi từ thuật toán đã biết sang ngôn ngữ lậptrình cụ thể còn gặp nhiều khó khăn
Việc học lập trình Pascal là điểm khởi đầu giúp học sinh bước đầu tiếp cậnvới ngôn ngữ lập trình bậc cao, qua đó giúp các em có thêm định hướng trong họctập và yêu thích Tin học hơn
2.3 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ácbà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ự
2.3.1 Một số khái niệm
2.3.1.1 Chương trình con và phân loại chương trình con
Các chương trình giải các bài toán phức tạp thường rất dài, có thể gồm hàngtrăm, hàng nghìn lệnh Khi đọc những chương trình dài, rất khó nhận biết đượcchươ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ũngkhó khăn Vì vậy, vấn đề đặt ra là phải cấu trúc chương trình như thế nào để chochương trình dễ đọc, dễ hiệu chỉnh, dễ nâng cấp
Xét bài toán tính tổng bốn lũy thừa:
TLuythua = an + bm + cp + dq
Bài toán trên bao gồm bốn bài toán con tính: an, bm, cp, dq, có thể giao chobốn người, mỗi người thực hiện một bài Giá trị TLuythua là tổng kết quả của bốnbài toán con đó Ta có thể hình dung bài toán TLuythua giống như khi ta làm một
tờ báo tường, công việc được giao cho nhiều người tham gia như: người viết lờitựa, người sưu tầm truyện cười, người viết thơ, người viết văn…
Trang 5*) 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 từ nhiều vị trí trong chương trình.
*) Lợi ích của việc sử dụng chương trình con
- Tránh được việc phải viết lặp đi lặp lại cùng một dãy lệnh
- Hỗ trợ thực hiện các chương trình lớn
- Phục vụ cho quá trình trừu tượng hóa
- Thuận tiện cho phát triển, nâng cấp chương trình
2.3.1.2 Phân loại chương trình con
Chương trình con được viết dưới hai dạng thủ tục (Procedure) và hàm(Function) So sánh cấu trúc của hai kiểu chương trình con này thì tương tự nhưnhau, mặc dù cách truy xuất của chúng có khác nhau và cách trao đổi thông tintrong mỗi kiểu cũng có điểm khác nhau
*) 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ụ hàm toán học (sin (x), sqr(x), abs(x)…) hayhàm xử lý xâu (length(x), copy )
- Cấu trúc của hàm:
Function <tên hàm>[(<danh sách tham số>)]:<kiểu dữ liệu>;
*) Thủ tục (Procedure) là chương trình con thực hiện các thao tác nhất địnhnhưng 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, haythủ tục xử lý xâu…
- Cấu trúc của thủ tục:
Procedure <tên thủ tục> [(<danh sách tham số>)];
[<phần khai báo>]
Begin[<dãy các lệnh>]
End;
2.3.1.3 Biến toàn cục:
Là biến được khai báo ở đầu chương trình, nó được sử dụng bên trongchương trình chính và cả bên trong chương trình con Biến toàn cục sẽ tồn tại trongsuốt quá trình thực hiện chương trình
2.3.1.4 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 củachương trình con
2.3.1.5 Biến cục bộ, biến toàn cục
Là các biến được khai báo để dùng riêng trong chương trình con Biến cục
bộ chỉ tồn tại khi chương trình con đang hoạt động và nó sẽ được giải phóng ngaysau khi chương trình con kết thúc Nói chug, chương trình chính và các chươngtrình con khác không thể sử dụng được các biến cục bộ của một chương trình con
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ộ
Biến toàn cục là biến được dùng tại mọi vị trí trong chương trình 2.3.1.6 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
Trang 6có) là các hằng và biến chứa dữ liệu vào và ra tương ứng cớ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ự.
2.3.1.7 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ị (gọi tắt làtham trị)
2.3.1.8 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à tên các biến chứa dữ liệu ra được gọi là các tham số biến (gọitắt là tham biến)
Để phân biệt tham biến và tham trị Pascal sử dụng từ khóa Var để khai báonhững tham số biến
2.3.2.Một số bài tập áp dụng
Có thể nói môn tin học nói chung và tin học 11 nói riêng là một môn họckhó Vì thế chương trình dưới đây tôi đưa ra những ví dụ, bài tập cơ bản nhất, gầngũi với kiến thức thực tế Cụ thể các em đã gặp các bài toán này trong bộ môn toánhọc, môn vật lý… Hơn nữa những ví dụ tôi đưa ra với học sinh có lực học trungbình cũng có thể hiểu và áp dụng được Từ đó làm cho các em có hứng thú và yêuthích bộ môn tin học nói chung và lập trình pascal nói riêng
Program bai_tap1;
Uses crt;
Var a,b :integer;
Procedure Hoan_doi (Var m,n: integer);
Var tam: integer;
Begintam:=m;
m:=n;
n:=tam;
End;
Be ginClrscr;
Write (‘nhap vao hai so nguyen a,b:’);
Trang 7- Ý tưởng: ta có thể sử dụng 2 thủ tục trong 1 chương trình để giải phương trình bậc 2.Thủ tục 1 dùng để nhập các hệ số của phương trình bậc 2 Thủ tục 2 dùng để tìm nghiệm.
Program ptb2;
Ues crt;
Var a,,b,c, x1, x2: real;
Procedure nhapheso (Var a, b, c: real);
BeginWrite (‘ nhap he so bac hai:’);
If delta = 0 thenBegin
Write (‘phuong trinh co nghiem kep:’);
Write (‘x1= ‘, ‘x2 = ‘,- b/(2*a) : 6 : 2);
EndElse If delta <0 thenWriteln (‘phuong trinh vo nghiem’)Else
- Ý tưởng: ta xây dựng 3 thủ tục tương ứng lần lượt là: thủ tục nhập dữ liệu
(nhap_DL), thủ tục tính toán (Tinh_toan) và thủ tục in kết quả (In_kq)
Trang 8- Chương trình tham khảo: Program chu_nhat;
Ues crt;
Var a,b,p,s: real;
Procedure Nhap_DL;
BeginWrite (‘nhap chieu dai hinh chu nhat:’); Readln (a);
Write(‘nhap chieu rong hinh chu nhat:’); Readln *b);
End;
Procedure Tinh_toan:
BeginP:= (a+b)*2;
S:= a*b; End;
Procdure In_kq;
Begin
Writeln (‘chu vi hinh chu nhat la:’, p:8:3);
Writeln (‘dien tich hinh chu nhat la:’,s :8:3);
End;
BEGIN Clrscr;
Var xau: string;
Procedure Doi (var st: string);
Var i: byte;
BeginFor i := 1 to length (st) doSt[i] := upcase (st[i]);
End;
BEGINClrscr;
Trang 9Pricedure Dem_chu (s:string);
Var I, dem : byte;
BeginWrite (‘nhap xau can dem:’);
Readln (s);
Dem:= 0;
For i:= 1 to length (s) do
If (((s[i] >=’a’) and (s[i] <=’z’)) OR (s[i] >=’A’) and (s[i] <=’Z’))) thenDem:= Dem + 1;
Writeln (‘ket qua la:’, dem);
End;
BEGINClrscr;
g = 9,8 m/s2 Độ cao h(m) được nhập vào từ bàn phím
- Ý tưởng: trong bài toán này ta sử dụng thủ tục có tham số với tham số giá trị là độcao h được nhập từ bàn phím, tham số biến là vận tốc v khi chạm đất của một vật
Trang 10Write (‘nhap do cao h:’);
Var a,b,h,s :real;
Procedure Hinh_thang (a1, b1, h1: real; var s:real);
BeginWrite (‘nhap kich thuoc hinh thang: ’);
+ l là độ dài dây treo quả lắc (m)
+ g là gia tốc trọng trường (g = 9.18 m/s2) - Chương trình tham khảo:
Readln (l);
Trang 11T:= 2*pi* sqrt(l/g);
Writeln (’chu ky dao dong la:’, T:6:2);
End;
BEGINClrscr;
Var a,b, usc, bsc: integer;
Function UCLN (x, y : integer) : integer;
BeginWhile x <> y doBegin
If x > y then x:= x – y
ElseY:= y – x;
End;
UCLN:= x;
End;
BEGINClrscr;
Write (‘nhap hai so nguyen :’);
Readln (a,b);
Usc:= UCLN(a,b);
Bsc:= (a*b) div usc;
Writeln (‘ uoc so chung lon nhat la:’, usc);
Writeln (‘boi so chung nho nhat la:’, bsc);
Readln;
END
Bài tập 2: Viết hàm tính giai thừa cho số nguyên N
- Ý tưởng N! = 1 x 2 x 3 x 4 x…x N Ta sử dụng biến chạy i , với i là các số nguyên liên tục từ 1 đến N
Program giai_thua;
Uses crt;
Var N : integer;
Trang 12Function Gt (x: integer) : integer;
Var k, s :integer;
BeginS:= 1;
For k:= 1 to x doS:= S * k;
Gt := S;
End;
BEGINClrscr;
Writeln (‘ tinh giai thua cua so nguyen N’);
Write (‘ nhap so nguyen N:’) ;Readln (N);
- Ý tưởng: ba số a, b, c, là ba cạnh của tam giác nếu a, b, c đồng thời là 3 số không âm
và tổng 2 cạnh lớn hơn cạnh còn lại
Program tam_giac;
Uses crt;
Var a,b,c, p, s : real;
Function KT (a, b, c :rel): boolean;
Begin
If (a > 0) and (b > 0) and (c > 0) and (a + b > c) and (b + c > a) and (a + c >
b) then
KT := trueElse KT := False;
End;
BEGINClrscr;
Write (‘nhap vao 3 so a, b, c: ’);
Writeln (‘chu vi cua tam giac la:’, 2 * p :8 : 3);
Writeln (‘dien tich cua tam giac la:’, s :8 : 3);
End
Trang 13Writeln (‘day khong phai la ba canh cua mot tam giac’);
Readln;
END
Bài tập 4: Tìm giá trị lớn nhất trong ba số a, b, c nhập từ bàn phím
- Ý tưởng: Để tìm giá trị lớn nhất của hai hay nhiều số trước hết ta tìm giá trị lớn nhất của 2 số, sau đó lấy giá trị max so sánh với số tiếp theo
End;
BEGINClrscr;
Write (‘nhap vao ba so :’);
- Ý tưởng: Như trong toán học ta đã biết công thức tính diện tích hình thang Bài này
ta xây dựng hàm tính diện tích hình thang sau đó áp dụng để tính diện tích của hai thửa ruộng hình thang
Program Btap5;
Uses crt;
Var a1, b1, h1, a2, b2, h2, s: real;
Function Hinh_thang (a, b, h: real): real;
BeginHinh_thang := (a + b) * h/2;
End;
BEGINClrscr;
Write (‘nhap kich thuoc cua thua ruong 1:’);
Readln (a1, b1, h1);
Write (‘nhap kich thuoc cua thua ruong 2:’);
Readln (a2, b2, h2);
S := Hinh_thang (a1, b1, h1) + Hinh_thang (a2, b2, h2);
Writeln (‘tong dien tich cua hai thua ruong la:’, S:8:3);
Readln;
END
Trang 14Bài tập 6: Lập hàm tính chu kỳ dao động của quả lắc theo công thức:
T= 2 Trong đó:
+ l là độ dài dây treo quả lắc (m)
+ g là gia tốc trọng trường (g = 9.18 m/s2) - Chương trình tham khảo:
2*pi*sqrt(l/g); End;
BEGINClrscr;
Write(‘nhap do dai day treo:’);
End;
BeginClrscr;
Write (‘nhap ban kinh hinh tron:’);
Trang 15Bài tập 8: Lập hàm tính và đưa ra màn hình vận tốc V khi chạm đất củamột vật rơi từ độ cao h, biết rằng V = , trong đó g là gia tốc rơi tự do và g = 9,8 m/s2 Độ cao h(m) được nhập vào từ bàn phím.
- Chương trình tham khảo: Program Btap8;
End;
BEGINClrscr;
Write (‘nhap do cao h: ’);
A Program B Procedure C Var D Function
4 Mô tả nào dưới đây về chương trình có cấu trúc là phù hợp nhất?
A Chương trình có sử dụng cấu trúc mảng và bản ghi
B Sử dụng các hàm và thủ tục thư viện chuẩn
C Được chia thành nhiều chương trình con
5 Mô tả nào dưới đây về tham số là sai:
A Một hàm có thể có cả tham số giá trị và tham số biến
B Có thể truyền biến số cho tham số giá trị
C Có thể truyền giá trị cho tham số biến
D Có thể dùng tham số biến để nhận kết quả
6 Khẳng định nào sau đây là đúng?
A Chỉ có hàm mới có thể có tham số hình thức
B Cả thủ tục và hàm đều có thể có tham số hình thức
C Chỉ có thủ tục mới có thể có tham số hình thức
D Thủ tục và hàm nào cũng phải có tham số hình thức
7 Cho khai báo của một hàm:
Trang 16Function KT (k: integer): String;
Begin
If k mod 2 = 0 then KT:= ‘chan’ Else KT:= le;
End;
Muốn gán N = KT(5); thì biến N phải khai báo kiểu gì
A Var N: real; B Var N: String; C Var N: Integer; D Var N: char; 8 Sử
dụng chương trình con tìm số đảo của một số nguyên dương
Ví dụ: số nhập vào = 12345
Số đảo = 54321
2.4 Hiệu quả của sáng kiến kinh nghiệm.
Thông qua việc áp dụng các giải pháp nêu trên, phần nào đã giúp các em
tháo gỡ được những khó khăn, vướng mắc khi giải các bài toán tin học nói chung
và các bài toán về chương trình con nói riêng Giúp các em có hứng thú hơn với
môn học
Kết quả đạt được:
Sau khi dạy về chương trình con, tôi đã có bài kiểm tra áp dụng cho học sinh
các lớp và kết quả đạt được như sau:
Đề bài:
Câu 1: Hãy phân biệt tham số biến (tham biến) và tham số giá trị (tham trị)?
Cho ví dụ?
Câu 2: Cho khai báo của một hàm:
Function KT (k: integer): string;
Begin
If k mod 2 = 0 then KT:= ‘chan’ Else KT:= ‘le’;
End;
Muốn gán X:= KT(5); thì biến X phải khai báo kiểu gì:
a) Var X: real; b) Var X: string; c) Var X: integer;
Câu 3: Cho khai báo biến và khai báo đầu của thủ tục TT:
Trang 17UAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Ngoài ra do đặc thù của môn học cũng như sự đa dạng của nó nên dù đã rất
cố gắng nhưng khó tránh khỏi những thiếu sót, sai lầm, tôi rất mong được sự giúp
đỡ của đồng nghiệp và các em học sinh để việc học và dạy được tốt hơn
3.2 Kiến nghị
Nhà trường nên thành lập câu lạc bộ tin học trong trường nhằm thu hútnhững học sinh có lực học khá, giỏi và có niềm đam mê tin học để các em có thểphát huy được tối đa khả năng của mình Ngoài ra, tôi muốn đề xuất với ban giámhiệu nhà trường, các cấp lãnh đạo bổ sung và nâng cấp thêm máy tính (cả về sốlượng và chất lượng) cho các em học tập được tốt hơn
Xin chân thành cảm ơn!
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ Thanh hóa, ngày 10 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
Người viết
Trịnh Thị Kim Dung
Trang 18UAN VAN CHAT LUONG download : add luanvanchat@agmail.com
Trang 19TÀI LIỆU THAM KHẢO
1 Sách giáo khoa tin học 11: Hồ Sĩ Đàm – Hồ Cẩm Hà (NXB Giáo dục).
2 Sách bài tập tin học 11: Hồ Sĩ Đàm – Nguyễn Thanh Tùng (NXB Giáo dục).
3 Sách bài tập ngôn ngữ lập trình Pascal: Quách Tuấn Ngọc (NXB Thống kê)
4 Sách học tốt tin học 11: Trần Doãn Vinh (NXB Đại học quốc gia Hà Nội).
5 Sách tự học lập trình pascal: Mai Hương (NXB văn hóa thông tin).