Tải bản đầy đủ (.pdf) (31 trang)

Sáng kiến kinh nghiệm đề tài một số kinh nghiệm dạy tốt môn tin học lớp 11

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (655.17 KB, 31 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐĂK NÔNG
TRƯỜNG THPT PHAN CHU TRINH
----------

SÁNG KIẾN KINH NGHIỆM
ĐỀ TÀI:

“MỘT SỐ KINH NGHIỆM DẠY TỐT
MƠN TIN HỌC LỚP 11”

Mơn: Tin học
Tác giả: Vũ Đại Thanh
Chức vụ: Phó hiệu trưởng
Đơn vị cơng tác: Trường THPT Phan Chu Trinh
CƯ JÚT – ĐĂK NÔNG, NĂM HỌC 2014 – 2015


LỜI CAM ĐOAN

Tôi xin cam đoan : Đề tài sáng kiến kinh nghiệm “Một số kinh nghiệm dạy tốt
môn Tin học lớp 11” là đề tài của riêng tôi. Không sao chép của ai, nội dung
đề tài có tham khảo và sử dụng các tài liệu, thông tin được đăng tải trên các
tạp chí và các trang web theo danh mục tài liệu tham khảo của đề tài.
Các số liệu trong đề tài được sử dụng trung thực, không trùng lặp, nếu có
sai sót gì trong q trình trình bày thì xin được châm trước.

Cư Jút, ngày 20 tháng 01 năm 2015
Tác giả đề tài sáng kiến kinh nghiệm
Giáo viên

Vũ Đại Thanh




MỤC LỤC
PHẦN I: MỞ ĐẦU ........................................................................................ 5
I.
LÍ DO CHỌN ĐỀ TÀI ....................................................................... 5
II. MỤC ĐÍCH NGHIÊN CỨU .............................................................. 5
III. ĐỐI TƯỢNG NGHIÊN CỨU ............................................................ 5
IV. PHƯƠNG PHÁP NGHIÊN CỨU ...................................................... 5
V. GIỚI HẠN PHẠM VI NGHIÊN CỨU............................................... 6
PHẦN II: NỘI DUNG.................................................................................... 7
I.
BÀI 9: CẤU TRÚC RẼ NHÁNH....................................................... 7
1. Thực trạng của vấn đề ..................................................................... 7
2. Các biện pháp đã tiến hành để giải quyết vấn đề ............................. 7
3. Kết quả đạt được ............................................................................. 9
II. BÀI 10: CẤU TRÚC LẶP ................................................................. 9
1. Thực trạng của vấn đề ................................................................... 10
2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 10
3. Kết quả đạt được ........................................................................... 14
III. BÀI 11: KIỂU MẢNG ..................................................................... 14
1. Thực trạng của vấn đề ................................................................... 15
2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 15
3. Kết quả đạt được ........................................................................... 19
IV. BÀI 12: KIỂU XÂU ........................................................................ 20
1. Thực trạng của vấn đề ................................................................... 20
2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 20
3. Kết quả đạt được ........................................................................... 23
V. BÀI 16: VÍ DỤ LÀM VIỆC VỚI TỆP ............................................. 24
1. Thực trạng của vấn đề ...................................................................... 24

2. Các biện pháp đã tiến hành để giải quyết vấn đề .............................. 24
3. Kết quả đạt được .............................................................................. 26
VI. BÀI 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI ........................ 26
1. Thực trạng của vấn đề ................................................................... 27
2. Các biện pháp đã tiến hành để giải quyết vấn đề ........................... 27
3. Kết quả đạt được ........................................................................... 28
PHẦN III: KẾT LUẬN VÀ KIẾN NGHỊ..................................................... 30
I.
KẾT LUẬN ..................................................................................... 30
II. KIẾN NGHỊ ..................................................................................... 30
TÀI LIỆU THAM KHẢO ............................................................................ 31


DANH MỤC KÝ HIỆU VIẾT TẮT VÀ THUẬT NGỮ
STT

Tên viết tắt và
thuật ngữ

Giải thích

Trang xuất hiện

1

ASCII

American Standard Code for
Information Interchange


19, 20

2

GVCN

Giáo viên chủ nhiệm

22

3

nxb

Nhà xuất bản

20

4



Quyết định

7, 13

5

SGK


Sách giáo khoa

6, 8, 20, 21, 22


PHẦN I: MỞ ĐẦU
I.

LÍ DO CHỌN ĐỀ TÀI
Đổi mới phương pháp dạy học (PPDH) là một yêu cầu tất yếu trong sự

nghiệp đổi mới giáo dục – đào tạo của nước ta. Đây cũng đang là vấn đề cấp
bách không chỉ được toàn ngành giáo dục quan tâm mà cũng là sự quan tâm
trong đường lối lãnh đạo công tác giáo dục của Đảng, từng được ghi trong các
Nghị quyết Trung ương 4 (khoá VII) và Nghị quyết Trung ương 2 (khố
VIII), Luật giáo dục.
Trong chương trình dạy Tin học ở bậc THPT, đặc biệt là chương trình Tin
học khối 11 rất khó cho Thầy Cơ giáo cũng như học sinh, vì phải làm thế nào
để học sinh có thể hiểu được ngơn ngữ lập trình, để từ đó có thể lựa chọn và
thiết kế thuật toán. Đối với học sinh thì phải làm quen với lối suy nghĩ logic
với sự hoạt động của máy tính, mà đây lại là một lối suy nghĩ hồn tồn khác
với các mơn học khác.
Với kinh nghiệm mười năm dạy môn Tin học ở bậc THPT, Tôi mạnh
dạn viết đề tài sáng kiến kinh nghiệm “Một số kinh nghiệm dạy tốt môn Tin
học lớp 11” để đồng nghiệp có dịp tham khảo, giúp giảng dạy mơn Tin học
lớp 11 được tốt hơn.
II.

MỤC ĐÍCH NGHIÊN CỨU
Tìm hiểu về chất lượng bộ mơn Tin học và tìm giải pháp nâng cao chất


lượng trong dạy học.
III. ĐỐI TƯỢNG NGHIÊN CỨU
 Học sinh lớp 11 qua các năm học.
 Nghiên cứu khái quát về Chương trình Tin học lớp 11.
IV. PHƯƠNG PHÁP NGHIÊN CỨU
 Xây dựng một số ví dụ đơn giản và bám sát mục tiêu mơn học.

5


 Thử nghiệm câu hỏi bằng cách kiểm tra trên giấy và trên máy để đánh
giá độ khó, độ phân biệt, độ giá trị của hệ thống câu hỏi, phân tích hệ
thống câu hỏi tạo một bộ câu hỏi có chất lượng.
V.

GIỚI HẠN PHẠM VI NGHIÊN CỨU
Chương trình Tin học lớp 11 của Bộ giáo dục và Đào tạo Việt Nam
và Học sinh lớp 11 qua các năm học.

6


PHẦN II: NỘI DUNG
I.

BÀI 9: CẤU TRÚC RẼ NHÁNH

A. Mục đích, yêu cầu
- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).

