1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(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

23 25 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề (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
Tác giả Phạm Thị Nhung
Người hướng dẫn P. T. S. Nguyễn Văn A
Trường học Trường Trung học phổ thông Nga Sơn
Chuyên ngành Giáo dục và Đào tạo
Thể loại Sáng kiến kinh nghiệm
Năm xuất bản 2022
Thành phố Thanh Hóa
Định dạng
Số trang 23
Dung lượng 0,97 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chẳnghạ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ạicấ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 toán.Làm như vậy, các e

Trang 1

-*** -SÁNG KIẾN KINH NGHIỆM

MỘT SỐ GIẢI PHÁP GIÚP HỌC SINH TIẾP CẬN NHANH

Trang 2

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

Trang 3

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ếucủ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ướctrê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ể đếncô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ạonhâ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áchthay đổ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áoviê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ácchuyên đề nhằm giúp học sinh trở thành chủ thể của quá trình nhận thức, đảm bảokế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óiriê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ũngnhư 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ọcphải có trách nhiệm làm sao cho học sinh hiểu và yêu thích bộ môn này, tạo chohọ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ọcngà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ẳnghạ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ạicấ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 toá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”

Trang 4

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ếnthứ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ộikiế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ườikhẳng định tính sư phạm mạnh mẽ của Python, nhờ vào cú pháp đơn giản và linhhoạt Chính điểm mạnh này đã giúp Python là một trong những cái tên đầu tiêntrong 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 truyxuấ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 toán tronglập trình

Trang 5

Để học sinh tiếp cận được ngôn ngữ lập trình C++ và Python một cách nhanhnhấ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ệnnhư sau: Trong các tiết giảng tôi đều đưa ra so sánh về sự tương đồng giữa cácngô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ếttừng bài toán cụ thể ở mỗi ngôn ngữ Tôi áp dụng vào từng bài toán để diễn đạt chohọ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ậptrình

Xu hướng hiện nay là dùng ngôn ngữ mới, có tính sáng tạo, chuyên 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ấpTHPT 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ọcTHPT 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ăntrở 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ằmgiú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ậnvấ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ể yêuthí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 trongcô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ìnhPascal thay bằng các ngôn ngữ lập trình mới phù hợp hơn Để đạt hiệu quả trongcô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ápqua 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:

Trang 6

+ 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

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

+ 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ùngbất kì kí tự nào ngoài các kí tự quy định trong bảng chữ cái Ngôn ngữ lậptrì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

3 Kiểu kí tự

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

256 kí tự trong bộ mã

ASCII

1 byte

Trang 7

4 Kiểu logic

Kiểu Phạm vi giá trị Bộ nhớ lưu trữ một giá trị

Trang 8

# 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.

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

4 Kiểu logic

Kiểu logic (bool) trong Python có giá trị True hoặc False

Ngoà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:

Hàm

Biểu diễn Toán học

Biểu diễn trong Pascal

Biểu diễn trong C++

Biểu diễn trong Python

tự nhiên

Luỹ thừa

của số e

print(ord('Â'))

print(chr(194)) Kết quả: 194 Â

Trang 9

Biểu thức là một sự kết hợp giữa các phép toán và các toán hạng để diễn đạtmột công thức toá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 toán trong biểu thức Mỗi biểu thức sẽ có mộtgiá 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 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; Ví dụ: d=b*b- 4*a*c;<tên biến> = <biểu thức> Ví dụ: d=b**2 - 4*a*c<tên biến> = <biểu thức>

 Chú thích

Trong ngôn ngữ Pascal Trong ngôn ngữ C++ Trong ngôn ngữ Python

- Giúp người đọc chương

hoặc có thể viết chú thíchtrên một dòng theo saucặp dấu //

-Dùng dấu thăng # đầudòng khi chú thích trênmộ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

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 Trong ngôn ngữ C++ Trong ngôn ngữ Python

print()

Ví dụ:

print("Chào các bạn! ")

Trang 10

Ví dụ:

freopen("baitap.inp","r", stdin);

Mở file để đọc

with open(‘tenfile’, ‘mode’)

as tenbien

Ta có thể gán mode hoặc bỏ qua vì Python mặc định mở file là để đọc.

Ví dụ: Đọc toàn bộ file

with open("vao.txt") as f: print(f.read())

(ghi đè) hoặc a (ghi tiếp).

Cả mode a và w đều sẽ tạo file mới để ghi nếu file mở

để 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")

Trang 11

if < điều kiện > then <

câu lệnh1 > else < câu

cout<<“ a khong chia het cho 3”;

For <biến đếm> := <giá

trị cuối> downto <giá

Ví dụ:

a = int(input("Nhập a:

")) s = 0 for i in range(101):

s+=1/(a+n); } cout<<"\n Tong S=

"<<s;

while <điều kiện >:

<câu hoặc khối lệnh>

Ví dụ:

a=int(input("Nhập a: "))

s = 1/a n = 0 while not (1/(a+n) < 0.0001): n += 1

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ử>;

Trang 12

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>;

Trong

ngôn

ngữ

C++

*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];

Python không có cấu trúc dữ liệu mảng mà sử dụng kiểu “Danh sách”

(list) thay cho mảng Không giống như mảng, mỗi list có thể lưu trữ phần

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.Chúng ta có thể lưu trữ số nguyên, số thập phân, chuỗi trong cùng mộtlist 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ằngdấu phẩy, nằm trong dấu [] Các danh sách có thể chứa nhiều mục vớikiể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ềuphần tử trong list bằng các đối số trong ngoặc []

Trang 13

ma = [None]*n

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).

Để 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:

Chỉ số các phần tử trong danh sách (list) bắt đầu từ 0 và chiều ngược lạibắ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']

2.3.1.8 Dữ liệu kiểu xâu

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.

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.

Để tạo một biến có kiểu xâu

ta chỉ cần gán xâu cho biến

Trang 14

Khai báo gián tiếp:

cin>>tên biến xâu;

Ví dụ:

Các xâu có thể ghép với nhau bằng toán tử cộng (+) hoặc nhân lên bằng toán tử nhân (*).

str1 = 'Hà Nội' str2 ='Việt

Trang 15

Kết quả:Hà NộiViệt Nam

Hà NộiHà NộiHà Nội

“Truong Nga Son”

Python không cho phép xóa

ký tự trong xâu cho dù cho phép truy xuất ký tự theo chỉ số Ta có thể thay thế ký

tự hoặc xâu con bằng hàm replace().

Ví dụ:

a ="Có phải em mùa thu

Hà Nội"

b = a.replace('em ','') print(a) print(b)

Kết quả:

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

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

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ả:

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

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

Trang 16

Tìm vị trí xuất hiện đầu

tiên của S1 trong S2.

và trả về vị trí (chỉ số) tìm thấy Không tìm thấy sẽ trả

<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

a = "Có phải em mùa thu

Hà Nội"

n = len(a) print(n)

Kết quả:25

Đổi

ký tự

hoa

Upcase(ch) Cho chữ cái

viết hoa tương ứng với

TRUONG THPT NGA SON

int l=s.size();

for(int i=0;i<=l;i++) s[i]=toupper(s[i]);

for(int i=0;i<=l;i++) s[i]=tolower(s[i]);

Pascal Trong ngôn ngữ C++ Trong ngôn ngữ Python

Procedure Hàm trả về một giá trị Hàm thông thường, được

Trang 17

Kiểu của hàm Tên_hàm

(Khai báo các đối số) {

<lệnh/ khối lệnh thực hiện 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 toán cơ bản, đặc trưng

Trong ngôn ngữ Pascal Trong ngôn ngữ C++ Trong ngôn ngữ Python Bài toán 1

Begin Write(‘nhap a,b,c’);

readln(a,b,c);

D:=b*b-4*a*c;

If D <0 then writeln(‘pt

vo nghiem’) else If D=0 then Begin

X:=-b/2*a;

Writeln(‘phuong trinh

co 1 nghiem la:’,x:8:2);

End else Begin

cout << "Nhap a:";

elif d == 0:

print("Phương trình có 1 nghiệm: ", -b/2*a) else: x1 = (-b - sqrt(d))/(2*a) x2 = -b/a - x1

print("x1 = :", x1) print("x2 = :", x2)

While m<>n do

if m>n then m:=m-n else n:=n-m;

Writeln('Uoc chung lon nhat = ',m);

Readln End.

#include <iostream>

using namespace std;

int main() { int n,m;

cout<<"nhap n, m: ";

cin>>n>>m;

while (n != m) {if (n>m) n=n-m; else m=m-n; }

std::cout<<"\n UCLN= "<<n;

print("UCLN =", m)

Ngày đăng: 05/06/2022, 10:16

HÌNH ẢNH LIÊN QUAN

+ Bảng chữ cái tiếng Anh. - (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ảng ch ữ cái tiếng Anh (Trang 6)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w