Sáng kiến kinh nghiệm Một số phương pháp tạo hứng thú cho học sinh học ngôn ngữ lập trình C++ và một số kinh nghiệm dạy sử dụng hàm trong ngôn ngữ C++

doc 33 trang sk11 06/07/2024 1420
Bạn đang xem 20 trang mẫu của tài liệu "Sáng kiến kinh nghiệm Một số phương pháp tạo hứng thú cho học sinh học ngôn ngữ lập trình C++ và một số kinh nghiệm dạy sử dụng hàm trong ngôn ngữ C++", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Một số phương pháp tạo hứng thú cho học sinh học ngôn ngữ lập trình C++ và một số kinh nghiệm dạy sử dụng hàm trong ngôn ngữ C++

Sáng kiến kinh nghiệm Một số phương pháp tạo hứng thú cho học sinh học ngôn ngữ lập trình C++ và một số kinh nghiệm dạy sử dụng hàm trong ngôn ngữ C++
 1
 BÁO CÁO SÁNG KIẾN
 Đề tài :
Một số phương pháp tạo hứng thú cho học sinh học ngôn ngữ lập trình 
 C++ và một số kinh nghiệm dạy sử dụng hàm trong ngôn ngữ C++
 Lĩnh vực(mã)/cấp học: Tin học (14)/THPT
 Tác giả: Nguyễn Thị Út
 Trình độ chuyên môn: Cử nhân sư phạm tin học
 Chức vụ: Giáo viên tin học
 Nơi công tác: Tổ vật lý- công nghệ - tin học 
 Trường THPT C Nghĩa Hưng
 Nam Định, ngày 28 tháng 10 năm 2020 3
 BÁO CÁO SÁNG KIẾN
I. ĐIỀU KIỆN HOÀN CẢNH TẠO RA SÁNG KIẾN
1. Lý do chọn đề tài:
 Trong dạy học nói chung, trong dạy học Tin học nói riêng, vấn đề đặt ra là 
cần phải đổi mới chiến lược đào tạo con người. Đặc biệt cần đổi mới phương 
pháp dạy học theo hướng phát triển thế hệ mới năng động, sáng tạo nhằm tạo 
ra nguồn lực nội sinh cho mỗi con người đồng thời tạo nên động lực cho sự 
phát triển kinh tế - xã hội.
 Luật giáo dục điều 24.2 đã ghi rõ: “Phương pháp dạy học phổ thông phải 
phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với 
từng đặc điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, 
rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, 
đem lại niềm vui, hứng thú học tập cho học sinh”.
 Mục đích, nội dung và phương pháp luôn có mối quan hệ biện chứng với 
nhau. Song song với việc nâng cao chất lượng nội dung sách giáo khoa thì 
việc đổi mới phương pháp dạy học là điều bức thiết.
 Môn Tin học cũng giống như nhiều môn học khác ở trường THPT, nó có 
một vị trí đặc biệt không thể thiếu được trong thời đại hiện nay. Tin học 11 là 
cơ sở để hình thành kiến thức, kỹ năng lập trình của bộ môn Tin học ở cấp 
THPT. Ngôn ngữ lập trình pascal được dạy trong chương trình Tin học 11 là 
một trong những ngôn ngữ quen thuộc đối với nhiều thế hệ học sinh, sinh 
viên và các nhà lập trình viên. Đó là ngôn ngữ có tính sư phạm khá cao, 
chính vì vậy ngôn ngữ này được lựa chọn để đưa vào giảng dạy cho học sinh 
và sinh viên.
 Tuy nhiên, ngôn ngữ lập trình Pascal có nhiều hạn chế như: Tính ứng 
dụng thực tiễn để tạo ra các sản phẩm thương mại thấp, hơn nữa đã nhiều 
năm qua các nhà phát triển phần mềm đã không nâng cấp và phát triển ngôn 
ngữ pascal. Ngày nay, có rất nhiều ngôn ngữ lập trình mới hơn pascal ra đời 
như ngôn ngữ C, C++, Java,... các ngôn ngữ này cung cấp các công cụ cho 
phép người lập trình tạo ra các sản phẩm có tính ứng dụng thực tiễn rất lớn. 
Trong đó nổi lên là ngôn ngữ lập trình C++.
 Ngôn ngữ lập trình C++ ra đời vào giai đoạn đầu những năm 80 của thế 