- Hiểu câu lệnh ghép.
- Sử dụng cấu trúc rẽ nhánh trong mơ tả thuật tốn của một số bài toán
đơn giản.
- Viết được các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng để
thể hiện được thuật toán của một số bài toán đơn giản.
B. Nội dung lên lớp.
1. Thực trạng của vấn đề
Đây là một trong 3 cấu trúc quan trọng trong Pascal, đặc biệt là câu
lệnh if-then có 2 dạng thiếu và đủ. Hai dạng này phải có kinh nghiệm
thực tế mới có thể hiểu hết ý nghĩa của 2 dạng này.
2. Các biện pháp đã tiến hành để giải quyết vấn đề
2.1. Câu lệnh if-then
Do đó Tơi mạnh dạn thay thay 3 ví dụ trong sách giáo khoa trang 40
bằng ví dụ sau:
Viết chương trình tìm số lớn nhất trong 3 số nguyên a, b, c được
nhập vào từ bàn phím. (ví dụ được lấy trong sách giáo khoa thí điểm
năm 1997).
Lưu ý là học sinh đã được học cấu trúc đầy đủ của chương trình
Program tim_max;
uses crt;
var a,b,c,max : integer;
begin
clrscr;
write('Nhap vao 3 so nguyen a,b,c: ');
readln(a,b,c);
7


max:=a;


Lệnh if-then dạng
thiếu rất ý nghĩa
trong trường hợp
này.

if b>max then max:=b;
if c>max then max:=c;
writeln('So lon nhat la: ',max);
readln
end.

 Rõ ràng với 1 ví dụ như trên, chúng ta giúp cho học sinh hiểu rõ hơn
lệnh if-then dạng thiếu cần thiết như thế nào khi nào gặp các dạng thuật
toán như trên.
2.2. Câu lệnh ghép
Để làm rõ hơn theo cú pháp thì sau các 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 đòi hỏi phải có
nhiều hơn một câu lệnh, thì 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. Tơi mạnh dạn gộp ví dụ phần này
với ví dụ 1 trang 41 SGK thành ví dụ sau:
2
Viết chương trình giải phương trình bậc hai: ax  bx  c  0 , với a≠0.

 Trước khi giải thuật tốn này, Tơi áp dụng kiến thức liên mơn: ơn lại
