1. Trang chủ
  2. » Fantasy

Sáng kiến kinh nghiệm năm học 2018 - 2019 - Trường THPT Lưu Hoàng - Ứng Hòa - Hà Nội

22 12 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

Định dạng
Số trang 22
Dung lượng 277,15 KB

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

Nội dung

Lỗi học sinh thường mắc phải : Học sinh dễ nhầm lẫn với việc giải phương trình bậc nhất một ẩn nên thường không xét tới khả năng a=0 nên học sinh đưa luôn ra nghiệm x=-b/a. Lỗi này do họ[r]

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘI

Trang 2

MỤC LỤC

PHẦN I : ĐẶT VẤN ĐỀ Trang 1I.1 LÝ DO CHỌN ĐỀ TÀI Trang 1I.2 MỤC ĐÍCH NGHIÊN CỨU Trang 1I.3 ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU VÀ THỜI GIAN THỰC HIỆN ĐỀ TÀI Trang 2I.4 QUÁ TRÌNH THỰC HIỆN ĐỀ TÀI Trang 2I.4.1 Tình hình thực tế trước khi thực hiện đề tài Trang 2I.4.2 Số liệu điều tra trước khi thực hiện đề tài Trang 2PHẦN 2: GIẢI QUYẾT VẤN ĐỀ Trang 3II.1 GIỚI THIỆU VỀ CẤU TRÚC RẼ NHÁNH Trang 3II.2 CÁC LỖI CỦA HỌC SINH THƯỜNG MẮC VÀ CÁCH KHẮC PHỤC Trang 4II.3 KẾT QUẢ ÁP DỤNG ĐỀ TÀI Trang 18PHẦN III : KẾT LUẬN VÀ KIẾN NGHỊ Trang 19III.1 KẾT LUẬN Trang 19III.2 KIẾN NGHỊ Trang 19

Trang 3

PHẦN I : ĐẶT VẤN ĐỀ

1 LÝ DO CHỌN ĐỀ TÀI

Căn cứ vào công văn số 3627/SGDĐT-GDPT, ngày 29/8/2018 của SởGiáo dục và Đào tạo về việc Hướng dẫn thực hiện nhiệm vụ giáo dục trung họcnăm học 2018-2019 và hướng dẫn hoạt động chuyên môn bộ môn Tin học cấpTHPT của Sở Giáo dục - Đào tạo Hà Nội Đổi mới hình thức tổ chức dạy họcngoài việc tổ chức cho học sinh thực hiện các nhiệm vụ học tập ở trên lớp, cầncoi trọng giao nhiệm vụ và hướng dẫn học sinh học tập ở nhà

Căn cứ vào kế hoạch giảng dạy môn Tin 11 của trường THPT Lưu Hoàng

về số lượng, nội dung các tiết bài tập và thực hành ở các chương III, chương IV.Với tình hình thực tế giảng dạy môn Tin ở trường THPT Lưu Hoàng, tôi nhậnthấy học sinh chưa có hứng thú với môn học, một phần vì môn Tin học 11 quákhó đối với các em, một phần vì tư duy giài toán chưa cao do đầu chất lượngtuyển sinh vào 10 còn thấp Để góp phần nâng cao chất lượng giờ dạy, việc thuhút học sinh tích cực giải toán bằng máy tính và phát triển tư duy lập trình củahọc sinh là rất cần thiết

Câu lệnh rẽ nhánh và câu lệnh ghép là một nội dung tiêu biểu của phầnlập trình Thực tế khi sử dụng câu lệnh này để giải bài tập các em thường mắcphải nhiều lỗi sai, đặc biệt là xác định biểu thức logic và không sử dụng câu lệnhghép trong trường hợp cần thiết

Sau khi tìm hiểu các nguyên nhân và những lỗi học sinh hay mắc phải khilập trình giải toán có sử dụng cấu trúc rẽ nhánh, tôi tìm giải pháp khắc phụccủng cố, khắc sâu kiến thức thông qua việc hướng dẫn và giao bài tập cho họcsinh hoàn thiện sản phẩm ở nhà

