Tải bản đầy đủ (.doc) (14 trang)

Sáng kiến tin 11 dạy cau truc lap de hieu

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 (155.16 KB, 14 trang )

TÊN SÁNG KIẾN KINH NGHIỆM

DẠY CẤU TRÚC LẶP
CHO HỌC SINH DỄ HIỂU

MÔN: TIN HỌC
TÊN TÁC GIẢ: PHAN THỊ HUỆ


BỐ CỤC BÀI VIẾT
Phần I: Đặt vấn đề
1. Cơ sở lí luận
2. Cơ sở thực tiễn
Phần II: Nội dung
1. Nhận xét chung về việc dạy học môn tin học lớp 11.
2. Thực trạng vấn đề nghiên cứu tổng kết kinh nghiệm.
3. Mô tả giải pháp thực hiện
Phần III. Kết luận và khuyến nghị
1. Những đánh giá cơ bản nhất.
2. Những khuyến nghị được đề xuất.

2


Phần I: ĐẬT VẤN ĐỀ
(Cơ sở để xác định đề tài)
1. CƠ SỞ LÍ LUẬN
Hiện nay ngành giáo dục đã và đang từng bước thực hiện việc đổi mới
phương pháp giảng dạy phát huy tính tích cực của học sinh tuy nhiên trong từng
môn học, tiết dạy việc phát huy tính chủ động, tích cực của học sinh còn phụ thuộc
vào phương pháp của người thầy, nội dung của từng tiết học và phương tiện dạy


học. Giáo viên lên lớp nhiều khi giảng chay và yêu cầu học sinh phải tự đọ sách,
hình dung theo trí tưởng tượng của mình. Một số giáo viên vẫn còn tình trạng dạy
chay khi điều kiện cơ sở vật chất đã có, họ ngại sử dụng những thiết bị hiện đại,
phức tạp…
Học sinh học bài vẫn còn mạng tính thụ động không chịu nghiên cứu bài
trước khi đến giờ học, chủ yếu vẫn còn thói quen là nghe, ghi và nhớ những kiến
thức do giáo viên truyền thụ.
Chính vì vậy việc tìm tòi áp dụng các phương pháp dạy học để phát huy tính
chủ động, tích cực của học sinh là một điều rất cần thiết. Chúng ta cần phải biết sử
dụng những phương pháp dạy học nào, kết hợp với các phương tiện hiện đại sao
cho, sau khi học xong bài học học sinh lĩnh hội được tất cả những kiến thức mà yêu
cầu đặt ra.
2.CƠ SỞ THỰC TIỄN.
Trong những năm học gần đây việc các trường THPT đã dần được trang
thiết bị đầy đủ cơ sở vật chất cho các môn thực hành, ngành giáo dục đã và đang
quan tâm tới các phương tiện, thiết bị dạy học để nâng cao hiệu quả giảng dạy.
Tin học là môn học mới được đưa vào phổ thông tuy nhiên nó không còn xa
lạ đối với học sinh. Các giờ học tin học các em đều thích giáo viên dạy ở phòng
máy và cho các em thực hành trên máy. Tuy nhiên theo phân phối chương trình
không phải giờ nào cũng lên phòng máy để thực hành. Theo chương trình phân ban
của Bộ giáo dục chúng ta phải học từ lí thuyết cơ bản rồi mới đến thực hành, mà
học sinh thì lại không thích học lý thuyết, các em cứ nghĩ học Tin học là phải thực
3


hành trên máy tính, chính vì thế các em không chịu nghiên cứu lí thuyết mà chỉ
muốn ngồi vào máy và làm bài theo hướng dẫn của giáo viên.
Nhất là đối với môn tin học ở lớp 11, nếu như các em không nắm được kiến
thức cơ bản về ngôn ngữ lập trình và hiểu thuật toán thì khi thực hành các em chỉ
biết gõ chương trình theo Sách giáo khoa, thậm chí gõ cũng còn sai. Khi soát lỗi

