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++
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++
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:
- sang_kien_kinh_nghiem_mot_so_phuong_phap_tao_hung_thu_cho_ho.doc