kỷ 20, và không ngừng được phát triển cho đến tận ngày nay. Đó là ngôn ngữ 
lập trình được dùng nhiều nhất hiện nay, đa số phần mềm thương mại được 
viết bằng C++, nó đã giải quyết được vô số những thách thức trong các 
ngành công nghiệp. C++ là ngôn ngữ chính quyết định trải nghiệm trên các 5
 Để nâng cao chất lượng giáo dục của nhà trường, thì phải nâng cao được 
chất lượng từ các bộ môn, trong đó có môn tin học. Làm thế nào để học sinh 
lĩnh hội được kiến thức từ nhiều hướng, nhiều khía cạnh khác nhau từ lý 
thuyết và từ thực tế thực hành học sinh hiểu được kiến thức, có những tư duy, 
sáng tạo dẫn tới ham học hỏi, yêu thích môn học mà học sinh trường THPT C 
Nghĩa Hưng đang cần. 
3. Đối tượng nghiên cứu:
 Nghiên cứu các giải pháp để tạo hứng thú cho học sinh khi học lập trình 
C++ tại trường THPT C Nghĩa Hưng, nhằm mục đích nâng cao chất lượng 
giáo dục môn Tin học tại trường.
4. Phương pháp nghiên cứu
- Phương pháp nghiên cứu xây dựng cơ sở lý thuyết: Tìm đọc, nghiên cứu, 
 phân tích các tài liệu liên quan. Rút kinh nghiệm trong thực tiễn giảng 
 dạy. Từ đó xây dựng cơ sở lý luận của đề tài.
- Phương pháp điều tra khảo sát thực tế, thu thập thông tin: Sử dụng phiếu 
 điều tra về hứng thú học tập môn Tin học của học sinh trước và sau khi 
 tác động. Từ đó đề ra những giải pháp phù hợp để nâng cao hứng thú học 
 môn Tin học cho học sinh.
- Phương pháp thống kê, xử lý số liệu: Sử dụng phương pháp thống kê để 
 xử lý số liệu, so sánh kết quả thu thập được ở lớp thực nghiệm và lớp đối 
 chứng.
II. MÔ TẢ GIẢI PHÁP.
1. Mô tả giải pháp trước khi tạo ra sáng kiến
 Trường THPT C Nghĩa Hưng có 30 lớp trong đó có 10 lớp khối 11(gần 
400 học sinh).Các em lớp 11A1 có tư duy tốt đối với các môn khoa học tự 
nhiên, và đa số các em đều có xu hướng học các ngành nghề liên quan đến 
công nghệ thông tin trong tương lai. Chính vì vậy, việc học sinh tiếp cận 
ngôn ngữ lập trình cũ như pascal sẽ làm cho các em cảm thấy nhàm chán 
thiếu hứng thú bởi thực tế hiện này ngôn ngữ lập trình pascal rất ít được sử 
dụng như các báo điện tử đã đề cập:
https://thanhnien.vn/giao-duc/viet-nam-van-dang-day-cai-the-gioi-khong-
con-day.
PGS-TS Phạm Thế Bảo, giảng viên khoa Công nghệ thông tin Trường ĐH 
Sài Gòn, chia sẻ nhiều tâm tư về việc dạy học tin học trong trường phổ thông 
hiện nay. Ông Bảo nói: "Môt số giáo viên dạy tin học trường phổ thông cho 
tôi biết họ đang dạy môn ngôn ngữ lập trình Pascal, trong khi trên thế giới 
không còn nơi nào dạy chương trình này” 7
giải pháp tạo hứng thú cho học sinh, để học sinh dễ hiểu và yêu thích môn 
học, say mê môn học tránh học đối phó, học vẹt, từ đó các em sẽ học hiệu 
quả hơn và các em học sinh trong đội tuyển luôn yêu thích môn học, đam mê 
và theo đuổi ước mơ của mình và có thành tích cao trong kì thi giỏi cấp tỉnh
 2. Mô tả giải pháp sau khi có sáng kiến kinh nghiệm
2.1. Giải pháp thứ nhất: Tạo hứng thú bằng các tác động tâm lý thông 
qua các câu chuyện về lập trình và các diễn đàn dạy và học lập trình 
C++
 Để học sinh học tốt môn học, thì ngay từ ban đầu giáo viên cần lôi cuốn 
học sinh, tạo hứng thú cho học sinh qua các bài giảng, thông qua các câu 
chuyện và tình huống có vấn đề kích thích khả năng tìm tòi sáng tạo của học 
sinh.
 Ngay ban đầu khi giảng dạy về lập trình, để các em hứng thú hơn trong 