phương pháp giải phương trình bậc hai ở Tốn học cho học sinh dễ
hình dung ra giải thuật để em nào khá có thế tự làm được.
Việc đầu tiên là tính:
delta:

d:=b*b-4*a*c


Nếu

d<0 phương trình vơ nghiệm

Nếu

d=0 phương trình có nghiệm kép
x = -b/(2*a)

Nếu

d>0 phương trình có 2 nghiệm phân biệt là:
x1 = (-b+sqrt(d))/(2*a)
x2 = (-b-sqrt(d))/(2*a)

8


 Sau khi gợi ý, Tơi cũng khuyến khích học sinh bằng cách cho học sinh
tự làm trong 10 phút, nếu kiểm tra ai làm được sẽ cộng 1 điểm vào
điểm 15 phút, chương trình đầy đủ như sau:
Program giai_PT_bac2;
var a,b,c : integer;
d: real;
begin
write('Nhap vao a,b,c: ');
readln(a,b,c);
d:=b*b-4*a*c;
if d<0 then writeln('Phuong trinh vo nghiem')

else
if d=0 then writeln('Ph trinh co ngh kep x= ',-b/(2*a):0:1)
else
begin
writeln('Phuong trinh co 2 nghiem phan biet la:');
writeln('x1=',(-b+sqrt(d))/(2*a):0:1);
Câu
writeln('x2=',(-b-sqrt(d))/(2*a):0:1);
lệnh
end;
ghép
readln
end.
 Với ví dụ này, chúng ta giúp cho học sinh hiểu rõ hơn lệnh if-then lồng
nhau khi gặp các dạng thuật toán như trên, đồng thời nắm được ý nghĩa
câu lệnh ghép.
3. Kết quả đạt được
Việc đưa các ví dụ phù hợp, số học sinh nắm được bài là trên 80%
II.

BÀI 10: CẤU TRÚC LẶP
Đối với §10 Tơi đã viết một sáng kiến kinh nghiệm với tên “Đổi mới

phương pháp dạy học bài Cấu trúc lặp ở lớp 11” và đã đạt giải B cuộc thi
sáng kiến kinh nghiệm cấp Tỉnh năm học 2009-2010 (theo QĐ số: 1128/QĐSGD&ĐT ngày 10/11/2010 của Sở Giáo dục và Đào tạo tỉnh Đăk Nông)
Tôi xin tóm tắt lại nội dung sáng kiến của mình như sau:
A. Mục đích, yêu cầu
- Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.

9



- Hiểu cấu trúc lặp kiểm tra điều kiện trước, cấu trúc lặp với số lần
định trước.
- Biết cách vận dụng đúng đắn cấu trúc lặp vào tình huống cụ thể.
- Mơ tả thuật tốn của một số bài tốn đơn giản có sử dụng lệnh lặp.
- Viết đúng các lệnh lặp kiểm tra điều kiện trước, lệnh lặp với số lần
lặp trước.
- Viết được thuật toán của một số bài toán đơn giản.
B. Nội dung lên lớp.
1. Thực trạng của vấn đề
Đối với §10 Cấu trúc lặp ở lớp 11, Tơi nhận thấy các ví dụ vẫn
chưa phù hợp với mục đích yêu cầu của bài dạy, đặc biệt là giải thích
thuật tốn lại áp dụng kiến thức §4 Bài toán và Thuật toán ở lớp 10 làm
cho học sinh rất khó tiếp thu.
2. Các biện pháp đã tiến hành để giải quyết vấn đề
Thay các ví dụ khó trong sách giáo khoa bằng các ví dụ đơn giản
hơn, để giúp học sinh có thể nắm bắt dễ dàng chức năng của cấu trúc lặp.
2.1. Lặp với số lần biết trước và câu lệnh for-do
Tơi thay bài tốn 1: Tính và đưa kết quả ra màn hình tổng (trang42,
SGK)
S

1
1
1
1


 ... 

a a 1 a  2
a  100

Bằng bài tốn: Tính và đưa kết quả ra màn hình tổng
S  1  2  3  ...  100

 Nhận xét: Đối với các bài tốn này chúng tơi dễ dàng đạt được mục tiêu
kiến thức là: Hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán,
hiểu cấu trúc lặp với số lần biết trước, biết cách vận dụng đúng đắn
từng loại cấu trúc lặp vào tình huống cụ thể, mơ tả thuật tốn của một
số bài tốn đơn giản có sử dụng lệnh lặp, viết đúng các lệnh lặp với số
lần biết trước, viết được thuật toán của một số bài toán đơn giản.

10


 Thuật toán đưa ra cho bài toán trên:
- Lặp dạng tiến:

S

 1 

