Một số vấn đề học sinh khối 11 gặp phải khi giải bài toán trên máy tính – Tin học 11 1 MỤC LỤC 1 PHẦN MỞ ĐẦU 2 1 1 LÝ DO CHỌN ĐỀ TÀI 2 1 2 MỤC ĐÍCH NGHIÊN CỨU 2 1 3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2 1 4 PHƯƠNG PHÁP NGHIÊN CỨU 2 2 PHẦN NỘI DUNG 4 2 1 CƠ SỞ LÝ LUẬN 4 2 2 THỰC TRẠNG VẤN ĐỀ 4 2 3 VẤN ĐỀ THƯƠNG GẶP KHI GIẢI BÀI TOÁN TRÊN MÁY TÍNH 5 2 3 1 Vấn đề 1 Học sinh không tuân thủ các bước giải bài toán trên máy tính 6 2 3 2 Vấn đề 2 Một số lỗi thường gặp khi viết, chạy chương trình và cách khắ[.]
Trang 1MỤC LỤC
1 PHẦN MỞ ĐẦU 2
1.1 LÝ DO CHỌN ĐỀ TÀI 2
1.2 MỤC ĐÍCH NGHIÊN CỨU 2
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 2
1.4 PHƯƠNG PHÁP NGHIÊN CỨU 2
2 PHẦN NỘI DUNG 4
2.1 CƠ SỞ LÝ LUẬN 4
2.2 THỰC TRẠNG VẤN ĐỀ 4
2.3 VẤN ĐỀ THƯƠNG GẶP KHI GIẢI BÀI TOÁN TRÊN MÁY TÍNH 5
2.3.1 Vấn đề 1: Học sinh không tuân thủ các bước giải bài toán trên máy tính 6
2.3.2 Vấn đề 2: Một số lỗi thường gặp khi viết, chạy chương trình và cách khắc phục 11
2.4 HIỆU QUẢ ĐẠT ĐƯỢC 17
2.4.1 Kết quả sau khi áp dụng vào thực tế 17
2.4.2 Điều kiện để áp dụng sáng kiến 19
3 PHẦN KẾT LUẬN, KIẾN NGHỊ 20
3.1 KẾT LUẬN 20
3.2 KIẾN NGHỊ 20
TÀI LIỆU THAM KHẢO 21
Trang 21 PHẦN MỞ ĐẦU
1.1 LÝ DO CHỌN ĐỀ TÀI
Bộ môn Tin học THPT thường ít được học sinh Yên Định 2 quan tâm, yêu thích vì nó không thuộc tổ hợp môn thi ĐH nào Nhất là Tin học lớp 11, một nội dung kiến thức cần rất nhiều sự tư duy sâu và khả năng sáng tạo Mặt khác tin học 11 không như tin học 10, 12 là các chương trình ứng dụng, dễ hiểu, dễ vận dụng, dễ hình dung Tin học 11 thường rất ít ứng dụng dễ thấy do vậy khó tiếp cận, khó gần gũi đối với các em học sinh Trong nhiều năm giảng dạy, tôi thấy việc tạo hứng thú cho học sinh yêu thích môn tin học là một việc làm rất cần thiết và cần đầu tư Từ thực tế tôi thấy học sinh thường viết tốt chương trình của các bài toán đã có thuật toán sẵn, còn đối với các bài toán chưa có sẵn thuật toán, các em chỉ làm để đối phó, đúng thì tốt mà không đúng thì giáo viên sẽ sữa bài Do vậy trong tôi hình thành sáng kiến giúp các em nhận biết các vấn đề thường gặp khi giải bài toán trên máy tính, để các em có thể nhận ra được những khó khăn bản thân mắc phải và tìm cách khắc phục Từ đó các em sẽ chủ động hơn trong việc giải bài toán trên máy tính, và không còn tính chất đối phó, ỷ lại nữa Đây cũng là một minh chứng cho việc gây hứng thú học tập cho học sinh, giúp học sinh chủ động, tích cực hơn trong học tập Qua sáng kiến kinh nghiệm
TRÊN MÁY TÍNH – TIN HỌC 11” tôi muốn gửi tới các bạn đồng nghiệp một
chút kinh nghiệm của bản thân để học sinh thực sự yêu thích bộ môn Tin học, nhất là tin học 11
1.2 MỤC ĐÍCH NGHIÊN CỨU
- Nâng cao chất lượng dạy và học môn Tin học trong trường phổ thông, đặc biệt là dạy học lập trình ở Tin học lớp 11
- Góp phần đổi mới phương pháp dạy học trong trường phổ thông nói chung và môn Tin học nói riêng
- Góp phần khơi dậy lòng đam mê, yêu thích và hứng thú khi học môn Tin học của học sinh Đặc biệt là giúp các em nhìn thấy những ứng dụng đơn giản,
cụ thể, gần gũi, thiết thực của lập trình trong môi trường học tập của bản thân
- Học sinh khối 11 trường THPT Yên Định 2 năm học 2015-2016
- Học sinh khối 11 trường THPT Yên Định 2 năm học 2016-2017 trong học kì 1
- Dựa trên cơ sở lý thuyết của bài 6- Tin học 10 và môn Toán Nhất là môn Toán môn học cơ sở cho sự phát triển tư duy lập trình trong Tin học
Trang 3- Dựa trên cơ sở lý thuyết của Ngôn ngữ lập trình Pascal Sự hoạt động tuần tự từng bước của máy tính khi thực hiện chương trình
- Thu thập dữ liệu thông qua việc hỏi học sinh về mức độ biết, hiểu và vận dụng ngôn ngữ lập trình Pascal vào giải các bài toán trong các môn học khác
- Phân tích đánh giá mức độ học sinh hiểu vận dụng, giải được các bài toán trong các môn học khác, từ đó xây dựng, giới thiệu các bài toán phù hợp với từng đối tượng học sinh
- Tổng kết rút kinh nghiệm
Trang 42 PHẦN NỘI DUNG
2.1 CƠ SỞ LÝ LUẬN
Tạo hứng thú cho người học luôn là một vấn đề quan trọng trong hoạt động dạy - học Bởi vì, như chúng ta biết, dạy - học là một hoạt động phức tạp, trong đó chất lượng, hiệu quả cơ bản phụ thuộc vào người học Và điều này lại phụ thuộc vào nhiều yếu tố, như: năng lực nhận thức, động cơ học tập, sự quyết tâm ; nó còn phụ thuộc vào: môi trường học tập, người tổ chức quá trình dạy học, sự hứng thú trong học tập
Các nhà nghiên cứu tâm lý học cho rằng, hứng thú là thái độ đặc biệt của
cá nhân đối với đối tượng nào đó, nó có ý nghĩa đối với cuộc sống và có khả năng mang lại khoái cảm cá nhân trong quá trình hoạt động Sự hứng thú biểu hiện trước hết ở sự tập trung chú ý cao độ, sự say mê của chủ thể hoạt động Sự hứng thú gắn liền với tình cảm con người Trong bất cứ công việc gì, nếu có hứng thú làm việc, con người sẽ có cảm giác dễ chịu với hoạt động, làm nẩy sinh khát vọng hành động một cách có sáng tạo Ngược lại, nếu không có hứng thú, dù là hoạt động gì cũng sẽ không đem lại hiệu quả cao Đối với các hoạt động nhận thức, sáng tạo, hoạt động học tập, khi không có hứng thú, kết quả sẽ không là gì hết, thậm chí xuất hiện cảm xúc tiêu cực [6]
Việc học có tính chất đối phó, miễn cưỡng, người học may lắm chỉ tiếp thu được một lượng kiến thức rất ít, không sâu, không bản chất Vì thế dễ quên
Khi có hứng thú, say mê trong nghiên cứu, học tập thì thì việc lĩnh hội tri thức trở nên dễ dàng hơn; ngược lại, khi nắm bắt được vấn đề, tức là hiểu được bài thì người học lại có thêm hứng thú Trên thực tế, những người không thích, không hứng thú khi học môn học nào đó thường là những người không học tốt môn học đó Chính vì vậy, việc tạo hứng thú cho người học được xem là yêu cầu bắt buộc đối với bất cứ ai làm công tác giảng dạy, đối với bất cứ bộ môn khoa học nào
2.2 THỰC TRẠNG VẤN ĐỀ
Đặc điểm môn
Môn Tin học đến nay không còn là môn học mới mẻ đối với học sinh phổ thông, bởi học sinh đã được làm quen nó ngay ở các cấp học dưới Đây là một thuận lợi cho học sinh, học sinh không phải học từ đầu để làm quen với môn học Sự liên quan của môn Tin học với các môn học khác là nhiều, vì vậy học sinh sẽ phải vất vả để xem lại, tìm kiếm lại tri thức ở các môn học khác Đặc biệt nội dung lập trình trong môn học Tin học lại có liên quan rất nhiều đến kiến thức các môn khoa học tự nhiên, liên quan nhiều đến tư duy Toán học
Trong mục 2.1: Đoạn “các nhà nghiên cứu… cảm xúc tiêu cực” được trích dẫn trong TLTK
số 6
Trang 5Nếu học sinh yếu tư duy về Toán học thì sẽ rất là khó khăn khi lập trình Nếu học sinh có tư duy Toán học nhưng không hứng thú với môn Tin học, học cho biết, học để đối phó, thì thường các em sẽ không nghiên cứu kĩ bài học dẫn đến sẽ gặp phải một số khó khăn trong lập trình Muốn giải quyết được việc này thì giáo viên cần phải dẫn dắt học sinh tiếp cận với môn học một cách tự nhiên, hào hứng thông qua những kiến thức sẵn có của các em ở các môn học mà các
em yêu thích Đặc biệt, giúp các em nhận biết những khó khăn thường gặp và cách khắc phục khi lập trình
Giáo viên
Nhiều giáo viên còn hạn chế về trình độ, khả năng cập nhật thông tin Không chỉ vậy, một số giáo viên chưa hiểu rõ thuật toán để diễn đạt trong việc dạy lập trình Đôi khi giáo viên còn thờ ơ, luôn cảm thấy chán nản khi học sinh của mình không có hứng thú học tập Chính điều này đã làm cho giáo viên không chú trọng việc đổi mới phương pháp Dẫn đến học sinh mất đi khả năng tìm hiểu và tư duy giải quyết bài toán, hứng thú trong việc học lập trình
Học sinh
Khi bước vào học phổ thông thì học sinh đã bắt đầu định hình học theo khối để thi đại học Thời gian học chủ yếu dành cho các môn học chính như Toán, Lý, Hóa, Văn, Anh Tin học là một môn phụ nên thời gian để học chỉ là những tiết học ở trên lớp Đối với Tin học 10, 12 thì tính ứng dụng của môn học trong thực tế các em dễ dàng nhìn thấy và thực hiện được luôn Còn với Tin học
11 thuộc về lĩnh vực lập trình, khó có sản phẩm để các em nhìn thấy Hơn thế việc tư duy thuật toán cũng là một nội dung khó đối với các em Điều này dẫn đến rất nhiều học sinh không thích và học kém môn học này
Từ thực tế trên tôi muốn minh chứng thật rõ nét cho các em thấy giải bài toán trên máy tính không hề khó, có chăng là sự đam mê, tích cực chủ động của các em mà thôi Từ đó các em sẽ nhận ra việc học Tin học lập trình không quá khó và yêu thích môn học
Khi dạy tin 11 thì những bài đầu là những bài giới thiệu tổng quan về ngôn ngữ lập trình, giới thiệu một số khái niệm trong lập trình Ở những bài đầu học sinh sẽ cảm thấy hơi đơn điệu và nhàm chán Ở những bài này khi dạy tôi luôn luôn nhấn mạnh với các em phải hiểu, nhớ và thuộc lí thuyết thì mới vận dụng lập trình được ở những nội dung sau Cũng giống như môn Toán, Lí, Hóa
để làm được bài tập các em phải nhớ, hiểu công thức thì mới vận dụng để làm bài được
Quá trình dạy giáo viên cần truyền đạt tới các em những kiến thức cơ bản nhất của ngôn ngữ lập trình Cách thức dẫn dắt vấn đề thật đơn giản gần gũi để các em không có cảm giác sợ hãi, lo lắng Bước khởi đầu tiếp cận là rất quan trọng Trong lúc học giáo viên nên lồng ghép những câu như “Tin học cũng như
Trang 6Toán, như Lý Để viết được chương trình các em cần nhớ cú pháp, câu lệnh giống như việc các em làm bài tập cần nhớ công thức để vận dụng”
Kiến thức trọng tâm của chương giáo viên cần truyền tải tới học sinh:
- Chương trình thường gồm hai phần : Khai báo, thân
- Nhớ ý nghĩa các từ khóa để dùng khi viết chương trình: Program, Uses, Var, Const, Begin, End
- Tên, phạm vi lưu trữ các kiểu dữ liệu: Byte, Integer, Longint, Word, Real, Char, Boolean
- Các phép toán, các phép so sánh, phép toán quan hệ
- Các hàm số học chuẩn: ABS, SQR, SQRT, Sin, Cos,
- Hai lệnh nhập, in dữ liệu : Read,Readln, Write, Writeln
Giáo viên có thể lồng ghép các bài tập trong các tiết dạy lí thuyết Đến mỗi phần tương ứng nên cho học sinh xem những gì mà máy tính làm được Hoặc ở các tiết thực hành giáo viên có thể giao thêm bài để các em tự mình viết trên máy Từ đó các em dễ cảm nhận được ứng dụng của lập trình trong quá trình học
2.3.1 V ấn đề 1: Học sinh không tuân thủ các bước giải bài toán trên máy tính
Ngay khi học bài 6- Tin học 10, học sinh được tìm hiểu các bước giải bài toán trên máy tính
B1: Xác định bài toán B2: Lựa chọn và thiết kế thuật toán B3: Viết chương trình
B4: Hiệu chỉnh B5: Viết tài liệu [2]
Chương trình học Tin học 11, học sinh được tìm hiểu về ngôn ngữ lập trình Pascal, dùng ngôn ngữ lập trình Pascal viết chương trình cho một bài toán
cụ thể Tuy nhiên, khi yêu cầu học sinh giải một bài toán trên máy tính, các em thường bỏ qua B1, B2 và bắt tay vào viết chương trình luôn Chúng ta có thể gọi
là “ Đốt cháy giai đoạn” Chương trình mà các em viết có thể đúng với một số bài toán đơn giản hay một số bài toán có phương pháp giải được học trong môn Toán, Vật lí…Còn đối với một số bài toán phức tạp hơn, đòi hỏi cần phải tư duy thì chương trình các em viết ra không chạy hoặc không cho kết quả đúng
Trong mục 2.3.1: Vấn đề 1: Đoạn “ B1…B5 viết tài lệu” được trích dẫn trong TLTK số 2
Trang 7Sau nhiều lần không viết được chương trình đúng, học sinh có xu thế chán nản, mất hứng thú học tập, ỷ lại cho giáo viên, ỷ lại cho các bạn học tốt dẫn đến tình trạng kết quả học tập sa sút
Vì vậy, giáo viên cần hướng dẫn và yêu cầu học sinh khi giao cho máy tính làm việc gì thì bản thân học sinh cần tuân theo các bước giải bài toán trên máy tính
Bước 1: Xác định bài toán
Khi nhận được đề bài, nhiệm vụ của học sinh là phải xác định được hai yếu tố: Input và Output, xác định được mối quan hệ giữa hai yếu tố này
Input: Đưa vào máy tính thông tin gì.
Output: Cần lấy ra từ máy tính thông tin gì.[2]
Khi xác định xong hai yếu tố của bài toán, học sinh cần xác định những biến nào cần đưa vào sử dụng, những biến nào sẽ có thể sẽ phát sinh, và xác định được kiểu dữ liệu phù hợp cho các biến đó
Ví dụ 1: Giải và biện luận nghiệp phương trình ax 2 +bx+c=0 (a<>0)[2]
Input: a,b,c (a<>0) kiểu thực real.
Output: x 1 , x 2 kiểu thực real.
Sử dụng thêm biến delta kiểu thực real
Ví dụ 2: Tính chu vi, diện tích hình tròn khi biết bán kính R [1]
Input: R kiểu thực real.
Output: C, S kiểu thực real.
Sử dụng hằng pi=3.14
Ví dụ 3: Cho dãy số nguyên dương: a1,a2,…,an được nhập từ bàn phím Tìm
số chẵn lớn nhất trong dãy.
Input: Mảng A gồm n phần tử thuộc kiểu nguyên dương Word Output: số chẵn lớn nhất thuộc kiểu Word.
Sử dụng biến Max, i, n thuộc kiểu dữ liệu Word
Trong trang này: Bước 1 xác định bài toán:
+ Đoạn “khi nhận được … đến thông tin gì” và ví dụ 1 được trích dẫn từ TLTK số 2;
+ Ví dụ 2 được trích dẫn từ TLTK số 1;
+ Ví dụ 3 tự tác giả viết ra.
Trang 8Ví dụ 4: Nhập vào từ bàn phím 100 kí tự Hãy đếm số lần xuất hiện của các kí
tự [3]
Input: 100 kí tự thuộc kiểu dữ liệu Char.
Output:Đếm số lần xuất hiện của kí tự Ch thuộc kiểu dữ liệu byte.
Sử dụng mảng 1 chiều để lưu kết quả đếm của từng kí tự xuất hiện
Bước 2: Lựa chọn và thiết kế thuật toán
Trong thực tiễn giảng dạy, tôi nhận thấy đại đa số học sinh bỏ qua bước
quan trọng này Các em thường gặp khó khăn trong quá trình viết chương trình,
không hoàn chỉnh chương trình, chương trình không chạy được, không cho kết
quả đúng Là một giáo viên, tôi cần phải phân tích cho học sinh nắm rõ một
công thức:
Khi lập trình giải quyết một vấn đề, một bài toán giáo viên cần hình thành
cho học sinh thói quen làm theo trình tự
Cách làm này sẽ giúp giải quyết các vấn đề phức tạp, to lớn, có bài bản,
tránh được nhiều lỗi Và không nên làm:
Bởi cách làm này thường xảy ra đối với học sinh mới học và giải quyết
các bài toán nhỏ
Như vậy, giáo viên cần yêu cầu học sinh dành nhiều thời gian suy nghĩ về
thuật giải, sẽ giúp học sinh tìm ra cách giải hay, tối ưu về số lượng phép toán,
thời gian chạy và dung lượng bộ nhớ [3]
Trong trang này :
+ ví dụ 4 được trích từ TLTK số 3;
+ Đoạn “ một công thức….dung lượng bộ nhớ” được trích dẫn từ TLTK số 3;
+ Đoạn “ input….học sinh cần nắm rõ” tác giả tự viết ra
Thuật giải + Cấu trúc dữ liệu = chương trình
Vấn đề, bài toán→Tìm và xây dựng thuật giải→ chương trình
Vấn đề, bài toán→ chương trình
Trang 9Một số ví dụ về việc lựa chọn, thiết kế thuật toán và viết chương trình.
Ví dụ 1: Giải và biện luận nghiệp phương trình ax 2 +bx+c=0 (a<>0)[2]
Trong trang này: Ví dụ 1 được trích dẫn từ TLTK số 2
Chương trình
Program vd1;
var a,b,c,x1,x2, delta: real;
begin Write (‘ nhap a,b,c:); readln(a,b,c);
delta:= b*b-4*a*c;
if delta=0 then write( ‘pt co nghiem kep x1=x2=’,-b/(2*a):8:2);
if delta<0 then write( ‘pt vo nghiem’) else
begin x1:=(-b-sqrt(delta))/(2*a);
x2:=(-b+sqrt(delta))/(2*a);
write (‘pt co 2 nghiem pb:’,x1:8:2,x2:8:2);
end;
readln;
end
Thuật toán
Bước 1: Nhập 3 số thực a,b,c
(a<>0);
Bước 2: delta b*b-4*a*c;
Bước 3: Nếu delta=0 thì
thông báo pt co nghiem kep
x1=x2=-b/(2*a), kt;
Bước 4: Nếu delta <0 thì
thông báo pt vo nghiem rồi kt;
Bước 5: thông báo phương
trình có 2 nghiệm phân biệt
x1 (-b-sqrt(delta))/(2*a);
x2 (-b+sqrt(delta))/(2*a);
Rồi kết thúc
Trang 10Ví dụ 2: Tính chu vi, diện tích hình tròn khi biết bán kính R.[1]
Ví dụ 3: Cho dãy số nguyên dương: a1,a2,…,an được nhập từ bàn phím Tìm
số chẵn lớn nhất trong dãy.
Trong trang này:
+ Ví dụ 2 được trích dẫn từ TLTK số 1;
+ Ví dụ 3 tự tác giả viết ra.
Thuật toán
Bước 1: Nhập số thực R
(a<>0), pi=3.14;
Bước 2: C 2*pi*R ;
Bước 3: S pi*R*R
Bước 4: Thông báo chu vi,
diện tích hình tròn rồi kết thúc
Chương trình
Program vd2;
type pi=3.14;
var R, C, S: real;
begin Write (‘ nhap R:); readln(R);
C :=2*pi*R ;
S := pi*R*R;
write (‘chu vi hinh tron:’,C:8:2,’dien tich hinh tron:’,S:8:2);
readln;
end
Thuật toán Bước 1: Nhập dãy A gồm n; a1, a2, ,
an là các số nguyên dương;
Bước 2: i1; max0;
Bước 3: Nếu i> N thì
Bước 31: Nếu Max=0 thì thông
báo không có số chẵn trong dãy rồi kết
thúc
Bước 32: ngược lại, đưa ra Max
rồi kết thúc
Bước 4: Nếu ai chia hết cho 2 thì
Bước 41: Nếu ai> max thì
Max ai;
Bước 42: ngược lại sang bước 5
Bước 5: ii+1, quay lại bước 3;
Chương trình
Program vd3;
var a: Array[1 100] of word;
n, i: byte; max: word;
begin Write (‘ nhap n:); readln(n);
for i:=1 to n do begin
write(‘phan tu a[‘,i,’]=’);
readln(a[i]);
end;
max:=0;
for i:=1 to n do
if a[i] mod 2 =0 then
if a[i]>max then max:=a[i];
if max=0 then writeln(‘ khong co so chan trong day’) else writeln(‘so chan lon nhat trong day la:’,max);
readln;
end