Tải bản đầy đủ (.doc) (23 trang)

(SKKN 2022) Một số giải pháp giúp học sinh tiếp cận nhanh ngôn ngữ lập trình C++ và Python

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (806.04 KB, 23 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA

TRƯỜNG THPT NGA SƠN
------------***------------

SÁNG KIẾN KINH NGHIỆM

MỘT SỐ GIẢI PHÁP GIÚP HỌC SINH TIẾP CẬN NHANH
NGƠN NGỮ LẬP TRÌNH C++ VÀ PYTHON

Họ và tên:
Phạm Thị Nhung
Chức vụ:
Giáo viên
SKKN thuộc bộ môn: Tin học

THANH HÓA NĂM 2022


[1]

MỤC LỤC
1. 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

2. NỘI DUNG SÁNG KIẾN KINH NGHIỆM.........................................3
2.1. CƠ SỞ LÝ LUẬN CỦA SÁNG KIẾN KINH NGHIỆM......................3
2.2. THỰC TRẠNG CỦA VẤN ĐỀ.............................................................4


2.3. CÁC GIẢI PHÁP ĐÃ SỬ DỤNG ĐỂ GIẢI QUYẾT VẤN ĐỀ............4
2.3.1. So sánh sự tương quan của ngôn ngữ lập trình C++, Python và Pascal.4
2.3.2. Minh họa bằng các thuật toán của một số bài toán cơ bản, đặc trưng 16
2.3.3. Ưu điểm của ngôn ngữ C++, Python qua một vài ví dụ cụ thể..............18

2.4. HIỆU QUẢ CỦA SÁNG KIẾN KINH NGHIỆM................................20

3. KẾT LUẬN VÀ KIẾN NGHỊ............................................................20


[2]

1. MỞ ĐẦU
1.1. LÍ DO CHỌN ĐỀ TÀI
Ứng dụng của tin học trong giai đoạn hiện nay đã trở thành một phần tất yếu
của đời sống xã hội hiện đại. Vì có vai trị quan trọng như vậy nên tất cả các nước
trên thế giới cũng như nước ta đều có những chính sách đầu tư cho tin học để
khơng bị lạc hậu về công nghệ. Bởi vậy, bộ môn tin học ở trường THPT, đặc biệt là
các kiến thức lập trình đang chiếm một vị trí rất quan trọng. Trong đó, phải kể đến
cơng tác bồi dưỡng học sinh giỏi ở nhà trường. Là khởi nguồn trong việc đào tạo
nhân tài cho đất nước.
Trong những năm gần đây Bộ giáo dục và đào tạo đang có những quyết sách
thay đổi mạnh mẽ về chương trình giáo dục, từ giáo dục tiếp cận nội dung nay chú
trọng tiếp cận năng lực người học, nghĩa là từ chỗ quan tâm đến việc học sinh học
được cái gì đến chỗ quan tâm học sinh vận dụng được cái gì qua việc học. Điều này
đòi hỏi phương pháp dạy học của giáo viên cũng phải thay đổi theo, người giáo
viên phải áp dụng được các phương pháp, kĩ thuật tích cực để xây dựng nên các
chuyên đề nhằm giúp học sinh trở thành chủ thể của quá trình nhận thức, đảm bảo
kết quả đầu ra theo yêu cầu.
Nhận thức được tầm quan trọng, sự ảnh hưởng to lớn của bộ môn Tin học nói

riêng và của lĩnh vực cơng nghệ thơng tin nói chung đối với các lĩnh vực khác cũng
như sự phát triển của xã hội. Tôi nghĩ bản thân là một giáo viên dạy mơn Tin học
phải có trách nhiệm làm sao cho học sinh hiểu và u thích bộ mơn này, tạo cho
học sinh sự hứng khởi, niềm đam mê học hỏi, sáng tạo để phát triển ngành Tin học
ngày càng cao hơn, xa hơn, mang lại nhiều ứng dụng thiết thực.
Trong những năm gần đây, ngơn ngữ lập trình Pascal đang dần được thay thế
bởi ngơn ngữ lập trình C++ và python.
Để học sinh tiếp cận ngôn ngữ lập trình mới dễ dàng hơn mà khơng thấy mới
lạ tơi đã lồng ghép so sánh từng nội dung cơ bản có tính chất tương đồng. Chẳng
hạn: về bảng chữ cái, các phép toán, biểu thức , các cú pháp khai báo cho từng loại
cấu trúc của ngôn ngữ mới với ngơn ngữ pascal qua các ví dụ minh họa thuật tốn.
Làm như vậy, các em sẽ dễ nắm bắt ngơn ngữ lập trình mới qua ngơn ngữ lập trình
cơ sở là pascal.
Vì vậy tơi quyết định chọn đề tài: “Một số giải pháp giúp học sinh tiếp cận
nhanh ngôn ngữ lập trình C++ và Python”.


[3]

1.2. MỤC ĐÍCH NGHIÊN CỨU
- Giúp học sinh phát triển khả năng tư duy, sáng tạo, kỹ năng tiếp nhận kiến
thức. Chủ động hơn trong khi học và giải các bài tập một cách hiệu quả để lĩnh hội
kiến thức một cách tốt nhất.
1.3. ĐỐI TƯỢNG NGHIÊN CỨU
- Học sinh khối THPT Trường THPT Nga Sơn.
1.4. PHƯƠNG PHÁP NGHIÊN CỨU

- Thực tiễn giảng dạy học sinh khối 11;
- Tham khảo SGK, SGV Tin học 11 và tài liệu hướng dẫn học lập trình C++ và
Python;

- Tài liệu tập huấn thay sách giáo khoa của Sở GD và ĐT Thanh Hóa.

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
Bản thân là một giáo viên giảng dạy môn Tin học tại trường THPT Nga Sơn,
Với chất lượng học sinh đầu vào thấp, nếu khơng có phương pháp giảng dạy phù
hợp thì sẽ khơng đạt được kết quả như mong muốn.
Trên thực tế, khơng có câu trả lời nào chính xác cho câu hỏi “Đâu là ngơn
ngữ lập trình tốt nhất để bắt đầu?”. Mỗi ngơn ngữ đều có điểm cộng và điểm trừ,
được sáng tạo để thỏa mãn nhu cầu, mục đích của người dùng.
Dù không được sử dụng rộng rãi như C, Java và Python, nhưng Pascal vẫn là
lựa chọn hàng đầu để bước những bước đầu tiên vào thế giới lập trình.
Python là một lựa chọn phổ biến trong bộ mơn lập trình cơ bản. Nhiều người
khẳng định tính sư phạm mạnh mẽ của Python, nhờ vào cú pháp đơn giản và linh
hoạt. Chính điểm mạnh này đã giúp Python là một trong những cái tên đầu tiên
trong danh sách những ngôn ngữ lập trình tốt nhất cho người mới học.
C++ là “bàn chân sắt” trong giới lập trình. Với mức độ chuyên sâu đa dạng,
C++ được ứng dụng rất nhiều nền tảng, trong đó có di động. Người mới học sẽ hiểu
được các quy trình về Pointer – cơng cụ mạnh mẽ nhất của C++ giúp coder truy
xuất tác vụ trong bộ nhớ rất nhanh chóng; quản lý cấu trúc bộ nhớ Stack & Heap,
quy trình biên soạn code và lập trình hệ thống. Với C++, người học sẽ đủ điều kiện
để khám phá những ngơn ngữ khác dễ dàng hơn.
Chính vì những lý do như vậy, xu thế hiện nay đã và đang sử dụng ngơn ngữ
lập trình Python, C++ làm ngôn ngữ chủ đạo để minh họa cho các thuật tốn trong
lập trình.


[4]

Để học sinh tiếp cận được ngơn ngữ lập trình C++ và Python một cách nhanh

nhất và hiệu quả nhất từ ngôn ngữ cơ sở các em đã học là Pascal. Tôi đã thực hiện
như sau: Trong các tiết giảng tôi đều đưa ra so sánh về sự tương đồng giữa các
ngơn ngữ lập trình. Cách dùng các cấu trúc, kiểu dữ liệu thích hợp để giải quyết
từng bài tốn cụ thể ở mỗi ngôn ngữ. Tôi áp dụng vào từng bài toán để diễn đạt cho
học sinh. Làm như vậy tôi thấy hiệu quả, học sinh tiếp thu bài tốt. Đó chính là
những căn cứ để tơi viết đề tài này.
2.2. THỰC TRẠNG CỦA VẤN ĐỀ
Pascal là ngôn ngữ lập trình đầu tiên mà học sinh được tiếp cận, được dùng
để minh họa cho các giải thuật.
Trong những năm gần đây, ngơn ngữ lập trình Pascal khơng cịn được chú
trọng, thậm chí cịn khơng được sử dụng trên các diễn đàn, các cuộc thi về lập
trình.
Xu hướng hiện nay là dùng ngơn ngữ mới, có tính sáng tạo, chun nghiệp,
ứng dụng cao hơn trong các lĩnh vực đời sống kinh tế xã hội như C++, Python…
Python là ngôn ngữ được lựa chọn đưa vào minh họa cho các thuật toán cấp
THPT năm học tới.
Đứng trước thực trạng như vậy, là một giáo viên giảng dạy môn Tin học
THPT với nền tảng cơ sở của học sinh là Pascal, tôi có những suy nghĩ, những trăn
trở làm thế nào để học sinh từ bỏ thói quen, từ bỏ lối mịn lâu nay.
Tôi đã xây dựng bài giảng với sự lồng ghép các ngơn ngữ lập trình, nhằm
giúp cho học sinh độc lập hơn trong cách học, cách tiếp cận tri thức mới, nhìn nhận
vấn đề một cách tích cực hơn, sáng tạo hơn và nhất là giúp cho các em có thể u
thích nhiều hơn nữa mơn học thơng qua từng bài giảng cụ thể.
2.3. CÁC GIẢI PHÁP ĐÃ SỬ DỤNG ĐỂ GIẢI QUYẾT VẤN ĐỀ
Bằng những kiến thức về Tin học và những kinh nghiệm của bản thân trong
công tác giảng dạy bộ môn Tin học, cùng với xu hướng bỏ ngơn ngữ lập trình
Pascal thay bằng các ngơn ngữ lập trình mới phù hợp hơn. Để đạt hiệu quả trong
công tác giảng dạy tôi đã thực hiện qua các giải pháp dưới đây:
 So sánh sự tương quan của ngơn ngữ lập trình C++, Python và Pascal


 Minh họa bằng các thuật toán của một số bài toán cơ bản, đặc trưng
 Ưu điểm của ngôn ngữ C++, Python qua một vài ví dụ cụ thể
 Để thực hiện được ý tưởng đã nêu trong đề tài, tôi đã áp dụng các giải pháp
qua từng tiết học. Tôi đã tổ chức thực hiện các giải pháp như sau:
2.3.1. So sánh sự tương quan của ngơn ngữ lập trình C++, Python và Pascal
2.3.1.1. Về bảng chữ cái
 Trong Pascal bảng chữ cái bao gồm:


[5]

+ Bảng chữ cái tiếng Anh.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z.
abcdefghijklmnopqrstuvwxyz
+ 10 chữ số thập phân Ả Rập: 0 1 2 3 4 5 6 7 8 9
+ Các kí tự đặc biệt: + - * / = < > . , ; : ‘ # ^ $ @ & ( ) { } [ ] _ và dấu cách.
 Trong C++ bảng chữ cái bao gồm:
Là tập các kí tự được dùng để viết chương trình. Khơng được phép dùng
bất kì kí tự nào ngồi các kí tự quy định trong bảng chữ cái. Ngơn ngữ lập
trình C++ được xây dựng trên bảng chữ cái bao gồm các kí tự sau:
- Các chữ cái in thường và in hoa của bảng chữ cái tiếng Anh: a..z, A..Z.
- 10 chữ số: 0..9
- Các kí tự đặc biệt: + - * / = < > [ ] . , ;! # ^ $ %& ( ) : ‘ _ và dấu cách
 Trong Python bảng chữ cái gồm các kí tự sau:
- Các chữ cái trong bảng mã Unicode
- Các chữ số: 1 2 3 4 5 6 7 8 9
- Các kí tự đặc biệt: + / = < > [ ] # &…
2.3.1.2. Các kiểu dữ liệu chuẩn
1. Kiểu ngun
Tên kiểu

Shortint

Byte
yte
Ngơn
ngữ
lập
trình
Pascal

Integer
Word

longword
Int64
Qword
2. Kiểu thực
Tên kiểu
Single
Real
Double
Extended
3. Kiểu kí tự
Kiểu

Charnh
lưu trữ một
giá trị

Bộ nhớ lưu trữ

một giá trị
1
1 byte

Phạm vi giá trị
-128→ 127
0→ 255

2 byte
2 byte
4 byte

-32768→ 32767
0→ 65535
ongInt
-2147483648→ 2147483647
0..4294967295

4 byte
8 byte
8 byte

-9223372036854775808..9223372036854775807
0..18446744073709551615

Phạm vi giá trị
1.5 x 10 -45→ 3.4 x 10+38
2.9 x 10-39→ 1.7 x 10+38
5.0x10 -324→ 1.7x10+308
3.4x10 -4932→ 1.1x10+4932


Bộ nhớ lưu trữ một giá trị
4 byte
6 byte
8 byte
10 byte

Phạm vi giá trị

Bộ

256 kí tự trong bộ mã
ASCII

1 byte


[6]

4. Kiểu logic
Kiểu

Phạm vi giá trị

Bộ nhớ lưu trữ một giá trị

boolean

true hoặc false


1 byte

1.Kiểu ngun

Ngơn
ngữ
lập
trình
C++

2.Kiểu thực

3. Kiểu kí tự
Một giá trị kiểu kí tự char chiếm 1 byte (8 bit) và biểu diễn được
một kí tự thuộc bộ mã ASCII. Ví dụ, kí tự A có mã ASCII là 65, kí tự a
có mã ASCII là 97, kí tự 0 có mã ASCII là 48, kí tự dấu cách có mã
ASCII là 32. Có hai kiểu kí tự: [signed] char và unsigned char.


[7]

4. Kiểu logic
Một giá trị kiểu bool chiếm 1 byte và biểu diễn giá trị false (0) hoặc
true (1 hay một số khác 0).
Ngôn 1. Kiểu
Biểu nguyên
Biểu
ngữ
Kiểu
nguyên

trongdiễn
PythonBiểu
không
sốđối
ký tự mà chỉ phụ
diễn
diễn(int) Biểu
diễngiới hạn
Kiểu
Hàm
Kiểu kết quả
lập
thuộc
vào trong
bộ nhớ máy
Tốn
trongtính.
C++ trong Python
số
trình Khihọc
gán một
giá trị là số nguyên cho một biến thì biến đó tự động được
Pascal
y
Python
Lũy thừagán xkiểu số nguyên.
x**y
Thực hoặc Theo kiểu
Pow(x,y)
nguyên

của đối số
# gán cho biến a một số nguyên có giá trị là 5.5 ➔ a sẽ nhận giá trị là 5.
a 2= int(5.5)

x

Sqr(x)

b = 120
sqrt(x)
x

x**2
math.sqrt(x)

Căn bậc
sqrt(x)
Thực hoặc
Thực
hai
nguyên
2. Kiểu thực
x
Giá trị
abs(x)
abs(x)
abs(x)
Thực hoặc Theo kiểu
tuyệt đối # gán cho a số thực có giá trị là 5 ➔ a sẽ nhận giá trị
nguyên

là 5.0 a = của đối số
float(5)
Lôgarit
lnx
ln(x)
ln(x)
math.log(x)
Thực
Thực
tự nhiên b = 3.14
Luỹ thừa ex
exp(x)
exp(x)
exp(x)
Thực
Thực
Kiểu thực (float) trong Python có giới hạn tối đa 15 chữ số phần
của số e
thập phân.
Sin
sinx sin(x)
sin(x)
sin(x)
Thực
Thực
Khi gán một giá trị là số thực cho một biến thì biến đó tự động được
Cos
cos(x)
cos(x)
Thực

Thực
gáncosx
kiểu số
thực. cos(x)
3. Kiểu kí tự
Python khơng có kiểu char như Pascal. Một ký tự (kiểu char của
pascal) được coi như một xâu có độ dài bằng 1 trong Python. Kiểu xâu
(str) hay cịn gọi là kiểu chuỗi khơng giới hạn độ dài.
Tuy nhiên, Python cung cấp các hàm chr() và ord() để lấy vị trí của ký
tự trong bảng mã Unicode và ngược lại. Chương trình dưới đây cho thấy
mã của chữ Â trong bảng mã unicode là 194.
print(ord('Â'))
print(chr(194))

Kết quả: 194
Â

4. Kiểu logic
Kiểu logic (bool) trong Python có giá trị True hoặc False
Ngồi ra, Python cịn có các kiểu dữ liệu: complex; list, tuple, range;
dict; set, frozenset; bytes, bytearray, memoryview.
2.3.1.3. Phép toán, biểu thức, câu lệnh gán
 Phép toán:
 Biểu thức:


[8]

Biểu thức là một sự kết hợp giữa các phép tốn và các tốn hạng để diễn đạt
một cơng thức tốn học nào đó. Khi viết biểu thức có thể dùng các dấu ngoặc tròn (

và ) để thể hiện đúng trình tự tính tốn trong biểu thức. Mỗi biểu thức sẽ có một
giá trị và nói chung cái gì có một giá trị đều được xem là biểu thức. Như vậy, hằng,
biến đều được xem là biểu thức.
 Câu lệnh gán
Trong ngơn ngữ Pascal
<tên biến>:= <biểu thức>
Ví dụ: d:=b*b- 4*a*c;
 Chú thích
Trong ngơn ngữ Pascal

Trong ngơn ngữ C++

Trong ngơn ngữ Python

<tên biến> = <biểu thức>
Ví dụ: d=b*b- 4*a*c;

<tên biến> = <biểu thức>
Ví dụ: d=b**2 - 4*a*c

Trong ngơn ngữ C++

Trong ngôn ngữ Python

- Giúp người đọc chương Các đoạn chú thích được
trình nhận biết ý nghĩa
đặt giữa cặp dấu /* ... */
của chương trình đó dễ
hoặc có thể viết chú thích
hơn;

trên một dịng theo sau
- Chú thích khơng ảnh
cặp dấu //
hưởng đến nội dung
chương trình nguồn.
- Đoạn chú thích được
đặt giữa cặp dấu { và }
hoặc (* và *).
2.3.1.4. Các thủ tục chuẩn vào/ra đơn giản
Thủ tục

Trong ngôn ngữ
Pascal
Read(ds biến);
Readln (ds biến);

Nhập
dữ liệu
từ bàn Ví dụ: Read(a,b);
phím

Đưa
kết
quả ra
màn
hình

Write();Writeln();
Ví dụ:
Write(Chao cac

ban);

Trong ngơn ngữ
C++

-Dùng dấu thăng # đầu
dịng khi chú thích trên
một dịng.
-Dùng ba dấu nháy đơn '''
hoặc nháy kép khi chú
thích trên nhiều dịng.

Trong ngơn ngữ
Python
input()
cin >> biến 1 >> ... >>
Ví dụ:
biến n;
# nhập giá trị cho a (mặc
định kiểu xâu)
Ví dụ:
a = input()
cin>>x>>y;
# nhập giá trị cho c có kiểu
số nguyên.
c= int(input('Nhap c: '))
print()
Cout<< kết quả 1<<… Ví dụ:
<print("Chào các bạn! ")

Ví dụ:
cout<<"Chao cac
ban!”;


[9]
Assign(tệp>,<tên tệp>);
Nhập Reset(<biến tệp>);
dữ liệu Read /Readln (từ file tệp>,biến>);

Mở file để đọc
with open(‘tenfile’, ‘mode’)
as tenbien
Ta có thể gán mode hoặc bỏ
Ví dụ:
freopen("baitap.inp","r", qua vì Python mặc định mở
file là để đọc.
stdin);
Ví dụ: Đọc tồn bộ file
with open("vao.txt") as f:
print(f.read())
Assign(Mở file để ghi
freopen("tệp>,<tên tệp>);
with open(‘tenfile’, ‘mode’)
file>","w",stdout);

Rewrite(<biến tệp>);
as tenbien
Write/ Writeln (Mode thường dùng là w
Đưa
dữ liệu tệp>,Cả mode a và w đều sẽ tạo
ra file quả>);
,stdout);
* Đóng tệp
file mới để ghi nếu file mở
Close(<biến tệp>);
để ghi chưa tồn tại.
Ví dụ:
with open("ra.txt",'w') as f:
f.write("Ghi noi dung nay
vao file ")
print("Ghi noi dung nay vao
file cach 2")
freopen("file>","r",stdin);

2.3.1.5. Cấu trúc rẽ nhánh
Câu
lệnh
Câu
lệ
n
h
if

d

n
g
t
h
iế
u

Trong ngôn ngữ
Trong ngôn ngữ
Pascal
C++
if < điều kiện > then < if (điều kiện)
câu lệnh >;
Ví dụ:
lệnh>
If (n mod 2=0) then
Ví dụ: If (n%2==0)
writeln(‘ n la so chan’); cout<<”n la so chan”;

Trong ngôn ngữ
Python
if <điều kiện>: lệnh>
if<điều kiện>:
<câu hoặc khối lệnh>
Ví dụ: if (n%2==0):
print (“n là số chẵn”)



[10]
if < điều kiện > then <
câu lệnh1 > else < câu
lệnh 2 >;
Câu
Ví dụ:
lệ If a mod 3 = 0 then
n write(‘a chia het cho 3’)
h else
if Write(‘a khong chia het
d cho 3’);

n
g
đ


if (điều kiện)
lệnh 1> else
lệnh 2>
Ví dụ: if (a % 3) == 0)
cout<< “a chia het cho
3”; else
cout<<“ a khong chia
het cho 3”;


if<điều kiện>:
<câu hoặc khối lệnh>
else:
<câu hoặc khối lệnh>
Ví dụ:
if (a % 3) == 0:
print("a chia hết cho
3")else: print("a không
chia hết cho 3")

2.3.1.6. Cấu trúc lặp
Câu
lệnh

Trong ngôn ngữ Pascal

- Dạng lặp tiến:
For <biến đếm> := trị đầu> to cuối> do <câu lệnh>;
Lặp
- Dạng lặp lùi:
với
For <biến đếm> := số
trị cuối> downto lần
trị đầu> do <câu lệnh>;
biết
trước Ví dụ:

For N:=1 to 100 do S:=
S+1.0/(a+N);
For N:=100 downto 1 do
S:= S+1.0/(a+N);
Lặp
với
số
lần
chưa
biết
trước

While <điều kiện> do
<câu lệnh>;
Ví dụ:
S:=1/a; n:=0;
While not(1/
(a+n)<0.0001) do
begin n:=n+1;
s:=s+1/(a+n); end;
writeln( Tong s = ‘,s);

Trong ngôn ngữ
C++

Trong ngôn ngữ
Python
hàm range()
for(Range đầy đủ có 3 tham

tạo>; hạn>; Trong đó star = khởi
giảm>)
đầu dãy, end = kết thúc
{
dãy, step = bước nhảy
<Dãy lệnh>;
(nếu bỏ trống thì mặc
}
định bước nhảy là 1).
Ví dụ:
Ví dụ:
for (int i=0; i<=n;i++)
a
= int(input("Nhập a:
{ cout<")) s = 0
for (int i=20;i>=210;
for i in range(101):
i--) {cout<s += 1/(a + i)print(s)
while (<Điều kiện>)
while <điều kiện >:
{ <Dãy lệnh>; }
<câu hoặc khối lệnh>
Ví dụ:
Ví dụ:
s=1/a; n=0;
a=int(input("Nhập a: "))

hile(!(1/(a+n)<0.0001)) s = 1/a n = 0
{ n++;
while not (1/(a+n) <
s+=1/(a+n);
}
0.0001): n += 1
s += 1/(a+n)
cout<<"\n Tong S=
print("Tổng = ", s)
"<
2.3.1.7. Dữ liệu kiểu mảng
Trong *Khai báo mảng một chiều
ngôn
ngữ
Pascal

Cú pháp:
Cách 1. Khai báo trực tiếp:
Var <tên biến mảng> : array [ kiểu chỉ số] of <kiểu phần tử>;


[11]

Cách 2. Khai báo gián tiếp:
Type <tên kiểu mảng> = array [kiểu chỉ số] of <kiểu phần tử>;
Var <tên biến mảng>:<tên kiểu mảng>;
*Khai báo mảng một chiều
a) Cú pháp: <Kiểu dữ liệu> <tên biến mảng>[kích thước tối đa];
- Ví dụ:int a[5]

VD trên khai báo một mảng gồm 5 phần tử, chỉ số của mảng được đánh
số từ 0 tới 4
0

1

2

3

4

a[0]

a[1]

a[2]

a[3]

a[4]

b) Khởi tạo mảng:
- Khởi tạo toàn bộ các phần tử của mảng có giá trị bằng 0.
+ Cú pháp:
Trong
ngơn
ngữ
C++


<Kiểu dữ liệu các phần tử của mảng><tên mảng> [số lượng phần tử] = {}
+ Ví dụ: int a[5]= {}

0

1

2

3

4

0

0

0

0

0

- Gán một vài giá trị ban đầu cho mảng:
+ Cú pháp:
<Kiểu dữ liệu các phần tử của mảng><tên mảng> [số lượng phần tử] =
{giá trị, giá trị, …, giá trị }
+ Ví dụ: int a[5] = {3, 2, 8, 9, 7}
0


1

2

3

4

3

2

8

9

7

c) Tham chiếu tới các phần tử của mảng
- Cú pháp: Tên biến [chỉ số]
- Ví dụ: a[2]
Trong
Python khơng có cấu trúc dữ liệu mảng mà sử dụng kiểu “Danh sách”
ngôn (list) thay cho mảng. Khơng giống như mảng, mỗi list có thể lưu trữ phần
ngữ tử với bất kỳ kiểu dữ liệu nào và làm được mọi thứ mà mảng có thể làm.
Pytho
Chúng ta có thể lưu trữ số nguyên, số thập phân, chuỗi trong cùng một
n
list. Vì thế, làm việc với list khá linh hoạt.
List được biểu diễn bằng dãy các giá trị, được phân tách nhau bằng

dấu phẩy, nằm trong dấu []. Các danh sách có thể chứa nhiều mục với
kiểu khác nhau, nhưng thông thường là các mục có cùng kiểu.
Kiểu list có dạng:
a = [0,9,1,8,91,844,7]
Các phần tử trong list có chỉ số bắt đầu từ 0. Ta có thể gọi 1 hay nhiều
phần tử trong list bằng các đối số trong ngoặc [].


[12]

Trong Python, để xử lý dữ liệu mảng 1 chiều ta có thể dùng kiểu dữ
liệu list. List trong Python không cần khai báo số phần tử, không cần khai
báo kiểu dữ liệu. (biến trong Python tự nhận biết kiểu dữ liệu được gán
để tự động thay đổi kiểu cho phù hợp).
* Khai báo
Biến trong Python không cần khai báo kiểu dữ liệu mà sẽ tự thay đổi
kiểu cho phù hợp với giá trị được gán vào.
*Một số lưu ý:
Khởi tạo một biến kiểu list chỉ bằng cách gán vào biến một list rỗng []
hoặc gán từ khóa list() cho biến.
Ví dụ:

Để tạo một mảng (list) gồm n phần tử, các phần tử đều có giá trị rỗng thì
ta có thể khai báo như sau:
ma = [None]*n

Chỉ số các phần tử trong danh sách (list) bắt đầu từ 0 và chiều ngược lại
bắt đầu từ -1.
Có thể ghép các list với nhau bằng toán tử cộng +.
Cần lưu ý học sinh phân biện chỉ số phần tử và giá trị phần tử của

list.
Ví dụ: manga = ['P', 'Y', 'T', 'H', 'O', 'N']
Phần tử:

P

Y

T

H

O

N

Chỉ số

0

1

2

3

4

5


Chỉ số âm

-6

-5

-4

-3

-2

-1

2.3.1.8. Dữ liệu kiểu xâu
Trong ngơn ngữ
Pascal
Xâu là dãy các kí tự
trong bộ mã ASCII,
Khai mỗi kí tự được gọi là
báo một phần tử của xâu.
Số lượng các kí tự
trong xâu được gọi là
độ dài xâu. Xâu có độ
dài bằng 0 gọi là xâu
rỗng.

Trong ngơn ngữ
C++
Xâu kí tự (chuỗi kí tự) là

một dãy các kí tự. Xâu
được diễn tả bằng một
dãy các kí tự đặt trong
cặp ngoặc kép.
Ví dụ:“Hello World!”,
“Tin hoc”,…
Cú pháp:
string tên_biến_xâu;

Trong ngơn ngữ
Python
Xâu (string, từ khóa kiểu là
str) là một dãy các ký tự
Unicode. Unicode bao gồm
mọi ký tự trong tất cả các
ngôn ngữ và mang lại tính
đồng nhất trong mã hóa.
Để tạo một biến có kiểu xâu
ta chỉ cần gán xâu cho biến


[13]
Khai báo gián tiếp:
TYPE TênKiểu =
String[Max];
VAR Tên biến :
TênKiểu;
hoặc Khai báo biến
trực tiếp:
VAR Tên biến :

STring[Max];
Type Hoten =
String[30];
St80 = String[80];
Var Name : Hoten;
Line : St80;
St : String; {St có tối
đa là 255 ký tự}
Ví dụ 2:
Var
Hoten: string[26];
- Dùng thủ tục
read/readln để nhập
xâu
Ví dụ: read(s);
- Dùng thủ tục
write/writeln để xuất
xâu
Ví dụ: write(‘Xau ket
qua’,s);
Nhập
xuất

hoặc có thể khai báo và đó.
khởi tạo giá trị:
Ví dụ:
string tên_biến_xâu =
“xâu_khởi_tạo”;
d = '2021'
e = "2021"

string tên_biến_xâu
f = ''' 2021 '''
(“xâu_khởi_tạo”);
Ép kiểu về xâu
Ví dụ:
# biến a có kiểu là int
string s1;
a = 2021
string s2 = “hello
# biến b, c đều có kiểu là
world”;
str
string s3 = “C++”;
b = str(a)
c = str(2021)

- Nếu xâu là chuỗi kí tự - Nhập xâu:
liên tiếp khơng chứa dấu Cú pháp:
cách (kí tự trống) thì cú a = input("xâu cần nhập: ")
pháp nhập xâu như sau:
Ví dụ: a = input("THPT
cin>>tên biến xâu;
Nga Sơn ")
Ví dụ: cin>>s;
- Nếu xâu là chuỗi kí tự
có chứa kí tự trống thì cú
pháp nhập xâu như sau:
getline(cin, tên biến
xâu)
- Ví dụ:

getline(cin, s)
- Xuất xâu:
cout<Ví dụ: cout<< “hello”;

Các
phép
==, !=, <, >, <=, >=
=, <>, <, >, <=, >=
so
sánh
Ghép Dùng phép toán + để Dùng phép toán + hay
xâu ghép nhiều xâu thành += để ghép nhiều xâu
(+) một xâu
thành một xâu, ghép
thêm kí tự vào xâu.
Ví dụ:
Ví dụ:

- Xuất xâu:
Cú pháp:
print(xâu cần xuất)
Ví dụ: print(a)

==, !=,<, > <=, >=
Các xâu có thể ghép với
nhau bằng tốn tử cộng
(+) hoặc nhân lên bằng
toán tử nhân (*).
str1 = 'Hà Nội' str2 ='Việt



[14]

Xóa

‘Nga’ + ‘_Son’ + ‘,’ + “Nga” + “_Son” + “,” Nam'
“Thanh_Hoa”
+ “Thanh_Hoa”
print(str1 + str2)
Kết quả:
Kết quả:
print(str1 * 3)
‘Nga_Son,Thanh_Hoa’ “Nga_Son,Thanh_Hoa” Kết quả:Hà NộiViệt Nam
Hà NộiHà NộiHà Nội
Delete(St,vt,n) Xoá n <tên biến xâu>.erase(vt, Python khơng cho phép xóa
ký tự trong xâu cho dù cho
kí tự của xâu st bắt đầu n).
phép truy xuất ký tự theo
từ vị trí vt.
+ Thực hiện: Xóa n kí tự chỉ số. Ta có thể thay thế ký
Ví dụ:
của biến xâu bắt đầu từ tự hoặc xâu con bằng hàm
St=’Truong THPT Nga vị trí vt.
replace().
Son’
+ Chú ý: Vị trí các phần Ví dụ:
Delete(St,8,4);
a ="Có phải em mùa thu
tử đánh số từ 0

Kết quả: ‘Truong Nga
+ Ví dụ: s= “Truong Hà Nội"
Son’
b = a.replace('em ','')
THPT Nga Son”
print(a) print(b)
=> s.erase(a, 6, 5) =
Kết quả:
Có phải em mùa thu Hà Nội
“Truong Nga Son”
Có phải mùa thu Hà Nội

Insert(S1,S2,vt) Chèn
xâu S1 vào xâu S2 bắt
đầu từ vị trí vt của S2
Ví dụ:
S1= ‘THPT’
S2=’Truong Nga Son’
Insert(S1,S2,8);
Chèn Kết quả: ‘Truong
THPT Nga Son’

Copy(St, vt, n) Sao
chép từ xâu St n kí tự
từ vị trí vt.
Ví dụ:
St=’Truong THPT Nga
Copy
Son’
Copy(St,8,4);

Kết quả: ‘THPT’

s1.insert(vt, s2)
Thực hiện: Chèn xâu s2
vào xâu s1 trước vị trí
vt.
Ví dụ: s1:=“abcde” ,
s2= “z”
=> s1.insert(3,s2) =
“abczde”
Chú ý: Nếu vị trí cần
chèn vượt quá vị trí có
thể của xâu, sẽ xảy ra
lỗi sai.

Trong Python không thể
chèn ký tự vào xâu thông
qua chỉ số. Ta có thể chèn
bằng cách thay thế với hàm
replace() .
Ví dụ:
a = "Có phải em mùa thu
Hà Nội"
b = a.replace('em ','em
là') print(a)
print(b)
Kết quả:

s.substr(vt,n)
Tạo một xâu mới từ xâu

s bằng cách copy n kí tự
liên tiếp bắt đầu tự ví trí
vt của xâu s.
Ví dụ: s=” Truong
THPT Nga Son”
=>s.substr(0,6) =
“Truong”

Trong Python ta sử dụng
thao tác cắt xâu để gán cho
biến khác.
Ví dụ:
a = "Có phải em mùa thu
Hà Nội"
n = a[11:25]
print(n)
Kết quả:
mùa thu Hà Nội

Có phải em mùa thu Hà Nội
Có phải em là mùa thu Hà
Nội


[15]
Pos(S1, S2)
Tìm vị trí xuất hiện đầu
tiên của S1 trong S2.
Ví dụ:
S1= ‘THPT’

Tìm S2=’Truong THPT
kiếm Nga Son’
trong Pos(S1, S2) = 8
xâu

s1.find(s2,vt).
Thực hiện: Tìm xâu s2
trong xâu s1 kể từ vị trí
vt của xâu s1.
Ví dụ: s1= “Truong
THPT Nga Son”, s2=
“Nga Son"
=> s1.find(s2,vt) => vt
=12
Chú ý: Nếu khơng tìm
thấy kết quả trả về là -1

Length(st) Cho độ dài
của xâu St.
Ví dụ: st:=“ Truong
THPT Nga Son”
Length(st)=19

<tên biến xâu s >.size()
<biến xâu s>.length()
Thực hiện: lấy chiều dài
xâu s
Ví dụ: s1=“ Truong
THPT Nga Son”
s1.size()=19


Python cung cấp hàng
find() để thực hiện tìm kiếm
và trả về vị trí (chỉ số) tìm
thấy. Khơng tìm thấy sẽ trả
về -1.
Ví dụ:
a = "Có phải em mùa thu
Hà Nội"
n = 'Hà Nội'
k = a.find(n)
print(k)
Kết quả: 19

Độ dài xâu (len)
Để biết độ dài (số ký tự)
của một xâu ta dùng hàm
len() Ví dụ:
Độ
a = "Có phải em mùa thu
dài
xâu
Hà Nội"
n = len(a)
print(n)
Kết quả:25
Upcase(ch) Cho chữ cái toupper
upper
viết hoa tương ứng với Ví dụ:
a = "Có phải em mùa thu

chữ thường trong ch
string s="truong thpt Hà Nội"
Đổi
nga son"; // ket qua:
a = a.upper()
ký tự Ví dụ:
TRUONG THPT NGA
print(a)
hoa ch:= 'a';
SON
Kết quả:
int l=s.size();
ch:= upcase(ch)
for(int i=0;i<=l;i++) CÓ PHẢI EM MÙA THU
->ch = 'A'
s[i]=toupper(s[i]);
HÀ NỘI
cout <tolower
lower
Ví dụ:
a = "Có phải em mùa thu
String s="TRUONG
Hà Nội"
THPT NGA SON "; // ket b = a.lower()
Đổi ký
qua: truong thpt nga son print(b)
tự
int l=s.size();
thường

Kết quả:
for(int i=0;i<=l;i++)
có phải em mùa thu hà
s[i]=tolower(s[i]);
nội
cout <2.3.1.9. Chương trình con
Trong ngôn ngữ
Pascal
Procedure

Trong ngôn ngữ
C++
Hàm trả về một giá trị

Trong ngôn ngữ
Python
Hàm thông thường, được


[16]
Thutuc[(Các tham số)];
[Khai báo Const, Type,
Var]
Begin ..............
End;
Function Ham[(Các tham
số)]:<Kiểu dữ liệu>;
[Khai báo Const, Type,
Var]

Begin ..............
Ham:=<Giá trị>;
End;

Kiểu của hàm Tên_hàm
(Khai báo các đối số)
{
Các câu lệnh;
return giá_trị;
}
Hàm không trả về giá trị
void <tên hàm>
([<danh sách tham số>]);
{
[<dãy các lệnh>]
}

đặt tên
def <tenham>
(<biến/danh sách biến>):
"""docstring (ghi chú về
chức năng của hàm/ hàm
không nhất thiết phải có
docstring)"""
nhiệm vụ>
Hàm ẩn danh khơng có tên
(hàm lambda)
<tên biến>= lambda < tham
biến>: <biểu thức, giá trị trả về>


2.3.2. Minh họa bằng các thuật toán của một số bài tốn cơ bản, đặc trưng
Trong ngơn ngữ
Trong ngơn ngữ
Trong ngơn ngữ
Pascal
C++
Python
Program
vidu1;
#include
<bits/stdc++.h>
from
math
import sqrt
Bài tốn 1
Var a,b,c,x,x1,x2,
using namespace std;
(Giải
D:
real;
int main()
print("Nhập a, b, c khác
phương
Begin
{
float
a,b,c,x1,x2;
0: ")
trình bậc

Write(‘nhap a,b,c’);
cout
<<
"Nhap
a:";
a = float(input())
hai)
readln(a,b,c);
cin>>a;
b = float(input())
D:=b*b-4*a*c;
cout << "\n Nhap b:"; c = float(input())
If D <0 then writeln(‘pt
cin>>b;
d = b**2 - 4*a*c
vo nghiem’)
cout
<<
"\n
Nhap
c:";
if
d < 0:
else If D=0 then
cin>>c;
print("Phương trình vơ
Begin
float D=b*b-4*a*c;
nghiệm.")
X:=-b/2*a;

x1=
(-b-sqrt(D))/(2*a);
elif d == 0:
Writeln(‘phuong trinh
co 1 nghiem la:’,x:8:2); x2=(-b+sqrt(D))/(2*a); print("Phương trình có 1
cout<<"\n x1 = "<<
End else
nghiệm: ", -b/2*a) else:
x1<<"\n x2 = "<Begin
X1:=(-b-sqrt(D))/2*a;
return 0;}
x2 = -b/a - x1
X2:=(-b+sqrt(D))/2*a;
print("x1 = :", x1)
End; Readln End.
print("x2 = :", x2)
#include <iostream>
m = int(input("Nhập m:
Bài tốn 2 Var m,n:integer;
Begin
using namespace std; "))
(Tìm ước
Writeln('Nhap
m
va
int main()
n = int(input("Nhập n:
chung lớn
{ int n,m;

")) while m != n:
nhất của hai n:');Readln(m,n);
While m<>n do
cout<<"nhap n, m: "; if m > n: m -= n else: n
số nguyên
cin>>n>>m;
-= m
dương M và if m>n then m:=m-n
else
n:=n-m;
while
(n
!=
m)
print("UCLN =", m)
N)
Writeln('Uoc chung {if (n>m) n=n-m; else
lon nhat = ',m);
m=m-n; }
Readln
std::cout<<"\n
End.
UCLN= "<return 0;}


[17]

Bài tốn 3 Type Mang =
(Tìm phần

tử lớn nhất
của dãy)

Array[1..50] of
Integer;
Var A:Mang;
N,i,Max:Integer;
Begin
Write(‘Nhap N=’);
Readln(N);
For i:=1 To N Do
Begin
Write(‘A[‘,i,’]=’);
Readln(A[i]); End;
Max:=A[1];
For i:=2 To N Do
If MaxMax:=A[i];
Writeln(‘Phan tu lon
nhat cua mang: ’,
Max);Readln; End.

Var i,x:byte;
a: string;
palin: boolean;
Begin
Write('Nhap xau:');
Read(a);x:=length(a);
palin:=true;
for i:=1 to x div 2 do

if a[i] <> a[x-i+1]
then palin:=false;
if palin then
write('Xau nhap vao
la xau doi xung')
elseWriteln('Xau
nhap vao khong phai
la xau doi xung')
Readln End.
Bài toán 5 Program Minbaso;
(Tìm giá trị Var a, b, c: real;
Function Min(a,b:
nhỏ nhất
real):real;
của ba số
Begin
có sử dụng
If aCTC)
min:=a

Bài tốn 4
(Kiểm tra
tính đối
xứng của
một xâu)

#include <iostream>
#define max 100
using namespace std;

int main()
{ int a[max];
int ptln,n,i,csmax;
cout<<"nhap so
phan tu: ";
cin>>n;
for(i=1;i<=n;i++)
{ cout<<"nhap gia
tri phan tu thu
"<cin>>a[i]; }
ptln=a[1]; csmax=1;
for(i=2;i<=n;i++)
if(a[i]>ptln){ptln=a[i];
csmax=i; }
cout<<"\nPhan tu lon
nhat la "<cout<<"\nChi so cua
phan tu lon nhat la
"<#include <bits/stdc++.h>
using namespace std;
short i,x;
int main()
{ string s, p;
cout<<"Nhap xau s: ";
getline(cin,s);
x=s.length()-1;
p="";for(i=x;i>=0;i--)
p=p+s[i];

if (s==p) cout <<"Xau
doi xung";
else cout<<"Xau
khong doi xung";
return 0;}
#include <iostream>
using namespace std;
float min(float a,float
b);
int main()
{ float a,b,c;
cout << "Nhap vao 3

n = int(input("Nhập số
lượng phần tử của dãy
số, N = : ")) a = []
for i in range(n):
print("Nhập phần tử thứ
", i+1) ai = int(input())
a += [ai]
Max = a[0] cs = 0
for j in a:
if j > Max:
Max = j cs_m = cs
cs += 1
print("Giá trị lớn nhất
của dãy là:", Max)
print("Chỉ số của Max
là: ", cs_m)


a = input("Nhập xâu: ")
b = a[::-1]
if a == b:
print("Xâu đối xứng")
else:
print("Xâu không đối
xứng")

# Python cung cấp sẵn
hàm min()
def nhonhat(a,b):
if a < b:
return a else: return b
a = float(input('Nhập a: '))
b = float(input('Nhập b:


[18]
Else min:=b;
End;
BEGIN
Write(‘Nhap vao ba
so: ‘); readln(a,b,c);
Writeln(‘So nho
nhat trong ba so la:
‘,min(a,b,c);
Readln END.

so a, b, c" <cin>>a>>b>>c;

cout<<"gia tri nho
nhat
la"<return 0;}
float min(float a,float
b){ if (aelse return b;}

'))
c = float(input('Nhập c: '))
m=
nhonhat(nhonhat(a,b),c)
print(f'Giá trị nhỏ nhất
của {a}, {b}, {c} là {m}')

2.3.3. Ưu điểm của ngơn ngữ C++, Python qua một vài ví dụ cụ thể
Ví dụ 1: Bài tốn sắp xếp
Trong C++
- Cung cấp hàm sort

#include <bits/stdc++.h>
using namespace std;
int a[100002];
int main()
{
freopen("daysob.inp","r",stdin);
freopen("daysob.out","w",stdout);
int n=0,x;
while(cin>>x)
{

a[n]=x;
n=n+1;
}
sort(a,a+n);// hàm sắp xếp tăng dần
//sort(a,a+n,greater<int>());// hàm sắp xếp giảm dần
for (int i=0; icout< Ngôn ngữ lập trình Python
- Trong Python có thể dùng hàm sort() để sắp xếp list mà khơng cần viết chương
trình sắp xếp.
n = int(input("Nhập số lượng phần tử của dãy số, N = : ")) a = []
for i in range(n):
print("Nhập phần tử thứ", i+1) ai = int(input())
a += [ai]
a.sort() print(a)

Ví dụ 2: Bài tốn tìm kiếm nhị phân
* Python cung cấp các hàm in, index để xử lý tìm kiếm trong list.
n = int(input("Nhập số lượng phần tử của dãy số, N = : "))
a = []
for i in range(n):
print("Nhập phần tử thứ", i+1) ai = int(input())


[19]
a += [ai]
k = int(input("Nhập số k cần tìm : "))
if k in a:
cs = a.index(k)
print(" Chỉ số tìm được là:", cs) else:

print("Khơng tìm thấy")
input()

* Ưu điểm của ngơn ngữ lập trình C++:
- C++ là một ngơn ngữ low-level dễ dàng giao tiếp với phần cứng.
Một chương trình phần mềm dùng để giao tiếp với phần cứng hay một Embedded
System đều được ưu tiên dùng C++.
- C++ có một hiệu suất cao cùng khả năng tiêu tốn ít tài nguyên phần cứng
khiến chương trình chạy nhanh hơn. Cũng vì hiệu suất cao nên C++ cũng được
dùng để phát triển game. Nói chung, một chương trình địi hỏi hiệu suất cao thì
phần core lúc nào cũng sẽ được ưu tiên viết bằng C++.
* Ưu điểm của ngơn ngữ lập trình Python:
 Dễ đọc và dễ học
 Giảm chi phí bảo trì
 Tránh tác hại từ lỗi phần mềm
 Khả năng ứng dụng rộng rãi
 Quản lý bộ nhớ
 Đơn giản và nhanh chóng
 Mã hóa khơng đồng bộ
 Tích hợp với các ngơn ngữ khác
 Tích hợp ứng dụng doanh nghiệp
2.4. HIỆU QUẢ CỦA SÁNG KIẾN KINH NGHIỆM
Sau khi áp dụng các giải pháp trên để giảng dạy cho học sinh, chất lượng học
tập của học sinh tăng lên rõ rệt. Các em đã hứng thú hơn với môn học, chủ động, tự
giác, sáng tạo trong học tập. Các em đã biết vận dụng linh hoạt và sáng tạo cho
từng bài tốn cụ thể. Tư duy được những bài tốn khó hơn. Làm chủ được kiến
thức của mình.
Chất lượng giảng dạy ở các lớp năm học 2020-2021khi chưa áp dụng các giải
pháp nêu trên. Kết quả khảo sát như sau:
LỚP


SĨ SỐ

GIỎI
SL %

KHÁ
SL %

TB
SL

10D

42

2

4,76 10

23,81 15

11B

45

3

6,67 12


26,67 20

%

YẾU
SL %

35,7 10
1
44,44 8

KÉM
SL %

23,81 5

11,91

17,77 2

4,44

Chất lượng giảng dạy ở các lớp năm học 2021-2022 khi áp dụng các giải pháp nêu
trên. Kết quả khảo sát như sau:


[20]
LỚP

SĨ SỐ


GIỎI
SL %

KHÁ
SL %

10C

45

10

22,22 25

11D

44

8

18,18 23

55,5
6
52,2
7

TB
SL


%

YẾU
SL %

KÉM
SL %

10

22,22 0

0

0

0

12

27,27 1

2,27 0

0

Như vậy, có thể thấy sử dụng các giải pháp trong SKKN của tơi thực sự có hiệu
quả.


3. KẾT LUẬN VÀ KIẾN NGHỊ
Để đổi mới phương pháp dạy học theo hướng tích cực, nhằm nâng cao chất
lượng giáo dục. Bằng những kinh nghiệm đã tích lũy được trong q trình giảng
dạy, tôi đã chọn đề tài: “Một số giải pháp giúp học sinh tiếp cận nhanh ngơn ngữ
lập trình C++ và Python” để thực hiện. Mặc dù với những giải pháp mà tôi đưa ra
để thực hiện đã đem lại hiệu quả cao cũng như chất lượng dạy học của mình. Song
khơng tránh khỏi những thiếu sót. Vậy tơi rất mong sự đóng góp ý kiến của các bạn
đồng nghiệp để SKKN của tơi được hồn thiện hơn.
Tơi xin chân thành cảm ơn!
XÁC NHẬN CỦA THỦ TRƯỞNG ĐƠN VỊ

Thanh Hóa, ngày 25 tháng 5 năm 2022
CAM KẾT KHƠNG COPY

Tơi xin cam đoan đây là SKKN của
bản thân, không sao chép nội dung của
người khác.

Phạm Thị Nhung


[1]

TÀI LIỆU THAM KHẢO
1. Sách giáo viên Tin học 10,11-

Hồ Sĩ Đàm chủ biên

2. Sách giáo khoa Tin học 10,11- Hồ Sĩ Đàm chủ biên
3. Sách bài tập Tin học 10,11- Hồ Sĩ Đàm chủ biên

4. Sách giáo khoa Tin học python 11 – Ths. Nguyễn Văn Nghiêm
5. Một số tài liệu tham khảo trên Internet.
6. Tài liệu tập huấn của Sở GD và ĐT Thanh Hóa.


[2]

DANH MỤC ĐỀ TÀI SKKN
STT
1
2

3
4

5

Tên đề tài SKKN
Sử dụng Microsoft Access trong quản
lý trường học
Phát huy tính chủ động sáng tạo của
học sinh thơng qua một số ví dụ cụ
thể về chương trình con để giải quyết
các bài tốn lập trình
Hướng dẫn học sinh xây dựng thuật
tốn hình thành kỹ năng viết chương
trình
Một số phương pháp rèn luyện tư duy
lập trình pascal cho học sinh qua các
dạng bài tập kiểu xâu

Một số phương pháp sử dụng ô chữ và
lật mảnh ghép trong dạy học tích cực
theo định hướng phát triển năng lực
học sinh ở trường THPT Nga Sơn

Cấp đánh
giá xếp
loại
Cấp
Ngành

Kết quả
đánh giá
xếp loại

Năm học
đánh giá
xếp loại

C

2009

Cấp
Ngành

C

2011


Cấp
Ngành

B

2015

Cấp
Ngành

B

2017

Cấp
Ngành

B

2020