học tập thì ngoài những kiến thức và bài giảng sinh động, tôi thường lồng 
trong các tiết dạy những câu chuyện liên quan đến lập trình. Thông qua các 
câu chuyện về các tấm gương tin học trẻ nhen nhóm hứng thú và tình yêu 
dành cho công nghệ thông tin, đam mê lập trình và góp phần định hướng 
nghề nghiệp tương lai cho các em.
 Ví dụ 1: Tấm gương cậu bé lớp 6 tự học ngôn ngữ lập trình và giành nhiều 
giải thưởng (
ngon-ngu-lap-trinh-va-gianh-nhieu-giai-thuong.html)
Từ năm lớp 2, Võ Nguyễn Minh Triết (Trường THCS Trần Hưng Đạo, TP. 
Quảng Ngãi) bắt đầu làm quen với các ngôn ngữ lập trình và mày mò làm 
chương trình "Đường lên đỉnh Olympia". Bước sang năm lớp 6, Triết vượt 
qua nhiều đàn anh để giành giải Nhì trong Hội thi Tin học trẻ tỉnh Quảng 
Ngãi.
Ví dụ 2: Không có bằng cấp 3 lẫn đại học, tôi đã trở thành kỹ sư phần mềm ở 
Facebook như thế nào? ( HTTPS://EHKOO.COM/BAI-VIET/EVAN-
PRIESTLEY-FACEBOOK)
Đây là câu chuyện của Evan Priestley, một lập trình viên thậm chí không có 
cả bằng tốt nghiệp phổ thông lẫn đại học, đã đảm nhiệm vị trí kĩ sư phần 
mềm tại Facebook từ 2007 đến 2011
Ví dụ 3: Đến từ vùng quê Quảng Ngãi đầy nắng gió, chàng trai sinh năm 96 -
 Lê Minh Hoàng hiện đang là sinh viên tại Học viện Kỹ thuật mật mã, đồng 
thời cũng là nhà đồng sáng lập hai doanh nghiệp về Truyền thông – Digital 
Marketing uy tín hàng đầu hiện nay là công ty DigiPublic và 9
2.2. Giải pháp thứ 2. Tạo hứng thú cho học sinh thông qua việc sử dụng 
phần mềm Crocodile ICT để mô tả thuật toán giúp học sinh hiểu rõ bản 
chất của thuật toán trước khi áp dụng ngôn ngữ C++ để lập trình.
 Bởi rõ ràng chúng ta đã biết, khi lập trình cho một bài toán thì việc các 
em tiếp cận đầu tiên đó là thuật toán của bài toán đó. Và tôi chọn phần mềm 
Crocodile ICT để minh họa lại các bước thực hiện thuật toán giúp các em 
hiểu rõ về hoạt động của thuật toán. Khi đã hiểu rõ thuật toán của bài toán rồi 
thì việc thể hiện lại thuật toán bằng ngôn ngữ lập trình trở nên dễ dàng hơn.
 Trong quá trình dạy Tin học 11 đặc biệt cho các lớp ban khoa học tự 
nhiên, tôi chú trọng rất nhiều trong việc hình thành tư duy giải thuật cho học 
sinh, giúp các em tự tin hơn khi gặp những bài toán tương tự và tìm ra giải 
thuật phù hợp. Đây chính là nền tảng giúp các em tự tin khi tiếp cận những 
chương trình lập trình khó hơn trong tương lai.
Ví dụ 1: Khi dạy phần cấu trúc rẽ nhánh và lặp. Tôi lựa chọn các bài tập để 
mô phỏng thuật toán trên phần mềm giúp các em hiểu rõ bản chất của rẽ 
nhánh và lặp trong thuật toán. Một số bài tập đơn giản như sau:
Bài tập 1: Giải phương trình bậc nhất ax + b = 0
Sơ đồ thuật toán trên phần mềm Crocodile ICT: 11
c. Thuật toán
- Bước 1: S←1/a; N←0;
- Bước 2: N←N+1;
- Bước 3: Nếu N>100 thì chuyển sang bước 5
- Bước 4: S←S+1/(a+N) rồi chuyển sang bước 2
- Bước 5: Đưa tổng S ra màn hình, kết thúc.
Mô phỏng thuật toán bằng phần mềm Crocodile ICT:
Bài tập 4 : Với a là số nguyên và a>2, viết thuật toán tính tổng sau:
 S= 1/a+1/(a+1) +..+1/(a+N)+..cho đến khi 1/(a+N) < 0.0001