không biết lỗi ở đâu mặc dù trên màn hình máy vi tính chỉ rất rõ lỗi gì mà không
phát hiện ra. Khi giáo viên yêu cầu bổ sung thêm vào chương trình những câu lệnh
để đáp ứng yêu cầu của bài thực hành thì học sinh gần như là chịu nhất là đối với
các lớp xã hội.
Khi giáo viên chữa và viết sẵn chương trình trên bảng hoặc chiếu trên máy
chiếu cho các em quan sát, sau đó các em gõ vào máy và cho chạy chương trình.
Thế nhưng tiết sau kiểm tra miệng lên bảng trình bày lại có em vẫn không trình bày
được. Nguyên nhân ở đây chính là các em không hiểu ý nghĩa của từng câu lệnh,
Câu lệnh đó thực hiện nhiệm vụ gì? hoạt động như thế nào một số em vẫn còn mơ
hồ. Do đó là giáo viên tôi là phải tự mình áp dụng những phương pháp dạy tiếp cận
từ đơn giản nhất để các em hiểu tác dụng của câu lệnh và từ đó củng cố cú pháp
câu lệnh, ý nghĩa của câu lệnh đó như thế nào thông qua mô phỏng ví dụ cụ thể.
Một trong những bài giảng đó là “Cờu trúc lặp” tôi đã mạnh dạn đổi mới
cách dạy sao cho học sinh dễ hiểu nhất mà tôi đã dạy trong học kì vừa qua.

4


Phần II. NỘI DUNG
1. NHẬN XÉT CHUNG VỀ VIỆC DẠY HỌC MÔN TIN HỌC Ở LỚP 11

Môn Tin học đã được triển khai ở hai cấp học là THCS và THPT, tuy nhiên
việc học Tin học văn phòng cụ thể là hệ Soạn thảo văn bản Microsoft Word đối với
học sinh rất thuận lợi vì các em đã đuợc làm quen từ cấp dưới, thậm chí nhà các em
có máy các em cũng đã tự học và biết làm một số các thao tác cơ bản, tuy nhiên lên
lớp 11 Môn Tin học dạy cho các em biết sử dụng ngôn ngữ lập trình đẻ giải các bài
toán. Để viết được chương trinhg các em phải biết cấu trúc một chương trình, ý
nghĩa của các từ khóa, tên chuẩn, ý nghĩa của từng câu lệnh, các hàm, các phép so
sánh,….Như vậy đòi hỏi các em phải lĩnh hội được tất cả các kiến thức mà các em
đã được học từ đầu lớp 11 Nếu các em không nghe và không nắm được những kiến

thức giáo viên dạy trong giờ học lí thuyết. Việc cho học sinh làm bài thực hành trên
máy giáo viên lại phải dạy lại từng câu lệnh, thậm chí phải soát và sửa lỗi cho một
số em. Các em không biết mình sai ở đâu để sửa. Việc làm như vậy rất tốn nhiều
thời gian mà không hiệu quả. Mặt khác một số học sinh không tập trung vào học
nghiêm chỉnh, đi học không có vở, bút thậm chí có em còn không có cả sách giáo
khoa. Do đó việc dạy học của Giáo viên còn bị ức chế vì ý thức của học sinh.
Trong giờ làm bài tập thực hành một số học sinh lại không chịu làm bài mà chơi trò
chơi hoặc vào mạng, khi giáo viên kiểm tra nhận xét bài làm của học sinh thì một
số em liền vội vàng nhờ bạn làm cho mình. Vậy phải dạy cho các em phần lí thuyết
như thế nào để các em dễ hiểu từ đó sẽ biết cách vận dụng vào để viết chương trình
giải được những bài tập cơn bản.
2. MÔ TẢ GIẢI PHÁP THỰC HIỆN
Sau đây tôi xin trình bày phần nội dung của bài dạy “Cấu trúc lặp” để
các quý bạn đọc tham khảo và cho ý kiến

5


Hoạt động 1:Tìm hiểu cáu trúc lặp với số lần biết trước và câu lệnh for-do
+ Ví dụ 1:Xét bài toán hãy tính tổng của dãy sau s=2=3+4+5+…+23 và đưa kết
quả ra màn hình.
Gv: với bài toán trên các em đưa ra rất nhiều cách tính
Hs: phát biểu ta làm như sau: s=(2+23)+(3+22)+(4+21)+…+ dãy số có 22 số hạng
như vậy ta có s=11x25=275.
Cách 2 nhận xét đây là cấp số cộng công sai d=1 do vậy ta có công thức tính
S=(2+23)x

(

23 − 2 + 1

2

)

Gv: Như vậy ta thấy sau mỗi lần tính tổng thì giá trị của S được cộng thêm vào.
Lúc đầu tổng s chưa chứa số hạng nào ta khởi tạo nó bằng 0
Các em quan sát bảng sau
Lần

