Trang chủ Chuyên môn Kinh nghiệm làm bài thi Học sinh giỏi Tin học

Kinh nghiệm làm bài thi Học sinh giỏi Tin học

bởi Tổ Tin Học
4,090 views

Tin học là môn đặc thù, trong quá trình học, rèn luyện và khi đi thi đều gắn với máy tính vậy nên để đạt được kết quả như mong muốn các “chiến binh” nên nắm được những kinh nghiệm đặc thù riêng của môn này. Tôi xin giới thiệu một số kinh nghiệm trong quá trình làm bài thi mà các “chiến binh tài ba” đi trước đã truyền lại cho chúng ta. Các sĩ tử cần nắm những điều này để đạt kết quả cao trong thi cử nhé:

 

1. Kiến thức: cuộc thi nào cũng đòi hỏi kiến thức trong một miền giới hạn nhất định, và hãy đảm bảo rằng bạn đã chuẩn bị tốt những kiến thức đó. Các cuộc thi lớn thường có lượng kiến thức giới hạn không hề nhỏ. Do đó trước khi thi bạn phải tạo cho mình một cái nhìn tổng quát về lượng kiến thức đã có.  

 

Cần chú ý rằng việc bổ sung ,tìm hiểu kiến thức trong quá trình học tập khác với trong quá trình chuẩn bị cho kì thi. Việc vùi đầu bổ sung kiến thức mới ngay trước kì thi là hoàn toàn không nên. Vì như thế chúng ta sẽ bị ảnh hưởng bởi lượng kiến thức đó và làm lu mờ đi một lượng lớn kiến thức đã thu thập được bấy lâu.  

 

2. Tâm lí: nhiều người thường nói nào là trước ngày thi không nên xem nhiều phim, không  được chơi game, nghe nhạc … Nhưng những hạn chế này chỉ làm cho bạn cảm thấy thêm  sức ép mà thôi. Trước ngày thi khỏang 2 ngày, bạn cứ làm những gì bạn thích và đôi lúc  cần phải quên đi việc đối mặt với kì thi trước mắt. Cố gắng tạo một tâm lí thoải mái nhất.  

 

Bạn cũng đừng quá lo về lượng kiến thức hao hụt khi bạn giải trí. đối với môn Tin học, chúng ta không học theo kiểu “học thuộc lòng”, vì thế kiến thức không thể mất đi trong ngày một ngày hai được.  

 

3. Cách làm bài  đối với môn Tin: Khi cầm một tờ đề, những phút đầu tiên, bất cứ ai cũng sẽ thấy hồi hộp. Hãy đọc bài đầu tiên (vì đây thường là bài dễ, cho học sinh kiếm điểm). Nếu vẫn chưa lấy lại được bình tĩnh cần thiết thì có thể code cấu trúc form cho chương trình, rồi tạo trước file input.  Thực hiện làm từng bài theo chiến thuật: “bài dễ làm trước, khó làm sau”; nguyên tắc “làm bài nào chắc chắn bài đó”.  

Việc phân bố thời gian để giải quyết 3 bài trong khoảng thời gian quy định cũng cực kì quan trọng.  Bài 1 thường là bài cho điểm nên cố gắng hoàn thành trong thời gian càng ngắn càng tốt.  Hai bài còn lại mỗi bài thường dành 10 – 15 phút suy nghĩ để tìm ra thuật tóan tốt. Nếu không được tìm thì chuyển sang hướng cài đặt Duyệt ăn 60% số điểm (đối với môn tin học thì mỗi bài có giới hạn 60% số test với dữ liệu nhỏ và các bạn có thể ăn được số test này với thuật toán Duyệt nếu cài đặt khéo). Sau đó nếu còn dư thời gian có thể quay lại cải tiến tiếp, phải luôn luôn cải tiến chương trình cho đến khi nào hết thời gian, cố gắng ăn càng nhiều test, đúng càng nhiều trường hợp càng tốt. Chưa cần biết các test hay trường hợp đó có mang lại nhiều điểm hay không đặc biệt chú ý đến việc đặt tên file chương trình và file INPUT, OUTPUT. Nên làm những việc này trước khi tiến hành lập trình. Chú ý các giới hạn của đề bài để khai báo mảng hay biến số.  Và khi thời gian thi còn lại 10 phút, nên kiểm tra lại mọi thứ để đảm bảo không có sai sót đáng tiếc nào về những file sắp ghi lên đĩa.  Các bạn nên luyện tập cách làm trên với các đề thi thử để tránh lúng túng trong các kì thi quan trọng. Làm bài thật nhanh Suy nghĩ thì phải cẩn thận, nhưng khi đặt tay xuống làm bài thì phải làm bài thật nhanh, không chần chừ do dự. Nên nhớ đây là một yếu tố rất quan trọng, nếu không nhiều khả năng sẽ bị thiếu thời gian! Luyện tập làm bài nhanh mỗi khi có thể để đến khi đi thi sẽ quen. 

 Đọc kỹ và suy nghĩ tất cả các bài trước khi làm. Nên dành một khoảng thời gian để suy nghĩ tất cả các bài toán, sau đó mới quyết định sẽ làm bài nào trước. Có rất nhiều trường hợp, một bài toán tưởng chừng đơn giản nhưng đến khi làm gần xong mới phát hiện là bài khó. Vì vậy cần tỉnh táo tránh lãng phí thời gian.  

 

Làm bài dễ trước Hoàn thành bài dễ trước để đảm bảo một số điểm cho mình và tạo cảm giác yên tâm khi làm những bài còn lại. 

 

4. Kiểm tra mỗi bài sau khi làm xong: Sau khi làm xong mỗi bài, cần phải kiểm tra lại chương trình trước khi chuyển sang bài khác. Để kiểm tra chương trình, cách tốt nhất là test thật nhiều. Có thêm một test đúng, xác suất đúng đắn của chương trình sẽ tăng lên đáng kể.  Dùng các test kích thước nhỏ, tự sinh ra để kiểm tra tính đúng đắn của thuật toán; các test lớn, nhận giá trị lớn nhất và giá trị ngẫu nhiên để kiểm tra thời gian thực hiện của thuật toán, phát hiện các lỗi như range check, stack overflow, arithmetic overflow.  Có những bài toán mà có thể kiểm tra kết quả một cách đơn giản (ví dụ bài Dò mìn). Khi đó đừng ngại viết chương trình tạo test hoặc chương trình kiểm tra kết quả nếu cần thiết. Với những bài toán mà có thuật toán đúng đắn rất đơn giản (tuy nhiên thời gian thực hiện lớn hơn), hãy viết một chương trình như vậy dùng để kiểm tra kết quả. Chẳng hạn, bài toán cặp điểm gần nhất: cho N điểm trên mặt phẳng, tìm hai điểm có khoảng cách gần nhất. Dùng chương trình O(N2) để so sánh với chương trình O(NlogN), nếu hai chương trình cho kết quả như nhau ở các bộ test thì xác suất đúng đắn của chương trình O(NlogN) là rất cao. Tương tự, nếu có hai phương pháp khác nhau nhiều để giải bài toán mà cùng cho kết quả như nhau thì xác suất đúng của chương trình là tương đối cao. 

5. Đọc kỹ đề bài: đọc lại một đề bài nhiều lần, đọc cả trước khi làm, sau khi làm xong, phát hiện xem mình có nhầm lẫn, thiếu sót chi tiết gì không! 

 

