1. Trang chủ
  2. » Luận Văn - Báo Cáo

Rèn luyện kỹ năng lập trình hiệu quả cho học sinh trường thpt yên định 3

22 141 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 195,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Là giáo viên trực tiếp giảng dạy môn Tin học nhiều năm tôi luôn tìm tòivận dụng những phương pháp dạy học tích cực để giúp các em tiếp cận và giảiquyết hiệu quả các bài học Tin học nói c

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA

TRƯỜNG THPT YÊN ĐỊNH 3

SÁNG KIẾN KINH NGHIỆM

RÈN LUYỆN KỸ NĂNG LẬP TRÌNH HIỆU QUẢ

CHO HỌC SINH TRƯỜNG THPT YÊN ĐỊNH 3

Họ và tên tác giả: Lê Tiến Lực

Trang 2

2 Nội dung sáng kiến kinh nghiệm 4

2.2 Thực trạng của vấn đề trước khi áp dụng sáng kiến kinh nghiệm 42.3 Các giải pháp đã sử dụng để giải quyết vấn đề 52.3.1 Rèn luyện tư duy thuật toán cho học sinh THPT 5

2.3.5 Kiểm nghiệm chương trình với các test đầy đủ nhất 102.3.6 Các dạng toán cơ bản bồi dưỡng môn Tin cho HSG THPT 10

3 Kết luận, kiến nghị 19

Trang 3

1 MỞ ĐẦU

1.1 Lí do chọn đề tài.

Việt Nam đang đổi mới một cách căn bản, toàn diện nền giáo dục để nềngiáo dục Việt Nam phát triển hòa nhập với quốc tế, theo kịp với sự phát triểnnhư vũ bão của khoa học - kĩ thuật - công nghệ và tri thức của loài người đanggia tăng nhanh chóng Đổi mới giáo dục toàn diện là một lộ trình đã và đangđược thực hiện, một trong những bước đi đầu tiên của quá trình đổi mới ấy làđổi mới phương pháp dạy học nhằm phất huy tính tích cực, chủ đông, sáng tạotrong học tập để tạo đà cho các cấp học tiếp theo hoặc trong thực tiễn cuộc sốngsau này Môn tin học được đưa và chương trình THPT và đang tích cực thựchiện đổi mới phương pháp dạy học nhằm mang lại hiệu quả dạy học và giáo dụccao nhất

Mặt khác môn Tin học không phải là môn khoa học lý thuyết thuần túy vìvậy học sinh không thể nhớ nếu như không hiểu bài Việc giáo viên bắt học sinhghi nhớ thụ động từng nội dung trong sách giáo khoa là một điều cực khó, cho

dù học sinh có cố gắng ghi nhớ thì vẫn bị lẫn lộn Hơn nữa, khi gặp các bài toánphải sử dụng thuật toán phức tạp nhiều em lúng lúng Việc giải các bài toán nàythực sự cần thiết cho các em khi làm các học lập trình trong chương trình Tinhọc phổ thông nói riêng và việc giải quyết các bài toán thực tế nói chung

Là giáo viên trực tiếp giảng dạy môn Tin học nhiều năm tôi luôn tìm tòivận dụng những phương pháp dạy học tích cực để giúp các em tiếp cận và giảiquyết hiệu quả các bài học Tin học nói chung và các bài tập lập trình nói riêng,trong đó có kỹ năng giúp học sinh lập trình giải các bài toán trên ngôn ngữ lậptrình bậc cao (cụ thể là NNLP Pascal) sao cho hiệu quả nhất, hướng đến tínhchuyên nghiệp nhất để tạo điều kiện cho các em có thể học lên cao nữa, mặtkhác học sinh cần rèn luyện tính kiêm trì, chịu khó, chăm chỉ và làm việc có tổchức, có kế hoạch trong học tập cũng như lao động sản xuất sau này

1.2 Mục đích nghiên cứu.

Theo những tin tức tư vấn của chuyên gia giáo dục, việc kết hợp lý thuyết

và thực hành là xu hướng phát triển tất yếu của nền giáo dục để có thể đáp ứngnhu cầu chất lượng nguồn lao động hiện nay Đây cũng được xem là phươngpháp dạy học Tin học hiệu quả Thực tế, do học sinh phải học quá nhiều môn, cábiệt có em cho rằng Tin học là môn học phụ, không thi THPT quốc gia Nếu chỉhọc lý thuyết chung chung thì học sinh sẽ không thể nắm bắt và sẽ nhanh quên.Bên cạnh đó thì Tin học cũng là môn học đòi hỏi kỹ năng sử dụng máy tínhthành thạo Chính vì thế, cần kết hợp đào tạo lý thuyết và rèn luyện kỹ năng thựchành theo hướng chuẩn và chuyên nghiệp Đây được xem là yếu tố cần thiết đốivới dạy học môn Tin học

Trang 4

Mặt khác qua quá trình nhiều năm giảng dạy thực tế tại đơn vị và trao đổicùng đồng nghiệp các đơn vị khác, qua quá trình tìm hiểu học sinh, nhất là trongcác bài thi của các học sinh giỏi cấp tỉnh những năm qua cho thấy: Một số bàilàm của các em còn chưa được viết đúng phong cách lập trình có cấu trúc, chưa

có phong cách viết mã nguồn chuyên nghiệp, chưa thực sự tối ưu hóa mã nguồnnên gây khó khăn cho việc hiệu chỉnh và phát triển chương trình Hầu hết cácchương trình của các em học sinh mang tính chú trọng tìm output nên khi đọcchương trình người khác rất khó hiểu và khó hiệu chỉnh theo hướng chuyênnghiệp Để khắc phục tình trạng này tôi mạnh dạn áp dụng những sáng kiến củamình trong nhiều năm, với nhiều thế hệ học sinh một cách thường xuyên và liêntục trong quá trình dạy học từng bài học, từng tiết học, đặc biệt là trong quá trìnhbồi dưỡng học sinh khá giỏi môn Tin học Kết quả bước đầu đạt được là rất đángkhích lệ và tự hào, được đồng nghiệp và học sinh đánh giá cao

1.3 Đối tượng nghiên cứu.

Sáng kiến kinh nghiệm được nghiên cứu và đúc rút kinh nghiệm tập trung vào các vấn đề sau:

- Rèn luyện tư duy thuật toán cho học sinh THPT

o Rèn luyện kỹ năng tìm tòi thuật toán giải các bài toán hiệu quả

o Xác định rõ INPUT và OUTPUT

o Mịn dần thuật toán

- Rèn luyện phong cách lập trình tốt cho học sinh THPT

o Quy ước về cách đặt tên cho các định danh

o Phong cách viết mã nguồn

o Tối ưu sự thực thi mã nguồn

o Tạo các bộ Test kiểm tra tính đúng đắn của chương trình

- Các dạng toán tiêu biểu bồi dưỡng môn Tin học cho HSG THPT

o 1.Các bài toán số học

o 2.Các bài toán về mảng một chiều, hai chiều

o Các bài toán về xử lý xâu

1.4 Phương pháp nghiên cứu.

Để nghiên cứu được đề tài tôi đã sử dụng một số phương pháp sau:

- Phương pháp nghiên cứu xây dựng cơ sở lý thuyết lập trình

- Nghiên cứu các vấn đề lí luận có liên quan đến đề tài như các tài liệu vềthuật toán, các bài toán hay trong tin học

- Nghiên cứu các tài liệu về phương pháp dạy học tích cực môn Tin học

- Nghiên cứu nội dung cấu trúc của chương trình môn Tin học THPT

- Phương pháp khảo sát thực tế, thu thập thông tin về học sinh

- Trao đổi với giáo viên có kinh nghiệm về phương pháp dạy học tích cực

Trang 5

- Tìm hiểu khó khăn của học sinh và giúp đỡ các em trong quá trình họctập, thực hành trên phòng máy.

2 NỘI DUNG SÁNG KIẾN KINH NGHIỆM

2.1 Cơ sở lí luận.

- Cơ sở của việc dạy học bộ môn: Dạy học là một tác động hai chiều giữagiáo viên và học sinh, trong đó học sinh là chủ thể của quá trình nhận thức, còngiáo viên là người tổ chức các hoạt động nhận thức cho học sinh Nếu giáo viên

có phương pháp tổ chức tốt, phù hợp thì học sinh sẽ nắm kiến thức dễ dàng, cóthể giải quyết tốt các bài toán, tình huống cụ thể trong thực tiễn và ngược lại

- Cơ sở của việc nắm kiến thức, kĩ năng:

+ Về mặt kiến thức: Học sinh phải nắm được các đơn vị kiến thức cơ bản

trong sách giáo khoa, trong giờ học theo chuẩn kiến thức, kĩ năng do Bộ giáodục và đào tạo quy định Đó là nền tảng cơ bản để các em phát triển tư duy,nâng cao năng lực giải quyết vấn đề

+ Về kĩ năng: Học sinh biết vận dụng kiến thức đã học trong các giờ học

để giải quyết nhanh gọn các dạng bài tập từ đơn giản đến phức tạp, từ tái hiệnkiến thức đến vận dụng kiến thức Điều đó đòi hỏi học sinh phải có phươngpháp giải quyết vấn đề cho các dạng bài tập tốt Việc học của học sinh cần đượcchú ý ở hai mức độ: mức độ vận dụng và mức độ sáng tạo Trong đó mức độsáng tạo đòi hỏi học sinh phải có tố chất, có kĩ năng tổng hợp, phân tích để từ đó

có cách giải quyết phù hợp

2.2 Thực trạng của vấn đề trước khi áp dụng sáng kiến kinh nghiệm.

- Qua giảng dạy môn Tin học ở trường THPT, bản thân tôi nhận thấy rằngnhiều học sinh lớp 11 thấy môn lập trình Pascal khó, khô khan và cực kỳ phứctạp Mới đầu các em cũng rất sợ vì khi thấy giải một bài toán ở ngoài thì đơngiản và chỉ trong vòng vài giây có thể nhẩm ra kết quả còn ở trong lập trìnhcũng bài toán đó mà phải làm đến hàng chục phút, đưa ra thuật toán mà có thểcho kết quả sai

- Tâm lý một số em đều cho rằng môn Tin học không phải là môn học chính,

vì vậy đại đa số các em không tích cực trong học tập và chủ yếu thụ động tiếpthu kiến thức theo hướng dẫn của giáo viên với tâm lý học để lấy điểm cho hếtgiờ, hết bài mà chưa nhận ra lợi ích thiết thực, lâu dài của bộ môn

- Xét ở một góc độ nào đó lập trình cũng là một phần học khó đối với họcsinh THPT Khó ở đây không phải do tính phức tạp của phần học hay phạm vikiến thức quá rộng lớn Nếu đem so sánh lập trình và các môn Toán học, Vật

Lý, Hóa học thì lập trình Pascal gọn nhỏ hơn nhưng lại khó tiếp cận hơn

- Lập trình Pascal "khó" đối với học sinh THPT vì môi trường lập trìnhPascal có giao diện và các từ khóa đều bằng tiếng Anh, các dòng thông báo hay

Trang 6

trợ giúp cũng vậy Nhìn chung học sinh THPT vốn tiếng Anh không nhiều,nhiều em còn yếu về tiếng Anh

- Một vấn đề nữa cũng là rào cản đối với việc các học sinh THPT tiếp cậnvới lập trình Pascal đó là: tư duy Toán học của các em còn hạn chế phụ thuộcvào Sách Giáo Khoa do đó kỹ năng phân tích, tổng hợp, xây dựng thuật toán chomỗi bài toán hay vấn đề cần lập trình chưa tốt Các em vẫn thụ động trong việctiếp cận bài toán, sắp xếp tư duy, xây dựng thuật giải

- Từ thực tế trên, trong quá trình dạy học tôi luôn băn khoăn, trăn trở làm thếnào nâng cao chất lượng kỹ năng lập trình cho học sinh lớp 11 THPT Việc tiếpcận với môn học rất khó khăn, phải làm rất nhiều lần và thực hành rất nhiều tiếtcác em mới hiểu việc nhập và xuất dữ liệu Do đó sẽ rất khó khăn để các emhình thành kỹ năng viết chương trình Nhất là những năm gần đây Ngành giáodục luôn thành lập đội tuyển tham dự thi học sinh giỏi môn Tin học,… Điều đó

đã thúc đẩy tôi trong quá trình giảng dạy phải nghiên cứu tìm tòi biện pháp, kinhnghiệm để giúp cho các em có sự đam mê học tập về lập trình, giúp các em biếtđược quy trình lập trình như thế nào và định hướng cho học sinh cách để trởthành một nhà lập trình thì cần phải nâng cao kỹ năng lập trình trên NNLTPascal theo hướng chuyên nghiệp Giúp các em hiểu, yêu thích lập trình và họclập trình trong sự hứng thú, phấn khởi

- Một số học sinh có suy nghĩ sai lầm Tin học chỉ là môn học giải trí để lênmạng, xem phim, chơi game, nghe nhạc… mà quên mất rằng tin học có nhiềuứng dụng quan trọng khác trong đời sống Do vậy khó khăn khi đưa Tin học vàotrường THPT xuất phát từ việc phát triển toàn diện cho học sinh thêm vào đóqua môn học này hình thành phẩm chất lao động chăm chỉ, kiên trì, chịu khó, …

- Những khó khăn ấy đặt ra rất nhiều thách thức cho những người trực tiếpgiảng dạy môn học này như tôi Từ đó tôi nhận thấy cần có những giải pháp cụthể hơn để nâng cao chất lượng giảng dạy môn Tin học trong trường THPT đểmôn học này thực sự có ý nghĩa hơn trong giảng dạy và học tập

2.3 Giải pháp được sử dụng.

2.3.1. Rèn luyện tư duy thuật toán cho học sinh THPT.

- Tại sao phải rèn luyện tư duy thuật toán cho học sinh THPT

- Trong quyển sách nổi tiếng của mình về NNLT Pascal ( viết năm 1970), tác giả N.With đã viết một dòng ngay từ trang đầu:

CHƯƠNG TRÌNH= THUẬT TOÁN +CẤU TRÚC DỮ LIỆU

- Như vậy thuật toán là phần quan trọng bậc nhất để tạo nên một chươngtrình Nhưng ở các cấp học dưới học sinh vẫn chưa được làm quen với kháiniệm thuật toán Do vậy khi học lập trình cái khó khăn ban đầu của học sinh

Trang 7

chính là tìm thuật toán để giải bài toán đã cho Một học sinh muốn tiến sâu, tiến

xa trong tương lai phải có tư duy thuật toán tốt

- Bởi vậy làm quen và rèn luyện tư duy thuật toán cho học sinh mới bắt đầuhọc lập trình là một yêu cầu thiết yếu Để thực hiện được điều này, ngay từ khicòn học lớp 10 đặc biệt trong chương trình lớp 11, GV nên chú ý rèn luyện chocác em các vấn đề sau:

- Từ ý tưởng đến hình thành tư duy thuật toán

- Thuật toán từ đơn giản đến phức tạp,

- Từ các bài toán quen thuộc đến phát triển bài toán khó hơn

- Từ thuật toán phải kết hợp với cấu trúc dữ liệu hợp lý nhất

- Và cuối cùng là thiết kế thuật toán hoàn chỉnh và tối ưu nhất, dễ lập trìnhnhất