k

S+k

S

1
2
3

2
3
4

0+2
2+3
5+4

2
5
7


4

21
22

5

22
23

7+5

230+22
252+23

12
252
275

Gv: Qua bảng trên ta thấy qua trình tính tổng cứ lặp đi lặp lại cho đến khi k=23 thì
tống s=275 và kết thúc quá trình tính tổng.
Như vậy ta sẽ vận dụng cấu trúc lặp với số lần biết trước để viết chương
trình giải bài toán trên.
Gv: Viết sẵn đoạn mẫu và yêu cầu học sinh lên hoàn thành chương trình để
thực hiện quá trình dịch và chạy đưa ra kết quả.
Mẫu:var ……………;
6



begin
For k:=2 to 23 do s:=s+k;
Write(…………….); readln;
End.
Hs: Hoàn thành
var k,s:integer;
begin
For k:=2 to 23 do s:=s+k;
Write(‘tong s=’,s); readln;
End.
Gv: Em hãy đưa ra cấu trúc tổng quát của vòng lặp For-do?
Hs: Trình bày: Có 2 dạng


Lặp tiến: for


Lặp lùi: for
Gv: Vẽ sơ đồ hoạt động của 2 dạng trên cho học sịnh hiểu được quá trình thực hiện
của vòng lặp for-do.
Với bài toán trên học sinh sẽ đưa ra ý kiến không cần viết for-do chỉ cần viết
như sau rất ngắn, chương trình chạy nhanh
Begin
Writeln(‘tong s=’,(2+23)x

(

23 − 2 + 1 )

); readln;
2

End.
Gv: Yêu cầu học sinh viết chương trình tính tổng của dãy
S=

1
1
1
+
+ ... +
với a nguyên ,>2, nhập từ bàn phím.
a a +1
a + 100

Lúc này các em không tìm ra công thức tổng quát do vậy các em phải sử

dụng cấu trúc lặp for-do để viết
Hướng dẫn: Lúc đầu ta khởi tạo s:=1/a; yêu cầu học sinh tìm ra công thức tính
tổng cho phần tử thú i sẽ là ?
Gv: Hướng dẫn
7


1
a

1
a +1

1
=s+
;
a +1
1
1
1
+
Sau lần công thứ hai thì s= +
a a +1 a + 2
1
=s+
a+2
1
1
1
1
+
Như vậy sau lần công thứ i thì s= +
+….+
a a +1 a + 2
a+i
1
= s+
a+i

Ta thấy sau lần cộng đầu tiên s= +

Hs: Phát biểu s:=s+1/(a+i); (với i:=1 đến 100)


Gv: Chiếu chương trình mẫu cho học sinh đọc và hoàn thành chương trình, dich và
chạy ra kết quả.
Var ………
Begin
Readln(a);
S:=1/a;
For i:=……

to ……………do s:=s+……..

Writeln(‘Tong s=’,s:0:2);
Readln;
End.
Hs: Lên viết hoàn chỉnh và chạy chương trình cho các bạn quan sát.
Gv: Nếu khởi tạo s:=0; thì có phải sửa ở vị trí nào không, sửa như thế nào?
Hs: Phát biểu.
Gv: Như vậy biến đếm của vòng lặp for-do thay đổi khi giá trị khởi tạo của s
thay đổi khi khởi tạo S:=0 thì for i:=0 to 23 do
Mở rộng tính tổng của dãy S=

1
1
1
+
+ ... +
với a,n>2 nguyên nhập
a a +1
a+N

từ bàn phím. Thì chương trình trên sẽ sửa như thế nào?

Hs: suy nghĩa và lên máy sửa cho chạy thử và cả lớp quan sát.
Gv: các em rất say mê và hứng thú với sự gợi ý dẫn dắt của giáo viên.
8


Bài tập áp dụng: Viết chương trinhg tính tổng của dãy số sau:
1
2

1
3

1
4

1
5

S=1+ + + + + ...... +

1
n

với 5
Ví dụ 2: Yêu cầu các em viết chương trình in ra màn hình cho cô các giá trị từ 100
đến 1, mỗi giá trị cách nhau ít nhất một dáu cách: 100 99 98 97 96 95 94 93 …. 1
Gv: Cho một chương trình sau:
Var …..
Begin