Sửa lỗi chương trình Khi chương trình chạy cho ra kết quả sai, cần sửa lỗi (debug) chương trình. Cần tận dụng hiệu quả các công cụ debug của Free Pascal như watches, break point, sử dụng tốt các phím tắt F4, F7, F8. Thông thường chương trình sẽ bị một vài lỗi nhỏ như viết sai tên biến trong một biểu thức, thiếu một đoạn xử lý,…  Có thể xảy ra trường hợp phát hiện cả thuật toán sai, nhất là đối với những bài có thuật toán đúng đắn thì điều này là hoàn toàn có thể. Khi đó đừng hốt hoảng! Cần bình tĩnh tính toán xem xác suất đúng đắn của chương trình có cao không, có nên làm tiếp bài toán đó hay không? đừng bao giờ để bị vướng vào một bài toán quá lâu, nếu thấy lo lắng vì đã dành nhiều thời gian cho một bài mà vẫn cho kết quả sai, hãy tạm thời chuyển sang bài khác. Trong trường hợp cần thay đổi toàn bộ chương trình, nhớ backup chương trình cũ vào một bản khác, phòng khi cần sử dụng lại. 

6. Phong cách viết chương trình: Phong cách viết chương trình là điều rất quan trọng khi đi thi. Với phong cách viết chương trình tốt sẽ có lợi thế hơn. Nhưng điều này lại chỉ có thể có khi luyện tập nhiều. Phong cách viết chương trình tốt không có nghĩa là những cách viết để cho chương trình chạy nhanh, mà là đảm bảo để làm bài nhanh, sửa lỗi nhanh, giảm xác suất sai của chương trình và giảm xác suất nhầm lẫn cho người viết. 

Nếu chương trình sử dụng ít biến, có thể đặt tên các biến, mảng ngắn gọn đơn giản để tăng tốc độ làm bài, ví dụ a, b, x, y,… mảng quy động là f. Tuy nhiên nếu chương trình sử dụng nhiều biến, các biến mang ý nghĩa khác nhau thì hãy đặt tên các biến dài và mang ý nghĩa của chúng để tránh nhầm lẫn. Nên nhớ việc nhầm lẫn giữa các biến là vấn đề rất khó chịu.

 

Đừng đòi hỏi perfect Trong trường hợp không thể nghĩ ra thuật toán đúng đắn cho một bài toán (hoặc bản thân bài toán cũng không có thuật toán đúng đắn, điều này rất có thể xảy ra trong kỳ thi quốc gia), cố gắng tìm cách đạt được một số điểm nhất định. Đôi khi không đáng để viết thêm một đoạn chương trình rất dài chỉ để đạt thêm số điểm nhỏ, nhưng đôi khi chỉ cần thêm một hai dòng cận hay điều kiện thì thậm chí có thể đạt thêm một số điểm rất lớn. điều quan trọng là cần bình tĩnh để đánh giá những gì nên làm và không nên làm. Đạt được 50% số điểm Các bài toán thường đưa ra 50% (hoặc 30-40%) số test có giới hạn nhỏ, có thể dùng những thuật toán đơn giản hoặc duyệt. Tốt nhất nên thêm một điều kiện để kiểm tra nếu dữ liệu thuộc giới hạn này thì dùng chương trình đơn giản hoặc duyệt để chạy.  

7. Sao lưu bài làm: Thỉnh thoảng hãy sao lưu bài làm vào nhiều thư mục, nhiều ổ đĩa khác nhau phòng khi có sự cố kỹ thuật. Hãy tạo 3 thư mục cho 3 bài làm. Lưu các bài sẽ nộp vào một nơi riêng, tránh nộp nhầm bài. 

8. Đánh giá, quyết định thông minh: Có nhiều thứ cần đánh giá: mức độ khó của mỗi bài, xác suất đúng đắn của thuật toán nghĩ ra, thời gian cần thiết để làm một bài, kiểm tra kết quả và tạo test có khó không? Từ đó quyết định làm bài nào trước, có nên tiếp tục cải tiến một bài không, cải tiến như thế nào sẽ hiệu quả hơn, kiểm tra chương trình như thế nào để chắc chắn nhất.

 

                                      Trích trong “Một số vấn đề đáng chú ý trong môn Tin học