Bài 10 Cấu trúc lặp chương trình tin học 11 là một bài học mang tính thực tiễn cao nhưng mục 3 “Lặp với số lần chưa biết trước và câu lệnh while” là một nội dung kiến thức trừu tượng và
Trang 1TRƯỜNG THPT TRIỆU SƠN 1
SÁNG KIẾN KINH NGHIỆM
THANH HOÁ NĂM 2022
Trang 2MỤC LỤC
1 PHẦN MỞ ĐẦU 3
1.1 Lý do chọn đề tài 3
1.2 Mục đích nghiên cứu 4
1.3 Đối tượng nghiên cứu 4
1.4 Phương pháp nghiên cứu 4
2 NỘI DUNG 5
2.1 Cơ sở lý luận của sáng kiến kinh nghiệm 5
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến 5
2.3 Các giải pháp đã sử dụng để giải quyết vấn đề 6
2.3.1 Lưu ý về Phương pháp 6
2.3.2 Lưu ý về Nội dung kiến thức 6
2.4 Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục, với bản thân, với đồng nghiệp 19
2.4.1 Năm học chưa áp dụng SKKN 19
2.4.2 Năm học áp dụng SKKN 20
3 KẾT LUẬN - KIẾN NGHỊ 20
3.1 Những mặt đạt được và chưa đạt được 20
3.2 Nguyên nhân 21
TÀI LIỆU THAM KHẢO 22
DANH MỤC SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC HỘI ĐỒNG SÁNG KIẾN KINH NGHIỆM NGÀNH GIÁO DỤC VÀ ĐÀO TẠO HUYỆN, TỈNH VÀ CÁC CẤP CAO HƠN XẾP LOẠI TỪ C TRỞ LÊN……… 23
Trang 31 PHẦN MỞ ĐẦU
1.1 Lý do chọn đề tài
Chương trình Tin học 11 là chương trình khó trong 3 năm của cấp họcTrung học phổ thông Là môn học thuộc khối tự nhiên, ngoài việc phải học lýthuyết và tư duy, sáng tạo các em học sinh phải có kĩ năng thực hành, viếtchương trình để thực thi, sửa lỗi trên máy tính, bên cạnh đó các kiến thức tạothành một mạch xuyên suốt nên để học tốt được bộ môn, học sinh phải xâuchuỗi các kiến thức lại với nhau một cách hệ thống và thực hành chăm chỉ
Học tốt môn Tin học sẽ giúp học sinh thích ứng nhanh với cuộc sống,với sự phát triển của thời đại 4.0, hỗ trợ cho việc học và thực hiện công việcrất hiệu quả, do đó Ban dự thảo thay sách của Bộ Giáo dục xác định Tin họcgiữ vai trò chủ đạo trong việc chuẩn bị cho học sinh khả năng tiếp nhận, mởrộng tri thức và sáng tạo trong thời đại thông tin, kết nối và toàn cầu hóa.Thay vì môn học tự chọn như hiện nay vai trò môn tin học được nâng lên, trởthành môn bắt buộc có phân hóa xuyên suốt từ lớp 3 đến lớp 12 và là môn thituyển sinh đại học như những môn Toán, Lí, Hóa, khác Do đó để đáp ứngđược xu thế mới mỗi giáo viên cần phải chuẩn bị trước tâm thế, cập nhật kịpthời kiến thức và kĩ năng của chương trình mới để hiệu quả giáo dục đạt mứccao nhất
Bài 10 Cấu trúc lặp chương trình tin học 11 là một bài học mang tính thực tiễn cao nhưng mục 3 “Lặp với số lần chưa biết trước và câu lệnh while”
là một nội dung kiến thức trừu tượng và khi tiếp cận các em học sinh còn gặpnhiều vướng mắc
Khi học phần “2.Lặp với số lần biết trước và câu lệnh for” học sinh chỉ
cần xác định rõ giá trị đầu, giá trị cuối, bước nhảy của biến điều khiển các emhoàn toàn có thể viết được lệnh Còn với câu lệnh while các em cần phải xácđịnh được các giá trị khởi tạo ban đầu, điều kiện lặp, câu lệnh lặp, câu lệnhlàm thay đổi giá trị của biến trong điều kiện lặp để không bị lặp vô hạn vàchương trình cho kết quả chính xác
Trang 4Chính vì những lí do đó tôi viết đề tài “Một số lưu ý khi dạy câu lệnh
lặp while trong nội dung phần 3, Bài 10: Cấu trúc lặp – Tin học 11” để
phân tích và giải quyết những điểm khó của học sinh một số lớp 11 trường
THPT Triệu Sơn 1 khi dạy nội dung “Lặp với số lần chưa biết trước và câu lệnh while” của bài 10 Cấu trúc lặp, những điểm lưu ý khi giải bài tập sử
dụng lệnh while trong Bài 12 Kiểu xâu - SGK Tin học 11
1.2 Mục đích nghiên cứu
Nâng cao chất lượng giảng dạy nội dung kiến thức lặp với số lần chưabiết trước (Câu lệnh lặp while) ở bài 10 Cấu trúc lặp và cách giải một
số bài tập sử dụng lệnh while trong Bài 12 Kiểu xâu - SGK Tin học 11
Tạo sự hứng thú, chủ động tiếp thu kiến thức cho học sinh với mônhọc, rèn luyện kĩ năng lập trình, yêu thích lập trình
Đổi mới phương pháp dạy học và kiểm tra đánh giá nhằm đáp ứng kịpthời những thay đổi về bộ môn do Bộ Giáo dục và đào tạo đề xuất
1.3 Đối tượng nghiên cứu
Khách thể nghiên cứu và đối tượng nghiên cứu của đề tài là việc họcnội dung lý thuyết và thực hành câu lệnh lặp while của học sinh một sốlớp 11 trường THPT Triệu Sơn 1
Ngôn ngữ lập trình sử dụng trong đề tài là Ngôn ngữ lập trình C++
1.4 Phương pháp nghiên cứu
Để thực hiện tốt việc nghiên cứu đề tài, tôi sử dụng các phương phápsau:
- Phương pháp so sánh, phân tích, tổng hợp dữ liệu;
- Phương pháp quan sát hành vi, thái độ học tập;
- Kiểm tra đánh giá.
Trang 52 NỘI DUNG
2.1 Cơ sở lý luận của sáng kiến kinh nghiệm
- Phương pháp dạy học ngôn ngữ lập trình phân tích hoạt động thành cáchoạt động thành phần tương thích nhỏ hơn để học sinh có thể dễ hiểu;
- Phương pháp phát vấn;
- Phương pháp quy nạp;
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến
Khi dạy “Bài 10 - Mục 3 - Tin học 11” tại trường THPT Triệu Sơn 1 tôinhận thấy các em học sinh thường lúng túng và mắc lỗi khi làm bài tậpcâu lệnh lặp while Các em không hiểu được bản chất, hoạt động của câulệnh nên khi viết chương trình thường mắc lỗi
Thực tế giảng dạy đặt ra vấn đề: làm thế nào để học sinh hiểu bài vàtránh được những sai lầm thường gặp là điều quan trọng Tuy nhiên, đểgiải quyết vấn đề này là không đơn giản Nên tôi đã áp dụng SKKN:
“Một số lưu ý khi dạy câu lệnh lặp while trong nội dung phần 3, Bài
10: Cấu trúc lặp – Tin học 11” vào giảng dạy.
Sau một thời gian giảng dạy, từ thực tế có thể đưa ra một số nguyênnhân dẫn đến các lỗi thường gặp của học sinh:
- Học sinh chưa biết viết biểu thức điều kiện lặp, câu lệnh lặp tổngquát hoặc thiếu lệnh thay đổi giá trị của biến trong Điều kiện để dừngvòng lặp, thiếu cặp dấu { và } để gộp nhiều câu lệnh, chưa hình dung rađược cách hoạt động của câu lệnh như thế nào dẫn đến ít HS làm đượcbài tập hoặc không làm được bài tập, nhất là những bài tập đã đổi dạng
- Trong giờ thực hành, học sinh chỉ gõ được vài dòng hoặc lập trìnhnhưng kết quả chương trình chưa chính xác hoặc có rất nhiều lỗi,không hoàn thiện được bài tập theo yêu cầu của giáo viên trong tiếthọc
- Khi gặp lỗi lặp vô hạn học sinh không biết cần phải sửa ở đâu dokhông hiểu rõ bản chất thao tác lặp và câu lệnh nào dẫn đến hiện tượngđó?
- Từ đó dẫn đến tình trạng học sinh ngại học, có thái độ uể oải khôngmuốn học nội dung lập trình Và điểm kiểm tra sau nội dung lặp thườngkhông cao
Trang 62.3 Các giải pháp đã sử dụng để giải quyết vấn đề
Sau một thời gian giảng dạy tôi rút ra được một số lưu ý để tạo sự hứngthú, chủ động cho học tích cực tìm hiểu nội dung kiến thức và giải được bàitập vận dụng câu lệnh lặp while như sau:
2.3.1 Lưu ý về Phương pháp
1 Cần vận dụng linh hoạt và sáng tạo các biện pháp đổi mới phương pháp
dạy học, kiểm tra đánh giá; khai thác triệt để cơ sở vật chất thiết bị dạy học
đã có như: máy chiếu, ti vi, phòng máy, các phần mềm hỗ trợ giảng dạy,mạng Internet; tạo các Group, các Website trao đổi học tập qua mạng, đăngtải những tài liệu - bài tập, link học, bài giảng, bài giảng Elearning, nhằmtạo sự kết nối giữa giáo viên và học sinh ngoài thời gian trên lớp và thôngqua đó giáo viên sẽ biết được những nội dung kiến thức nào học sinh khótiếp thu để điều chỉnh phương pháp giảng dạy - đánh giá cho phù hợp
2 Giáo viên tích cực tìm hiểu nội dung bài giảng và phương pháp giảng
dạy bằng cách tăng cường dự giờ các đồng nghiệp; tham gia các buổi hộigiảng để trải nghiệm, nhận xét, góp ý chuyên môn; tham khảo nhiều nguồntài liệu hữu ích trên mạng Internet; tham gia vào các Group, Website liênquan để trao đổi chuyên môn - nghiệp vụ và cập nhật kiến thức mới; viếtsáng kiến kinh nghiệm hoặc nghiên cứu khoa học sư phạm ứng dụng,
2.3.2 Lưu ý về Nội dung kiến thức
1 Thay các ví dụ khó trong sách giáo khoa thành các ví dụ dễ hơn, tăng
dần độ khó theo mức tiếp thu của lớp để tạo hứng thú học tập cho học sinh
2 Phân tích nhu cầu lặp trong cuộc sống và dẫn dắt học sinh phân biệt rõ
và nhận dạng được lặp với số lần lặp biết trước và chưa biết trước
Lặp với số lần lặp chưa biết trước thường có 2 dạng đó là lặp ẩn hoặchiện rõ ở đề bài ví dụ:
VD1: Viết chương trình tính tổng S = 1 + 2 + 3 + cho đến khi S > 50.
Trang 7Dấu hiệu nhận biết thể hiện rõ đó chính là: + và cho đến khi S > 50(điều kiện dừng lặp)
VD2: Viết chương trình nhập xâu s từ bàn phím Xóa tất cả các dấu
cách có trong s Thông báo xâu sau khi loại bỏ dấu cách ra màn hình
(Ví dụ 4, Bài 12: Kiểu xâu, trang 72, SGK Tin học 11)
Công việc lặp tại một thời điểm là xóa một dấu cách trong xâu,cho đến khi xâu không còn dấu cách nữa thì dừng (chưa biết trước sốdấu cách trong xâu) Dạng lặp ẩn với số lần lặp chưa biết trước
VD3: Viết chương trình nhập từ bàn phím một xâu kí tự S và thông báo
ra màn hình số lần xuất hiện của mỗi chữ cái tiếng Anh trong S (không
phân biệt chữ hoa hay chữ thường) (Bài 2, Bài tập và thực hành 5, trang 73, SGK Tin học 11)
Để đếm số lần xuất hiện của chữ cái tiếng Anh trong S, trướctiên ta sẽ loại bỏ các kí tự không phải chữ cái ra khỏi xâu và in hoa cảxâu lên (Vì không phân biệt chữ hoa hay thường) sau đó tiến hành đếm
số lượng từng kí tự bằng mảng đánh dấu Trong quá đó thì công việclặp: loại bỏ kí tự thừa, và in hoa từng kí tự chữ cái lên, là dạng lặp ẩnvới số lần lặp chưa biết trước
VD4: Nhập vào từ bàn phím một xâu Thay thế tất cả các cụm kí tự
anh bằng cụm kí tự em (Bài 3, Bài tập và thực hành 5, trang 73,
SGK Tin học 11)
Việc thay xâu anh bằng xâu em được thực hiện lặp đi lặp lại
cho đến khi không còn xâu anh trong xâu nữa thì dừng (chưa biết
trước xâu anh xuất hiện mấy lần) Dạng lặp ẩn với số lần lặp chưa biếttrước
3 Trình bày rõ hơn kiến thức phần cú pháp của câu lệnh và phân tích
những nội dung đó:
Trang 8*Cú pháp:
< Phần khởi tạo giá trị ban đầu>
while <Điều kiện lặp>
Điều kiện Lặp: là biểu thức Lôgic nhận giá trị true hoặc false.
Khối lệnh: thường là câu lệnh ghép dạng:
{
<Câu lệnh làm thay đổi giá trị của biến trong Điều kiện lặp>;
<Câu lệnh>;
}
Phân tích nội dung: minh họa với ví dụ sau:
Ví dụ: Viết CT tính tổng S = 1 + 2 + 3 + cho đến khi S > 50
Giáo viên dùng các phương pháp nêu vấn đề, vấn đáp, minh họa trực quantrên máy, hướng dẫn học sinh xác định:
- Input, Output, nhận dạng dạng lặp với số lần biết trước hay chưa biết
trước, dạng lặp ẩn hay hiện rõ, điều kiện dừng lặp, công việc lặp
- Phần khởi tạo giá trị ban đầu: để tạo giá trị ban đầu cho biến trong câu
lệnh lặp và giá trị ban đầu cho biến đếm điều khiển vòng lặp
Lưu ý:
+ Giá trị khởi tạo ban đầu thường là giá trị khi cộng, trừ hoặc nhân vào không làm thay đổi giá trị gốc của biến trong khối lệnh
Bài toán cộng dồn: Thường gán giá trị ban đầu là 0
Bài toán nhân dồn: Thường gán giá trị ban đầu là 1
Trang 9+ Có thể gán giá trị khác nhưng làm sai đi số lần lặp hoặc giá trị cuối cùng của bài toán.
Giá trị khởi tạo ban đầu của bài toán trên:
S= 0; để sau đó thực hiện lệnh lặp cộng dồn: S := S + i;
i= 0; khi chưa lặp thì số lần lặp = 0, để sau đó thực hiện
lệnh cộng dồn i = i +1; tăng số lần lặp
- Xác định được trong cú pháp câu lệnh while:
Điều kiện lặp: là phủ định của điều kiện dừng lặp
Trong VD, điều kiện dừng lặp là S > 50 vậy điều kiện lặp là:
Câu lệnh thực hiện thao tác tính toán:
Công việc lặp ở mỗi lần lặp là tính tổng 2 số
Trang 10Ta có:
Sban đầu = 0, iban đầu = 0
i = i +1 = 0 + 1 = 1
Do đó câu lệnh thực hiện thao tác tính toán cần lặp lại là: S = S + i;
Đoạn câu lệnh while:
Giá trị S được cộng dồn thêm i đơn vị (i tăng thêm 1 đơn vị sau mỗilần lặp) đến lúc nào đó S sẽ lớn hơn 50 và việc lặp sẽ dừng lại
0
Strước Ssau
i = N S = S + N Với: lần lặp
Tổng quát: S = S + i
Trang 11Chương trình tham khảo:
- Chạy toàn bộ chương trình của ví dụ cho học sinh hiểu rõ hoạt động của
câu lệnh Xuất thêm kết quả biến i để học sinh thấy được sau bao nhiêulần thì lệnh lặp while sẽ dừng
Kết quả sau khi thực hiện chương trình:
Biểu thức 1< 2 luôn luôn đúng do đó giá trị của biểu thức không
bao giờ nhận giá trị False để dừng câu lệnh lặp cout<< "*";
Ví dụ 2: int i= 0;
while (i < 20) cout<< "Xin Chao";
Trang 12Phần câu lệnh không có câu lệnh nào làm thay đổi giá trị củabiến i trong Điều kiện Lặp nên giá trị của i không bao giờ lớn hơnhoặc bằng 20 để dừng lặp.
đổi được giá trị biến trong điều kiện và cũng không lặp công việc gìcả
Một số dấu hiệu nhận biết Lặp vô hạn và cách thoát:
CT sẽ xuất giá trị không dừng nếu trong khối lệnh có lệnh
cout VD: Trong các ví dụ trên lệnh cout<< "Xin Chao"; bị
Trang 135 Lưu ý về cú pháp lệnh có thể thay đổi trong một số bài tập sử dụng lệnh
lặp while trong và sau bài 12 Kiểu xâu chương IV - SGK 11
Bài tập 1: Viết chương trình nhập xâu s từ bàn phím Xóa tất cả các
dấu cách có trong s Thông báo xâu sau khi loại bỏ dấu cách ra màn
hình (Ví dụ 4, bài 12 Kiểu xâu – SGK tin học 11)
Giáo viên vận dụng các phương pháp như nêu vấn đề, vấn đáp,minh họa trực quan trên máy, hướng dẫn học sinh phân tích, xác địnhInput, Output, dạng lặp, công việc lặp, điều kiện lặp, tìm dấu cách nhưthế nào?
tự dấu cách bằng kí tự rỗng: s.replace(k,1,"") )một dấu
cách tại vị trí tìm thấy được thực hiện
Lỗi sai học sinh thường mắc là điều kiện lặp, các emthường viết:
while (s.find(" ")!=0)Lệnh s.find(" ") tìm vị trí dấu cách sẽ trả về vị trí nếu tìmthấy, ngược lại nếu không tìm thấy dấu cách trong xâu thìlệnh s.find(" ") sẽ trả về giá trị 264 – 1 Do đó điều kiện
Trang 14lặp viết như trên là sai Vậy nếu trong xâu có dấu cách thìs.find(" ") phải trả về giá trị trong phạm vi từ 0 đếns.size() -1.
Cách 3:
Trong khi chưa duyệt hết xâu s, nếu kí tự s[i] khác dấucách thì cộng dồn các kí tự đó vào xâu s1 Cách làm nàytạo ra một xâu mới không chứa dấu cách
Lỗi sai thường gặp của học sinh là viết điều kiện lặp:while (i<=s.size())
Do xâu được đánh chỉ số từ 0 trở đi nên số lượng kí tựtrong xâu là s.size() thì kí tự cuối cùng sẽ có chỉ số làs.size()-1 Nếu viết điều kiện là i<=s.size() thì đoạn lệnhsau khi thực hiện sẽ bị thừa 1 dấu cách cuối cùng
Trang 15
Chương trình tham khảo:
Cả ba cách trên sau khi thực hiện trả về kết quả như sau:
Bài tập 2: Viết chương trình nhập từ bàn phím một xâu kí tự S và
thông báo ra màn hình số lần xuất hiện của mỗi chữ cái tiếng Anhtrong S (không phân biệt chữ hoa hay chữ thường)
Giáo viên vận dụng các phương pháp như nêu vấn đề, vấn đáp,minh họa trực quan trên máy, hướng dẫn HS xác định: Input,Output, dạng lặp, công việc lặp, điều kiện lặp, cách đếm số lần xuấthiện của các chữ cái trong xâu?
Trang 16Gợi ý: Đầu tiên sẽ loại bỏ các kí tự không phải là chữ cái, sau đó sẽ
in hoa hoặc in thường toàn bộ xâu kí tự (Vì không phân biệt chữ hoachữ thường) Tiếp theo đó là dùng mảng đánh dấu để đếm số lần xuấthiện các kí tự chữ cái có trong xâu
Câu lệnh lặp while:
Trong khi chưa duyệt hết xâu s, nếu kí tự s[i] in thườngthì chuyển sang in hoa và cộng dồn các kí tự đó vào xâu s1.Cách làm này tạo ra một xâu mới là xâu in hoa của xâu banđầu
Do bài trước đã làm quen với duyệt xâu nên ở bài này,học sinh đã khắc phục được lỗi sai trong điều kiện lặp:
i<s.size()
Chương trình tham khảo:
Trang 17Kết quả sau khi thực hiện chương trình:
Bài tập 3: Nhập vào từ bàn phím một xâu Thay thế tất cả các cụm
kí tự anh bằng cụm kí tự em (Bài 3 Bài tập và thực hành 5, trang
73, SGK Tin học 11)
Giáo viên vận dụng các phương pháp như nêu vấn đề, vấn đáp,minh họa trực quan trên máy, hướng dẫn HS xác định: Input,Output, dạng lặp, công việc lặp, điều kiện lặp, tìm xâu anh như thếnào, thay xâu anh bằng xâu em như thế nào?
Câu lệnh lặp while: