1. Trang chủ
  2. » Thể loại khác

Sáng kiến kinh nghiệm môn Tin học cấp trung học phổ thông

27 269 3

Đ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 27
Dung lượng 214 KB
File đính kèm DANG123.rar (53 KB)

Nội dung

khi thực hiện giảng dạy môn Tin học lớp 11 tại Trường …………………., tôi thấy rằng, việc học sinh lập trình giải các bài toán trên máy tính thường gặp không ít khó khăn. Phần lớn các em đều gặp một số lỗi cơ bản về mặt cú pháp và ngữ nghĩa. Một phần là do thời lượng thực hành trên lớp không nhiều mà phần lớn nhà các em không có máy vi tính hoặc có máy vi tính chăng thì các em cũng sử dụng chưa đúng mục đích do đó các em không được thực hành thường xuyên, dẫn đến các em vẫn mắc phải một số lỗi cơ bản.

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG THPT ………

SÁNG KIẾN KINH NGHIỆM

Người thực hiện: ………

VẬN DỤNG KIẾN THỨC HƯỚNG DẪN HỌC SINH 11 TÌM VÀ SỬA LỖI TRONG NGÔN NGỮ LẬP TRÌNH PASCAL

Tân Trụ, tháng 1 năm 2019

Trang 3

MỤC LỤC

A ĐẶT VẤN ĐỀ 1

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

II MỤC ĐÍCH NGHIÊN CỨU 1

III ĐỐI TƯỢNG NGHIÊN CỨU 1

IV PHƯƠNG PHÁP NGHIÊN CỨU 1

B GIẢI QUYẾT VẤN ĐỀ 2

I CƠ SỞ LÝ LUẬN 2

II THỰC TRẠNG CỦA VẤN ĐỀ 2

1 Thuận lợi 2

2 Khó khăn 2

III CÁC BIỆN PHÁP ĐÃ TIẾN HÀNH 3

1 Lỗi cú pháp 3

a Những lỗi sai cơ bản 3

b Những lỗi sai cơ bản trong câu lệnh rẻ nhánh và lặp 4

c Những lỗi sai cơ bản trong kiểu dữ liệu có cấu trúc 8

d Những lỗi sai cơ bản trong tệp và thao tác với tệp, chương trình con .10 2 Lỗi ngữ nghĩa 15

IV HIỆU QUẢ CỦA SKKN 20

C KẾT LUẬN VÀ KIẾN NGHỊ 22

I KẾT LUẬN 22

II KIẾN NGHỊ 22

Trang 4

A ĐẶT VẤN ĐỀ

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

Thế kỉ XXI là thế kỉ của Công nghệ thông tin và truyền thông Vì vậyviệc trang bị những kiến thức Tin học là một vấn đề có ý nghĩa và tầm quan trọngrất lớn đối với quá trình đào tạo nhân lực, bỗi dưỡng nhân tài cho đất nước Xácđịnh được tầm quan trọng đó nên môn Tin học đã được bộ Giáo dục - Đào tạo đưavào giảng dạy ở các cấp học, nhằm trang bị cho học sinh những kiến thức cơ bản,phổ thông về ngành khoa học Tin học Đặc biệt là trong chương trình SGK Tin họclớp 11 bậc THPT, các nhà biên soạn sách đã đưa vào các chương bài giúp học sinhtiếp cận được với ngôn ngữ lập trình bậc cao Pascal Qua đó giúp các em hìnhdung được sự ra đời, cấu tạo, hoạt động cũng như ích lợi của các chương trình hoạtđộng trong máy tính Từ đó khơi gợi ở các em niềm đam mê đối với bộ môn Tinhọc, tạo niềm tin để các em có thể dễ dàng tự định hướng, lựa chọn nghề nghiệpsau này Tuy vậy, khi thực hiện giảng dạy môn Tin học lớp 11 tại Trường

………., tôi thấy rằng, việc học sinh lập trình giải các bài toán trên máytính thường gặp không ít khó khăn Phần lớn các em đều gặp một số lỗi cơ bản vềmặt cú pháp và ngữ nghĩa Một phần là do thời lượng thực hành trên lớp khôngnhiều mà phần lớn nhà các em không có máy vi tính hoặc có máy vi tính chăng thìcác em cũng sử dụng chưa đúng mục đích do đó các em không được thực hànhthường xuyên, dẫn đến các em vẫn mắc phải một số lỗi cơ bản

Để khắc phục vấn đề này cũng như giúp học sinh chủ động tìm lỗi sai và sửakhi viết chương trình tôi đã áp dụng phương pháp “Vận dụng kiến thức đã họchướng dẫn học sinh tìm và sửa lỗi khi viết chương trình trong ngôn ngữ lập trìnhPascal”

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

- Giúp học sinh chủ động trong việc tìm và sửa chữa lỗi khi viết chương trìnhbằng ngôn ngữ lập trình Pascal trong chương trình Tin học 11 được thực hiện cảtrên bục giảng và phòng thực hành

III ĐỐI TƯỢNG NGHIÊN CỨU

- Học sinh lớp 11A1, 11A4 cuối năm học 2017– 2018 đầu năm học 2018-2019

- Sách giáo khoa Tin học 11, sách giáo viên, chương trình Pascal

IV PHƯƠNG PHÁP NGHIÊN CỨU

- Tiến hành thực nghiệm qua tiết dạy

Trang 5

B GIẢI QUYẾT VẤN ĐỀ

I CƠ SỞ LÝ LUẬN

Pascal là ngôn ngữ lập trình bậc cao do giáo sư Niklaus Wirth (trường đạihọc kỹ thuật, Zurich, Thụy sĩ) sáng tác và công bố vào đầu những năm 1970, vớitên Pascal để kỷ niệm nhà toán học người Pháp Blaise Pascal thế kỷ 17 Lúc đầu,ngôn ngữ lập trình này được sáng tác ra nhằm giúp cho những người mới học lậptrình có được thói quen viết một chương trình có cấu trúc rõ ràng, dễ hiểu và dễđọc cho mọi người Giáo sư Wirth thấy rằng có thể tránh được rất nhiều lỗi khi lậptrình với một ngôn ngữ có cấu trúc khối và có sự kiểm tra kỹ lưỡng sự tương thíchgiữa các kiểu dữ liệu Mà Pascal là một ngôn ngữ như thế: mọi biến và hằng củamột kiểu dữ liệu không thể tự do đem trộn lẫn với các biến và hằng của một kiểu

dữ liệu khác Ngôn ngữ Pascal có thể tách các thông tin dữ liệu (biến, hằng,…) vàcác lệnh cần dùng cho một nhiệm vụ xác định thành những khối riêng, tách ra khỏiphần còn lại của chương trình để người lập trình có thể giải quyết dần từng phầnmột, từng khối một và thậm chí có thể cho nhiều người tham gia lập trình, mỗingười phụ trách một vài khối Và hiện nay Pascal đã được đưa vào chương trìnhhọc chính thức Tuy nhiên trong quá trình học tập, học sinh ở trường tôi vẫn mắcphải một số lỗi khi lập trình Vì vậy để khắc phục tình trạng mắc lỗi, tôi đã cố gắngtìm ra giải pháp trong quá trình giảng dạy

- Phần lớn thì tâm lí phụ huynh cũng như các em chỉ chú trọng vào các mônthi tốt nghiệp và Đại học nên quan niệm học môn Tin học để cho qua Trong khi

Trang 6

đó lập trình Pascal lại sử dụng ngôn ngữ viết bằng Tiếng Anh và cần phải có kiếnthức bổ trợ của môn Toán học, Vật lý,… nên khi viết chương trình học sinhthường hay mắc lỗi mà các lỗi thường gặp như: Đặt sai các tên hằng, biến, khaibáo không đủ biến, sử dụng biến mà không khai báo, khai báo sai tên chươngtrình, viết sai các câu lệnh, viết sai các từ khóa, sai các công thức, không nhớ kiểu

dữ liệu…

III CÁC BIỆN PHÁP ĐÃ TIẾN HÀNH

1 Lỗi cú pháp

a Những lỗi sai cơ bản

- Khi viết chương trình học sinh chúng ta thường mắc một số lỗi cơ bảnnhư:

+ Khi kết thúc câu lệnh phải có dấu “ ; ”

+ Khi viết từ khóa học sinh hay viết thiếu hoặc thừa từ

Ví dụ: Từ khóa: Program thì học sinh viết là Progam

End thì học sinh viết là And+ Sau từ khóa End kết thúc chương trình là “.” Nhưng học sinh lại viết “;”+ Khi viết chương học sinh thường hay viết thiếu hoặc thừa các dấu: “(”,

“)”, “ ,”, “.”, “:=”, “=”, “ ’ ”, …

+ Học sinh viết chương trình mà quên không xuống dòng dẫn đến dòng quádài

+ Khai báo quá ít biến không đủ sử dụng trong chương trình

+ Đặt tên biến, tên chương trình, tên tệp không đúng theo quy định của ngônngữ lập trình

+ Giữa các biến được viết cách nhau bằng dấu “;”

+ Trong một câu lệnh nếu số lệnh >=2 thì phải được đặt trong cặp từ khoá Begin … End; (Câu lệnh ghép)

+ Học sinh khai báo kiểu dữ liệu một đường nhưng khi viết chương trình thìdùng kiểu dữ liệu khác dẫn đến sai kiểu

Ví dụ: Viết chương trình in ra màn hình dòng chữ: “Lop 11A1 truong THPT”

- Bước 1 Chia lớp thành 4 nhóm

- Bước 2 Giáo viên thu kết quả của các nhóm Soạn thảo và chiếu kết quả của mộtnhóm bất kì cho cả lớp cùng quan sát

Trang 7

- Bước 3 Yêu cầu các nhóm còn lại phát hiện lỗi sai Sau đó giáo viên hoàn chỉnh.

- Bước 4: Mỗi học sinh tiến hành gõ trực tiếp trên máy tính, sau khi gõ chươngtrình xong học sinh biên dịch sửa lỗi và thực hiện chương trình

- Bước 5: Giáo viên hoàn chỉnh, nhận xét và giới thiệu học sinh mã lỗi ở trang 136,

137, 138 SGK để học sinh biết cách sửa lỗi:

 Từ khoá Progam sai đúng là: Program(mã lỗi: 36)

 Tên chương trình vi du1 là sai vì tên chương trình được đặttheo quy tắc đặt tên của ngôn ngữ lập trình nên không được chứa dấucách (mã lỗi: 85)

 Sau Uses crt phải có dấu;(mã lỗi 85)

 Sau từ khóa Begin không có dấu “;”(mã lỗi: 85)

 Thủ tục Realn sai, phải là Readln(mã lỗi: 3)

 End; sai phải là End.(End là từ khóa để kết thúc chươngtrình) (mã lỗi: 94)

Qua ví dụ trên học sinh bước đầu biết cách biên dịch sửa lỗi và thực hiện chươngtrình trên máy tính

b Những lỗi sai cơ bản trong câu lệnh rẻ nhánh và lặp

- Đối với trường hợp này học sinh hay mắc phải các lỗi:

+Thiếu từ khoá then hoặc do, downto,to,

+ Điều kiện trong câu lệnh rẻ nhánh là biểu thức lôgic

+ Trong một câu lệnh nếu số lệnh >=2 thì phải được đặt trong cặp từ khoá Begin … End; (Câu lệnh ghép)

+ Trước từ khoá Else không có dấu “;”

Trang 8

+ Giá trị đầu luôn luôn nhỏ hơn hoặc bằng giá trị cuối trong câu lệnh lặp và

là những hằng số

+ Trong câu lệnh lặp While … do phải có lệnh làm thay đổi giá trị biến đếm.+ Điều kiện trong câu lệnh While … do là một biểu thức Logic

+ Khai báo thiếu biến sử dụng trong chương trình

+ Quên khai báo biến đếm trong chương trình

+ Quên đổi công thức viết trong Toán học theo cú pháp viết trong Pascal

Ví dụ : Cho chương trình như sau:

Bước 1 Giáo viên chiếu chương trình cho các nhóm xem

Trang 9

Bước 2 Chia lớp thành 4 nhóm Nhiệm vụ của mỗi nhóm là giải quyết bài toán ởtrên, mỗi nhóm tiến hành gõ trực tiếp trên máy tính, sau khi gõ chương trình xonghọc sinh biên dịch sửa lỗi.

Bước 3: Đại diện nhóm lên trình bày kết quả, cử nhóm nhanh nhất có thể cho điểmcộng ở điểm miệng để khuyến khích tinh thần tìm tòi, tự học của học sinh

Bước 4: Yêu cầu các nhóm còn lại nhận xét sau đó giáo viên hoàn chỉnh bài

Các lỗi sai trong chương trình trên là:

 Khai báo thiếu biến delta sử dụng trong chương trình

 Không có kiểu dữ liệu nào là Read mà chỉ là Real(mã lỗi: 21)

 Câu thông báo trên màn hình được đặt trong dấu ‘’(mã lỗi :8)

x2:=(-b- dela)/2a; sai phải sửa lại là x1:= (-b-sqrt(delta))/2*a;

 Các kết quả được viết cách nhau bàng dấu “,”(mã lỗi :26)

Writeln(‘phuong trinh co nghiem kep,’ –b/2a); saiSửa lại là: Writeln(‘phuong trinh co nghiem kep’, –b/2*a);Writeln(‘phương trinh co 2 nghiem,’x1,x2);