- Khi các em đã thành thạo rồi GV có thể nâng cao yêu cầu hơn như tìmnhững thuật toán khác nhau rồi so sánh lựa chọn thuật toán phù hợp

Lợi ích của việc trình bày cẩn thận:

 Thể hiện tốt cấu trúc lôgic của mã lệnh

 Cải thiện khả năng đọc

 Bảo đảm sự chính xác trong các thay đổi

 Các lợi ích hệ quả của các lợi ích trên

- Chương trình ít mắc lỗi và dễ sửa chữa khi mắc lỗi

- Tiết kiệm thời gian sửa lỗi

- Tăng khả năng làm việc theo nhóm,

Quy ước về cách đặt tên cho các định danh.

Thông thường tùy theo ngôn ngữ và môi trường lập trình, người viếtchương trình chọn cho mình một phong cách nhất quán trong việc đặt tên chocác định danh Tuy nhiên, nên đặt sao cho thuận tiện, dễ đọc, dễ nhớ và dễ làmviệc, có một số quy tắc cần quan tâm khi đặt tên như sau:

Đặt tên cho biến

Tên biến nên thể hiện được ý nghĩa: thông thường các biến nguyên như i,

j, k dùng làm biến lặp; x, y dùng làm biến lưu tọa độ… Còn những biến lưu trữkhác thì nên đặt tên gợi nhớ: Biến đếm số lần dùng “Count” hay “Sluong”; biến

Trang 8

trọng lượng “weight” hay “Tluong”… Nếu đặt quá ngắn ngọn như “c” cho biếnđếm hay “w” cho biến trọng lượng thì sau này khi nhìn vào chương trình sẽ rấtkhó hiểu và dễ nhầm lẫn, nhưng cũng không nên quá dài dòng như

“Demsoluong” hay “Tinhtrongluong” bởi khi dùng sẽ rườm rà, tốn thời gianviết

Đặt tên hằng: Tất cả các ký tự đều viết hoa.

Đặt tên cho chương trình con: Tên chương trình con thường bắt đầu

bằng chữ hoa Vì chương trình con thường thực hiện một chức năng nào

đó nên tên hay bắt đầu bằng động từ

Ví dụ: TimMax( ); GetNum( );

2.3.3. Phong cách viết mã nguồn.

Quy tắc trình bày tổng thể chương trình:

- Chương trình nên tách thành nhiều modul, mỗi modul thực hiện một côngviệc, càng độc lập với nhau càng tốt (chương trình con) Điều này sẽ giúp chochương trình dễ cải tiến và khi đọc chương trình ta sẽ dễ hình dung được vấn đềđang được thực hiện

- GV phân tích cho hs thấy rõ lợi ích của chương trình con và cách truyền tham

số cho chương trình con Các chương trình đã viết trước đó có thể chuyển thànhchương trình con, các dữ liệu được nhập từ bàn phím có thể sẽ được thay bằngcách truyền tham số

- Các modul được viết đúng, chương trình con đúng thì khi ghép sử dụng vàochương trình chính sẽ đúng, điều này rất dễ dàng giúp ta kiểm soát được lỗi củachương trình nhất là các chương trình lớn, phức tạp

- Nên sử dụng các tham số khi truyền thông tin cho các chương trình con.Tránh sử dụng các biến toàn cục để truyền thông tin giữa các chương trình con

vì như vậy sẽ làm mất đi tính độc lập giữa các chương trình con và rất khó khănkhi kiểm soát giá trị của chúng khi chương trình con thi hành

- Cách trình bày chương trình càng nhất quán càng dễ đọc, dễ hiểu

- Chương trình nên giữ được tính đơn giản, rõ ràng

- Chương trình nên thực hiện như một dòng chảy từ trên xuống:

+ Sau đó đến khai báo đơn vị, khai báo hằng, khai báo kiểu, khai báo biếntoàn cục, khai báo chương trình con

For i := 1 to n do Begin Action1; For i := 1 to n do

Trang 9

End;

Begin Action1;

Action2;

End;

