1. Mở đầu
1.1. Lý do chọn đề tài
Từ cuối thế kỷ XX cuộc cách mạng khoa học kỹ thuật Công nghệ thông
tin đã diễn ra mạnh mẽ. Người ta thường ví sự bùng nổ Công nghệ thông tin như
cuộc Cách mạng công nghiệp thế kỷ XVII. Công nghệ thông tin đã và đang mở
ra một nền kinh tế tri thức, nền kinh tế đầy hứa hẹn và thách thức của kỷ nguyên
phát triển mới của trí tuệ loài người. Sự phát triển của công nghệ thông tin đã và
đang tạo ra những vận hội mới cũng như nhiều thách thức mới cho ngành Giáo
dục Việt Nam.
Cùng với sự phát triển của khoa học kỹ thuật và bùng nổ thông tin trong
giai đoạn hiện nay. Ngành Giáo dục - Đào tạo đòi hỏi phải đổi mới nội dung
chương trình và phương pháp giảng dạy nhằm đáp ứng nhu cầu đào tạo nguồn
lực cho sự nghiệp công nghiệp hoá, hiện đại hoá đất nước.
Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình
tự hoạt động cho máy tính, máy gia dụng là rất cần thiết. Và để làm được việc
đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua
đó nhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp.
Trong các trường trung học phổ thông, Tin học là một môn học còn mới
mẻ cho 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 chưa tìm được cách giải quyết các bài toán khi lập
trình. 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
bài toán tin học.
- Nắm không vững cú pháp của ngôn ngữ lập trình.
1
- Phạm vi nghiên cứu: Toàn bộ chương trình tin học lớp 11 ( Một số dạng
bài tập cơ bản khi học ngôn ngữ lập trình Pascal).
1.4. Phương pháp nghiên cứu
Các dạng bài tập rất phong phú. Tuy nhiên trong phạm vi sáng kiến kinh
nghiệm này tôi chỉ trình bày một số nội dung cụ thể sau:
- Phương pháp phân tích và xác định bài toán Tin học theo hướng đặt câu
hỏi gợi mở.
- Phương pháp tổng hợp, đặt vấn đề, vấn đáp, thảo luận, xử lí thông tin,
thực nghiệm về một số vấn đề có liên quan đến nội dung nghiên cứu.
1.5. Những điểm mới của sáng kiến kinh nghiệm
- Giúp học sinh phát huy tính tích cực, chủ động vận dụng kiến thức toán
học đã có vào giải các bài tập tin học.
- Khai thác triệt để được khả năng tư duy logic của học sinh và định hướng
cho học sinh giải đúng các bài tập.
- Thông qua hướng dẫn của giáo viên giúp học sinh thấy được bài tập tin
học không hề mới hay xa lạ với các em, việc giải các bài tập tin học giúp các em
củng cố tri thức và tăng khả năng tư duy logic, tư duy sáng tạo trong quá trình
học.
3
2. Nội dung sáng kiến kinh nghiệm
2.1.Cơ sở lí luận
Cùng với sự phát triển của Khoa học kỹ thuật và bùng nổ thông tin trong
giai đoạn hiện nay. Ngành Giáo dục - Đào tạo đòi hỏi phải đổi mới nội dung
chương trình và phương pháp giảng dạy nhằm đáp ứng nhu cầu đào tạo nguồn
lực cho sự nghiệp công nghiệp hoá, hiện đại hoá đất nước. Tính cấp thiết đó một
lần nữa đã được khẳng định trong Nghị Quyết đại hội đảng toàn quốc lần thứ X:
giải thuật được cung cấp.
- Thể hiện ý tưởng thông qua việc liệt kê các bước giải hoặc dùng sơ đồ
khối.
Bước 3: Sự kết hợp giữa giải thuật và ý tưởng để đưa ra lời giải
- Dùng ngôn ngữ lập trình
- Sử dụng phương pháp lập trình Top – Down và tinh chế từng bước.
Bước 4: Nghiên cứu lời giải để phát triển khả năng tư duy
- Kiểm tra lời giải.
- Tìm những cách giải khác, so sánh lựa chọn cách thích hợp.
- Nghiên cứu khả năng ứng dụng.
- Nghiên cứu để áp dụng cho những bài toán tương tự.
b. Các biện pháp tổ chức thực hiện:
* Xây dựng hệ thống câu hỏi gợi mở:
Giải bài tập là củng cố lại tri thức cho học sinh, việc xây dựng câu hỏi gợi
mở để giải quyết vấn đề là hết sức cần thiết. Đây là bước khởi đầu giúp
học sinh đưa ra ý tưởng giải quyết vấn đề.
5
Xây dựng câu hỏi gợi mở dựa vào căn cứ sau:
- Căn cứ vào yêu cầu của bài toán
- Căn cứ vào tiến trình thực hiện của giáo viên
- Căn cứ vào năng lực học tập của học sinh
- Căn cứ vào lượng kiến thức có liên quan và những vướng mắc có thể
của học sinh trong quá trình giải quyết bài toán
- Căn cứ vào phương tiện thiết bị hỗ trợ
c. Ví dụ vận dụng:
Ví dụ 1: Viết chương trình nhập vào số nguyên dương N, in lên màn hình
tổng các chữ số của nó.
DV: byte;
Begin
Writeln(‘nhap vao N:’);
Readln(n);
Tong:=0;
While N0 do
Begin
DV:= N mod 10;
Tong:= tong+DV;
N:= N div10;
End;
Writeln(‘ tong cac chu so cua N:’, tong);
Readln;
End.
Ví dụ 2: Viết chương trình nhập vào từ bàn phím các số nguyên dương,
kết thúc nhập khi nhập số 0. Cho biết có bao nhiêu số dương đã nhập vào
và trung bình cộng của chúng là bao nhiêu?
- Định hướng khó khăn: học sinh không biết sử dụng vòng lặp nào cho
hợp lí, không biết cách tính trung bình cộng.
- Xây dựng câu hỏi gợi mở để giải quyết bài toán:
(1) Để lặp lại việc nhập một số nguyên cần dùng vòng lặp nào?
(2) Điều kiện lặp là gì?
7
(3) Làm thế nào để đếm được số lần nhập các số nguyên dương?
(4) Trong bài toán cần có những biến nào?
(5) Cần làm những phép toán nào để tính được trung bình cộng?
- Từ câu trả lời của học sinh giáo viên cùng học sinh phân tích và đưa ra ý
tưởng giải bài toán
Readln; End.
8
Ví dụ 3: Viết chương trình nhập vào một số nguyên dương N, xác định xem N
có phải là một số thuộc dãy Fibonaci hay không?
Dãy Fibonaci được cho bởi công thức sau:
F1=F2=1
Fn=F(n-1) + F(n-2) với mọi n>2.
+ Định hướng khó khăn:
- Học sinh không biết là tạo bao nhiêu số fibonaci thì dừng và làm thế nào để
kiểm tra số vừa tạo có phải là N không?
- Dùng vòng lặp nào phù hợp? Điều kiện lặp là gì?
+ Xây dựng câu hỏi gợi mở để giải quyết bài toán:
(1) Xác định biến để lưu giá trị dãy fibonaci vừa tạo?
(2) Phải lưu dãy fibonaci như thế nào để có thể kiểm tra với N?
(3) Kiểm tra xem N có trong dãy fibo vừa tạo hay không thực chất là ta làm
công việc gì?
(4) Số cuối cùng trong dẫy fibonaci vừa tạo phải như thế nào so với N?
+ Xây dựng thuật toán dựa trên ý tưởng gợi mở đã thực hiện:
Bước 1: Nhập vào số nguyên dương N
Bước 2:
F1:=1; F2:=1; F:=0;
Bước 3: Nếu N=F thì chuyển qua bước 5
Bước 4: Nếu N>F thì
- F:= F1+F2
- F1:=F2; F2:=F quay lại bước 3
Bước 5: Đưa ra kết quả và kết thúc
bi toỏn
Hóy xỏc nh Input v
Output ca bi toỏn?
- Gi ý dn dt HS
gii bi toỏn:
(1) Lm th no ta
xỏc nh c N l s
nguyờn dng theo
ỳng yờu cu ca bi
toỏn?
(2) Bng cõu lnh no
xỏc nh Ai
Bước 1: Nhập vào N và
tưởng giải thuật và từ ý dãy AN với abs(Ai
HS Trả lời các câu hỏi
của GV và từ đó xác
định hướng giải quyết
bài toán, sau đó cụ thể
hoá thành các bước:
Bước 1: Nhập vào xâu S
Viết chương trình bằng
NNLT pascal:
Program cap_so_cong;
Var A: array[1..100] of
integer; dem,N,d: integer;
Begin
Repeat
Write(‘nhap vao so phan
tu:’); Readln(N);
Until (N>0) and (N
bước 3;
lời GV hỗ trợ để HS có Bước 5: thông báo kết
định hướng giải thuật rõ quả.
ràng
HS xác định phương án
- GV hướng dẫn HS viết duyệt xâu để đếm các
lời giải bằng NNLT và
chữ số có trong xâu
giúp các em hoàn thiện
bài tập.
Ghi chép bài và tìm tòi
- Đưa ra ví dụ để kiểm
thêm cách giải khác sau
tra tính chính xác của
đó so sánh lựa chọn cách
bài toán và hướng dẫn
giải phù hợp.
để HS có tìm thêm cách
giải khác.
I,dem: byte;
Begin
Write(‘nhap vao xau’);
Readln(s);
Dem:=0;
For i:=1 to length(s) do
If S[i] >=’0’ and S[i]
Câu 4: Chọn phát biểu sai. Để nhập giá trị cho các biến, ta có thể dùng các
cách sau:
A. Input(danh sách biến vào);
B. Dùng lệnh gán: tên biến := giá trị;
C. Readln(danh sách biến vào);
D. Read(danh sách biến vào);
Câu 5: Trong Pascal, câu lệnh readln không có tham số có tác dụng:
A. Nhập vào một giá trị bất kỳ
B. Dừng màn hình, xem kết quả
C. Không làm gì cả
D. Xuống dòng.
Câu 6: Phát biểu nào dưới đây là đúng ?
A. Đại lượng có giá trị không đổi trong quá trình thực hiện chương trình gọi
là biến.
B. Khi cần thay đổi ý nghĩa của một từ khóa nào đó người lập trình cần khai
báo theo ý nghĩa mới.
C. Trong chương trình tên gọi cũng là một đối tượng không thay đổi nên cũng
có thể xem là hằng.
D. Tên do người lập trình tự đặt không được trùng với từ khóa nhưng có thể
trùng với tên chuẩn
Câu 7: Câu lệnh lặp tiến có dạng là:
A. For <biến đếm> := <giá trị cuối> downto <giá trị đầu> do <câu lệnh> ;
B. For < biến đếm> := <giá trị đầu> to <giá trị cuối> do <câu lệnh> ;
C. For <điều kiện> do <câu lệnh> ;
D. For <biến đếm> := <giá trị đầu> to<giá trị cuối> then <câu lệnh>;
Câu 8: Trong NNLT Pascal, hai xâu kí tự được so sánh dựa trên?
A. Độ dài thực sự cảu hai xâu
B. Số lượng các kí tự khác nhau trong xâu
C. Độ dài tối đa của hai xâu
D. Mã của từng kí tự trong các xâu lần lượt từ trái sang phải
begin
write (..................); readln( n );
for i:= 1 to n do
begin
write ( ‘phan tu thu’, i, ‘=’);
write (..................);
end;
j := 1;
for i:= 2 to n do if ...............................then j := i;
write ( ........................................);
readln;
end.
ĐÁP ÁN:
PHẦN TRẮC NGHIỆM: (3 điểm) (mỗi câu đúng đạt 0.3 điểm)
1. B
2. A
3. B
8. D
9. B
10. B
4. A
5. B
s := s + A[i];
end;
writeln (s); readln;
end.
Câu 2:
Program
Const
Type
Var
btvn;
nmax = 100;
baitap = array [ 1 . . nmax] of integer;
A : baitap;
n, i, j : integer;
begin
write (‘nhap n’ ); readln( n );
for i:= 1 to n do
begin
write ( ‘phan tu thu’, i, ‘=’); write (A[i]);
end;
j := 1;
for i:= 2 to n do if A[i] < A[i+1] then j := i;
write ( ‘chi so:’, j, ‘gia tri’, A[j] ); readln;
end.
2.4 Hiệu quả của sáng kiến kinh nghiệm sau khi thực hiện đề tài
* Kết quả nghiên cứu
32,5%
42,5%
Không đạt yêu cầu
50%
56,8%
62,2%
53,8%
67,5%
57,5%
Sau khi thực hiện thực nghiệm qua các đối tượng học sinh đã nêu trên tôi
nhận thấy kết quả như sau:
- Đa số các em xác định chính xác yêu cầu đề bài.
15
- Các em khắc sâu được kiến thức và xác định đúng hướng để giải quyết
bài toán.
- Một số không ít học sinh có tiến bộ rõ rệt và hoàn thiện được bài tập
bằng ngôn ngữ lập trình pascal.
- Phát hiện lỗ hổng trong kiến thức lí thuyết và kịp thời giúp học sinh
khắc phục thông qua một số dạng bài tập.
- 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.
Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2017-2018 sau
khi thực hiện đề tài:
STT
1
2
11,9%
15,8%
21,6%
28,2%
22,5%
20%
3. Kết luận, kiến nghị
3.1. Kết luận
Trong quá trình thực hiện đề tài này tôi nhận thấy đa số học sinh có tiến bộ
rõ rệt, đam mê hơn đối với bộ môn Tin học qua đó tạo cho tôi thêm động lực và
niềm say mê trong công tác giảng dạy.
3.2. Kiến nghị
Để học sinh thật sự cảm nhận được lợi ích và hiệu quả của việc học môn
pascal từ đó các em có hứng thú, đam mê hơn đối với môn học, tôi rất mong
nhận được sự quan tâm hơn nữa của các cấp lãnh đạo, nhà trường và các nhà tài
trợ về vấn đề đầu tư cơ sở vật chất như phòng máy tính, máy chiếu để học sinh
có điều kiện học thực hành tốt hơn.
16
Trên đây là sáng kiến kinh nghiệm của bản thân tôi đúc kết được trong
quá trình giảng dạy môn Tin học lớp 11. Rất mong các bạn đồng nghiệp góp ý
để tôi hoàn thiện hơn trong công việc giảng dạy của mình.
Xin chân thành cảm ơn!
XÁC NHẬN CỦA THỦ TRƯỞNG
Thanh Hóa, ngày 20 tháng 5 năm 2018
ĐƠN VỊ
học QG Hà Nội, 2001 (Bắt đầu từ trang 7 đến trang 184)
5.
Quách Tuấn Ngọc (1995), Bài tập ngôn ngữ lập trình Pascal, NXB
Giáo dục. (Bắt đầu từ trang 3 đến trang 97)
6.
Bùi Thế Tâm, Võ Văn Tuấn Dũng (1996), Turbo Pascal 7.0, NXB
Thống kê Hà Nội.(Bắt đầu từ trang 31 đến trang 120)
7.
Trần Đức Huyên, Phương pháp giải các bài toán trong Tin học,
NXB Giáo dục. (Bắt đầu từ trang 21 đến 42 và từ trang 51 đến trang 131)
18
MC LC
1. M u..1
1.1. Lý do chn ti.....1
1.2. Mc ớch nghiờn cu............................................................................2
1.3. i tng, k hoch v phm vi nghiờn
cu........................................2
1.4. Phng phỏp nghiờn cu......................................................................3
1.5. Nhng im mi ca sỏng kin kinh
nghim.......................................3
2. Ni dung sỏng kin kinh nghim...4