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

Chuyên đề: GIÚP HỌC SINH TỰ TÌM VÀ SỬA LỖI KHI VIẾT CHƯƠNG TRÌNH BẰNG NGÔN NGỮ LẬP TRÌNH PASCAL TRONG CHƯƠNG TRÌNH TIN HỌC 8

25 1,3K 7

Đ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 25
Dung lượng 108 KB

Nội dung

Chuyên đề: GIÚP HỌC SINH TỰ TÌM VÀ SỬA LỖI KHI VIẾT CHƯƠNG TRÌNH BẰNG NGÔN NGỮ LẬP TRÌNH PASCAL TRONG CHƯƠNG TRÌNH TIN HỌC 8 Tin học là một môn học mới và tương đối khó đối với học sinh THCS. Trong đó, môn lập trình Pascal trong chương trình lớp 8 lại càng khó. Để viết được một chương trình hoàn chỉnh thỏa mãn yêu cầu của bài toán đặt ra trên máy tính thì học sinh phải có tư duy lôgic về thuật toán, khả năng sử dụng máy tính thành thạo, sử dụng các câu lệnh và khai báo kiểu dữ liệu một cách hợp lý. Tuy nhiên khi tiến hành viết chương trình trên máy tính hay viết chương trình trên giấy học sinh thường gặp một số lỗi cơ bản về mặt cú pháp và ngữ nghĩa

Trang 1

TÊN CHUYÊN ĐỀ:

“GIÚP HỌC SINH TỰ TÌM VÀ SỬA LỖI KHI VIẾT CHƯƠNG TRÌNH BẰNG NGÔN NGỮ LẬP TRÌNH PASCAL TRONG CHƯƠNG TRÌNH TIN HỌC 8”

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

Tin học là một môn học mới và tương đối khó đối với học sinh THCS.Trong đó, môn lập trình Pascal trong chương trình lớp 8 lại càng khó Đểviết được một chương trình hoàn chỉnh thỏa mãn yêu cầu của bài toán đặt ratrên máy tính thì học sinh phải có tư duy lôgic về thuật toán, khả năng sửdụng máy tính thành thạo, sử dụng các câu lệnh và khai báo kiểu dữ liệu mộtcách hợp lý Tuy nhiên khi tiến hành viết chương trình trên máy tính hay viếtchương trình trên giấy học sinh thường gặp một số lỗi cơ bản về mặt cú pháp

và ngữ nghĩa

Trong quá trình giảng dạy và hướng dẫn học sinh viết chương trìnhhầu hết giáo viên thường để học sinh tự tìm và sửa chữa lỗi sai Các lỗi saiđược SGK Tin học 8 đưa ra tuy nhiên nếu làm theo cách mà các giáo viênthường dùng sẽ tạo cho học sinh tính thụ động Chỉ khi nào lên thực hànhtrên máy tính thì học sinh mới tìm ra lỗi sai và sửa Hiện nay các trườngTHCS trên địa bàn Đồng Hới trường nào có điều kiện thì cũng chỉ xây dựngđược 3 phòng máy để học sinh thực hành Như vậy học sinh sẽ không đượcthực hành viết chương trình trên máy tính thường xuyên dẫn đến các lỗi sai

cơ bản học sinh vẫn mắc phải Để khắc phục vấn đề này cũng như giúp họcsinh chủ động tìm lỗi sai và sửa khi viết chương trình tôi đã mạnh dạn xây

dựng chuyên đề: “Giúp học sinh tự tìm và sửa lỗi khi viết chương trình bằng ngôn ngữ lập trình Pascal trong chương trình Tin học 8”

Trang 2

II MỤC ĐÍCH CHUYÊN ĐỀ

Thực tế cho thấy rằng, việc đưa kiến thức lập trình Pascal vào chươngtrình Tin học 8, bước đầu các em còn rất mơ hồ và chưa thực sự hiểu sâu vềcấu trúc của ngôn ngữ Dẫn đến tình trạng các em mắc phải quá nhiều lỗi khithực hành lập trình trên máy tính

Vì vậy, chuyên đề “Giúp học sinh tự tìm và sửa lỗi khi viết chương trình bằng ngôn ngữ lập trình Pascal trong chương trình Tin học 8” sẽ

phần nào giúp các em hiểu sâu hơn bản chất và cấu trúc ngôn ngữ lập trìnhPascal Rèn tư duy và kỹ năng sử dụng ngôn ngữ Pascal vào giải quyết một