2 

3  ...

 100

S0 = 0

S1 = S0 + 1
S2 = S1 + 2

Si = Si-1 + i
i: 1 → 100

S3 = S2 + 3

S100 = S99 + 100

 Nhận xét: Bắt đầu tính từ S1, việc tính S Được lặp đi lặp lại 100 lần
theo qui luật Si = Si-1 + i, với i chạy từ 1 đến 100.
- Lặp dạng lùi:
S

 100

 99

 98

 ...

 1

S101 = 0
S100 = S101 + 100
S99 = S100 + 99
S98 = S99 + 98


Si = Si+1 + i
i: 100 → 1


S1 = S2 + 1
 Nhận xét: Bắt đầu tính từ S100, việc tính S Được lặp đi lặp lại 100
lần theo qui luật Si = Si+1 + i, với i chạy từ 100 về 1


Chương trình cài đặt cho các thuật toán trên:
- Lặp dạng tiến:
Program Tong_1a;
uses crt;
11


var S: word;
i : byte;
begin
clrscr;
S:=0;
for i:=1 to 100 do
S:=S+i;
writeln('Tong S la: ',S);
readln
end.
- Lặp dạng lùi:
Program Tong_1b;
uses crt;
var S: word;

i : byte;
begin
clrscr;
S:=0;
for i:=100 downto 1 do
S:=S+i;
writeln('Tong S la: ',S);
readln
end.
 Nhận xét:
 Đối với hai thuật toán này độ phức tạp được giảm đi rất nhiều,
khi đó ta có thời gian nhiều để nói về chức năng của cấu trúc
lặp for.
 Ta cũng có thể gợi ý để học sinh làm việc theo nhóm để giải
bài tốn này
12


 Ở tiết Bài tập và thực hành 2 thì chúng tơi áp dụng ví dụ sau: Tính và
đưa kết quả ra màn hình tổng

S  1  2  3  ... N
Program Tinh_tong;
uses crt;
var i,N : integer;
S : longint;
begin
clrscr;
write('Nhap vao N ');
readln(N);

s:=0;
for i:=1 to N do
s:=s+i;
writeln('Tong s = ',s);
readln
end.
 Ghi chú: Ví dụ trên gần giống bài tốn 1 và cũng là bài toán áp dụng
đối với câu lệnh lặp với số lần chưa biết trước (câu lệnh While - do)
2.2. Lặp với số lần chưa trước và câu lệnh while-do
Tơi thay Bài tốn 2: Tính và đưa kết quả ra màn hình tổng
S

Cho đến khi

1
1
1
1


 ... 
 ...
a a 1 a  2
a N

1
 0,0001
aN

Bằng bài toán: Tính và đưa kết quả ra màn hình tổng

S  1  2  3  ...  N

Program Tong_S;
uses crt;
var i,N : integer;
13


S : longint;
begin
clrscr;
write('Nhap vao N '); readln(N);
s:=0;i:=1;

s:=0;

while i<= N do

for i:=1 to N do
s:=s+i;

begin
s:=s+i;
i:=i+1;
end;
writeln('Tong s = ',s);
readln
end.

 Nhận xét: Đây là cách tốt nhất để học sinh hiểu rõ câu lệnh whiledo, có thể so sánh sự giống nhau và khác nhau giữa lệnh for-do và

while-do
3. Kết quả đạt được
Sau §10 Cấu trúc lặp có bài kiểm tra 1 tiết (tiết 18).
 Đề kiểm tra (điển hình) như sau:
1. Câu 1: Viết chương trình tìm số lớn nhất và nhỏ nhất trong 3 số
nguyên a, b, c được nhập vào từ bàn phím.
2. Câu 2: Viết chương trình tính tổng:
S

1 1 1
1
   ... 
2 3 4
n

(với n ≤50)

 Kết quả những năm gần đây: Số học sinh đạt Trung bình trở lên là
trên 75%
III. BÀI 11: KIỂU MẢNG
Đối với §11 Tơi đã viết một sáng kiến kinh nghiệm với tên “Đổi mới
phương pháp dạy học bài Kiểu mảng ở lớp 11” và đã đạt giải C cuộc thi sáng

14


kiến kinh nghiệm cấp Tỉnh năm học 2011-2012 (theo QĐ số: 184/QĐSGD&ĐT ngày 10/4/2012 của Sở Giáo dục và Đào tạo tỉnh Đăk Nơng)
Tơi xin tóm tắt lại nội dung sáng kiến của mình như sau:
A. Mục đích, u cầu
- Hiểu khái niệm kiểu mảng.

- Hiểu cách khai báo kiểu của các phần tử và cách truy cập đến các
phần tử của mảng.
- Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu
mảng.
- Thực hiện được khai báo mảng, truy cập, tính tốn các phần tử của
mảng.
- Nắm được các cách khai báo kiểu dữ liệu mảng.
- Nhận biết được các thành phần trong khai báo kiểu dữ liệu mảng.
B. Nội dung lên lớp
1. Thực trạng của vấn đề
Đối với §11 Kiểu mảng tơi nhận thấy việc dạy để học sinh hiểu được bài
này là rất khó khăn, nếu chúng ta khơng biết liên kết các ví dụ, đặc biệt là
giúp học sinh hiểu được kiểu mảng là gì, khi nào thì dùng kiểu mảng và sử
dụng như thế nào.
2. Các biện pháp đã tiến hành để giải quyết vấn đề
2.1. Mảng một chiều
a. Cách khai báo:
 Cách 1 : Khai báo trực tiếp
Var <Tên_biến_mảng> : Array[m1 . . m2] of <Tên kiểu dữ liệu>;
Trong đó : m1, m2 có cùng kiểu dữ liệu xác định phạm vi của chỉ số.
m1<=m2.
Vd : VAR

M:ARRAY[1 .. 5] of integer;

Minh Họa: M
1

2


3

15

4

5


Mảng M gồm 5 phần tử thuộc kiểu Integer ứng với các chỉ số 1,2,3,4,5
nghĩa là :
M[1], M[2], M[3], M[4], M[5].
 Cách 2: Khai báo gián tiếp
Bước 1: Type <Tên_kiểu_mảng> = array[m1..m2] of <tên kiểu dữ liệu>;
Bước 2: Var <Tên_biến_mảng> : <tên_kiểu_mảng>;
Vd : Type M=Array[1..5] of integer;
Var a:M;
 Nhận xét: Các cách khai báo và ví dụ trên trực quan hơn và ngắn
gọn hơn cách khai báo và các ví dụ trong Sách Giáo Khoa.
b. Các ví dụ:
 Ví dụ: viết chương trình nhập vào nhiệt độ (trung bình) của mỗi ngày
trong tuần, tính và đưa ra màn hình nhiệt độ trung bình của cả tuần, và
đếm số ngày có nhiệt độ cao hơn nhiệt độ trung bình.
Chương trình viết theo cách 1:
Program Nhietdo_Tuan;
Uses crt;
Var t1,t2,t3,t4,t5,t6,t7,tb: real;
dem : byte;
Begin
clrscr;

write('Nhap vao nhiet do cua 7 ngay: ');
readln(t1,t2,t3,t4,t5,t6,t7);
tb:=(t1+t2+t3+t4+t5+t6+t7)/7;
dem:=0;
if t1>tb then dem:=dem+1;
if t2>tb then dem:=dem+1;
if t3>tb then dem:=dem+1;
if t4>tb then dem:=dem+1;
16


if t5>tb then dem:=dem+1;
if t6>tb then dem:=dem+1;
if t7>tb then dem:=dem+1;
writeln('Nhiet do trung binh tuan la: ',tb:8:1);
writeln('So ngay co nhiet do cao hon trung binh la: ',dem);
readln
End.
 Ghi chú: Có thể minh hoạ bằng hình ảnh sau
22oC
T1

22.5oC 23oC 23.5oC 24oC 24.5oC 25oC
T2
T3
T4
T5
T6
T7
23.5

tb

3
dem

 Các câu hỏi gợi mở: Từ ví dụ trên Tơi đưa ra các tình huống để dẫn dắt
học sinh đến với một kiểu dữ liệu có cấu trúc đầu tiên, đó là “Kiểu
mảng”:
+ Tính nhiệt độ trung bình một tuần thì sử dụng mấy biến? (học
sinh trả lời: 7 biến)
+ Nếu tính nhiệt độ trung bình một tháng 30 ngày thì sử dụng mấy
biến? (học sinh trả lời: 30 biến)
+ Nếu tính nhiệt độ trung bình một năm 365 ngày thì sử dụng mấy
biến? (học sinh trả lời: 365 biến)
 Thế thì việc sử dụng các biến đơn trở nên phức tạp trong
trường hợp sử dụng nhiều biến (có cùng kiểu dữ liệu).
 Từ đó người ta đưa ra khái niệm kiểu mảng.
Chương trình viết theo cách 2:
Program Nhietdo_Tuan;
Uses crt;
Var A : array[1..7] of real;
tong, tb : real;
17


i, dem : byte;
Begin
clrscr;
tong:=0; dem:=0;
for i:=1 to 7 do

