intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Sáng kiến kinh nghiệm THPT: Giải pháp nâng cao chất lượng dạy tin học Pascal lớp 11 tại Trường PT DTNT C23 Vĩnh Phúc

Chia sẻ: Caphesua | Ngày: | Loại File: DOCX | Số trang:23

24
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Mục đích nghiên cứu của đề tài nhằm giúp các em hình dung đượ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, các máy tự động… Qua đó giúp các em có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp mà các em chọn sau này.

Chủ đề:
Lưu

Nội dung Text: Sáng kiến kinh nghiệm THPT: Giải pháp nâng cao chất lượng dạy tin học Pascal lớp 11 tại Trường PT DTNT C23 Vĩnh Phúc

  1. SỞ GIÁO DỤC VÀ ĐÀO TẠO VĨNH PHÚC TRƯỜNG PT DTNT C2,3 TỈNH VĨNH PHÚC =====***===== ` BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN Tên sáng kiến: GIẢI PHÁP NÂNG CAO CHẤT LƯỢNG DẠY TIN HỌC PASCAL LỚP 11 TẠI TRƯỜNG PT DTNT C2,3 TỈNH VĨNH PHÚC  Mã sáng kiến: 04.62.02 Tác giả sáng kiến: Trần Nhật Tân 1
  2. Vĩnh Phúc, Năm 2020 2
  3. BÁO CÁO KẾT QUẢ NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN 1. Lời giới thiệu  Tin học là một môn học mới  ở  các trườ ng phổ  thông nên học sinh   còn nhiều bỡ  ng ỡ  khi ti ếp c ận v ới môn học này. Nội dung tin học lập   trình lớp 11 là một nội dung m ới lạ  đối với đa số  học sinh với nhiều khái  niệm, thuật ng ữ, c ấu trúc dữ liệu mà học sinh mới đượ c tiếp xúc lầ n đầ u.  Chính vì vậy mà học sinh dễ  mắc sai l ầm khi l ập trình giải quyết các bài  toán. Nguyên nhân dẫn đến những khó khăn mà học sinh thườ ng g ặp là rất  phong phú nhưng có thể thấy một số nguyên nhân chính sau đây: + Học sinh th ường g ặp khó khăn khi xác định bài toán. + Khó   liên hệ  phươ ng  pháp  giải  một  bài toán  trong  toán  học  với   thuật giải trong tin h ọc.  Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, vớ i học sinh việc  học ngôn ngữ  lập trình Turbo Pascal là khởi đầu cho việc tiếp c ận ngôn  ngữ  lập trình bậc cao, qua đó giúp các em hình dung đượ 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, các máy tự động… Qua đó giúp các em có thêm một định hướ ng, một   niềm đam mê về tin học, v ề ngh ề nghi ệp mà các em chọn sau này. Chính vì vậy, tôi chọn đề  tài: “Giải pháp nâng cao chất lượng dạy tin  học Pascal lớp 11 tại Trường PT DTNT C23 Vĩnh Phúc” 2. Tên sáng kiến: Giải   pháp   nâng   cao   chất   lượng   dạy   tin   học   Pascal   lớp   11   tại   Trường PT DTNT C2,3 Tỉnh Vĩnh Phúc 3. Tác giả sáng kiến: ­ Họ và tên: Trần Nhật Tân ­ Địa chỉ tác giả sáng kiến: Trường PT DTNT C23 Vĩnh Phúc ­ Số điện thoại: 0988 482 049 E_mail: tantn@vinhphuc.edu.vn 4. Chủ đầu tư tạo ra sáng kiến: Trần Nhật Tân 5. Lĩnh vực áp dụng sáng kiến: Sáng kiến này đượ c áp dụng trong lĩnh vực giảng dạy tin h ọc lớp 11  tại   Trườ ng   THPT   DTNT   C2,3   Vĩnh   Phúc,   và   các   trườ ng   THPT   địa   bàn  tỉnh. 3
  4. 6. Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử, (ghi  ngày nào sớm hơn): Tháng 9/2019 (Năm học 2019­2020) 7. Mô tả bản chất của sáng kiến: ­ Về nội dung của sáng kiến:  GIẢI PHÁP NÂNG CAO CHẤT LƯỢNG DẠY TIN HỌC PASCAL  LỚP 11 TẠI TRƯỜNG PT DTNT C2,3 TỈNH VĨNH PHÚC 1. Cơ sở lí luận: Luật Giáo dục đã nêu rõ : “Phương pháp giáo dục phổ  thông phải phát  huy tính tích cực, tự giác, chủ  động, sáng tạo của học sinh, phù hợp với đặc   điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự  học, rèn luyện  kỹ  năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại  niềm vui, hứng thú học tập cho học sinh”.  Như  vậy, chúng ta có thể  thấy định hướng đổi mới phương pháp dạy  học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi  mới phương pháp dạy học  ở  trường phổ  thông là giúp học sinh hướng tới   việc học tập chủ động, chống lại thói quen học tập thụ động. Với một số nội  dung trong đề tài này, học sinh có thể tự  học, tự rèn luyện thông qua một số  bài tập, dạng bài tập cụ thể. 2. Cơ sở thực tiễn: Qua thực tế  giảng dạy  ở  trường THPT DTNT tỉnh, tôi nhận thấy khi   học đến chương trình tin học lớp 11 đa số học sinh đều nhận xét bộ môn này   rất khó. Các học sinh thường gặp khá nhiều lỗi khi viết một chương trình trong  ngôn ngữ lập trình Pascal. Tuy nhiên cũng có một số  lượng không nhỏ  học sinh rất yêu thích tin  học và thích tìm hiểu một số  bài toán, dạng toán ngoài phạm vi sách giáo  khoa. 3. Nội dung vấn đề nghiên cứu I.  Một số lỗi sai thường gặp của học sinh trong lập trình Pascal: 1. Khai báo sai miền chỉ số cho dữ liệu kiểu mảng. Ví dụ 1: Nhập vào một mảng số nguyên gồm các số  lớn hơn 5 và nhỏ  hơn 30. In mảng vừa nhập. Học sinh khai báo mảng như sau: Var a: array[5..30] of integer; 2. Giá trị biến điều khiển vượt quá miền chỉ số của mảng. 4
  5. Ví dụ 2: Nhập vào một dãy số gồm 7 phần tử và cho biết dãy vừa nhập   có tạo thành cấp số cộng không? Học sinh lập trình giải bài toán trên như sau: Var a: array[1..7] of integer; i,d:integer;kt:boolean; Begin Write(‘nhap day so:’); For i:=1 to 7 do Begin Write(‘a[’ ,i, ‘]’); Readln(a[i]); End; d:=a[2]­a[1]; kt:=true; i:=1; while (kt) and (i
  6. S:=S+T; End; Đoạn chương trình trên có thể lặp vô tận khi kết thúc vòng lặp con i  luôn nhận giá trị bằng k. Để  khắc phục lỗi này, chỉ  cần chú ý các vòng lặp lồng nhau phải sử  dụng biến điều khiển khác nhau. a. Sử dụng dấu ; sai vị trí. Trước Else không có dấu chấm phẩy. Sử  dụng dấu chấm phẩy sau từ  khoá do trong các câu lệnh lặp   câu  lệnh lặp rỗng không làm việc gì cả. b. Không phân biệt được hằng xâu và biến: học sinh cần phải chú ý  hằng xâu đặt trong cặp nháy đơn còn biến thì không cần đặt trong cặp nháy  đơn. c. Tràn số do kết quả tính toán vượt quá giới hạn. Function GT(n:integer):integer; Var i,t:integer; Begin T:=1; For i:=2 to n do t:=t*i; Gt:=t; End; Begin Write(‘GT(8)=’, GT(8)); Readln; End. Khi thực hiện chương trình GT(8)=­25126 là sai vì thực tế 8!=40320 Lỗi này do khai báo hàm trả  về  số  nguyên nên miền giá trị  tối đa là  32767 d. Sử dụng tên hàm làm biến cục bộ. 6
  7. Do lệnh trả  kết quả  cho tên hàm rất giống một lệnh gán bình thường   nên học sinh thường nhầm tên hàm là biến cục bộ. Vì vậy khi viết chương   trình để tiết kiệm biến cục bộ học sinh đã sử dụng tên hàm làm biến cục bộ. Function GT(n:integer):Longint; Var i:integer; Begin For i:=2 to n do GT:=GT*i; End; Trong thân hàm đã sử dụng tên hàm làm biến cục bộ nên khi biên dịch   sẽ  báo lỗi gọi hàm nhưng thiếu tham số  do chương trình hiểu GT:=GT*i là  lời gọi đệ qui. Để tránh lỗi này cần lưu ý với học sinh: để trả kết quả cho hàm (không  đệ  quy), tốt nhất nên tính kết quả  hàm vào một biến cục bộ, trước khi kết  thúc ta mới gán tên hàm bằng giá trị biến này để trả giá trị về cho hàm. e. Chưa hiểu thứ tự ưu tiên phép toán. Thứ tự ưu tiên các phép toán trong ngôn ngữ lập trình Pascal như sau: Lời gọi hàm Biểu thức trong ngoặc Toán tử NOT Toán tử đổi dấu: ­  * / div mod + ­ or >=,>,
  8. toán gần đúng trên máy tính thành tính toán sai. Để  tránh điều này bạn nên  tuân thủ theo các qui tắc dưới đây: So sánh bằng nên dùng biểu thức  Const e=0.0001; …. If abs(a­b)
  9. ra song các em có thể hình dung được thuật toán đó trong đầu. Cần phải tạo   cho các em có ý thức khi viết một chương trình Pascal là phải tuân thủ  theo  trình tự sau: Bài toán Xây dựng thuật toánViết chương trình Ví dụ: Có n hộp có khối lượng khác nhau và một cái cân dĩa. Hãy chỉ ra  cách cân để tìm được hộp nặng nhất.Với bài toán trong thực tế như trên ta có  thể phát biểu lại dưới dạng bài toán trong toán học như  sau: Cho tập hợp A   có số  phần tử hữu hạn. Tìm phần tử  lớn nhất trong tập A nói trên. Khi đó ta   có thể trình bày thuật toán như sau: 1. Nếu chỉ có 1 hộp thì đó chính là hộp nặng nhất và kết thúc. 2. Nếu số hộp n>1 thì Chọn 2 hộp bất kì và đặt lên bàn cân. Giữ lại hộp nặng hơn và cất hộp nhẹ đi chỗ khác. 3. Nếu không còn hộp chưa được cân thì chuyển sangbước 5, ngoài ra: Chọn một hộp bất kì và để lên dĩa cân còn trống Giữ lại hộp nặng hơn, cất hộp nhẹ sang chỗ khác 4. Trở lại bước 3 5. Hộp còn lại trên cân là hộp nặng nhất và kết thúc.   Bài tập về đọc hiểu chương trình: Loại bài tập này sẽ giúp phát triển tư duy, giúp học sinh hiểu bài, nhất  là khi dạy các cấu trúc lệnh. Đối với dạng bài tập này, giáo viên nên hướng  dẫn các em thực hiện tuần tự từng lệnh theo từng câu lệnh cụ thể. Ví dụ:  Cho biết kết quả khi thực hiện chương trình sau: Program vd2; Uses crt; Var i:integer; Begin Clrscr; I:=7; While i>1 do 9
  10. Begin If (i mod 2)0 then i:=i*3+1 Else i:=i div 2; Writeln(i); End; Readln; End.   Bài tập về sửa lỗi chương trình: Ví dụ  3: Để  tìm số  lớn nhất trong 3 số  a,b,c được nhập vào từ  bàn  phím, có người đã viết chương trình như sau: Program vd3; Uses crt; Var a,b,c:integer; Begin Clrscr; Write(‘nhap vao 3 so:’); Readln(a,b,c); If a
  11. 4 Vậy số lớn nhất là 4 Kết quả sai ­ a=5,b=4,c=7 a b c a
  12. Ok:= ‘n’; J:=round(sqr(n)); If ch= ‘Ok’ then ch:= ‘It is’ + ch; ….. While kt and (i
  13. Bước 2: Kiểm tra xau[i] ‘ ’. nếu đúng thì đến bước 3, sai đến bước  5. Bước 3: Tword:=Tword+xau[i] Bước 4: Kiểm tra i
  14. End. Tuy nhiên bài toán trên ngoài cách giải trên ta có thể sử dụng thuật toán   khác để giải. Thuật toán như sau: Bước 1: Xoá các kí tự trong thừa ở đầu. Sử dụng vòng lặp while: while xau[1]= ‘ ’ do delete(xau,1,1); Bước 2: Xoá các kí tự trống ở cuối. Sử   dụng   vòng   lặp   while:   while   xau[length(xau)]=   ‘   ’   do   delete(xau,length(xau),1); Bước 3: xoá các kí tự trống thừa giữa các từ. Kiểm tra 2 kí tự liền kề nhau có hơn 1 kí tự trống thì xoá kí tự trống. While pos( ‘ ’,xau)0 do delete(xau,pos( ‘ ’,xau),1); Học sinh có thể viết chương trình theo thuật toán 2. 3. Giải bài toán trong một trường hợp riêng, yêu cầu học sinh phát hiện   thiếu sót để từ đó hoàn thiện chương trình: Ví dụ 6: Viết chương trình đếm và in ra các số trong 1 xâu đã cho. Cho đoạn chương trình giải quyết công việc trên như sau: I:=1; dem:=0; While i= ‘0’) and (xau[i]= ‘0’) and (xau[i]
  15. End; I:=i+1; End; Write(‘xau co ’,dem, ‘ so la:’); For i:=1 to dem­1 do write(a[i], ‘,’); Write(a[dem]); Đối với bài tập này, giáo viên yêu cầu nhận xét chương trình đã thực  hiện đúng hay chưa, có đúng đối với tất cả các trường hợp hay không? Học sinh có thể  phát hiện chương trình chỉ  đúng với xâu chứa các số  thông thường, còn nếu xâu chứa số  thực thị  chương trình chưa cho kết quả  đúng. Từ  nhận xét đó giáo viên hướng dẫn các em bổ  sung và chỉnh sửa lại   chương trình. 4. Phân chia một bài toán thành nhiều bài toán nhỏ: Trong thực tế. chúng ta thường gặp những vấn đề lớn mà với sức của  một người thì không thể giải quyết được. khi gặp những vấn đề như vậy, ta   thường nhờ  bạn bè, người thân giúp một tay, mỗi người lo một phần việc.  Khi giải một bài toán, ta thường chia bài toán lớn ban đầu thành nhiều bài toán  con để việc giải bài toán  ban đầu trở nên dễ  dàng hơn,  … Và như  vậy, khi   cần giải quyết một vấn đề  nào đó bằng máy tính, để  viết một chương trình   phức tạp ta có thể viết từng phần chương trình giải quyết từng vấn đề nhỏ.  Như vậy, việc phân chia một bài toán thành nhiều bài toán nhỏ sẽ giúp   cho việc giải quyết bài toán mạch lạc, vịêc kiểm tra sai sót thuận tiện, có thể  thấy kết quả ở từng bước và có thể điều chỉnh kịp thời. 5. Sửa lỗi chương trình: Trong dạy lập trình Pascal việc giúp học sinh nhận ra lỗi sai và cách  sửa các lỗi đó là rất cần thiết vàquan trọng. Để  có thể  sửa lỗi nhanh chóng   cần có sự tích luỹ kinh nghiệm những lỗi thường hay gặp. III. Một số bài tập tham khảo: Bài 1. Hệ đếm Trong một cuộc truy tìm một xe ôtô chở  hàng lậu, nguồn tin đầu tiên  cho biết: số của biển xe là số có 3 chữ số đối xứng. 15
  16.  ( Một số có n chữ số trong một hệ đếm nào đó được gọi là đối xứng   nếu chữ số thứ 1 giống với chữ số thứ n, chữ số thứ 2 giống v ới ch ữ s ố th ứ  n ­ 1, ... ).   Sau đó cảnh sát nhận được thêm thông tin: số biển số là một số nguyên  tố. Cảnh sát dựa vào dự đoán của một chuyên gia tin học đưa ra sau khi phân  tích các nguồn tin và xác định tập các số có thể là số của biển số: biển số nếu   viết trong hệ nhị phân cũng là một số đối xứng. Nhờ vậy mà cảnh sát đã bắt  đúng đối tượng. Hãy cho biết các số mà chuyên gia tin học đã xác định mà số  biển xe mà ông ta đã dự đoán đúng. Ý tưởng: Có thể  có nhiều cách giải khác nhau nhưng tất cả  đều cần phải giải  quyết các vấn đề: - Kiểm tra xem một số có là số nguyên tố hay không? - Tìm dạng biểu diễn nhị phân của một số. - Kiểm tra một số có là đối xứng không? - Chọn các số  đối xứng (trong hệ  thập phân) thích hợp để  kiểm   tra. Chương trình: PROGRAM BienSo; Uses crt; Var  m,i,j,k,n,l:integer;                 a,b: array[1..14] of integer; Procedure ChuyenMa(i:integer);  Begin     i:=0;     while i0 do       begin         i:=i+1;         a[i]:=i mod 2;         i:=i div 2;      end; 16
  17.  End;  Function NgTo(i:integer):boolean;          var b:boolean;      j:integer;  Begin    b:=true;  j:=1;    while (j
  18.       for k:=0 to 9 do        begin           n:=101*b[m] + 10*k;           if ngto(n) then             begin                chuyenma(n);                if doixung then                  begin                        write('Bien so can tim: ',n:5,' Ma nhi phan la ');                        for j:=1 to l do  write(a[j]:2);                       writeln;                  end                 else               writeln('So ngto doi xung nhung ma nhi phan khong doi xung  ',n:5);               end;          end; END. Bài 2. Quan hệ  Có N người mang tên tương  ứng là 1, 2, ..., N và tình trạng quen biết   của N người này được cho bởi mảng đối xứng A[1..N,1..N] trong đó A[i,j] =  A[j,i] = 1 nếu i quen j và bằng 0 nếu i không quen j. Hãy xét xem liệu có thể  chia N người đó thành 2 nhóm mà trong mỗi nhóm hai người bất kì đều không  quen nhau? Dữ  liệu vào được cho bởi file QUANHE.INP trong đó dòng thứ  nhất  ghi số  nguyên dương N 
  19. Gợi ý:  Lập mảng XEP[1..N] khởi tạo mọi giá trị bằng 0. Bắt đầu chia nhóm từ  người thứ nhất cho tới người thứ N. Khi xét người thứ i, những khả năng sau  có thể xảy ra: - Nếu   XEP[i]   =   0   (chưa   được   xếp   nhóm)   thì   xếp   vào   nhóm  1(XEP[i] = 1) và xếp những người j quen i vào nhóm 2 (cho XEP[j] =2). - Nếu XEP[i] =  1 và trong số những người quen i có một người j  mà XEP[j] cũng bằng 1 thì kết luận không xếp được. - Nếu XEP[i] = 2 và trong số  những người quen i có một người j  mà XEP[j] cũng bằng 2 thì kết luận không xếp được. Bài 3. Điểm trên mặt phẳng Cho các số  thực a, b, c, d, e, f, g, h. Biết rằng hai điểm (e,f) và (g,h)  khác nhau và các điểm (a,b); (c,d) không nằm trên đường thẳng l đi qua hai  điểm (e,f) và (g,h). Đường thẳng l chia mặt phẳng làm hai nửa mặt phẳng .   Hai điểm (a,b) và (c,d) có vị trí như thế nào so với đường thẳng l ? Ý tưởng: Trong bài này ta sử dụng một kiến thức về hình học: Điểm (x,y) muốn   thuộc đường thẳng đi qua hai điểm (x1,y1) và (x2,y2) khi và chỉ  khi nó thoả  mãn: (x ­ x2)(y1 ­ y2) = (y ­ y2)(x1 ­ x2) hay (x ­ x2)(y1 ­ y2) ­ (y ­ y2)(x1 ­ x2) = 0 (*) Đường thẳng l sẽ  chia các điểm không thuộc nó thành 2 loại (tương  ứng với hai nửa mặt phẳng): một loại làm cho vế  trái của (*) dương và loại   còn lại làm cho nó âm. Vì lẽ  đó nếu 2 điểm cùng phía khi và chỉ  khi tích hai   vế dương. 8. Những thông tin cần được bảo mật: Không 9. Các điều kiện cần thiết để áp dụng sáng kiến: + Với giáo viên: Giáo viên cần nghiên cứu và  đưa ra các bài tập để phù   hợp với từng đối tượng học sinh, với mỗi loại cấu trúc lặp nên đưa ra bài có   tính đặc trưng để  học sinh ghi nhớ  được cách sử  dụng và cú pháp của cấu  trúc lặp. Để  học sinh thực sự  hiểu rõ các loại bài tập trong lập trình mà cụ  thể  đối với học sinh lớp 11 là ngôn ngữ  lập trình Pascal thì cần tăng cường   19
  20. hơn nữa lượng thời gian trong phân phối chương trình để học sinh rèn luyện  các dạng bài tập về  cấu trúc lặp, giúp học sinh nắm chắc cú pháp, cách sử  dụng cấu trúc này. + Với học sinh: Đam mê lập trình và phân tích lỗi trong lập trình. 10. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng  sáng kiến theo ý kiến của tác giả và theo ý kiến của tổ chức, cá nhân đã tham  gia áp dụng sáng kiến lần đầu, kể cả áp dụng thử (nếu có) theo các nội dung   sau: 10.1. Đánh giá lợi ích thu được hoặc dự  kiến có thể  thu được do áp  dụng sáng kiến theo ý kiến của tác giả: Khi áp dụng sáng kiến nhà các đối tượng học sinh đã nêu trên, đa số các  em tránh được các lỗi thường gặp khi học lập trình Pascal. 10.2. Đánh giá lợi ích thu được hoặc dự  kiến có thể  thu được do áp  dụng sáng kiến theo ý kiến của tổ chức, cá nhân: Một số không ít học sinh có tiến bộ rõ rệt khi viết các chương trình có   sử dụng lập trình có cấu trúc. Nâng cao việc yêu thích học tin học đối với một bộ  phận học sinh và  một số em có định hướng nghề nghiệp sau này. 11. Danh sách những tổ chức/cá nhân đã tham gia áp dụng thử  hoặc áp  dụng sáng kiến lần đầu: Số  Tên tổ chức/cá  Địa chỉ Phạm vi/Lĩnh vực TT nhân áp dụng sáng kiến 1 Trường THPT  Đồng Tâm, Vĩnh Yên, Vĩnh Phúc Trường THPT DTNT tỉnh, các trường  DTNT C2,3 tỉnh  THPT khác trên địa bàn tỉnh Vĩnh Phúc ......., ngày.....tháng......năm...... Vĩnh Phúc, ngày 25 tháng 2 năm 202 Thủ trưởng đơn vị Tác giả sáng kiến (Ký tên, đóng dấu) (Ký, ghi rõ họ tên) Trần Nhật Tân 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2