a. Xác định bài toán
- Input: Nhập vào số nguyên a với a >2
- Output: Tổng S
b. Ý tưởng
Khởi tạo giá trị ban đầu cho s = 1/a.
Tiếp theo cộng vào tổng S một giá trị 1/(a+N) (với N nhận giá trị từ 1,2.) 
đến khi thỏa mãn điều kiện 1/(a+N) < 0.0001
c. Thuật toán
Bước 1: S←1/a; N←0;
Bước 2: Nếu 1/(a+N) < 0.0001 thì chuyển sang bước 5
Bước 3: N←N+1;
Bước 4: S←S+1/(a+N) rồi chuyển sang bước 2
Bước 5: Đưa tổng S ra màn hình, kết thúc.
Mô phỏng thuật toán bằng phần mềm Crocodile ICT: 13
Ví dụ 1: Khi dạy phần Câu lệnh rẽ nhánh dạng thiếu tôi lập bảng so sánh để 
học sinh dễ liên hệ giữa ngôn ngữ pascal mà các em đã làm quen và ngôn 
ngữ lập trình C++ như sau:
Trong Pascal Trong C++
If then If
; { ;}
Ví dụ: Ví dụ:
If a > b then max := a; If (a > b) 
 {max := a;}
Bài tập 1: Cho số nguyên N. Hãy tính giá trị tuyệt đối của N.
Trong Pascal Trong C++
Program GT_tuyetdoi; #include 
Uses Crt; using namespace std;
Var n : integer; int main()
Begin { int n;
 Write('Nhap gia tri n:'); cout<<"Nhap gia tri n:"<<endl;
 readln(n); cin>>n;
 if n < 0 then n := n*(-1); if (n<0) {n = (-1)*n;}
 writeln('Gia tri tuyet doi cua n cout<<"Gia tri tuyet doi cua n 
la:',n); la:"<<n;
 readln }
end.
Ví dụ 2. Câu lệnh rẽ nhánh dạng đủ:
Trong Pascal Trong C++
If then If
 { ;}
Else ; Else
 {;}
Ví dụ 1: Ví dụ 1:
If a > b then max := a If (a > b)
else max := b; {max := a;}
 Else
 {max := b;}
- Trong đó: - Trong đó:
+ Biểu thức điều kiện là biểu thức + Biểu thức điều kiện là biểu thức 
logic logic 15
end. 17
 x1 := (-b - sqrt(D))/(2*a); x2 = (-b - sqrt(D))/(2*a);
 x2 := -b/a - x1; cout<<"PT co hai nghiem 
 writeln('x1 = ', x1:8:1,' x2 "<<x1<<" "<<x2;
=', x2:8:1); } 
 end; }
 readln
end.
Chú ý: Qua ví dụ trên ta thấy dòng lệnh khai báo các biến: float a, b, c, x1, 
x2, d; được viết trong hàm main (phần thân của chương trình). Điều này cho 
chúng ta biết trong ngôn ngữ lập trình C++ cho phép khai báo các biến 
không chỉ ở phần khai báo của chương trình mà còn ngay trong phần thân 
chương trình miễn là khai báo trước khi gọi thực hiện các biến đó là được. 
Còn Pascal chỉ khai báo phần khai báo biến mà thôi.
Ví dụ 2. Cũng tương tự như phần cấu trúc rẽ nhánh, khi dạy các phần như 
cấu trúc lặp; phần kiểu dữ liệu có cấu trúc; tệp và thao tác với tệp tôi đều liên 
hệ so sánh ngôn ngữ lập trình pascal với ngôn ngữ lập trình C++ để các em 
dễ tiếp cận hơn. Nhưng do giới hạn số lượng trang của sáng kiến, nên tôi chỉ 
xin trình bày một vài ví dụ tiêu biểu như sau:
Bài tập 4: Với a là số nguyên và a>2, viết thuật toán tính tổng sau:
S= 1/a+1/(a+1) +..+1/(a+100).
 Trong pascal Trong C++
 Program tong_1; #include 
 uses crt; using namespace std;
 var s : real; a,n : integer; int main()
 Begin { float a,n,s;
 write('Nhap gia tri a:'); cout<<"Nhap gia tri a: "<<endl;
 readln(a); cin>>a;
 s := 1/a; s = 1/a;
 for n := 1 to 100 do for (n=1;n<=100;n++) {s = s + 
 s := s + 1/(a+n); (1/(a+n));}
 writeln('Tong s la:', s:8:2); cout<<"Tong s la: "<<s;
 readln }
 end.

File đính kèm:

  • docsang_kien_kinh_nghiem_mot_so_phuong_phap_tao_hung_thu_cho_ho.doc