Sáng kiến kinh nghiệm Giải pháp nâng cao chất lượng dạy tin học Pascal lớp 11 tại Trường Phổ thông DTNT C2, 3 tỉnh Vĩnh Phúc

docx 20 trang sk11 06/07/2024 730
Bạn đang xem tài liệu "Sáng kiến kinh nghiệm Giải pháp nâng cao chất lượng dạy tin học Pascal lớp 11 tại Trường Phổ thông DTNT C2, 3 tỉnh Vĩnh Phúc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Sáng kiến kinh nghiệm Giải pháp nâng cao chất lượng dạy tin học Pascal lớp 11 tại Trường Phổ thông DTNT C2, 3 tỉnh Vĩnh Phúc

Sáng kiến kinh nghiệm Giải pháp nâng cao chất lượng dạy tin học Pascal lớp 11 tại Trường Phổ thông DTNT C2, 3 tỉnh Vĩnh Phúc
 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
 Vĩnh Phúc, Năm 2020
 1 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.
 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;
 3 Để 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ộ.
 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;
 5 không cho ép từ kiểu thực sang kiểu nguyên và ngược lại. Để chuyển từ kiểu thực 
sang kiểu nguyên ta dùng hàm Round hoặc Trunc (Tránh tràn số).
 II. Một số kinh nghiệm dạy lập trình Pascal:
 1. Có nhiều dạng bài tập:
 Khi dạy lập trình nói chung và Pascal nói riêng, nhiều khi người dạy chỉ 
chú ý tới các bài tập về lập trình mà không nghĩ rằng trong những bước đầu để 
học sinh hiểu bài cần phải đưa ra nhiều dạng bài tập, trong số các dạng bài tập đó 
ở đây ta có thể nêu ra một số dạng như sau: bài tập về viết thuật toán, bài tập về 
đọc hiểu chương trình, bài tập về sửa lỗi chương trình,
 Bài tập về viết thuật toán:
 -Theo định nghĩa trong sách giáo khoa Tin học 11, thuật toán là một dãy 
hữu hạn các thao tác được sắp xếp theo một trình tự xác định, sao cho sau khi thực 
hiện dãy thao tác ấy từ INPUT ta nhận được OUTPUT. Nói cách khác, trình bày 
thuật toán tức là chỉ ra các bước cần thực hiện để đi đến kết quả.
 -Việc trình bày thuật toán trước khi viết chương trình là hết sức quan trọng. 
Thuật toán đúng thì chương trình mới có khả năng đúng, còn một thuật toán sai 
chắc chắn là cho một chương trình sai. Tuy nhiên đối với phần lớn học sinh lớp 
11 thường bỏ qua bước này do tâm lý học sinh không thích các loại bài tập như 
thế. 
 -Trong nhiều trường hợp tưởng như không cần thuật toán cụ thể học sinh 
vẫn viết được chương trình. Thực tế thuật toán đó không được viết ra nhưng đã 
hình thành sẵn trong đầu người viết.
 -Với đa số học sinh hiện nay, cần phải dành một lượng thời gian thích hợp 
để rèn luỵên loại bài tập này. Phải làm sao cho việc viết thuật toán trở thành kĩ 
năng để khi các em lập trình trên máy, tuy không cần viết thuật toán 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:
 7 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<b then a:=b
 Else 
 If a<c then a:=c;
 Write(‘So lon nhat la:’,a);
 Readln;
 End.
 Chương trình trên cho đáp số lúc đúng, lúc sai tuỳ thuộc vào a,b,c. Hãy giải 
thích tại sao và sửa lại cho đúng.
 Ta thực hiện chương trình trên với 2 bộ input sau đây:
 - a=3,b=4,c=5
 a b c a<b a<c
 3 4 5 T (3<4)
 4
 Vậy số lớn nhất là 4 Kết quả sai
 - a=5,b=4,c=7
 a b c a<b a<c
 5 4 7 F (5<4) T (5<7)
 7
 Vậy số lớn nhất là 7 Kết quả đúng
 9 End;
 Hãy viết phần khai báo biến cho đoạn chương trình trên.
 Với dạng bài tập này, ta căn cứ vào các câu lệnh đã cho để viết phần khai 
báo biến cho chương trình trên như sau: 
 Var n,i,j:integer;
 X:real;
 Kt:boolean;
 ok:char;ch:string;
 Tuy nhiên ta cũng có nhiều cách để khai báo biến ví dụ biến ok có thể thuộc 
kiểu string; j có thể thuộc kiểu real,
 2. Trình bày thuật toán, yêu cầu học sinh viết chương trình theo đúng thuật 
toán đó:
 Một bài toán có thể có nhiều cách giải khác nhau ứng với mỗi cách giải ta 
có một thuật toán. Để giúp học sinh có khả năng nhanh chóng nắm được ý tưởng 
của người khác cần luỵên cho các em biết giải bài toán theo một thuật toán đã 
được trao đổi. Khả năng hiểu được nhanh ý tưởng của người khác cũng chính là 
yêu cầu trong hoạt động nhóm. Phát triển khả năng này là phát triển một phẩm 
chất tư duy quí báu để các em biết hợp tác trong công việc, một trong những yêu 
cầu của người lao động, sáng tạo trong thời đại mới, thời đại mà một sản phẩm là 
sự kết tinh lao động của nhiều người.
 Ví dụ 5: Lập chương trình cắt bỏ các kí tự trống thừa của một xâu cho trước. 
Hãy viết chương trình theo thuật toán sau:
 Bước 1: i:=1;Tword:= ‘’;XauM:= ‘’;
 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<=length(xau). Đúng thì tăng i lên 1 và quay lại bước 2; 
sai thì đến bước 8.
 Bước 5: kiểm tra Tword ‘’. Đúng thì xauM:=xauM+Tword+ ‘ ’ ; gán 
Tword= ‘’ và quay lại bước 4. Sai thì chuyển đến bước 6.
 Bước 6: Kiểm tra Tword ‘’. Đúng thì gán xauM:=xauM+Tword; sai thì 
xoá kí tự trống ở vị trí length(xauM) của xauM.
 Bước 7: gán xau:=xauM;
 11 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<=length(xau) do
 Begin
 If (xau[i]>= ‘0’) and (xau[i]<= ‘9’) then
 Begin
 xauM:= ‘’;
 while (xau[i]>= ‘0’) and (xau[i]<= ‘9’) do
 begin
 xauM:=xauM+xau[i];
 i:=i+1;
 end;
 dem:=dem+1;
 val(xauM,a[dem],n);
 i:=i-1;
 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?
 13 - 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;
 End;
 Function NgTo(i:integer):boolean;
 var b:boolean; j:integer;
 Begin
 b:=true; j:=1;
 while (j<trunc(sqrt(i))) and b do
 begin
 j:=j+1;
 if i mod j = 0 then b:=false;
 end;
 ngto:=b;
 End;
 Function DoiXung:boolean;
 15 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 <= 100, trong N dòng tiếp theo, dòng thứ i ghi N số A[i,1], ..., 
A[i,N].
 Kết quả ghi ra file QUANHE.OUT như sau:
 o Nếu không có thể , ghi dòng chữ KHONG THE
 o Nếu có thể, ghi ra hai dòng, dòng thứ nhất tên những người thuộc nhóm 
 1, dòng thứ hai tên những người thuộc nhóm 2.
 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:
 17

File đính kèm:

  • docxsang_kien_kinh_nghiem_giai_phap_nang_cao_chat_luong_day_tin.docx