begin
writeln('Nhap nhiet do ngay thu ',i,' ');
readln(A[i]);
tong:=tong+A[i];
end;
tb:=tong/7;
writeln('Nhiet do trung binh cua ca tuan la: ',tb:8:1);
for i:=1 to 7 do
if A[i]>tb then dem:=dem+1;
writeln('So ngay co nhiet do cao hon TB la: ',dem);
readln;
End.


Ghi chú: Có thể minh hoạ bằng hình ảnh sau
o
Mảng A 22 C
1

22.5oC 23oC 23.5oC 24oC 24.5oC 25oC
2
3
4
5
6
7
164.5
23.5
3
tong

tb
dem

 So sánh 2 cách:
Cách 1

Cách 2

Program Nhietdo_Tuan;
Uses crt;
Var t1,t2,t3,t4,t5,t6,t7,tb: real;
dem : integer;
Begin
clrscr;
write('Nhap vao nhiet do cua 7 ngay: ');
readln(t1,t2,t3,t4,t5,t6,t7);
tb:=(t1+t2+t3+t4+t5+t6+t7)/7;

Program Nhietdo_Tuan;
Uses crt;
Var A : array[1..7] of real;
tong, tb : real;
i, dem : byte;
Begin
clrscr;
tong:=0; dem:=0;
for i:=1 to 7 do

18



dem:=0;
if t1>tb then dem:=dem+1;
if t2>tb then dem:=dem+1;
if t3>tb then dem:=dem+1;
if t4>tb then dem:=dem+1;
if t5>tb then dem:=dem+1;
if t6>tb then dem:=dem+1;
if t7>tb then dem:=dem+1;
writeln('Nhiet do trung binh tuan la: ',tb:8:1);
writeln('So ngay co nh do cao hon TB la: ',dem);
readln
End.

begin
writeln('Nhap nhiet do ngay thu ',i,' ');
readln(A[i]);
tong:=tong+A[i];
end;
tb:=tong/7;
writeln('Nh do TB cua ca tuan la: ',tb:8:1);
for i:=1 to 7 do
if A[i]>tb then dem:=dem+1;
writeln('So ngay nh do cao hon TB la: ',dem);
readln;
End.

 Nhận xét:
 Nếu mở rộng bài tốn tính nhiệt độ trung bình một tháng 30 ngày và
đếm xem có bao nhiêu ngày có nhiệt độ cao hơn nhiệt độ trung bình,

thì:
Cách 1:

- Phải khai báo 30 biến đơn
- Sử dụng 30 lệnh if - then.

Cách 2:

- Chỉ cần khai báo 1 mảng gồm 30 phần tử

- Sử dụng lệnh for i:=1 to 30 do …
 Rõ ràng khi bài toán sử dụng nhiều biến đơn cùng kiểu dữ liệu, thì sử
biến mảng sẽ thuận lợi hơn rất nhiều.
2.2. Mảng hai chiều:
Theo phân phối chương trình lớp 11, phần này được giảm tải, nên Tơi
chỉ trình bày đối với học sinh khá để định hướng các em đi thi học sinh
giỏi bộ môn Tin học.
3. Kết quả đạt được
Bài kiểm tra học kỳ 1 gồm 2 câu tự luận, thì câu 1 liên quan đến bài
này.
 Đề kiểm tra (điển hình) như sau:
1. Câu 1: Viết chương trình tìm nhập vào N số ngun, tính trung bình
cộng các số ngun và đếm xem có bao nhiêu số ngun có giá trị
trên trung bình (với N<=50).
 Kết quả những năm gần đây: Số học sinh đạt Trung bình trở lên là
trên 75%
19


IV. BÀI 12: KIỂU XÂU

Bài này Tôi dạy được đánh giá loại “Giỏi” trong tiết thanh tra chuyên môn
của Sở Giáo dục và Đào tạo Đăk Nông ngày 15/11/2012.
A. Mục đích, yêu cầu.
1. Về kiến thức:


Biết xâu là một dãy kí tự.



Biết cách khai thác xâu, truy cập phần tử của xâu.



Sử dụng được một số thủ tục, hàm thông dụng về xâu.

2. Về kĩ năng: HS cần nắm được các kĩ năng:


Khai báo kiểu xâu.



So sánh hai xâu.



Nhận biết và bước đầu sử dụng được các hàm thủ tục chuẩn nói trên

B. Hoạt động dạy học