2 MỤC ĐÍCH NGHIÊN CỨU

Đề tài này chủ yếu tập trung vào nghiên cứu những sai lầm thường mắcphải của các em khi sử dụng câu lệnh rẽ nhánh Hệ thống các bài tập nghiên cứuquen thuộc, các bài toán gần gũi với thực tế, có mở rộng bài toán, có phát triểnbài toán, có áp dụng liên môn giúp học sinh yêu thích môn học và phát triển tưduy lập trình

Đề tài có ý nghĩa lớn đối với việc đổi mới phương pháp giảng dạy Pháthuy tính tích cực của học sinh, tạo sự hứng thú cho học sinh, khuyến khích họcsinh tự tìm tòi, sáng tạo trong quá trình lĩnh hội tri thức

Trang 4

3 ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU VÀ THỜI GIAN THỰC HIỆN ĐỀ TÀI

I.3.1 Đối tượng nghiên cứu

- Những lỗi mà học sinh lớp 11 thường mắc phải khi sử dụng cấu trúc rẽ nhánh

để giải toán

I.3.2 Phạm vi nghiên cứu

- Bài tập về cấu trúc rẽ nhánh

I.3.3 Thời gian thực hiện đề tài

- Đề tài được viết và áp dụng trong Năm học 2018-2019

4 QUÁ TRÌNH THỰC HIỆN ĐỀ TÀI

1 Tình hình thực tế trước khi thực hiện đề tài

- Sau khi dạy xong bài 9 : Cấu trúc rẽ nhánh, Tôi đã cho khảo sát lớp 11A1,11A2

- Còn nhiều học sinh mắc lỗi sai khi sử dụng câu lệnh rẽ nhánh do xác định biểuthức logic không đúng, còn nhầm lẫn và nhớ sai cú pháp

- Chưa hiểu rõ về cấu trúc rẽ nhánh nên không viết câu lệnh không đúng hoặckhông sử dụng câu lệnh ghép khi cần thiết

- Tư duy lập trình thấp, kỹ năng giải toán chưa cao

- Học sinh quên kiến thức cũ

- Cơ sở vật chất còn thiếu số lượng máy tính thực hành cho học sinh ít, số lượng

học sinh có máy tính riêng ở nhà chưa nhiều Các yếu tố này làm ảnh hưởng đến

chất lượng, hiệu quả của tiết học

2 Số liệu điều tra trước khi thực hiện đề tài

Xếp loại

Trang 5

Điều kiện Câu lệnh

Sáng kiến kinh nghiệm : “ Phát triển tư duy lập trình và khắc phục sai lầm

cho học sinh 11 thông qua sử dụng câu lệnh rẽ nhánh”.

Sáng kiến gồm các nội dung chính :

+Giới thiệu về cấu trúc rẽ nhánh

+ Phân tích các lỗi của học sinh hay mắc phải khi sử dụng cấu trúc rẽ nhánh + Đề xuất giải pháp khắc phục

Điều kiện : là biểu thức logic

Câu lệnh : Là một câu lệnh của Pascal

Nếu điều kiện đúng (có giá trị true) thì câu lệnh sẽ được thực hiện, ngược lại

câu lệnh sẽ bị bỏ qua.

II.1.2 Dạng đủ

Cú pháp: If <điều kiên 1> Then <câu lệnh 1> Else <câu lệnh 2> ;

Trang 6

Điều kiện : là biểu thức logic.

Câu lệnh 1, câu lệnh 2: Là một câu lệnh của Pascal

Nếu điều kiện đúng thì câu lệnh 1 được thực hiện, ngược lại câu lệnh 2 đượcthực hiện

II.1.3 Câu lệnh ghép

Theo cú pháp, sau từ khóa Then hoặc ELSE phải là một câu lệnh Nhưng