……………………..
Write(i, ‘ ’);
readln
End.
Hs: Thảo luận và nghĩ ra phải dùng vòng lặp lùi
Giáo viên gọi 1 học sinh đứng tại vị trí trình bày, giáo viên thao tác, dich và chạy
chương trình cho các em quan sát thấy đượcc ý nghĩa của vòng lặp lùi.
Như vậy sau mỗi lần thực hiện giá trị của biến đếm lần lượt giảm đi 1 cho
đến khi giá trị cuốiChương trình hoàn chỉnh:
Var i:byte;
Begin
For i:=100 downto 1 do Write(i, ‘

’);

readln
End.

9


Ví dụ 3: Viết chương trình tính tổng của dãy
S=

1
1
1
+
+ ... +

với a nguyên ,>2, nhập từ bàn phím isuwr dụng vòng
a a +1
a + 100

lặp for- downto .

Ví dụ 3: Tính tổng của dãy sau s=  2+ 2 + 2+  2 +...+  2
n

* Chú ý: Khi sử dụng vong lặp for- do các em không được làm thay đổi giá trị của
biến đếm, sau mỗi lần thực hiên câu lệnh sau do biến đếm tuần tự tăng lên 1 hoặc
giảm đi 1 nếu sử dụng vòng lặp lùi.

Hoạt động 2:Tìm hiểu lặp với số lần chưa biết trước và câu lệnh while do
Ví dụ 1: Viết chương trình nhập vào tuổi cha và tuổi con, điều kiện nhập luôn thỏa
mãn tuổi cha lớn hơn 2 lần tuổi con và tuổi cha trừ tuổi con>=18. Đưa ra màn hình
sau bao nhiêu năm nữa thì tuổi cha sẽ gấp đôi tuổi con
Gv: Hướng dẫn học sinh tiếp cận để tìm thuật toán
Ta thấy sau mỗi năm thì tuổi cha tăng lên 1, tuổi con tăng lên 1, và số năm
cùng tăng lên 1. Quá trình này sẽ lặp đi lặp lại cho đến khi tuổi cha=2 lần tuổi con
thì dừng lại.Mô phỏng chương trình
Var........................
Begin
Write(‘vao tuoi cha:’) ; readln(tcha) ;
Write(‘vao tuoi con:’) ; readln(tcon) ;
While tcha<>2*tcon do
Begin
..............
...................
................

End ;
Writeln(‘sau’,n,’nam tuoi cha se gap doi tuoi con’) ;
End.
10


Gv: Yêu cầu điền tiếp vào chỗ trống các câu lệnh để chương trình chạy được ?
Hs: Lên máy gõ bổ sung vào chỗ chấm.
Gv: Dịch, chạy chương trình với nhập tuổi cha 26 tuổi con 2.
Hs: Quan sát kết quả hiện ra.
Như vậy trong bài toán trên các em thấy có câu lệnh gì ta chưa biết ?
Hs: Câu lệnh while-do
Câu lệnh đó dùng khi nào ? cú pháp ?
Hs: Phát biểu dùng khi giải các bài toán với số lần lặp chưa biết trước.
Cú pháp: while <điều kiên> do <câu lệnh> ;
Trong đó <điều kiên> là biểu thức logic
<câu lệnh> là một hoặc câu lệnh ghép.
Gv: Vẽ sơ đồ hoạt động và nhấn mạnh ý nghĩa của vòng lặp while – do.
Chừng nào điều kiện còn đúng thì cau lệnh sau do còn thực hiện. Nếu sau do có từ
2 câu lệnh trở lên ta phải dùng câu lệnh ghép
Ví dụ 2: xét bài toán tính tổng và in kết quả ra màn hình
S=

1
1
1
1
< 0,0001
+
+ ... +

+…Cho đến khi
a
+
N
a a +1
a+N

Gv: Hướng dẫn học sinh hiểu thuật toán ta có công thức tính

S:=s+1.0/(a+i) ; sua khi số hạng thứ i được cộng thì kiểm tra 1/(a+i)>=0.0001 thì
quá trình tính tổng còn tiếp tục. Sau đó i tăng lên 1.
Gv: viết chương trình trên máy và nhấn mạnh ý nghĩa của từng câu lệnh trong
chưng trình.
Chú ý viết not(1.0/(a+i)<0.0001) tương đương với 1.0/(a+i)>=0.0001 ;
Sao phải viết s:=1.0/a ; mà không viết s:=1/a ; cho đơn giản ?
Hs: Phát biểu.
Gv: Nhán mạnh a nguyên do đó 1/a là nguyên mà 1/a sẽ là kieeur số thực do vậy
viết 1.0/a là ép kiểu về số thực.
Ví dụ 3: Tìm UCLN(a,b) ? với a, b nguyên dương nhập từ bàn phím ?
Gv: Cho ví dụ với a=5. b=15 thì ucln(5,15)= ?
11


