thế nào để cha mẹ có cái nhìn đúng đắn và ủng hộ con em mình dành thời gian cho môn tin học?” Thời điểm đó, tôi mới nảy ra ý tưởng: “tại sao không kết hợp cho các em làm đề bài bằng tiến
Trang 1MỤC LỤC
Trang
1 MỞ ĐẦU
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
1.5 Những điểm mới của SKKN……… …… 4
2 NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lí luận của sáng kiến kinh nghiệm……… 4
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm…… 5
2.3 Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết vấn đề……… 5
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, đồng nghiệp và nhà trường……… 17
3 KẾT LUÂN, KIẾN NGHỊ 3.1 Kết luận……… 18
3.2 Kiến nghị……… 18
3.3 Tài liệu tham khảo………19
Trang 21 MỞ ĐẦU 1.1 Lí do chọn đề tài
Trong thời đại công nghệ hiện nay, công nghệ thông tin trở thành lĩnh vực mũi nhọn hàng đầu, ứng dụng ở khắp các lĩnh vực trong đời sống xã hội Tuy nhiên, có một thực tế là, trong nhà trường THPT – nhất là các trường vùng nông thôn, vì không phải là môn thi tốt nghiệp THPT nên cha mẹ học sinh và học sinh chưa coi trọng Một phần cũng do chưa hiểu hết giá trị môn học mang lại,
đó là: rèn kĩ năng cẩn thận, chỉn chu, kiên trì trong học tập, phát triển tư duy toán học, logic của học sinh Giúp các em có cái nhìn tổng quan và đưa ra cách giải quyết tốt nhất cho nhiều bài toán thực tế Phát huy sự sáng tạo của các em khi được tiếp cận sớm và được hướng dẫn đúng đắn
Những năm gần đây, thực hiện công văn đổi mới, bản thân tôi luôn đau đáu suy nghĩ phải đổi mới, đổi mới phương pháp, đổi mới tư duy và cách nhìn đối với môn học
Năm học 2021 – 2022, tôi có dạy trực tiếp một lớp 11, là lớp chọn khối A1 (Toán – Lí – Anh) Nhận thấy trong lớp có một số bạn đam mê lập trình thực sự, ham học, về nhà rất chịu khó code các bài cô giao, làm hết còn đòi xin thêm bài tập khác để có thời gian sẽ làm tiếp Tuy nhiên, chưa kịp vui mừng thì gặp một trở ngại lớn – Phụ huynh và giáo viên các bộ môn khác Vì thấy con ngồi máy tính code và làm bài tập tin học, trong khi phụ huynh các em này là những người làm trong lĩnh vực tiếng Anh Họ có nhắc con: “sao học code làm gì, lo học tiếng Anh để thi học sinh giỏi rồi sau còn thi tốt nghiệp” Và sau khi hết đợt học online do dịch Covid thì phụ huynh đó cấm hẳn con không được dùng máy tính, khiến học sinh phải giấu bố mẹ bằng cách code bằng điện thoại Còn giáo viên các môn khác thì nhắc “học mấy môn khối của thầy cô đi, tin không thi Tốt nghiệp cần gì học nhiều”
Với trách nhiệm là một giáo viên, trước những khó khăn đó, gặp trường hợp những học sinh như vậy, như thôi thúc tôi tôi đặt ra cho mình câu hỏi “Làm thế nào để các em yêu thích môn học, hiểu được giá trị sẽ lĩnh hội được? Làm
Trang 3thế nào để cha mẹ có cái nhìn đúng đắn và ủng hộ con em mình dành thời gian cho môn tin học?”
Thời điểm đó, tôi mới nảy ra ý tưởng: “tại sao không kết hợp cho các em làm đề bài bằng tiếng Anh, vừa củng cố tiếng Anh, vừa học được lập trình”
Từ đó tôi bắt đầu lọc lại các đề bài phù hợp mức độ, vừa dịch lại, vừa tìm trên internet đề bài tin bằng tiếng Anh, để các em học sinh giải, giúp vừa học tin học vừa củng cố kiến thức tiếng Anh
Sau gần 1 năm áp dụng, tôi đã thấy hiệu quả mang lại là rất lớn, có ý nghĩa với chính tôi vì đã giải quyết được sự trăn trở của mình Tôi đưa ra sáng kiến
kinh nghiệm “Kết hợp tiếng Anh trong dạy và học lập trình cơ bản thông qua một số ví dụ cho học sinh khối 11 tại trường THPT Nông Cống 4” Hy
vọng sẽ hữu ích với những giáo viên đang gặp khó khăn, trăn trở như tôi Nội dung kiến thức nằm ở mức cơ bản, nhập môn phù hợp với học sinh khi học lập trình cơ bản
1.2 Mục đích nghiên cứu :
Nhằm đổi mới giờ học, tạo hứng thú mới cho học sinh, vừa lập trình tốt, vừa củng cố kiến thức tiếng Anh
1.3 Đối tượng nghiên cứu:
Đề tài này nhằm nghiên cứu về việc sử dụng và lồng ghép cách làm một số bài toán lập trình với đề bài bằng tiếng Anh vào chương trình dạy học
1.4 Phương pháp nghiên cứu
+ Các ngôn ngữ lập trình đưa vào học trong chương trình phổ thông đều do người nước ngoài viết ra Tài liệu, đề bài hầu hết bằng tiếng Anh Như ngôn ngữ C++ mà tỉnh Thanh Hóa đang chọn để dạy trong các trường THPT thì kiến thức
về lí thuyết được trình bày đầy đủ trên trang web https://www.cplusplus.com Khi mới bắt đầu đưa vào giảng dạy, thì các chuyên gia đầu ngành cũng phải lấy các tài liệu tiếng Anh làm gốc, rồi chuyển một số sang hoặc viết lại tài liệu bằng tiếng Việt để phục vụ cho học sinh, sinh viên và giáo Việt Nam
+ Thực tế ở các trường không chuyên thì ít nhưng ở các trường chuyên, khá nhiều học sinh hay tự mày mò luyện code ở các trang lập trình thi đấu ở nổi
Trang 4tiếng của nước ngoài như: https://www.codeforces.com, https: //www.atcoder.jp, https://www.hackerrank.com/…
+ Tôi đã tổng hợp lại các đề, chuyển sang bằng tiếng Anh, thu thập từ sách, tài liệu, internet Đọc lại tài liệu tiếng Anh học thuật, tham khảo một số giáo viên có kinh nghiệm cả giáo viên tin và tiếng Anh
+ Sau đó thống kê, tập hợp lại các bài toán phạm vi phần nhập môn: kiến thức cơ bản, cấu trúc rẽ nhánh, cấu trúc lặp, mảng, xâu Mỗi một phần ít nhất một bài tập, xây dựng thuật toán, viết code chuẩn, sinh test để chấm bài phục vụ cho quá trình giảng dạy học sinh trên lớp Với mỗi bài toán đưa ra cho học sinh, tôi soạn theo thứ tự: đề bài -> Các từ mới liên quan trong đề -> trình bày ý tưởng ngắn gọn bằng tiếng Việt - > Cho học sinh viết code
1.5 Những điểm mới của SKKN:
Thay vì lâu nay học sinh làm với các các đề bài truyền thồng bằng tiếng Việt, giờ học sinh được tiếp cận đề bài theo một hướng mới hoàn toàn bằng tiếng Anh
Để nâng cao chất lượng dạy và học Tôi đã hệ thống bài tập trải đều ở các phần trong chương trình tin học lớp 11 Từ đó học sinh học phần nào sẽ luôn có
ít nhất một bài tập để vừa hiểu về lập trình, vừa củng cố vốn tiếng Anh và làm quen với một số từ tiếng Anh học thuật Nội dung sáng kiến kinh nghiệm tôi xin trình bày trong phần 2 dưới đây:
2 NỘI DUNG SÁNG KIẾN KINH NGHIỆM 2.1 Cơ sở lí luận của sáng kiến kinh nghiệm
Các ngôn ngữ lập trình được đưa vào giảng dạy trong trường THPT, từ ngôn ngữ lập trình Pascal và bây giờ là ngôn ngữ C++, Python, tôi nhận thấy các ngôn ngữ đó đều được viết rất gần gũi với ngôn ngữ tự nhiên chủ yếu là tiếng Anh Nên khi code, học sinh đã rất quen thuộc với việc sử dụng tiếng Anh Kể
cả khi sử dụng máy tính, điện thoại thì các em đã rất quen với các thuật ngữ tin học bằng tiếng Anh rồi, do đó việc kết hợp cho các em làm với các đề bài bằng tiếng Anh là phù hợp
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
Trang 5Trước khi làm sáng kiến kinh nghiệm “Kết hợp tiếng Anh trong dạy và học lập trình cơ bản thông qua một số ví dụ cho học sinh khối 11 tại trường THPT Nông Cống 4” đa số học sinh xem môn tin học là môn phụ Cộng với
điều kiện thực hành ít, cả trường có duy nhất một phòng thực hành với số lượng máy hoạt động được còn hạn chế, nên việc học lập trình càng khô khan và trở nên khó khăn với học sinh
Khi tôi lấy các đề bài đang dạy các em chuyển sang bằng tiếng Anh thì tôi gặp khó khăn ở chỗ: mình không phải là giáo viên tiếng Anh, vốn tiếng Anh của tôi cũng có mức độ nhất định
Tôi bắt đầu đi tìm nguồn đề thật chuẩn bằng cách lên các trang OJ(online jugle) của nước ngoài để tham khảo Sau đó về áp dụng sao cho phù hợp với đối tượng học sinh mình đang dạy Sau một năm, Ngoài chuyên môn, tôi không quên tự học tiếng Anh để nâng cao khả năng ngoại ngữ của mình cũng như dần
áp dụng vào dạy học và hiện thực hóa ý tưởng trình bày trong sáng kiến kinh nghiệm lần này
2.3 Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải quyết vấn đề
Sau đây là một số ví dụ cụ thể Tôi đã sử dụng giúp thực hiện sáng kiến kinh
nghiệm: “Kết hợp tiếng Anh trong dạy và học lập trình cơ bản thông qua một số ví dụ cho học sinh khối 11 tại trường THPT Nông Cống 4”.
Trong quá trình nghiên cứu, tôi sử dụng ngôn ngữ lập trình C++ để thể hiện các thuật toán Vì ngôn ngữ lập trình C++ là ngôn ngữ phổ thông, nhẹ, nhanh, đang được sử dụng để giảng dạy trong chương trình hiện hành, để giúp các em học sinh, cũng như đồng nghiệp nắm được rõ hơn, sâu sắc hơn vấn đề tôi cần chuyển tải
Bài 1 (Kiến thức cơ bản)
Handshakes - Những cái bắt tay
In a conference there are N participants Every one will shake hands with the others How many handshakes during the conference
- 1 ≤ N ≤ 10000
Trang 6- N is an integer
Input:
A single line an integer N (N ≤ 109)
Output:
The number of handshakes in the conference
Example:
New words:
- Handshakes (n): Cái bắt tay
- Shake (v) hands : Bắt tay
- Conference (n): Hội nghị
- Participant (n): Người tham gia, người tham dự
Ý tưởng:
Người thứ nhất bắt tay với n – 1 người còn lại Người thứ 2 (trừ người thứ nhất đã bắt tay rồi) sẽ bắt tay với n – 2 người còn lại Cứ thế đến người cuối cùng Như vậy, tổng số cái bắt tay trong hội nghị là: 1+2+3+…+ n – 1
Code tham khảo
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
cout << (long long )n * (n - 1) / 2;
return 0;
}
Bài 2: (Kiến thức cơ bản)
Shampoo - Dầu gội đầu
Trang 7Three people live in Thien's house: Thien, his father, and his mother All
of them wash their hair in the bathroom each night His father, his mother, and Thien take a bath in this order and use A, B, and C milliliters of shampoo,
respectively This morning, the bottle contained V milliliters of shampoo
Without refilling, who will be the first to run short of shampoo to wash their hair?
Input:
Input is given from Standard Input in the following format:
V A B C
Output:
If the first person to run short of shampoo to wash their hair is Thien's father, print F; if it is Thien's mother, print M; if it is Thien, print T
Constraints
1 ≤ V,A,B,C ≤ 105
All values in input are integers
Example
25 10 11 12 T
30 10 10 10 F
100000 1 1 1 M
New words:
- Order (n) : Thứ tự, trình tự
- Constraints : Hạn chế, ràng buộc, giới hạn
- Respectively (adv): Theo thứ tự
- Contain (v) : Chứa đựng, bao gồm
- Standard(n): Chuẩn, tiêu chuẩn
- Format (n): Dạng thức
Code tham khảo:
#include <bits/stdc++.h>
using namespace std;
Trang 8int v, a, b, c;
int main()
{
cin >> v >> a >> b >> c;
int s = a + b + c;
s = v % (a + b + c);
if(s < a) cout << "F";
else
if(s < (a + b))
cout << "M";
else
cout << "T";
return 0;
}
Bài 3: (Cấu trúc rẽ nhánh)
Random - Ngẫu nhiên
Is it possible to get a sum of S when throwing a dice with six faces 1,2,…,6 n times?
Input:
Input is given from Standard Input in the following format: n S
Output:
If it is possible to get a sum of S, print “Yes”; otherwise, print “No”
Example
Constraints:
1 ≤ n ≤ 100
1 ≤ S ≤ 1000
Trang 9 n and S are integers.
Note:
- In the first example: There are two ways to get a sum of 11 when throwing a 6-faced die twice: getting 6 in the first throw and 5 in the second throw, getting 5
in the first throw and 6 in the second throw
- In second example: There is no way to get a sum of 13 when throwing a 6-faced die twice
New words:
- Possible (adj): có thể thực hiện được
- get (v): được, có được, kiếm được, lấy được
- otherwise(adv): khác, cách khác(liên từ) nếu không thì
Ý tưởng:
Xúc xắc có 6 mặt, với 1 xúc xắc thì xác suất nhỏ nhất nhận được là mặt 1, lớn nhất là 6 Với n lần đổ xúc xắc ngẫu nhiên thì S nhận được ngẫu nhiên nhỏ nhất là n, lớn nhất là 6 * n Ngoài đoạn [n , 6 * n] thì không thể có khả năng xảy
ra
Code tham khảo:
#include <bits/stdc++.h>
using namespace std;
int n, S;
int main()
{
cin >> n >> S;
if(n <= S && S <= 6 * n) cout << "Yes";
else cout << "No";
return 0;
}
Bài 4 : (Cấu trúc lặp)
Multiple of T - Bội của T
Trang 10Print a number between A and B (inclusive) that is a multiple of T If there is no such number, print -1
Input:
Input is given from Standard Input in the following format:
A B T
Output:
Print the answer If there is no number with the desired property, print -1
Example
123 456 100 200
630 940 314 -1
Constraints:
1 ≤ A ≤ B ≤ 1000
0 ≤ T ≤ 1000
All values in input are integers
New words:
- Inclusive (adj): Bao gồm, kể cả
- Multiple (n): Bội số
- Such (adj): Như thế, như vậy, như loại đó
- Desired property: thuộc tính mong muôn
Ý tưởng:
Ta chỉ cần sử dụng vòng for duyệt từ A - > B Lưu ý trước đó nên khai báo biến để đánh dấu giá trị ban đầu check = 1 Gặp số nào chia hết cho T thì đưa ra số đó, đồng thời đánh dấu sự thay đổi của biến check = 0 và thoát vòng lặp Nếu sau vòng lặp, biến check không đổi tứ không có số nào là bội của T thì
in ra -1
Code tham khảo:
#include <bits/stdc++.h>
Trang 11using namespace std;
int a, b, t, check = 1;
int main()
{
cin >> a >> b >> t;
for(int i = a; i <= b; i++)
if(i % t == 0)
{
cout << i;
check = 0;
break;
}
if(check == 1) cout << -1;
return 0;
}
Bài 5 : (Mảng một chiều)
Smallest non-negative integer - Số nguyên không âm nhỏ nhất
You are given a sequence of length N consisting of integers: A=(A1, A2, ,AN) Find the smallest non-negative integer not in A=( A1, A2, ,AN)
Input:
Input is given from Standard Input in the following format:
N
A=( A1, A2, ,AN)
Output:
Print the answer
Example
8
0 3 2 6 2 1 0 0
4
Trang 122000 2000 2000
0
Constraints:
1 ≤ N ≤ 2000
0 ≤ Ai < 2000
All values in input are integers
New words:
- Sequence (n): dãy (tiếp nối nhau theo một trình tự)
- Negative(n): số âm
- Non-negative(n): số không âm
- Smallest (adj): nhỏ nhất
Ý tưởng:
Khi nhập mảng a đến đâu, ta tạo mảng d đánh dấu sự xuất hiện của các phần tử mảng a đến đó Sau đó duyệt lại từ 0 đến 2000 Số đầu tiên nào không được đánh dấu thì in ra và thoát chương trình
Code tham khảo:
#include<bits/stdc++.h>
#define ll long long
using namespace std ;
int a[2005], n, d[2005];
int main ()
{
cin >> n;
memset(d, 0, sizeof(d));
for(int i = 1; i <= n; i++)
{
cin >> a[i];
d[a[i]] = 1;
}
Trang 13for(int i = 0; i <= 2000; i++)
if(d[i] == 0)
{
cout << i;
return 0;
}
return 0;
}
Bài 6 : (Xâu kí tự )
Palindromic Number – Số đối xứng
You are given a number N Determine whether N is a palindromic number Here, a palindromic number is an number that reads the same backward as forward in decimal notation
Input:
Input is given from Standard Input in the following format: N (N <= 10100000)
Output:
If S is a palindromic number, print Yes; otherwise, print No
Example
New words:
- Determine (v): Xác định, định rõ
- Palindromic (adj): Đọc xuôi ngược đều giống nhau
- Backward (adj): Về phía sau, ngược
- Forward (adj): Về phía trước
- Decimal (adj): Thập phân
- Notation (n): Kí hiệu
Ý tưởng:
Trang 14Vì N <= 10 là số quá lớn, vượt quá phạm vi biểu diễn số nguyên nên
phải xử lí bài này trên xâu kí tự Tạo xâu x là xâu đảo ngược của xâu n Sau khi
tạo xâu x xong, nếu xâu x bằng xâu n thì n là “Palindromic Number”
Code tham khảo:
#include<bits/stdc++.h>
using namespace std ;
string n, x = "";
int main ()
{
getline(cin, n);
for(int i = n.size() - 1; i >= 0; i )
x += n[i];
if( x == n)
cout << "Yes";
else
cout << "No";
return 0;
}
Bài 7 : (Xâu kí tự)
Ro – Bot
Consider an xy-plane The positive direction of the x-axis is in the direction of east, and the positive direction of the y-axis is in the direction of north.
Ro - Bot is initially at point (x, y) = (0, 0) and facing east (in the positive
direction of the x-axis).
You are given a string T = t1t2…tN of length N consisting of S and R Ro - Bot will do the following move for each i = 1 , 2, …., N in this order
If ti = S, Ro - Bot advances in the current direction by distance 1
If ti = R, Ro - Bot turns 90 degrees clockwise without changing his
position As a result, Ro - Bot's direction changes as follows
o If Ro - Bot is facing east (in the positive direction of the x-axis)
before he turns, he will face south (in the negative direction of
the y-axis) after he turns.