trong nhiều trường hợp, các thao tác sau những tên dành riêng đó khá phức tạp,đòi hỏi không phải là một mà là nhiều câu lệnh để mô t Trong trường hợp nhưvậy ngôn ngữ lập trình cho phép gộp một dãy câu lệnh thành một câu lệnh ghép.Câu lệnh ghép của Pascal có dạng :

II.2.1 Lỗi về cách viết và xác định biểu thức logic

- Loại biểu thức nhất thiết phải có mặt trong câu lệnh rẽ nhánh đó là biểu thứcLogic, vấn đề viết biểu thức trong ngôn ngữ lập trình Pascal phải tuân thủ đúngcác quy tắc của ngôn ngữ lập trình, có những bài toán các em phải xác định biểuthức logic, việc này không phải dễ đối với các em Điều này còn phụ thuộc vàokhả năng tư duy về mặt toán học

- Lỗi viết dấu chấm phẩy trước Else

- Do số lượng máy tính của trường rất ít, nên nhiều tiết bài tập các em học phòngmáy chiếu hoặc làm bài trên giấy vì vậy cần phải rèn cho các em cách viết cẩnthận

- Lỗi biểu diễn sai phép toán trong ngôn ngữ pascal.

Chẳng hạn : x*x thì học sinh vẫn viết là: x.x , lỗi này nếu các em thực hành

trên phòng máy thì chương trình dịch sẽ thông báo nhưng các em mất thời giansửa và có em còn không biết cách sửa

Trang 7

- Lỗi thiếu dấu ngặc hoặc không sử dụng phép toán logic

Chẳng hạn tính z=x+y nếu x2  y2  và y x1 

Thì các em viết như sau : if * x y* y 1x , y  then z:=x+y;x

- Cách khắc phục : Dự kiến trước những lỗi sai của học sinh dễ mắc như :

Lỗi biểu biễn biểu thức Toán trong ngôn ngữ Pascal, lỗi đặt dấu chấm phẩykhông đúng chỗ, lỗi viết phép toán logic …., giáo viên yêu cầu học sinhphân tích kỹ bài toán trong Toán học, sau đó yêu cầu các em biểu diễn biểuthức trong ngôn ngữ Pascal, nhấn mạnh cho học sinh

+ Phép nhân thay bởi dấu sao *

+ Phép chia thay bởi dấu gạch chéo /

+Phép toán logic và (and), hoặc (or)

+Khi xét đồng thời nhiều biểu thức , phải có cặp đóng mở ngoặc cho từngbiểu thức

Kết quả :

If * x y* yx then 1 z x * x y* y ;

If ( * x y* y 1x ) and ( y ) then x z x y  ;

If ( * x y* y 1x ) and ( y x ) then z 0.5 ;

- Yêu cầu học sinh viết lại bằng cách sử dụng cấu trúc rẽ nhánh dạng đủ và

thay biểu thức * x y* yx bằng 1 sqr x( )sqr(y) và so sánh kết quả với1

cùng một bộ Test

- Tôi yêu cầu học sinh đề xuất một bộ Test : Có đủ cả 3 trường hợp sảy ra mà

đã biết trước kết quả, mục đích là để học sinh tự kiểm tra lại tính đúng đắn củachương trình

- Sau đây là một bộ Test tiêu biểu:

2

12

2

z 

Trang 8

x y trong trường hợp còn lại

- Học sinh dễ mắc lỗi khi xác định và viết biểu thức logic :

+Lỗi thứ nhất: Về mặt Tốn học, các em nhầm lẫn Hình trịn và đường trịn

nên chỉ đưa ra được điều kiệnIM  (x a )2 (y a)2 r, thậm chí cĩ học sinh

cịn quên cả cơng thức tính khoảng cách giữa hai điểm

+Lỗi thứ hai : Cĩ dấu chấm phẩy trước từ khĩa Else , Lỗi này do sử dụng cú