Sửa lại là: Writeln(‘phương trinh co 2 nghiem ’,x1,x2);

 Trước lệnh Else không có dấu “;”(mã lỗi: 113)

 Trong câu lệnh:

If delta>0 then

x1:= (-b+ dela)/2a;

x2:=(-b- dela)/2a;

Writeln(‘phương trinh co 2 nghiem,’x1,x2);

Có nhiều hơn 2 lệnh nên phải sử dụng câu lệnh ghép: Begin End;

Trang 10

Bước 5: Mỗi học sinh tiến hành gõ trực tiếp trên máy tính, sau khi gõ chương trìnhxong học sinh biên dịch sửa lỗi và thực hiện chương trình Căn cứ vào mã lỗi đượcthông báo để sữa lỗi.

Trang 11

Writeln(‘Phuong trinh vo nghiem’);

End;

ReadlnEnd

Giáo viên chốt lại thường gặp là:

Error 21: Error in type Lỗi kiểu

Error 26: Type mismatch Sai kiểu

Error 40: Boolean expression expected Phải là thể biện của biến logic

Error 50: DO expected Thiếu DO

Error 57: THEN expected Thiếu từ khoá THEN

Error 58: TO or DOWNTO expected Phải là từ khoá TO hoặc DOWNTOError 97: Invalid FOR control variable Biến điều khiển FOR không hợp lệError 98: Integer variable expected Phải là một biến số nguyên

Error 129: ENDIF directive missing Thiếu chỉ dẫn END IF

c Những lỗi sai cơ bản trong kiểu dữ liệu có cấu trúc

- Đối với trường hợp này học sinh hay mắc phải các lỗi:

+ Khi khai báo học sinh viết sai từ khoá.

+ Trong khai báo mảng thì chỉ số đầu và chỉ số cuối là hai chỉ số hoàn toàn xác định

+ Độ rộng tối đa của xâu là xác định, nhỏ hơn 255

+ Hằng xâu được đặt trong cặp dấu “ ‘ ….’ ”

Ví dụ: Cho dãy A gồm số nguyên dương a1, a2, an Tìm giá trị nhỏ nhất của dãy, đưa ra vị trí của số đó.

- Bước 1: Giáo viên chiếu chương trình viết sẵn

- Bước 2: Yêu cầu học sinh thảo luận theo nhóm và tìm ra lỗi sai, nhóm nào nhanhnhất, đúng nhất gọi lên trình bày và cho điểm cộng ở cột điểm miệng

Trang 12

- Bước 3: Đại diện nhóm lên trình bày kết quả, cử nhóm nhanh nhất có thể chođiểm cộng ở điểm miệng để khuyến khích tinh thần tìm tòi, tự học của học sinh.

- Bước 4: Yêu cầu các nhóm còn lại nhận xét sau đó giáo viên hoàn chỉnh bài

Khai báo hằng sai: const nmax:=50; phải sửa lại là const

cơ bản và biết cách sửa lỗi như thế nào

Program Vidu;

Uses crt;

Const nmax=50;

Var

Trang 13

d Những lỗi sai cơ bản trong tệp và thao tác với tệp, chương trình con

- Đối với trường hợp này học sinh hay mắc phải các lỗi:

+ Không khai báo biến tệp

+ Không mở tệp để đọc hay ghi nhưng vẫn thao tác đọc ghi tệp

+ Đường dẫn tới tệp không đúng hoặc chưa có

+ Mở quá nhiều tệp

+ Không gán tên cho tệp

+ Chưa nắm được cách thức thức lấy giá trị vào từ input và xuất kết quả ra output

+ Mở tệp nhưng không đóng tệp lại

+ Không phân biệt được hàm và thủ tục

+ Viết sai từ khoá hàm và thủ tục

+ Trong hàm không có lệnh trả về giá trị cho hàm

Trang 14

+ Gán giá trị của biến cho thủ tục.

+ Quên khai báo kiểu dữ liệu cho tên hàm.,…

Ví dụ 1: Cho tệp SN.INP chứa:

Hàng 1: n

Hàng 2 chứa dãy a1,…,an

Cho chương trình đưa ra các số nguyên tố Kết quả lưu vào tệp SN.OUT

10

7 3 9 6 5 14 16 15 11 13

3 7 5 11 13

- Bước 1 Chia lớp thành 4 nhóm Nhiệm vụ của mỗi nhóm là giải quyết bài toán

- Bước 2 Giáo viên thu kết quả của các nhóm Soạn thảo và chiếu kết quả của mộtnhóm bất kì cho cả lớp cùng quan sát Đây là chương trình của nhóm đó:

- Bước 3 Yêu cầu các nhóm còn lại phát hiện lỗi sai Sau đó giáo viên hoàn chỉnh.Đại diện nhóm lên trình bày trước lớp tìm và sửa lỗi tìm được các lỗi sau:

 Khai báo hàm Function NT(M:Byte); sai sửa lại là

Function NT(M:Byte): Boolean;

 Kết thúc chương trình con là End; không phải là End

 Kết thúc chương trình phải đóng tệp lại

- Bước 4: Mỗi học sinh tiến hành gõ trực tiếp trên máy tính, sau khi gõ chươngtrình xong học sinh biên dịch sửa lỗi và thực hiện chương trình Căn cứ vào mã lỗiđược thông báo để sữa lỗi

Var S: Word;

Trang 15

S:=0;

NT:=false;

For i:=1 to M div2 do

If M mod i = 0 Then S:=S+I;

If S=0 then NT:= TrueElse

Error 3: Path not found Không tìm thấy đường dẫn

Error 4: Too many open files Mở quá nhiều file

Error 5: File access denied Không truy nhập được file

Error 6: Invalid file handle Số hiệu file không hợp lệ

Error 102: File not assigned File chưa được chỉ định

Error 103: File not open File chưa được mở

Error 13: Too many open files Quá nhiều file được mở

Error 14: Invalid file name Tên file không hợp lệ

Error 15: File not found Không tìm thấy file

Error 16: Disk full Đĩa đầy

Error 18: Too many files Quá nhiều file

Trang 16

Error 34: Invalid function result type Kiểu trả về của hàm không hợp lệ

Error 59: Undefined forward Biến hay hàm chưa được định nghĩa trước đóError 60: Too many procedures Quá nhiều chương trình con

Error 63: Invalid file type Kiểu file không hợp lệ

Error 77: File variable expected Phải là biến file

Error 122: Invalid variable reference Tham chiếu biến không hợp lệ

Error 136: Invalid indirect reference Tham chiếu gián tiếp không hợp lệError 142: Procedure or function variable expected Phải là biến chương trình con

Error 143: Invalid procedure or function reference Tham chiếu chương trình con không hợp lệ

Chương trình trên được viết lại đúng là:

For i:=1 to M div2 do

If M mod i = 0 Then S:=S+I;

If S=0 then NT:= TrueElse

NT:=False;

End;

Begin

Clrscr;

Trang 18

tuso := tuso div a ;

mauso := mauso div a ;

end ;

writeln(tuso :5, mauso :5) ;

readln;

end

- Bước 2 Chia lớp thành 4 nhóm Yêu cầu các nhóm tìm lỗi sai

- Bước 3 Đại diện các nhóm lên bảng trình bày kết quả

- Bước 4 Giáo viên thực hiện biên dịch chương trình để học sinh thấy được cáclỗi sai và phân tích để học sinh hiểu được nguyên nhân vì sao sai

Các lỗi sai trong chương trình trên là :

+ Từ khóa Funtion sai (mã lỗi : 86) , đúng là : Function

Chưa khai báo kiểu dữ liệu cho tên hàm UCLN (mã lỗi : 86), sửa lại là:

Function

UCLN(x,y :integer) : integer ;

+ Câu lệnh UCLN: = x; sai (mã lỗi: 88) Trình biên dịch thông báo câu lệnh nàythiếu dấu “(” nhưng bản chất câu lệnh này sai vì đặt sai vị trí Câu lệnh gán giá trị cho tên hàm phải nằm trong chương trình con Cụ thể nó phải nằm ở ngay trên câu lênh end; kết thúc chương trình con

- Bước 5 Chạy thử chương trình cho học sinh quan sát

- Bước 6 Giáo viên đánh giá kết quả và cho điểm các nhóm

2 Lỗi ngữ nghĩa

- Các lỗi cú pháp thì được chương trình dịch phát hiện và thông báo chongười lập trình biết còn các lỗi về mặt ngữ nghĩa thì rất khó phát hiện chỉ đượcphát hiện khi thực hiện một chương trình cụ thể Qua các tiết dạy khi học sinh viếtchương trình tôi đã phát hiện ra một số lỗi nghữ nghĩa mà học sinh thường gặpphải như sau:

+ Khai báo đúng nhưng tốn nhiều bộ nhớ và không sát với yêu cầu của bàitoán

Ví dụ 1: Đề bài: Cho dãy A gồm n số nguyên dương a1,a2, an Tìm giá trị nhỏ nhất của dãy, đưa ra vị trí của số đó.

Học sinh viết khai báo như sau:

Ngày đăng: 19/12/2019, 19:31

TỪ KHÓA LIÊN QUAN

w