Thực trạng của vấn đề trước khi áp dụng SKKN Từ thực tiễn giảng dạy phần cấu trúc rẽ nhánh trong chương trình tin họclớp 11 tại trường THPT Tống Duy Tân trước đây khi còn sử dụng ngôn n
Trang 1MỤC LỤC
Trang
I Mở đầu ……… 2
1.1 Lí do chọn đề tài ……….……… 2
1.2 Mục đích nghiên cứu ……….……… 3
1.3 Đối tượng nghiên cứu ……… 3
1.4 Phương pháp nghiên cứu ……….……… 3
II Nội dung sáng kiến kinh nghiệm ……….…… 3
2.1 Cơ sở lí luận ……… ……….…… 3
2.2 Thực trạng vấn đề trước khi áp dụng SKKN ……… … 4
2.3 Giải quyết vấn đề và tổ chức thực hiện ……… 4
2.4 Hiệu quả bước đầu của SKKN ……… …….… 18
III Kết luận, kiến nghị ……….……… …… 19
3.1 Kết luận ……… ………… 19
3.2 Kiến nghị ……… …… … 20
Trang 2DẠY HỌC CẤU TRÚC RẼ NHÁNH TRONG C++
THEO ĐỊNH HƯỚNG PHÁT TRIỂN NĂNG LỰC HỌC SINH
I MỞ ĐẦU 1.1 Lí do chọn đề tài.
Qua nghiên cứu thực tế dạy học cho thấy việc rèn luyện phương pháphọc tập cho học sinh không chỉ là một biện pháp nâng cao hiệu quả dạy học màcòn là mục tiêu dạy học Hiện nay một số học sinh học rất chăm chỉ nhưng vẫnhọc chưa tốt, nhất là ở các môn tự nhiên, những em này thường học bài nào biếtbài đấy, học phần sau đã quên phần trước và không biết liên kết các kiến thứcvới nhau, không biết vận dụng kiến thức đã học trước đó vào những phần sau.Phần lớn số học sinh này khi đọc sách hoặc nghe giảng trên lớp không biết cách
tự ghi chép để lưu thông tin, lưu kiến thức trọng tâm vào trí nhớ của mình Dạyhọc theo định hướng phát triển năng lực học sinh sẽ học được phương pháp học,tăng tính độc lập, chủ động, sáng tạo và phát triển tư duy Cách học này còn pháttriển được năng lực riêng của từng học sinh không chỉ về trí tuệ, hệ thống hóakiến thức (huy động những điều đã học trước đó để chọn lọc các ý để ghi) màcòn là sự vận dụng kiến thức được học qua sách vở vào cuộc sống Kể từ nămhọc 2014 - 2015, hình thức dạy học theo định hướng phát triển năng lực đã tậphuấn đến từng giáo viên Phương pháp có ưu điểm là phát huy tối đa tính sángtạo của học sinh, phát triển năng khiếu Tất cả những điều đó làm học sinh giảm
áp lực trong học tập
Phương pháp Dạy học theo định hướng phát triển năng lực trong dạy học Tinhọc sẽ dần dần hình thành cho học sinh tư duy mạch lạc, hiểu biết vấn đề mộtcách sâu sắc, có cách nhìn vấn đề một cách hệ thống, khoa học Bắt đầu từ nămhọc 2020 – 2021 Bộ GD&ĐT cho phép các cơ sở giáo dục lựa chọn ngôn ngữlập trình có tính cập nhật, hiện đại và thông dụng như Python, C, C++…Chính
vì vậy, tôi mạnh dạn viết sáng kiến “DẠY HỌC CẤU TRÚC RẼ NHÁNH
TRONG C++ THEO ĐỊNH HƯỚNG PHÁT TRIỂN NĂNG LỰC HỌC SINH” Hy vọng rằng những kinh nghiệm này của tôi có thể góp phần giúp các
em học sinh hiểu bài hơn và có hứng thú hơn với môn Tin học
Trang 31.2 Mục đích nghiên cứu
Mục tiêu nghiên cứu của đề tài là giúp các em học sinh lớp 11 khi học cấutrúc rẽ nhánh thay vì cách tiếp cận theo nội dung sẽ là cách tiếp cận theo địnhhướng phát triển năng lực Thông qua các ví dụ và bài tập học sinh sẽ biêt vậndụng cấu trúc rẽ nhánh để viết chương trình Đồng thời thông qua các bài tậpnày để phát triển năng lực tư duy phát hiện và giải quyết vấn đề, tư duy sáng tạocho học sinh
1.3 Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài là cấu trúc rẽ nhánh trong C++ ở chươngtrình tin học 11 Sử dụng hình thức dạy học theo định hướng phát triển năng lực
để học sinh nắm vững và vận dụng thành thạo cấu trúc rẽ nhánh
1.4 Phương pháp nghiên cứu
Nghiên cứu lí luận: Nghiên cứu các tài liệu ngôn ngữ lập trình C++ nói
chung, cấu trúc rẽ nhánh trong C++ nói riêng trong chương trình tin học 11
Nghiên cứu thực tiễn: Khảo sát năng lực học sinh khi xử dụng cấu trúc rẽ
nhánh để viết chương trình
Thực nghiệm sư phạm: Tiến hành thực nghiệm trên những đối tượng học
sinh cụ thể nhằm đánh giá hiệu quả của đề tài
II NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lí luận:
Môn Tin học không phải là môn khoa học lý thuyết thuần túy vì vậy họcsinh không thể nhớ nếu như không hiểu bài Việc giáo viên bắt học sinh ghi nhớthụ động từng nội dung trong sách giáo khoa là một điều rất khó, cho dù họcsinh có cố gắng ghi nhớ thì vẫn bị lẫn lộn Do đó, giáo viên phải không ngừngđổi mới phương pháp dạy học, lấy “chuẩn kiến thức, kỹ năng” làm kim chỉ namtrong quá trình dạy học, đồng thời phải biết chọn nội dung “lồng ghép” phùhợp với kiến thức trong từng bài giảng, nhằm hình thành cho học sinh thói quentích cực, độc lập, sáng tạo và giải quyết tình huống có vấn đề Một trong nhữngphương pháp dạy học mới và hiện đại nhất được đưa vào là phương pháp dạyhọc theo định hướng phát triển năng lực Đây một phương pháp dạy học mớiđang được rất nhiều nước trên thế giới áp dụng Qua việc tìm hiểu và vận dụng
Trang 4phương pháp dạy học theo định hướng phát triển năng lực, tôi nhận thấyphương pháp dạy học này rất có hiệu quả trong quá trình dạy học của giáo viên
và học tập của học sinh
2.2 Thực trạng của vấn đề trước khi áp dụng SKKN
Từ thực tiễn giảng dạy phần cấu trúc rẽ nhánh trong chương trình tin họclớp 11 tại trường THPT Tống Duy Tân trước đây khi còn sử dụng ngôn ngữ lậptrình Pascal tôi nhận thấy rằng: Sau khi học xong, giáo viên kiểm tra lại khảnăng nhớ bài và khả năng trình bày lại phần nội dung chính trong bài thì họcsinh thể hiện rất máy móc, gò bó Học sinh chỉ nhớ qua loa và học bài theohình thức thuộc lòng, những kỹ năng vận dụng rất hạn chế Do không nhớ đượctrình tự cú pháp các câu lệnh nên học sinh không viết ra được những gì mìnhnhớ, không áp dụng được cấu trúc rẽ nhánh để lập trình giải các bài toánthường Cũng chính vì vậy mà học sinh không hoàn thành được mục tiêu kiếnthức kỷ năng mà giáo viên đã đặt ra
2.3 Giải quyết vấn đề và tổ chức thực hiện
Bước 1: Lựa chọn chủ đề, nội dung dạy học
Chủ đề: Cấu trúc rẽ nhánh.
Bước 2: Xác định yêu cầu kiến thức, kĩ năng, thái độ
Kiến thức:
- Biết cấu trúc rẽ nhánh trong lập trình
- Hiểu câu lênh rẽ nhánh trong C++
- Bước đầu hình thành khái niệm lập trình có cấu trúc
Kỹ năng:
- Viết đúng cú pháp cấu trúc rẽ nhánh
- Biết sử dụng cấu trúc rẽ nhánh để giải các bài toán
- Bước đầu có khả năng phân tích bài toán để sử dụng cấu trúc lậptrình thích hợp
Thái độ:
- Thấy được sự cần thiết của cấu trúc rẽ nhánh trong lập trình.
- Tiếp tục rèn luyện tư duy lập trình có cấu trúc
Trang 5Bước 3: Lập bảng mô tả yêu cầu cần đạt
Nội dung Loại câu hỏi/bài
rẽ nhánh dạng thiếu và dạng đủ.
HS chỉ ra, lấy được ví dụ các bài toán
và giải thích được cấu trúc
rẽ nhánh dạng thiếu và dạng
đủ trong khi giải các bài toán.
HS biết được cấu trúc if - else
HS hiểu được các thành phần và ý nghĩa trong cấu trúc if
HS hiểu được các thành phần và ý nghĩa cấu trúc
if – else.
HS lấy được ví
dụ câu lệnh sử dụng cấu trúc if.
HS lấy được ví
dụ câu lệnh sử dụng cấu trúc
if, if – else sử dụng đúng và sai cú pháp trong các ví dụ.
Hiểu được ý nghĩa câu lệnh if, if – else Giải thích được ý nghĩa, kết quả của câu lệnh
sử dụng cấu trúc if, if – else.
HS viết được chương trình
có sử dụng cấu trúc if, if – else
để giải các bài toán thường gặp.
HS viết được chương trình
sử dụng cấu trúc if, if - else kết hợp các thao tác khác để giải các bài toán tổng hợp, thực hiện một tình huống mới trong bài toán lập trình.
Trang 6Bài tập
thực hành HS vận dụngcấu trúc if, if –
else cùng với các câu lệnh khác đã học để viết được chương trình hoàn chỉnh giải quyết vấn đề trong tình huống quen thuộc.
HS vận dụng cấu trúc if, if – else hợp với các thao tác nhập xuất, các câu lệnh khác
đã học để viết được chương trình hoàn chỉnh giải quyết vấn đề trong tình huống mới.
HS hiểu được các thành phần và ý nghĩa trong cấu trúc switch – case.
HS lấy được ví
dụ câu lệnh sử dụng cấu trúc switch - case
sử dụng đúng
và sai cú pháp cấu trúc switch – case trong các ví dụ.
Hiểu được ý nghĩa câu lệnh switch - case Giải thích được ý nghĩa, kết quả của câu lệnh
sử dụng cấu trúc switch – case.
HS viết được chương trình
có sử dụng cấu trúc switch - case để giải các
thường gặp.
HS viết được chương trình
sử dụng cấu trúc switch - case kết hợp các thao tác khác để giải các bài toán tổng hợp, thực hiện một tình huống mới trong bài toán lập trình Bài tập
thực hành HS vận dụngcấu trúc switch
- case cùng với các câu lệnh khác đã học để viết được chương trình hoàn chỉnh giải quyết vấn đề trong tình huống quen thuộc.
HS vận dụng cấu trúc switch – case kết hợp với các thao tác nhập xuất, các câu lệnh khác
đã học để viết được chương trình hoàn chỉnh giải quyết vấn đề trong tình huống mới.
Trang 7Bước 4: Đề xuất năng lực có thể hướng tới
Qua dạy học chủ đề “cấu trúc rẽ nhánh” có thể hướng tới hình thành và
phát triển năng lực:
- Năng lực sử dụng ngôn ngữ, viết được cấu trúc rẽ nhánh bước đầu làmquen với lập trình có cấu trúc
- Năng lực thực hành áp dụng cấu trúc rẽ nhánh giải các bài toán
- Năng lực thực hành, vận dụng kiến thức tin học vào cuộc sống
Bước 5: Tiến trình dạy học
Chuẩn bị của giáo viên và học sinh:
- Chuẩn bị của học sinh: Sách GK tin 11, vở ghi
- Chuẩn bị của giáo viên:
+ Giáo án, Sách GK Tin 11, Sách GV Tin 11, chuẩn kiến thức kĩ năng Tinhọc 11, máy tính, máy chiếu;
+ Giáo viên chuẩn bị các chương trình có ứng dụng cấu trúc rẽ nhánh ởcác mức độ biết, hiểu, vận dụng (sử dụng để chạy minh họa các chương trìnhtrong C++ và trình chiếu)
Chương trình kiểm tra các giá trị thỏa mãn điều kiện nhất định (chương trinh 1- hoạt động 4)
Chương trình giải phương trình bậc nhất (chương trinh 2- hoạt động 4) Chương trình sử dụng cấu trúc switch - case (chương trình 3- hoạt động 6).
Chương trình bài tập 1- vận dụng thấp cấu trúc rẽ nhánh (chương trình 4
-Hoạt động 1 Lựa chọn tình huống công việc (gợi động cơ).
Gv đặt vấn đề trong thực tế có những công việc thực hiện nếu điều kiệnnào đó sảy ra:
Ví du 1: Nếu Trời mưa thì lớp đi trồng cây (dạng 1)
Trang 8Nếu trời mưa thì lớp đi trồng cây ngược lại (nếu không thì) lớpdọn vệ sinh phòng học 11A (dạng 2)
Gv nêu vấn đề vậy trong việc giải các bài toán trong tin học trường hợpcác công việc thực hiện khi điều kiện nào đó sảy ra giải quyết như thế nào?
Hoạt động 2: Phát hiện tình huống có vấn đề.
Gv đặt vấn đề em hãy giải và biện luân phương trình bậc nhất
Ví dụ 2: Giải và biện luân phương trình
Nếu a = 0 và b = 0 thì phương trình có vô số nghiệm
Nếu a = 0 và b ≠ 0 thì phương trình vô nghiệm
Nếu a ≠ 0 thì phương trình có nghiệm –b/a
Gv gợi động cơ: Để thực hiện yêu cầu công việc này trong tin học chúng
ta có cấu trúc rẽ nhánh if
Hoạt động 3: Tìm hiểu cấu trúc if trong C++
Gv trình bày để học sinh biết được cấu trúc if dạng thiếu và dạng đủ trongC++
* Cấu trúc if dạng thiếu
Cú pháp:
if (Điều kiện)
< Khối lệnh >;
Trong đó điều kiện là biểu thức logic có giá trị đúng (true) hoặc sai (false).
Gv trình bày ý nghĩa cấu trúc if dạng thiếu nếu điều kiện đúng (biểu thứcđiều kiện có giá trị true) thì khối lệnh được thực hiên
Gv trình bày cấu trúc if dạng đủ (cấu trúc if – else)
Cú pháp:
if (Biểu thức)
<Khối lệnh 1>;
else
Trang 9<Khối lệnh 2>;
Gv trình bày ý nghĩa cấu trúc if dạng đủ nếu điều kiện đúng (true) thì khốilệnh 1 được thực hiên Ngược lại (điều kiện sai –false) thì khối lệnh 2 được thựchiện
Gv Chú ý cho học sinh nếu khối lệnh có nhiều câu lệnh thì các câu lệnhtrong khối lệnh đặt trong dấu cặp dấu ngoặc {}
Gv đưa ra các ví dụ câu lệnh if dạng thiếu và dạng đủ đơn giản
Ví dụ 3: if (a>0) cout<<”la so duong”;
Hoạt động 4: Áp dụng câu lệnh if giải các bài toán đơn giản
Gv đặt vấn đề yêu cầu hoàn thành ví dụ sau
Vi dụ 5: Cho các giá trị thực a,b,c Em hãy viết câu lệnh kiểm tra a, b, c cóphải tương ứng là độ dài 3 cạnh của tam giac hay không? (a>0; b>0; c>0)
Gv nhận xét, sửa chữa phần trình bày của học sinh
if (a>0&&b>0&&c>0&&(a+b)>c&&(b+c)>a&&(a+c)>b)
cout<<”la 3 canh cua tam giac”;
else
cout<<”khong phai 3 canh tam giac”;
Gv chuẩn bị chương trình: Nhập từ bàn phím các giá trị thực a, b, c Kiểm
tra và cho biết a, b, c có phải tương ứng là 3 cạnh của tam giác (chương trình 1)
Gv chạy chương trình, chiếu trên máy chiếu Lưu ý học sinh quan sát cáccâu lệnh trong chương trình, quan sát kết quả khi chạy chương trình (đây làchương trình đầu tiên mà các em được làm quen có sử dụng cấu trúc if – else)
#include <bits/stdc++.h> //chuong trinh 1
Trang 10Gv chiếu trương trình đã được chuẩn bị sẵn Chạy chương trình có sửdụng việc nhập dữ liệu cho các giá trị thực a, b, c Lưu ý nhập các test đặc biệt
để học sinh nhận ra được ý nghĩa của câu lệnh if (chương trình 2)
#include <bits/stdc++.h> //Chuong trinh 2
Trang 11cout<<" phuong trinh vo nghiem";
Gv lưu ý học sinh trong trương trình trên ta sử dụng ba câu lệnh if dạngthiếu Ngoài cách làm như trên ta có thể sử dụng câu lệnh if dạng đủ (if- else),nhấn mạnh có thể sử dụng cấu trúc if – else lồng nhau
Hoạt động 5: Tìm hiểu cú pháp câu lệnh switch - case
Gv gợi động cơ chúng ta đã tìm hiểu cấu trúc câu lệnh if dang thiếu vàdang đủ Ở dang thiếu khi điều kiện đúng (true) thì khối lệnh đươc thực hiên, ởdạng đủ khi điều kiện đúng thì khối lệnh 1 thực hiện ngược lại khi điều kiện sai(false) thì khối lệnh 2 được thực hiện Trong thực tế có những bài toán khôngphải chỉ có 2 trường hợp của biểu thức điều kiện
Gv giới thiệu cấu trúc switch
Trang 12đây là câu lệnh thoát khỏi cấu trúc switch – case (ghi nhớ câu lệnh break dùng
để kết thúc cấu trúc switch – case).
Hoạt động 6: Sử dụng cấu trúc switch để giải các bài toán đơn giản.
Gv dẫn dắt các em hoàn thành ví du 6
Bài toán: Nhập số nguyên dương N từ bàn phím (0≤ N<10) Cho biết sốvừa nhập là số mấy – bằng chữ (bài toán đọc số)
Gv nhận xét đánh giá phần trình bày của học sinh chiếu chương trình
đã chuẩn bị trước lên màn hình máy chiếu (chương trình 3)
#include <bits/stdc++.h> //chương trinh 3
Trang 13case 3: cout<<" so ba";
sẽ nắm rõ thêm về ý nghĩa cấu trúc switch – case
Hoạt động 7: Vận dụng cấu trúc rẽ nhánh giải các bài toán thường gặp (vận
dụng thấp)
Gv đặt vấn đề yêu cầu học sinh hoàn thành bài toán sau (bài tập giải quyết tình huống quen thuộc).
Bài toán 1: Lập trình nhập từ bàn phím điểm trung bình của học sinh.
Đưa ra xếp loại học lực của học sinh (giả thiết học lực gồm các lọai Yếu, Trungbình, Khá, Giỏi; các môn thành phần đều đạt yêu cầu không vi phạm quy địnhxếp loại học lực) (0 ≤ dtb ≤ 10)
Gv gợi ý để học sinh có thể sử dụng câu lệnh rẽ nhánh để thực hiện bàilập trình
Gv kiểm tra nhận xét cho điểm bài làm của học sinh (học sinh có thể làmtrực tiếp trên máy tính hoặc làm code trên giấy)
Trang 14Gv chiếu chương trình hoàn chỉnh đã được chuẩn bị sẵn Có thể cho họcsinh thực hiện chạy chương trình, nhập dữ liệu hiển thị kết quả trên máy chiếu
(chương trình 4).
Gv nhắc các em quan sát chương trình không ghi chép.
include <bits/stdc++.h> // chương trình 4
Bai toán 2: Nhập từ bàn phím sồ nguyên dương T, N tương ứng là tháng
và năm (0 < T ≤ 12; 0 < N ≤ 2022) Cho biết tháng T năm N có bao nhiêu ngày
Gv có thể gợi ý số ngày của các tháng trong năm Lưu ý số ngày trongtháng 2 có sự khác nhau ở năm nhuận và năm không nhuận Khi đó học sinh sẽbiết chọn lựa cấu trúc rẽ nhánh thích hợp để giải quyết bài toán
Gv kiểm tra phần trình lập trình của học sinh trên máy tính (hoặc codechương trình trên giấy) đồng thời sửa chữa nhận xét việc hoàn thành công việccủa học sinh