pháp rẽ nhánh dạng đủ sai Cụ thể như sau :

If sqrt((x a ) *(x a ) (y  a)*(y a)) then z:=abs(x)+abs(y) ;r

+Biểu thức trong Tốn học : Điểm M(x,y) thuộc hình trịn tâm I(a,b) bán kính

r khi IM (x a )2 (y b)2 r

+Yêu cầu học sinh : Viết biểu thức trên trong ngơn ngữ Pascal và sử dụng cấu

trúc rẽ nhánh để viết câu lệnh kiểm tra vị trí của điểm M cĩ thuộc hình trịnkhơng

+ Nhấn mạnh cho học sinh nếu sử dụng cấu trúc rẽ nhánh dạng đủ thì trước Else

khơng cĩ dấu chấm phẩy

- Kết quả:

Cách 1: Sử dụng cấu trúc rẽ nhánh dạng thiếu

If sqrt((x a ) *(x a ) (y  b)*(y b)) then z:=abs(x)+abs(y) ;r

If sqrt((x a ) *(x a ) (y  b)*(y b)) r then z:=x+y;

Cách 2: Sử dụng cấu trúc rẽ nhánh dạng đủ

Trang 9

If sqrt((x a ) *(x a ) (y  b)*(y b)) then z:=abs(x)+abs(y) r

Else z:=x+y;

Bài tập giao cho học sinh theo nhóm: Về hoàn thiện chương trình,

+ Nhập vào tọa độ điểm M(x,y), tâm I(a,b), bán kính R

+ Tính và đưa ra giá trị của z

+ Xây dựng bộ Test và nộp báo cáo kết quả thử nghiệm.

Ví dụ 2: Viết câu lệnh rẽ nhánh để kiểm tra 3 số nguyên dương a,b,c có phải 3

cạnh của một tam giác không ?

Lỗi biểu thức logic :

- Trường hợp 1: Biểu thức logic kiểm tra chưa đúng, chưa xét được hết các

trường hợp, lỗi này thuộc về mặt tư duy toán học Lỗi này chương trình dịchkhông thể phát hiện và thông báo, chỉ khi chạy chương trình với các bộ Test cụ

thể học sinh mới phát hiện ra sai

If a+b>c then write(‘ Ba so a,b,c la do dai ba canh cua tam giac ’)

Else write(‘ Ba so a,b,c khong la do dai ba canh cua tam giac ’);

- Trường hợp 2: Học sinh xác định được biểu thức logic rồi nhưng khi trình

bày sai, chương trình dịch báo lỗi không sửa được Đây là lỗi thiếu ngoặc, cụ thểhọc sinh viết như sau:

If a+b>c and a+c>b and b+c>a then write(‘ Ba so a,b,c la do dai ba canh cua tam giac ’) Else write(‘ Ba so a,b,c khong la do dai ba canh cua tam giac ’);

- Cách khắc phục lỗi :

Kiểm tra về kiến thức Toán học : Điều kiện để 3 số nguyên dương là độ dài 3cạnh của một tam giác ?

Điều kiện : a+b>c và a+c>b và b+c>a

+ GV phải nhấn mạnh : Ba điều kiện đồng thời thỏa mãn: (a+b>c) và (b+c>a)

và (a+c>b) Biểu thức logic nhận giá trị True khi cả 3 điều kiện thỏa mãn

- Dự kiến câu hỏi của học sinh : Học sinh có thể thắc dùng hiệu hai số bất kỳ

trong 3 số nhỏ hơn số còn lại, cách này cũng được nhưng các em nên dùng tổng

2 số lớn hơn số còn lại

- Đề xuất một bộ Test tiêu biểu để kiểm tra tính đúng đắn của chương trình?

Trang 10

+GV chuẩn bị một chương trình sai có câu lệnh sau

If a+b>c then write(‘ Ba so a,b,c la do dai ba canh cua tam giac ’)