Hs: Ucln của 2 số là 5.
Gv: Làm thế nào ra 5.
Hs: Phát biểu
Gv: Phân tích lại thuật toán tìm UCLN(a,b) ;
Ta có UCLN(a,b)=UCLN(a,b-a) nếu b>a
=UCLN(a-b,b) nếu a>b
Do vậy khi nào a chưa bằng b thì còn so sánh nếu a>b thì a:=a-b ngược lại b:=b-a ;

Gọi 1 học sinh lên bảng viết vào những chỗ để chấm để chương trình dưa ra kết
quả UCLN của hai số a, b nhập từ bàn phím.
Var

a,b :longint ;

Begin
Write(‘vao a=’) ; readln(a) ;
Write(‘vao b=’) ; readln(b) ;
While ……….do
If a>b then ………….. else………… ;
Writeln(‘UCLN cua hai so la :’,……) ; readln ;
End.
Gv: Hướng dẫn học sinh dịch chương trình và chạy thử cho các bạn quan sát kết
quả.

12


Phần III. KẾT LUẬN VÀ KHUYẾN NGHỊ
(Kết luận và ý kiến đề xuất)
1. NHỮNG ĐÁNH GIÁ CƠ BẢN NHẤT
Áp dụng phương pháp dạy học như trên tôi thấy học sinh dễ hiểu được cấu
trúc, tác dụng của vòng lặp. Từ đó các em sẽ vận dụng được cấu trúc lặp đã học để
làm các bài tập trong sách giáo khoa. Nếu cứ máy móc tiếp cận theo đúng trình tự
trong Sgk tin học 11 rất nhiều em sẽ thấy khó hiểu vì phải cố gắng hiểu 2 thuật
toán phức tạp mà sgk tin học 11 đã trình bày.
2. CÁC KHUYẾN NGHỊ ĐỀ XUẤT.
Qua một số năm dạy Môn Tin học ở khối lớp 11 tôi thấy để phát huy hiệu
quả cho các giờ học mong muốn các cấp quản lí cần quan tâm, tăng cường cơ sở

vật chất như máy chiếu Project tại phòng học trên lớp. Máy tính cấu hình tương đối
tốt để giáo viên sau khi giảng bài có thể mô phỏng và chạy thử chương trình cho
học sinh quan sát được kết quả ngay. Thậm chí đánh giá bài làm của học sinh chính
xác để các em phải tâm phục khẩu phục mà học sinh làm bài nhanh không phải chờ
đến giờ thực hành lên máy gõ và chạy chương trình. Giáo viên có thể sử dụng máy
chiếu và chiếu một số bài làm của các bạn cho cả lớp cùng quan sát và nhận xét
những ưu điểm, khuyết điểm của một số bài thực hành trên máy.
Trong nhà trường đã có trang bị phòng nghe nhìn, phòng đa năng nhưng các
em lên những phòng đó học thoát ly khỏi lớp là một số mất trật tự , ngồi không
đúng vị trí, thậm chí có một số không ghi chép bài. Và không phải giờ học nào giáo
viên cũng được quyền sử dụng những phòng học đó vì có thể trùng giờ với các giáo
viên khác.
Phân phối chương trình chưa hợp lí cấu trúc vòng lặp for-do rất quan trọng.
Sau này các em thường xuyên sử dụng khi học kiểu cáu trúc mảng, xâu kí tự. Vậy
mà không bố trí tiết thực hành phần cấu trúc lặp, để học sinh hiểu rõ hơn hoạt động
của các vòng lặp này.
13


Trên đây là phương pháp dạy của tôi đã đúc rút được sau khi dạy vài năm
cho khối lớp 11. Tối thấy tiếp cận từ những bài toán đơn giản để học sinh hiểu rõ
thuật toán từ đó ta cài đặt sẽ dễ hiểu cho học sinh hơn. Nếu tiếp cận vào bài toán
mà thuật toán học sinh đọc cũng không hiểu thì mục tiêu để học sinh nắm vững
kiến thức cần truyền đạt là điều không dễ gì .

14




×