CHƯƠNG I: CƠ SỞ L LUẬN VÀ THỰC TIỄN CỦA VIỆC H NH THÀNH VÀ PHÁT TRIỂN KỸ NĂNG THỰC HÀNH CHO HỌC SINH TRONG DẠY HỌC TIN HỌC Ở TRƯỜNG THPT
1.3. Các kỹ năng thực hành cần rèn luyện
Từ đặc điểm và vị trí môn của học trong nhà trường THPT, từ thực tế của môn Tin học trong trường THPT nước ta hiện nay, để đạt được nhiệm vụ dạy học Tin học trong trường THPT, thì người giáo viên cần lưu ý quan tâm rèn luyện cho các em kỹ năng học tập Tin học bao gồm các nhóm kỹ năng sau:
Kỹ năng nhận thức.
Kỹ năng thực hành.
Kỹ năng tổ chức hoạt động nhận thức.
Kỹ năng tự kiểm tra, đánh giá.
Tuy nhiên trong phạm vi đề tài tôi ch đề cập đến việc rèn luyện cho học sinh các kỹ năng thực hành, đây là kỹ năng cơ bản giúp các em trong học tập môn Tin học cũng như phục vụ cuộc sống sau này.
Kết quả của việc tiếp thu những tri thức Tin học phải được thể hiện trong các chương trình lập trình giải các bài toán b ng máy tính, trong các khả năng ứng dụng Tin học của học sinh vào trong thực tiễn. Bởi vậy, trong dạy học người thầy giáo cần quan tâm rèn luyện cho học sinh những kỹ năng thực hành trong Tin học bao gồm các nhóm kỹ năng sau:
Kỹ năng vận dụng tri thức Tin học vào hoạt động lập trình.
Kỹ năng vận dụng tri thức Tin học vào giải các bài toán thực tiễn.
Kỹ năng vận dụng tri thức vào khai thác các thành tựu về Tin học.
1.3.1. Kỹ năng vận dụng tri thức Tin học vào hoạt động lập trình
Ngôn ngữ lập trình Pascal chiếm một vị trí quan trọng trong bộ môn Tin học ở trường THPT. Hoạt động lập trình có thể xem là hình thức chủ yếu của hoạt động Tin học đối với m i học sinh. Nó chính là điều kiện để thực hiện tốt các mục đích của việc dạy học Tin học trong nhà trường THPT.
Kỹ năng vận dụng tri thức có hiệu quả vào hoạt động lập trình của học sinh
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
được huấn luyện trong quá trình họ tìm thuật giải. Quá trình này thường được tiến hành theo 4 bước: Tìm hiểu nội dung bài toán, xây dựng thuật giải, thực hiện xây dựng chương trình và thực hiện chạy thử trên máy để nghiên cứu thuật giải tìm được. giai đoạn này, học sinh luôn được yêu cầu lựa chọn và phân tách hoạt động, vận dụng những hoạt động trí tuệ, những kiến thức, phương pháp, sử dụng một số tổ hợp các phương tiện, vận dụng những kỹ thuật xây dựng chương trình để kiến thiết thuật giải. Để rèn luyện cho học sinh kỹ năng vận dụng tri thức vào hoạt động lập trình, người giáo viên cần chú ý dạy Tin học cho học sinh qua các phương diện:
Phương diện ngôn ngữ.
Phương diện thuật giải.
Phương diện dữ liệu.
Phương diện kết quả.
Phương diện máy tính điện tử.
Phương diện quá trình.
Phương diện giải quyết vấn đề.
1.3.1.1. P di ô ữ
phương diện ngôn ngữ, ta cần dạy cho học sinh theo quan điểm giao tiếp giữa người và máy b ng cách tạo ra những tình huống công việc mà giải quyết nó đòi hỏi phải biết được từ khoá nào, cấu trúc ngữ pháp của câu lệnh, cấu trúc dữ liệu và cấu trúc chương trình...Những tình huống như vậy là những dịp để giáo viên gợi động cơ học tập cho học sinh.
Chẳng hạn, muốn tìm số lớn nhất trong ba số nguyên, ta viết chương trình để khi nhập vào ba số nguyên bất k thì màn hình s thông báo số lớn nhất trong ba số vừa nhập.
Ví dụ 1:
Program max3so;
Uses Crt;
Var a,b,c,max: Integer;
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Begin
Clrscr;
Write ('Nhap vao so nguyen thu 1: '); Readln(a);
Write ('Nhap vao so nguyen thu 2: '); Readln(b);
Write ('Nhap vao so nguyen thu 3: '); Readln(c);
If a < b then max:=b;
If b < c then max:=c;
If c < a then max:=a;
Writeln('So lon nhat la: ', max);
Readln;
End.
Thông qua chương trình này, ta dạy cho học sinh cách d ng lệnh xoá màn hình Clrscr, cấu trúc hoạt động của câu lệnh If…then.
1.3.1.2. P di t uật iải
phương diện thuật giải, ta yêu cầu học sinh viết thuật giải b ng sơ đồ khối hoặc b ng ngôn ngữ phỏng trình. Tức là xây dựng dãy các tác động để cho máy tính có thể thực hiện trong một khoảng thời gian nhất định nh m đạt được một kết quả xác định gọi là điều kiện ra xuất phát từ một tình huống gọi là điều kiện vào. Nếu có thể thì cho học sinh biết nhiều thuật giải có thể giải quyết c ng một nhiệm vụ, sau đó chọn xem trong số các thuật giải đó thuật giải nào tốt nhất về một yêu cầu nào đó.
1.3.1.3. P di dữ i u
Thông tin cho máy tính bao gồm một tập hợp được chọn của các dữ liệu về bài toán được đặt ra, các kết quả mong muốn s được đưa ra từ đó. Trong lập trình cần phải tuân theo quy t c h ng, biến, biểu thức phải tuân theo một kiểu dữ liệu nào đó.
Kiểu nào xác định tập các giá trị mà h ng phải phụ thuộc vào; một biến, một h ng,
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
một biểu thức có thể cho trong giá trị đó. Khi ta khai báo kiểu dữ liệu thì máy tính xác định tập các giá trị của nó và các phép toán được d ng trong đó. Khi xây dựng thuật giải, ta đã xác định tập các thao tác trên các đại lượng nào đó. Quán triệt phương diện dữ liệu người thầy giáo cần rèn luyện cho học sinh những kỹ năng sau trong hoạt động lập trình:
Kiểm tra dữ liệu khi nhập vào.
Sử dụng những thao tác thích hợp với từng kiểu dữ kiệu đó.
Xây dựng cấu trúc dữ liệu thích hợp với từng bài toán.
mức cao hơn chương trình phải biết phân tích sai sót báo cho người sử dụng biết các sai sót khi họ đưa dữ liệu vào không đúng theo yêu cầu bài toán, nếu có thể thông báo cho họ biết bản chất của sai sót là gì. Nếu chương trình không có khả năng kiểm tra dữ liệu khi vào thì có thể dẫn đến sai sót khi thực hiện.
Nếu dữ liệu nhập vào mất nhiều công gõ bàn phím m i khi chạy thử thì ta nên d ng các h ng để ghi nhớ chúng ngay từ khi soạn thảo và đến khi chạy thật thì ta bỏ chúng đi mà thay thế vào đó là các biến nhận giá trị thực tế, còn khi khai báo biến ta cần lưu ý đến miền giá trị để xác định kiểu dữ liệu cho chúng. Chẳng hạn, đối với biến d ng để chứa tuổi của một người nên khai báo thuộc kiểu miền con từ 1..1 thì ta nên khai báo kiểu Byte mà không nên khai báo là kiểu nguyên (Integer) bởi khai báo như vậy máy s dành nhiều ô nhớ để chứa biến nhớ đó, rất tốn bộ nhớ và làm cho chương trình xử lý chậm hơn.
1.3.1.4. P di qu t ì
Khi học lập trình, nhiều học sinh ch chú ý tới kết quả bài toán mà không n m được quá trình thực hiện chương trình. Nếu học sinh n m được quá trình thực hiện chương trình thì họ s tránh được những sai lầm ngộ nhận và s n m được từng bước của quá trình, kết quả làm việc của các cấu trúc lặp, lệnh làm việc với chương trình con…điều đó s giúp họ kiểm soát được các khả năng có thể xảy ra với dữ liệu khi làm việc. Rèn luyện cho học sinh kỹ năng hiểu được câu lệnh điều kiện, vai trò của biến điều khiển, chu trình lặp, sự kết thúc chu trình, hoạt động của chương trình con khi có lời gọi đến nó. N m được quá trình thực hiện chương trình là góp phần
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
xây dựng chương trình, thể hiện tính đúng đ n của chương trình giúp ta cải tiến chương trình làm cho một số phép toán mà chương trình phải thực hiện nhỏ dần đi, đồng thời giúp ta dễ dàng phát hiện ch sai của thuật giải hoặc dữ liệu khi kiểm thử chương trình. Đối với phương diện này ở trên lớp giáo viên mô phỏng quá trình làm việc của các câu lệnh, ví dụ lệnh gán, lệnh r nhánh, lệnh lặp…Khi dạy học những lệnh này cần có những bài tập mà yêu cầu học sinh lập bảng mô phỏng thể hiện các bước của chương trình với các dữ liệu cụ thể.
Chẳng hạn, khi dạy học với lệnh gán ta yêu cầu học sinh làm bài tập sau: Lập bảng mô phỏng việc thực hiện đoạn chương trình hoán vị 2 giá trị a = 3 , b = 8 như sau:
tg:= a; a:= b; b:= tg;
Học sinh lập được bảng mô phỏng quá trình diễn ra bên trong bộ nhớ của máy tính như sau:
Bước 1 Bước 2 Bước 3 Bước 4
a 30 30 8 8
b 8 8 8 30
tg 30 30 30
Bài tập này là thể hiện của phương diện quá trình, học sinh phải mô phỏng quá trình diễn ra bên trong bộ nhớ của máy, khi chương trình làm việc họ cần lập được bảng trong quan hệ đã cho.
Trên phương diện quá trình, người thầy giáo cần rèn luyện cho học sinh kỹ năng xây dựng chương trình bao gồm phương pháp xây dựng chương trình từ trên xuống, phương pháp xây dựng chương trình từ dưới lên, bởi việc truyền thụ tri thức Tin học cho học sinh không ch dừng lại ở việc truyền thụ những kiến thức l t mà ở đây ta phải lưu ý đến toàn bộ kiến thức xuyên suốt chương trình, phải cho học sinh tập dượt làm quen với kiến thức tổng hợp trong quá trình tổng hợp.
Rèn luyện cho học sinh phương pháp xây dựng chương trình từ trên xuống có
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
ngh a là xuất phát từ bài toán lớn ta chia nó thành một số bài toán con.
Qua từng bước triển khai và chi tiết hóa, chương trình ngày càng đi vào chiều sâu.
Giả sử, ta cần viết chương trình C để làm bài toán T. Nếu là bài toán phức tạp, ta chia nó thành một số bài toán con. Chẳng hạn T = t1 + t2 + t3 +…ứng với các chương trình c1, c2, c3…Khi giải xong các bài toán t1, t2, t3…có thể dễ dàng thu được lời giải của bài toán T ban đầu. Nếu các chương trình c1, c2, c3…đã có sẵn hoặc quá đơn giản có thể dễ dàng viết được ngay thì quá trình xây dựng thuật giải coi như xong. Trong trường hợp ngược lại, ta phân tích m i bài toán con trong số các bài toán t1, t2, t3…thành những bài toán nhỏ hơn, chẳng hạn t11, t12,…ứng với các chương trình c11, c12…
Quá trình chia nhỏ các bài toán như trên thường được gọi là quá trình làm mịn dần. Thuật giải được cụ thể hóa dần dần, m i bước sau lại tận dụng được kết quả, kinh nghiệm của các bước trước. Cứ như vậy ta tìm được thuật giải cho bài toán đặt ra ban đầu.
1.3.1.5. P di ết quả
Thông thường, học sinh khi lập trình chưa chú ý đến kết quả đưa ra của bài toán, chẳng hạn để tính chu vi, diện tích hình tròn khi cho biết bán kính, một học sinh viết chương trình như sau:
Program Hinh_tron;
Uses Crt;
Var r, dt, cv: real;
Begin
Clrscr;
Write ('Nhap ban kinh: '); Readln(r);
cv:= 2*pi*r;
dt:= pi*r*r;
Readln;
End;
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Chương trình trên chưa chú ý đến phương diện kết quả. Không có một người lập trình nào có thể khẳng định r ng chương trình của mình ngay từ đầu đã không có sai sót.
Có nhiều nguyên nhân dẫn đến kết quả sai, từ khâu vào chương trình, xây dựng giải thuật.
Thông thường có 5 phương pháp để phát hiện sai sót:
Phát hiện sai sót khi hợp dịch chương trình.
Phát hiện sai sót khi thực hiện trên máy.
Máy không chạy hoặc chạy không thông suốt.
Phát hiện sai nhờ chương trình thử.
Kết quả sai rõ ràng.
đây ta ch đề cập đến vấn đề kiểm thử chương trình mà không đặt ra vấn đề chứng minh tính đúng đ n của chương trình.
Cần rèn luyện cho học sinh những kỹ năng sau đây:
Biết xây dựng một tập dữ liệu phủ kín các trường hợp cần kiểm chứng một chức năng nào đó của chương trình.
Biết lập luận để lựa chọn 1 trong 2 tập hoặc đơn vị dữ liệu vào trong trường hợp chúng cho kết quả bao nhau.
Biết ch ra một cách ch c ch n các dữ liệu cần phải kiểm nghiệm sau khi đã thực hiện một số lần kiểm nghiệm.
Biết mô tả các chức năng mà một thuật toán đã được cài đặt có thể thực hiện được.
Một chương trình chạy xong, máy cho kết quả cụ thể nhưng ta có thể vẫn phát hiện được những sai sót khi đã biết kết quả chính xác thông qua thực nghiệm thực hiện một chương trình khác hoặc thông qua tính không dừng của máy. Nhờ đó ta có thể khẳng định hoặc nghi ngờ chương trình có sai sót. Kiểm thử là một bước giải bài toán b ng MTĐT. Sau khi nạp chương trình vào máy và chương trình dịch thông báo không còn l i, khi đó ta đưa dữ liệu vào để kiểm tra chương trình. Ta nên thay đổi giá trị của hệ số để ghi nhỏ kích thước của mảng. Ta không nên d ng dạng
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
đặc biệt của dữ liệu để kiểm thử.
Như vậy kiểm thử ch chứng tỏ được sai sót chứ không chứng minh được không có sai sót trong chương trình.
Để nâng cao độ tin cậy của chương trình khi kiểm thử, ta không nên lấy những tình huống đặc biệt. Chẳng hạn, khi thử chương trình giải phương trình bậc 2 ta không nên cho a=1. Nếu muốn nh m nghiệm theo định lí Viet thì ta có thể lấy a=2, b= -5, c= 3 hơn là lấy a=1, b=-2, c=1.
Một nguyên nhân dẫn đến kết quả sai mà những người chưa có kinh nghiệm lập trình hay m c phải, đó là hiện tượng hiệu ứng phụ. Theo hiện tượng này, các biến tổng thể được tạo giá trị trong chương trình con hoặc b ng cách truyền tham biến ra khỏi chương trình con mà giá trị khi sử dụng biến này vào những biểu thức khác thì có thể gây ra những sai sót. Vì vậy trong chương trình cần có những thông báo nh c nhở kiểm soát giá trị của các biến này.
1.3.1.6. P di m tí đi tử
Việc đưa máy tính vào trường phổ thông có 2 khuynh hướng:
Dạy học một số yếu tố của khoa học Tin học.
Sử dụng MTĐT như một công cụ.
Việc sử dụng MTĐT như một công cụ là một xu hướng ngày càng phát triển, dạy học lập trình theo tinh thần dạy học MTĐT để giải toán. Tuy nhiên, học sinh không phải ch biết lập trình mà còn phải biết làm việc với một số chương trình như một đối tượng. Đó là có thể gọi ra, lưu trữ, sửa đổi, xóa bỏ,…Và học sinh cũng phải làm việc được với một số lệnh thông dụng của HĐH như Copy, Paste,…Thông qua việc sử dụng môi trường của Turbo Pascal, cần cho học sinh sử dụng Menu, một hình thức làm việc phổ biến với MTĐT.
Khi soạn thảo chương trình ta đã cho học sinh sử dụng máy tính như sử dụng máy soạn thảo văn bản. Từ đó học sinh biết được cách sử dụng các phím cơ bản, cách sao chép, di chuyển khối…Cần tập dượt cho học sinh thiết lập những màn hình văn bản có thông báo tạo nên sự đối thoại giữa người và máy trong sử dụng MTĐT.
Ta có thể cho học sinh lập chương trình cho máy tính làm việc như một thầy giáo.
Nguyễn Anh Quốc - [Xây dựng phương pháp rèn luyện kỹ năng cho học sinh lớp 11 trên cơ sở các bài tập Tin học]
Chẳng hạn, máy dạy cho học sinh cấp 1 luyện cộng, trừ trong phạm vi 1 . Khi đó xuất hiện trên màn hình phép cộng mà 2 số hạng là 2 số nguyên ngẫu nhiên trong phạm vi cho phép. Học sinh phải cho máy biết tổng của 2 số đó, nếu kết quả đúng thì máy có lời khen, cho điểm, nếu sai cho nhận xét, nh c nhở.
Tương tự như vậy, máy tính có thể đóng vai trò người học, như vậy tạo cơ hội cho học sinh học lập trình thông qua dạy cho máy b ng những công thức mà họ lập cho máy thực hiện. Nhờ đó, trước hết học tập được cách lập trình, hơn nữa họ phát triển được kinh nghiệm giải quyết vấn đề thông qua việc lập trình.
Ta cũng có thể ra bài tập cho học sinh lập trình để máy quản lý thời khóa biểu
quản lý điểm sổ đầu bài, danh sách lớp…mà các dữ liệu có thể cập nhật, sửa đổi bổ sung, thêm, bớt hay ghi vào tệp.
C phương diện MTĐT, ta có thể cho học sinh lập chương trình cho máy thực hiện những chương trình trò chơi để khuyến khích học sinh học lập trình trên máy.
1.3.1.7. P di iải qu ết vấ đề
Trong giảng dạy, giáo viên cần hướng dẫn để học sinh tích cực tham gia vào bài giảng, giúp họ tự xây dựng thuật giải các chương trình con, lựa chọn các câu lệnh khi mã hóa, cách trang trí màn hình…góp phần sáng tạo của học sinh vào bài học.
Khác với môn học khác, môn lập trình đòi hỏi học sinh phải làm nhiều bài tập và chạy các chương trình trên MTĐT. Khi lập trình, học sinh phải biết áp dụng điều đã học và vốn hiểu biết của họ về thực tế đời sống hàng ngày một cách linh hoạt và ít nhiều sáng tạo. Thông qua việc xây dựng chương trình có thể rèn luyện cho học sinh kinh nghiệm giải quyết vấn đề. Muốn vậy, cần chú ý giúp học sinh cách suy ngh và làm việc để giải quyết vấn đề như hình thành và kiểm nghiệm giả thuyết, phát hiện sai lầm, điều ch nh phương hướng, vận dụng những thao tác tư duy, phân tích, tổng hợp, tương tự hóa, khái quát hóa, quy nạp, suy diễn.
phương diện giải quyết vấn đề còn góp phần sáng tạo động cơ học tập cho học sinh, nó cũng có ý ngh a giải quyết rất lớn. Đó là: Vận dụng những điều