1. Thực trạng của vấn đề
Bài này đề cập đến một kiểu dữ liệu là trường hợp đặc biệt của kiểu
mảng, trong đó đề cập rất nhiều đến các thao tác xử lý xâu. Do đó học
sinh cũng rất khó nắm bắt, nếu ta không khéo léo dẫn dắt vấn đề.
2. Các biện pháp đã tiến hành để giải quyết vấn đề
Dựa vào kiến thức kiểu mảng học sinh vừa học, Tôi dẫn dắt thông
qua hai câu hỏi bài cũ và kết hợp với sách giáo khoa thí điểm năm 1997
để thực hiện tiết dạy được hiệu quả hơn.
2.1. Kiểm tra bài cũ:
Tôi nêu lần lượt các câu hỏi, gọi học sinh trả lời, đánh giá, cho điểm:
Câu hỏi 1: Khai báo mảng A như minh họa sau
A
Đáp án: Var A: array[1..8] of byte;

20


Câu hỏi 2: Khai báo mảng S như minh họa sau
S

Đáp án: Var S: array[1..8] of char;
2.2. Giới thiệu bài mới:
Nhận xét: + mảng A là dãy hữu hạn các phần tử cùng kiểu số nguyên.
+ mảng S là dãy hữu hạn các phần tử cùng kiểu ký tự.
Xâu S là trường hợp đặc biệt của mảng một chiều, khi mảng đó có kiểu
phần tử là ký tự. Một mảng chứa các ký tự như câu hỏi 2 cịn có một
cách gọi khác đó là: “xâu”.
Bài này được Sách giáo khoa phân ra 3 mục: 1. Khai báo; 2. Các Thao tác
xử lí xâu, 3. Một số ví dụ. Để dễ theo dõi Tôi phân ra 4 mục: 1. Khái niệm;
2. Khai báo; 3. Các Thao tác xử lí xâu, 4. Một số ví dụ.

1.
Khái niệm: (Tơi chỉ đưa ra 2 ý cơ bản nhất, để học sinh dễ hiểu)
- Xâu là một dãy các kí tự trong bộ mã ASCII, mỗi kí tự được gọi là
một phần tử của xâu.
- Số lượng kí tự có trong xâu được gọi là độ dài của xâu.
Vd: ‘Lop 11A6’ → độ dài xâu là 8; ‘Nam hoc’ → độ dài xâu là 7
2. Khai báo:
Var <tên biến>: string[độ dài lớn nhất của xâu];
Chú ý: Có thể bỏ qua “độ dài lớn nhất của xâu” và khi đó độ dài lớn
nhất của xâu mặc định là 255;
Ví dụ:
- Var hoten : string[30]; {biến họ tên nhận giá trị lớn nhất là 30}
- Var diachi : string; {biến địa chỉ nhận giá trị lớn nhất là 255}
3. Các Thao tác xử lí xâu: (Để tránh nhàm trán, máy móc Tơi đã đưa ra
nhiều ví dụ khác sách giáo khoa nhưng có tính giáo dục thực tế)
a. Ghép xâu:
Vd: ‘Viet ‘+’Nam’ → ‘Viet Nam’
b. Phép so sánh:
21


- Xâu A lớn hơn xâu B nếu như ký tự đầu tiên khác nhau giữa chúng
kể từ trái sang trong xâu A có mã ASCII lớn hơn.
Vd: ‘Hoc Tin’ < ‘Hoc Toan
- Nếu xâu A và B là các xâu có độ dài khác nhau và A là đoạn đầu
của B thì A nhỏ hơn B
Vd: ‘Hoc Tin’ < ‘Hoc Tin hoc’
‘Hoc Tin’=‘Hoc Tin’
c. Thủ tục delete:
Theo SGK thì viết delete(st,vt,n)

+ st: biến xâu
+ vt: vị trí
+ n: số ký tự
Tôi đổi thành delete(s,pos,n) (theo SGK nxb Giáo dục 1997)
+ s: biến xâu (s: viết tắt chữ string là xâu)
+ pos: vị trí (pos: viết tắt chữ position là vị trí)
+ n: số ký tự (n: viết tắt chữ number là số)
Chức năng: Xóa n ký tự của xâu s tính từ vị trí pos
Vd: S=‘Hoc Pascal’

S=‘Hoc cal’

Delete(S,5,3)
d. Thủ tục insert:
Theo SGK thì viết insert(s1,s2,vt)
Tơi đổi thành insert(s1,s2,pos) (theo SGK nxb Giáo dục 1997)
Chức năng: Chèn xâu s1 vào xâu s2 bắt đầu từ vị trí pos
Vd:

s1=‘Toan’
s2=‘Hoc Tin’

‘Hoc ToanTin’

Insert(s1,s2,5)
e. Hàm copy(s,pos,n)
Theo SGK thì viết copy(S,vt,N)
Tơi đổi thành copy(s,pos,n) (theo SGK nxb Giáo dục 1997)
22



Chức năng: Tạo xâu gồm n ký tự liên tiếp từ vị trí pos
s=‘Hoc Tin kho qua’
in kho qu

copy(s,6,9)