Else write(‘ Ba so a,b,c khong la do dai ba canh cua tam giac ’); Sau đó chạy thử cho học sinh, đưa vào một bộ Test cụ thể như : a=1, b=3, c=2

và cho học sinh nhận xét về kết quả mặc dù thỏa mãn điều kiện a+b>c nhưng bộ

3 số đó có là độ dài của một tam giác không?

Từ đó giáo viên nhấn mạnh cho học sinh: Đối với mỗi bài toán, việc xác địnhbiểu thức logic rất quan trọng Có những biểu thức logic bao gồm đồng thờinhiều điều kiện Khi đó chúng ta phải sử dụng phép toán logic và (AND)

- Giao nhóm học sinh về nhà:

+ Hoàn thiện chương trình

+ Xây dựng một bộ Test tiêu biểu.

Ví dụ 3: Viết chương trình giải bài toán dạng ax  (trong đó a,b là các sốb 0nguyên nhập vào từ bàn phím)

Lỗi học sinh thường mắc phải : Học sinh dễ nhầm lẫn với việc giải phương

trình bậc nhất một ẩn nên thường không xét tới khả năng a=0 nên học sinh đưaluôn ra nghiệm x=-b/a Lỗi này do học sinh quên kiến thức toán học

Cách khắc phục : Yêu cầu học sinh viết câu lệnh rẽ nhánh, xây dựng bộ Test

+ 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 duy nhất x=-b/a

Kết quả mong đợi :

If (a=0) and (b=0) then write(‘phuong trinh co vo so nghiem ’) ;

If (a=0) and (b<>0) then write(‘phuong trinh vo nghiem ’) ;

If a<>0 then write(‘phuong trinh co nghiem duy nhat x=’, - b/a :2:1) ;

- Học sinh phải hiểu rõ hoạt động của câu lệnh rẽ nhánh dạng thiếu, dạng đủ

và có thể sửa lại bằng cách sử dụng cấu trúc rẽ nhánh dạng đủ

If a<>0 then write(‘phuong trinh co nghiem duy nhat x=’, - b/a :2:1)

Trang 11

Else

If b<>0 then write(‘phuong trinh vo nghiem ’) Else wite(‘phuong trinh co vo so nghiem ’) ;

Hướng dẫn cho học sinh xây dựng bộ Test tiêu biểu, có đủ các trường hợp

mà đã biết trước kết quả

Ví dụ một bộ Test tiêu biểu sau:

Input

Output

0 0 Phuong trinh co vo so nghiem

2 - 6 Phuong trinh co nghiem duy nhat x=3.0

II.2.2 Lối không sử dụng câu lệnh ghép khi cần thiết.

Các lỗi thường gặp khi lập trình sử dụng câu lệnh rẽ nhánh là không tạocâu lệnh ghép trong trường hợp cần thiết, đây là lỗi mà các em khó phát hiện vìchương trình dịch không phát hiện giúp được Khi có nhiều câu lệnh IF liềnnhau thường tạo ra nhiều tiềm ẩn dẫn tới lỗi Học sinh thường mắc lỗi không sửdụng câu lệnh ghép khi cần thiết

Ví dụ 1: Có sẵn chương trình nhập vào 3 số thực a,b,c Kiểm tra 3 số đó có là

3 cạnh của một tam giác không ?

Yêu cầu học sinh sửa lại chương trình : Nếu là 3 cạnh của một tam giác hãy

tính chu vi và diện tích tam giác đó ?

Bài toán này quen thuộc với học sinh nhưng khi sửa lại chương trình, lỗi họcsinh không sử dụng câu lệnh ghép:

If (a < b+c) and (b < a+c) and (c < a+b) Then

P := (a + b + c) / 2 ;

S := Sqrt(p*(p-a)*(p-b)*(p-c)) ;

+ Sau từ khóa Then muốn thực hiện hai câu lệnh tính P và S nên phải sử dụng