số bài tập trong quá trình học tập của học sinh, giúp học sinh tự tin hơn khithực hành trên máy tính

III NỘI DUNG.

1 Cơ sở lý luận:

a Thuận lợi:

- Trước yêu cầu ngày càng cao của việc dạy và học Tin học của giáo viên và học sinh Trường THCS Đồng Phú đã trang bị 2 phòng thực hành để học sinhhọc tốt hơn

- Đội ngũ giáo viên dạy môn Tin học còn trẻ, nhiệt tình, năng động luôn tìm tòi những phương pháp giảng dạy tốt nhất để mang lại cho học sinh nhữngtiết học thú vị và bổ ích

b Khó khăn

- Lập trình bằng ngôn ngữ lập trình Pascal là môn học hoàn toàn mới, chưa

có tính kế thừa từ các năm trước nên đa phần các em còn rất bỡ ngỡ khibước đầu tiếp cận

- Ngôn ngữ lập trình Pascal đòi hỏi tính chặt chẽ, logic cao nên dẫn đến khókhăn cho các em trong quá trình thực hành trên máy tính

Trang 3

2 Cơ sở thực tiễn

- Khi viết chương trình học sinh thường mắc các lỗi sau:

+ Lỗi cú pháp: Là lỗi mà khi viết chương trình học sinh không tuân thủ đúngquy định về cấu trúc của ngôn ngữ lập trình như: thiếu dấu, sai câu lệnh, đặttên biến, tên chương trình sai,… Đối với lỗi này khi thực hiện chương trình

ta ấn tổ hợp phím Alt + F9 là chương trình dịch báo lỗi và căn cứ vào bảng

mã lỗi trong sách giáo khoa là ta có thể sửa được

+ Lỗi ngữ nghĩa: Là khi chương trình không còn xảy ra lỗi cú pháp Nhưngkhi thực hiện chương trình thi kết quả không đúng hoặc không giới hạn hếtcác trường hợp xảy ra theo yêu cầu của bài toán

- Phần lớn khi dạy lập trình cho học sinh giáo viên thường sử dụng haiphương pháp:

+ Phương pháp dùng bảng: Đối với phương pháp này giáo viên thường viếtsẵn chương trình cho học sinh hoặc cho học sinh khá giỏi lên viết chươngtrình và những học sinh còn lại chỉ việc chép vào vở Các chương trình viếtsẵn này thông thường không có lỗi sai

+ Phương pháp dạy tại phòng thực hành: Giáo viên viết chương trình bằngngôn ngữ lập trình Pascal rồi chạy chương trình đó cho học sinh Học sinhghi bài và gõ lại đúng chương trình đó Tuy nhiên khi gặp bài toán tương tựthì học sinh lại lập trình mắc rất nhiều lỗi sai

* Dự báo

Nếu Giáo viên không thay đổi cách dạy nhằm giúp học sinh chủ độnghơn trong quá trình tìm lỗi và sửa lỗi thì học xong chương trình Tin học 8học sinh vẫn chưa viết được một chương trình hoàn chỉnh

3 Các biện pháp đã tiến hành:

Trong quá trình giảng dạy tôi dùng cả hai phương pháp dạy học là dạy bảng

và dạy tại phòng thực hành

Trang 4

a Lỗi cú pháp:

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

+ 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: “(”, “)”,

+ Giữa các biến được viết cách nhay 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

- Để tránh những lỗi sai cho học sinh khi viết chương trình tôi dùng phươngpháp sau:

Trang 5

Clrscr;

Writeln( Lop 8/1 truong THCS Đong Phu’);

Realn

End;

Nếu dạy trên bục giảng:

+ Chia lớp học thành các nhóm (mỗi bàn học sinh ngồi là một nhóm) đểthảo luận

+ Đưa ví dụ lên bảng yêu cầu học sinh viết chương trình Khi học sinhviết xong yêu cầu các nhóm kiểm tra và sửa các lỗi của nhóm vừa lênbảng thực hiện

+ Giáo viên đưa chương trình viết lên bảng qua bảng phụ, chương trìnhnày nên viết sai các lỗi cú pháp, sau đó yêu cầu các nhóm thảo luận và sửachữa rồi cho điểm nhóm nào sửa chữa đúng nhất để tạo hứng thú cho họcsinh trong quá trình học

+ Giáo viên đưa chương trình đúng lên bảng để các nhóm xem và ghi bài

- Giáo viên Yêu cầu học sinh thảo luận theo nhóm tìm ra lỗi trong chươngtrình trên

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