f. Hàm length(s) (phần này Tôi dạy công thức như SGK)
Chức năng: Cho giá trị là độ dài xâu s
s=‘Hoc Tin kho qua’
15

lenght(s)

g. Hàm pos(s1,s2) (phần này Tôi dạy công thức như SGK)
Chức năng: Cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2
s1=‘oc’
s2=‘Toi hoc doc’

6

pos(s1,s2)
h. Hàm upcase(ch) (phần này Tôi dạy công thức như SGK)
Chức năng: Cho chữ cái in hoa ứng với chữ cái trong ch
‘D’

Upcase(‘d’)

4. Một số ví dụ: phần này Tơi lấy ví dụ như SGK hoặc khác tùy theo đối
tượng học sinh, nhưng trên tinh thần cho các em xung phong giải bài

trên bảng để lấy điểm miệng, dựa trên những giải thuật đã giới thiệu
trong SGK
3. Kết quả đạt được
Bài kiểm tra học kỳ 1 gồm 2 câu tự luận, thì câu 2 liên quan đến bài
này.
 Đề kiểm tra (điển hình) như sau:
2. Câu 2: Viết chương trình tìm nhập vào một xâu, kiểm tra xem ký tự
thứ 2 có trùng với ký tự kế cuối trong xâu không.
 Kết quả những năm gần đây: Số học sinh đạt Trung bình trở lên là
trên 85%
23


V.

BÀI 16: VÍ DỤ LÀM VIỆC VỚI TỆP
 Bài 13: Bản ghi (giảm tải); bài 14: Kiểu dữ liệu tệp; bài 15: Thao tác
với tệp chỉ mang tính lý thuyết nên Tơi dạy như SGK.

A. Mục đích, u cầu
- Hiểu các thao tác cơ bản làm việc với tệp: gán tên tệp, mở/đóng tệp,
đọc/ghi dữ liệu từ tệp.
- Sử dụng được các hàm và thủ tục liên quan để giải quyết các bài tập.
B. Nội dung lên lớp
1. Thực trạng của vấn đề
Bài này nếu dạy như sách giáo khoa thì chắc chắn hiệu quả khơng
cao, vì lần đầu tiếp cận file kiểu text mà ví dụ chỉ thể hiện ở các lệnh
thao tác trên file text. Do đó học sinh sẽ khó nắm bắt được bản chất khi
“làm việc với tệp”.
2. Các biện pháp đã tiến hành để giải quyết vấn đề

Để dạy hiệu quả bài này, đặc biệt là ví dụ 1 Tơi phải xử dụng kiến
thức Tốn học, bằng cách vẽ hệ trục tọa độ Đề các để minh họa cho bài
dạy.
2.1. Ví dụ 1
Một trường trung học phổ thông tổ chức cho giáo viên và học sinh
của trường đi cắm trại, sinh hoạt ngoài trời ở vườn quốc gia Cúc
Phương. Để lên lịch đến thăm khu trại các lớp, thầy hiệu trưởng cần biết
khoảng cách từ trại của mình (ở vị trí tọa độ (0,0)) đến trại của các
GVCN. Mỗi lớp có một khu trại, vị trí trại của mỗi GVCN đều có tọa độ
ngun (x,y) được ghi trong tệp văn bản TRAI.TXT (như vậy, tệp
TRAI.TXT chứa liên tiếp các cặp số nguyên, các số cách nhau bởi dấu
cách và không kết thúc bởi ký tự xuống dịng).
Để học sinh hiểu được bài tốn này, Tơi sử dụng kiến thức liên mơn
Tốn học bằng cách đưa ra ví dụ gồm 2 trại được đặt tên là A, B có tọa
độ như đồ thị sau:
24


y

A

2

y

-2

d
O


x

2

x

-2

B
Hình 1: Tọa độ hai trại A, B
Như vậy là tệp văn bản TRAI.TXT có nội dung như sau:

Hình 2: Nội dung tệp TRAI.TXT
Để học sinh hiểu được bài toán, ngồi việc minh họa bằng đồ thị như
trên Tơi phải áp dụng kiến thức hình học để học sinh hiểu.
Ví dụ: Tính khoảng cách đến trại A (d)
Để

tính

d:

ta

áp

dụng định




Pitago

trong

tam

giác

2
2
vng d  x  y . Từ đó ta suy ra công thức trong pascal là

d:=sqrt(x*x+y*y).
Từ những dẫn dắt về đồ thị, cơng thức hình học chuyển sang ngơn ngữ
Pascal thì học học sinh dễ dàng hiểu chương trình trong ngơn ngữ Pascal:
Program Cam_trai;
uses crt;
var d: real;
f: text;
x,y : integer;
begin
clrscr;
25


×