câu lệnh ghép, và hai câu lệnh này chỉ được thực hiện khi biểu thức (a < b+c)

and (b < a+c) and (c < a+b) nhận giá trị True

Trang 12

Cách khắc phục:

+Nhấn mạnh cho học sinh khi nào cần sử dụng câu lệnh ghép: Sau các từ

khóa Then, Else muốn thực hiện nhiều hơn một câu lệnh ta sử dụng câu lệnh

Ví dụ 2: Viết chương trình kiểm tra 3 số a,b, c và thông báo ra màn hình theo

thứ tự có phải là một cấp số cộng không ? Nếu là cấp số cộng hãy đưa ra côngsai của cấp số đó ?

Lối học sinh thường mắc :

+ Quên tính chất của cấp số cộng, từ đó dẫn đến việc không kiểm tra được + Không sử dụng câu lệnh ghép

If b:=(a+c)/2 then

Writeln(‘ ba so theo thu tu la mot cap so cong : ’);

Writeln(‘ Cong sai d= ’, b-a);

- Đưa vào bộ Test cho học sinh phân tích trong trường hợp không sử dụng câulệnh ghép

- Với hai bộ Input như sau:

Input

- Bộ thứ hai, kết quả ba số theo thứ tự không là cấp số cộng, nhưng chương

trình vẫn đưa ra công sai d=b-a=1 Từ đó dẫn đến kết quả của bài toán sai.

Trường hợp này chương trình dịch không phát hiện được lỗi cú pháp Chỉ khithực hiện chương trình với một bộ dữ liệu cụ thể trên các em thấy kết quả củabài toán không đúng do lỗi không sử dụng câu lệnh ghép

- Nhấn mạnh cho học sinh khi nào cần sử dụng câu lệnh ghép

Kết quả:

If b:=(a+c)/2 then

Begin

Writeln(‘ ba so theo thu tu la mot cap so cong : ’);

Writeln(‘ Cong sai d= ’, b-a);

Trang 13

Ví dụ 1: Ở ví dụ 3 sách giáo khoa trang 40, các em đã biết viết câu lệnh rẽ

nhánh để tìm Max của hai số a,b

If a > b Then Max := a Else Max:=b;

Câu hỏi 1: Đối với bài toán tìm Max của 3 số a, b, c thì các em sẽ thêm lệnh

nào?

học sinh dễ dàng nói thêm lệnh

IF max < c Then max := c ;

Kết quả mong đợi :

IF a > b Then Max := a Else max := b ;

IF max < c Then Max := c ;

Câu hỏi 2: Đối với bài toán tìm Max của 4 số : a, b, c, d thì các em sẽ thêm

lệnh nào? học sinh dễ dàng nói thêm lệnh

IF max < d Then max := d ;

- Tuy nhiên với bài toán tìm Max của nhiều số thì phải có công cụ khác mà ở

các bài học sau các em sẽ biết, điều này gợi mở vấn đề cho học sinh tìm tòi kiếnthức mới, xây dựng lòng ham mê học tập của các em

- Chương trình sau được cấu trúc lại từ các lệnh đã có ở chương trình trước.Được bổ sung câu lệnh mới làm cho tính hợp lí, tính khoa học của lập trìnhđược nâng cao học sinh có dịp nhìn lại chương trình cũ, ôn lại kiến thức cũ, sosánh chương trình mới với chương trình cũ để thấy cái hay của chương trìnhmới, cái hạn chế của chương trình cũ

Câu hỏi 3: Hãy sửa lại chương trình trên thành bai toán viết chương trình

nhận vào 2 số nguyên không âm a và b viết lên màn hình 2 số đó theo thự tựtăng dần

Giao cho nhóm học sinh về nhà: Sửa chương trình và chọn một bộ Test tiêu biểu.

Kết quả:

Program sapxep_2so;

Uses Crt ;

Var a , b : Word ;

Ngày đăng: 06/02/2021, 21:35

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