Nên viết Begin end; rồi viết lệnh vào giữa để tránh thiếu end;

Trang 10

Sử dụng khoảng trắng chương trinh sẽ dễ nhìn hơn: Ví dụ:

For i := 1 to 100 do A[i] := Random(100);

While i<=100 do…

Const MAXN = 100;

MAXNUM = 100;

……

For i :=1 to MAXN do A[i] := Random(MAXNUM); While i <= MAXN do …

- Ở đoạn chương trình bên trái rất khó phân biệt các số 100 kia có quan hệ gìvới nhau Tuy nhiên, trong đoạn chương trình bên phải ta dễ dàng thấy được ýnghĩa của từng giá trị khi thay bằng định danh Ngoài ra khi cần thay đổi giá trịcủa MAXN, MAXNUM thì chỉ cần thay một lần trong phần định nghĩa

- Các biến không nên sử dụng lại với nhiều ý nghĩa khác nhau trong cùng mộthàm để tránh sự nhầm lẫn

- Viết chú thích cho chương trình: Biến, hàm khi định nghĩa nên viết chú thích

ý nghĩa và chức năng rõ ràng Đôi khi các đoạn lệnh thực thi cũng cần giải thíchnếu chúng quá phức tạp Nên viết chú thích ngắn gọn nhưng đầy đủ và dễ hiểu

hiện

Procedure Try( i : Integer); // Tìm từ i

Tuy nhiên không phải bất cứ lệnh nào cũng chú thích, việc chú thích tràn lanngay cả với câu lệnh đơn giản không có ý nghĩa gì mà còn làm chương trình khónhìn hơn

- Nên viết biểu thức điều kiện mang tính tự nhiên: Biểu thức nên viết dướidạng khẳng định, việc viết dưới dạng phủ định sẽ làm khó hiểu

Ví dụ:

If not(a mod 5<>0) then … If a mod 5 = 0 then …

Qui tắc khai báo tên tệp dữ liệu dùng trong chương trình.

Dùng tệp nên khai báo tên têp trước trong phần khai báo hằng:

Ví du:

Const Fi=’BAI1.INP’;

Fo=’BAI1.OUT’ ;

Trang 11

2.3.4 Tối ưu sự thực thi mã nguồn

- Mục đích của việc tối ưu mã nguồn là nâng cao tốc độ xử lý và hạn chế khônggian bộ nhớ mà chương trình chiếm dụng Thông thường có thể mâu thuẫn giữatốc độ và không gian lưu trữ, do đó tùy theo điều kiện cụ thể mà người lập trình

có sự lựa chọn thích hợp Một số thủ thuật sau có thể giúp người lập trình hìnhthành nên phong cách lập trình tốt

- Lưu tạm giá trị thường sử dụng: Nếu một biểu thức tính toán được dùngnhiều lần thì nên tính kết quả một lần rồi lưu vào một biến và dùng lại

x1 := (-b + delta) / (2 * a); x2 := (-b – delta) / (2 * a); end;

- Thay thế một biểu thức bằng một biểu thức tương đương, lợi về thực thi:

Ví dụ: Thay thế các phép nhân chia bằng phép dịch chuyển bit vì các phép xử lý

bit tốc độ nhanh hơn các phép xử lý khác

For i := 1 to n dos:=s*2;

s shl n;

- Dùng số nguyên thay cho số thực: Do việc xử lý số thực chậm hơn xử lý sốnguyên nên ta có thể dùng số nguyên thay cho số thực có phần lẻ nhỏ

Vì dụ: Điểm trung bình của học sinh là số thực ta có thể thay bằng số nguyên:

DTB là 7.85 thì lưu số nguyên là 785, khi xuất ra thì chia cho 100

- Thoát khỏi vòng lặp khi sớm nhất: Một số trường hợp không cần thiết phảilặp hết toàn bộ mà đã đạt được mục đích thì có thể thoát khỏi vòng lặp

Ngày đăng: 16/07/2019, 09:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w