• 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 đặt theo quy tắcđặt tên của ngôn ngữ lập trình nên không được chứa dấu cá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ương trình)

(mã lỗi: 94)

Qua ví dụ trên học sinh sẽ không mắc vào các lỗi cơ bản đã nêu và biết cách

Trang 6

sửa lại chương trình trên lại cho đúng là:

Nếu dạy trên phòng máy:

+ Giáo viên chép bài tập 1, 2 lên bảng, yêu cầu học sinh thực hiện 2 bài tập

đó trên máy

+ Sau khi học sinh thực hiện xong ấn phím F9 để kiểm tra lỗi, căn cứ vào mãlỗi báo dưới dạng: Error mã lỗi: Lỗi mắc phải đối chiếu vào bảng lỗi ở trang136,137,138 SGK để sửa

+ Các lỗi hay mắc phải trong trường hợp này là:

Error 21: Duplicate identifier Trùng tên

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

Error 26: Type mismatch Sai kiểu

Error 36: BEGIN expected Phải là BEGIN

Error 37: END expected Phải là END

Error 85: ";" expected Phải là dấu ";"

Error 86: ":" expected Phải là dấu ":"

Error 87” "," expected Phải là dấu ","

Error 88: "(" expected Phải là dấu "("

Error 89: ")" expected Phải là dấu ")"

Error 90: "=" expected Phải là dấu "="

Error 91: ":=" expected Phải là dấu ":="

Trang 7

Error 92: "[" or "(." Expected Phải là dấu "[" hoặc "(."

Error 93: "]" or ".)" expected Phải là dấu "]" hoặc ".)"

Error 94: "." expected Phải là dấu "."

Error 113: Error in statement Lỗi trong câu lệnh

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

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

Nếu dạy trên bục giảng:

- Giáo viên yêu cầu học sinh thảo luận theo nhóm và sau đó gọi một nhómlên thực hiện Đây là chương trình mà một nhóm viết lên bảng:

Program vidu2;

Uses crt;

Var

a,b,c: real;

Trang 8

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

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

Cụ thể:

Write(‘ nhap a,b,c); sửa lại là Write(‘ nhap a,b,c’);

• Biểu thức toán học

Delta:=b2-4ac; sai phải viết lại là: Delta:=b*b-4*a*c; (mã lỗi :26)

b/2a sai phải sửa lại là b/2*a

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

Trang 9

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

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

sai phải sửa lại là x2:= (-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); sai

Sử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+delta)/2a;

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

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

Có nhiều hơn 2 lệnh nên phải được đặt trong cụm từ khóa Begin End; Else If delta>0 then x1:= (-b+delta)/2a;

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

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

If delta<0 then

Writeln(‘Phuong trinh vo nghiem’);

Có nhiều hơn 2 lệnh nên phải được đặt trong cụm từ khóa Begin End;

- Giáo viên chỉnh sửa lại chương trình trên thành chương trình hoàn chỉnh:

Program vidu2;

Uses crt;

Var a,b,c: real;

delta,x1,x2:real;

Trang 10

Nếu dạy trên phòng phực hành:

Sau khi gõ chương trình xong học sinh 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

Các lỗi thường gặp là:

Error 8: String constant exceeds line Hằng xâu vượt quá một dòng

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

Trang 11

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

Error 58: TO or DOWNTO expected Phải là từ khoá TO hoặc DOWNTO Error 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

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àntoà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ụ 3: 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ố đó

Nếu dạy trên bục giảng:

Giáo viên đưa chương trình đã chuẩn bị lên bảng phụ sau khi các nhóm đãthảo luận và yêu cầu học sinh thực hiện chỉnh sửa lại chương trình chođúng

Trang 12

- Đối với bài toán này học sinh dễ dàng phát hiện ra các lỗi sau:

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

• Khai báo mảng sai từ khóa khai báo mảng là Array chứ không phải

Trang 13

Begin Min:=A[i]; Csmin:=i; End;

Writeln(‘ gia tri nho nhat la:’,min:3,’Tai vi tri:’,csmin:2);

Readln

End

Với phương pháp dạy giáo viên vừa kết hợp bài giảng vừa kết hợp cảthao tác kiểm tra lỗi và học sinh tự nhận biết lỗi khi viết chương trình Saumỗi tiết học học sinh sẽ biết được những lỗi mà mình mắc phải khi viếtchương trình để rút kinh nghiệm cho lần sau

Nếu dạy trên phòng máy:

Sau khi gõ chương trình xong học sinh 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

Các lỗi thường gặp là:

Error 22: Structure too large Cấu trúc quá lớn

Error 23: Set base type out of range Kiểu cơ bản bị tràn

Error 25: Invalid string length Độ dài xâu không hợp lệ

Error 66: String variable expected Phải là biến xâu

Error 74: Constant and case types don't match: Hằng và các kiểu không

Trang 14

hợp

Error 75: Record variable expected Phải là biến record

Error 92: "[" or "(." Expected Phải là dấu "[" hoặc "(."

Error 93: "]" or ".)" expected Phải là dấu "]" hoặc ".)"

Error 100: String length mismatch Độ dài xâu không hợp

Ví dụ: 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:

Const nmax=50;

Var A:Array[1 nmax] 0f Integer;

N,i,min,csmin:integer;

• Bài toán cho ta là dãy số nguyên dương nhưng học sinh khai báo là Integer

có nghĩa là khi nhập giá trị cho phần tử mảng vẫn thỏa mãn điều này sai vớiyêu cầu của bài toán

• N,i, csmin <=nmax nên ta khai báo kiểu dữ liệu là Byte

Trang 15

áp dụng vào từng bài toán cho hợp lý

+ Học sinh không biết sử dụng câu lệnh ghép Nếu số lệnh lớn hơn hoặcbằng 2 trong một câu lệnh thì phải dùng câu lệnh ghép

+ Học sinh không phân biệt được trong trường hợp nào thì dùng lặp For

Do trường hợp nào dùng câu lệnh While … Do

Nếu trong bài toán xác định được số lần lặp thì dùng For … Do

Nếu trong bài toán mà số lần lặp phải dựa vào điều kiện thì dùng

While … Do Khuyến khích học sinh dùng câu lệnh While … do

Ví dụ:

Yêu cầu In ra xâu st sau khi đã xoá 3 ký tự tại vị trí số 5 của xâu st

Học sinh viết:

ST1:= delete(st,5,3);

Đối với trường hợp này giáo viên nhắc lại các chú ý sau:

• Hàm Trả về giá trị qua tên của nó Thủ tục không trả về giá trị

• Trong quá trình viết chương trình con phải có một lệnh trả về giá trị

cho hàm qua tên của nó

• Để học sinh hiểu rõ hơn giáo viên dùng bảng các hàm và thủ tục xử

lý trong xâu giải thích cho học sinh

III KẾ HOẠCH THỰC HIỆN

- Tháng 9/2018, tổ chuyên môn phân công giáo viên viết nội dung chuyên

đề, thể nghiệm chuyên đề

- Thời gian viết nội dung chuyên đề: trong tháng 2,3/2019

- Thời gian thể nghiệm chuyên đề:

+ Tiết 55: Lớp 81, tiết 3, thứ 5, ngày 28 tháng 3

+ Tiết 56: Lớp 83, tiết 1, sáng thứ 4, ngày 3 tháng 4

Trang 16

- Giáo án thể nghiệm chuyên đề:

Tiết 55, 56: Bài thực hành 7: Xử lý dãy số trong chương trình

- Người được phân công viết nội dung và thể nghiệm chuyên đề: ThầyNguyễn Văn Sơn, Thầy Trương Phú Chon

NGƯỜI VIẾT CHUYÊN ĐỀ

Nguyễn Văn Sơn

Trang 17

GIÁO ÁN THỂ NGHIỆM CHUYÊN ĐỀ

- Biết khai báo và sử dụng biến mảng

- Biết cách sử dụng câu lệnh if then, for… do;

- Hiểu và chỉnh sửa chương trình

- Hiểu và viết được chương trình với thuật toán tìmgiá trị lớn nhất, nhỏ nhất của một dãy số, tínhtổng dãy số

2 K n ng ĩ ă :

- Viết được các chương trình Pascal đơn giản

3 Thái độ:

- Thái độ ọ ậ h c t p nghiêm túc, yêu thích mơn h c.ọ

II Chu n b c a Giáo viên và H c sinh: ẩ ị ủ ọ

1 Giáo viên: Giáo án, b ng, ph n.ả ấ

2 H c sinh ọ : sách, t p, vi t, xem sách trậ ế ước

III Ti n trình bài d y ế ạ

1 Ki m tra bài c : ể ũ

Câu 1) Viết cú pháp câu lệnh if… then và for… do.Tl: câu lệnh if then: if <điều kiện> then <câu lệnh>;Câu lệnh fo do: for <biến đếm>:=<giá trị đầu> to

Ngày đăng: 01/11/2019, 14:57

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w