SKKN Lập trình Pascal giải một số bài toán Toán học THPT làm tài liệu ôn thi học sinh giỏi môn Tin học ở trường THPT 19-5
Bạn đang xem 20 trang mẫu của tài liệu "SKKN Lập trình Pascal giải một số bài toán Toán học THPT làm tài liệu ôn thi học sinh giỏi môn Tin học ở trường THPT 19-5", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- skkn_lap_trinh_pascal_giai_mot_so_bai_toan_toan_hoc_thpt_lam.doc
Nội dung text: SKKN Lập trình Pascal giải một số bài toán Toán học THPT làm tài liệu ôn thi học sinh giỏi môn Tin học ở trường THPT 19-5
- ĐẶT VẤN ĐỀ Theo thời gian, sự phát triển khoa học kỹ thuật ngày càng đạt được những thành tựu to lớn; những kiến thức khoa học ngày càng sâu và rộng hơn. Khoa học kỹ thuật đã có những tác động quan trọng góp phần làm thay đổi bộ mặt của xã hội loài người, nhất là những ngành khoa học kỹ thuật cao. Cũng như các môn khoa học khác, Tin học là bộ môn được hình thành và phát triển thành một ngành khoa học với các nội dung, mục tiêu, phương pháp nghiên cứu riêng và ngày càng có nhiều ứng dụng trong hầu hết các lĩnh vực hoạt động của xã hội loài người. Do có tính thực tiễn, nên bộ môn Tin học ở các trường phổ thông là môn học mang tính hấp dẫn. Tuy vậy, Tin là một môn học khó vì cơ sở của nó là Toán học, bài tập Tin học rất đa dạng và phong phú. Bộ môn Tin học so với những bộ môn khác là bộ môn còn khá mới mẻ chỉ mới đưa vào giảng dạy được vài năm tại nhà trường và việc thi chọn học sinh giỏi bộ môn này cũng mới được nhà trường tham gia trong ít năm trở lại đây, việc học sinh của trường đi thi và giành giải cũng là tương đối khó, do vậy giáo viên phụ trách đội tuyển vẫn đang rất lúng túng trong việc triển khai giảng dạy ôn luyện đội học sinh giỏi môn Tin này. Với mục đích giảm bớt đi những khó khăn đó và nâng cao thành tích cho đội tuyển tham gia các đợt thi học sinh giỏi hàng năm mà Sở Giáo dục và Đào tạo Hòa Bình tổ chức, tôi đề xuất thực hiện giải pháp khoa học: “Lập trình Pascal giải một số bài toán Toán học THPT làm tài liệu ôn thi học sinh giỏi môn Tin học ở trường THPT 19-5”. Bên cạnh việc trang bị các kiến thức lý thuyết cơ bản về lập trình, cách sử dụng phần mềm thì các công việc ban đầu cho ôn luyện đội tuyển học sinh giỏi là phải làm cho các em này hình dung ra việc giải một bài toán bằng lập trình với giải một bài toán phổ thông thông thường có mối quan hệ chặt chẽ với nhau, từ cách giải trên giấy nay các em phải giải trên máy tính thì phải sử dụng các câu lệnh, các cấu trúc sao cho phù hợp để diễn tả chính 1
- xác được ý định, cách giải của mình. Sáng kiến này với mục tiêu cơ bản là: bồi dưỡng ban đầu (khi các em mới chập chững học lập trình – đặc thù học sinh đội tuyển Tin ban đầu ở Trường THPT 19-5 là các em đã có kiến thức toán cấp 2 tốt, đang học ở lớp 10, nhưng ở cấp THCS chỉ một số ít em được thực hành lập trình) để giúp cho các em học sinh hình dung ra cách giải một bài toán phổ thông thông thường trên máy tính thì phải làm như thế nào? Trong sáng kiến cũng đồng thời cung cấp luôn cả mã lời giải chi tiết cho các em để các em tiện tra cứu, một số bài tôi cũng đã xây dựng test để các em tự chấm bằng phần mềm Themis, còn ý tưởng giải thì các bài toán này các em đều đã biết cách giải từ các kiến thức toán học đã học. Trong sáng kiến có sử dụng một số bài trong đề thi học sinh giỏi cấp tỉnh bảng B môn Tin - Tỉnh Hòa Bình từ những năm 2003 đến nay (2017). 2
- NỘI DUNG 1. Cơ sở khoa học 1.1. Cơ sở lí luận Xuất phát từ các văn bản chỉ đạo của Đảng và nhà nước nhất là chỉ thị 58-CT/UW của Bộ Chính Trị ngày 07 tháng 10 năm 2000 về việc đẩy mạnh ứng dụng CNTT phục vụ sự nghiệp Công nghiệp hóa và Hiện đại hóa đã chỉ rõ trọng tâm của ngành giáo dục là đào tạo nguồn nhân lực về CNTT và đẩy mạnh ứng dụng CNTT trong công tác giáo dục và đào tạo, đây là nhiệm vụ mà Thủ tướng Chính phủ đã giao cho ngành giáo dục giai đoạn 2001 – 2005 thông qua quyết định số 81/2001/QĐ-TTg; Bộ giáo dục và Đào tạo cũng đã có những chủ trương rất cụ thể trong toàn ngành về việc ứng dụng CNTT trong công tác dạy và học, việc Bồi dưỡng khả năng ứng dụng CNTT trong dạy học là một việc làm thiết thực triển khai những định hướng của bộ Giáo dục và Đào tạo về CNTT. Bắt đầu từ năm học 2008 - 2009, Bộ GD-ĐT có chủ trương "Đẩy mạnh ứng dụng công nghệ thông tin vào trường học" nhằm từng bước nâng cao chất lượng giáo dục. Đấy cũng là hướng phấn đấu nhằm vượt qua ranh giới lạc hậu về giáo dục của nước ta so với khu vực và thế giới. Hướng phấn đấu đó đòi hỏi phải trải qua quá trình và gặp không ít khó khăn, không chỉ ngành GD - ĐT tự chịu trách nhiệm, mà cần phải có sự chung sức của các cấp các ngành và toàn xã hội vì sự nghiệp giáo dục nước nhà. 1.2. Cơ sở thực tiễn Trong những năm trở lại đây, bắt đầu từ năm học 2011-2012, đội tuyển HSG môn Tin học Trường THPT 19-5 mới thành lập được và tham dự kì thi học sinh giỏi cấp Tỉnh do Sở GD&ĐT Hòa Bình tổ chức. Như vậy, kinh nghiệm ôn luyện học sinh giỏi Tin học của giáo viên chưa nhiều, chưa xây dựng được hệ thống các bài tập để bồi dưỡng cho đội tuyển của mình đặc do đó nhiều khi gây khó khăn cho họ. Ngoài ra hiện nay có rất nhiều tài liệu tham khảo khác nhau tuy nhiên nhiều tài liệu lại viết với kiến 3
- thức quá cao, hoặc không phù hợp so với thực tế học sinh giỏi Tin học nhà trường. Do đó phải thu thập, tập hợp lại các bài tập đó theo một hệ thống từ dễ đến khó, sao cho phù hợp với học sinh đội tuyển, cũng có thể lấy đây làm tài liệu tham khảo, ôn luyện ban đầu cho cả giáo viên và học sinh, phục vụ lâu dài cho việc ôn luyện đội tuyển học sinh giỏi môn Tin học các năm, góp phần nâng cao thành tích cho bộ môn Tin học, tiếp tục phát huy tốt những kết quả đã đạt được trong những năm tham dự kì thi vừa qua. 2. Nội dung cụ thể của sáng kiến, giải pháp khoa học 2.1 Lý thuyết cơ bản 2.1.1. Cấu trúc cơ bản của chương trình Pascal Một chương trình Pascal đầy đủ sẽ có dạng sau: Program Ten_chuong_trinh; (*Dòng tiêu đề*) (*Phần khai báo*) Uses ; (*Khai báo các Unit*) Label .; (*Khai báo các nhãn*) Type .; (*Khai báo các kiểu dữ liệu mới*) Const .; (*Khai báo các hằng *) Var .; (*Khai báo biến, mảng, bản ghi, .*) (*Chương trình con*) Procedure .(*Khai báo các thủ tục*) Function .(*Khai báo các hàm*) (*Thân chương trình chính*) BEGIN 4
- (*Các câu lệnh của chương trình chính*) END. (*Kết thúc chương trình*) Chú ý: - Lời giải thích được đặt giữa hai dấu { } hoặc (* *) giúp chương trình dễ hiểu hơn mà không ảnh hưởng đến quá trình làm việc của chương trình (khi dịch, chương trình dịch bỏ qua những chú thích). - Trong các phần khai báo ở trên thì phần thân chương trình chính là bắt buộc, các phần khác được khai báo khi cần thiết. 2.1.2. Các câu lệnh cơ bản 2.1.2.1. Các lệnh đơn giản - Clrscr; {Xóa sạch màn hình, đưa con trỏ về ô (1,1)} - Gotoxy; {Đưa con trỏ đến ô (x,y); x, y là các giá trị nguyên} 5
- - Lệnh gán: dùng để gán giá trị của một biểu thức cho một biến. + Cú pháp: Biến:=biểu thức; + Chức năng của lệnh: Đầu tiên máy sẽ tính giá trị của biểu thức ở vế phải, sau đó sẽ gán giá trị tính được này cho biến ở vế trái. - Lệnh xuất dữ liệu ra màn hình (Write, writeln): + Cú pháp có ba dạng sau: (1) Write( ); (2) Writeln( ); (3) Writeln; {Chỉ có tác dụng đưa con trỏ tới đầu dòng mới tiếp theo} Trong đó: có dạng: , , + Chức năng của các câu lệnh trên: cho phép chương trình in ra màn hình các dữ liệu, kết quả, hay các thông báo cần thiết. • Dạng 1: Lần lượt tính và viết ra màn hình giá trị của biểu thức tại vị trí hiện hành của con trỏ theo thứ tự viết trong lệnh. Sau lệnh này vị trí con trỏ ở ngay sau giá trị của biểu thức cuối cùng. • Dạng 2: chỉ khác dạng 1 ở chỗ là sau đó con trỏ sẽ ở đầu dòng mới. • Dạng 3: chỉ có tác dụng đưa con trỏ tới đầu dòng mới tiếp theo - Lệnh nhập dữ liệu: + Cú pháp (1): Read( ); (2): Readln( ); (3): Readln; 6
- Trong đó: có dạng: , + Chức năng: • Dạng 1: Với thủ tục này, ta có thể hiểu như sau: đầu đọc sẽ đọc lần lượt các giá trị trong file gán tuần tự cho các biến có trong danh sách biến của thủ tục, sau đó đầu đọc không thực hiện việc xuống đầu dòng tiếp theo. • Dạng 2: Giống như thủ tục Read, nhưng điểm khác biệt là sau khi thực hiện đọc và gán giá trị cho biến xong thì đầu đọc sẽ xuống đầu dòng tiếp theo. • Dạng 3: Dùng để tạm dừng chương trình, muốn chạy tiếp thì ấn Enter (lệnh này thường được sử dụng khi ta muốn xem kết quả thực hiện của chương trình xuất hiện trên màn hình). 2.1.2.2. Các câu lệnh có cấu trúc a) Câu lệnh ghép Là một nhóm các câu lệnh (hay một khối lệnh) được đặt giữa hai từ khóa là Begin và End Dạng câu lệnh tổng quát: Begin ; ; 7
- ; End; {Cuối câu lệnh trước từ khóa End có thể không cần có dấu chấm phẩy (;). Sau End là (;) chứ không phải (.)} b) Câu lệnh lựa chọn (hay câu lệnh rẽ nhánh) - Câu lệnh IF + Cú pháp câu lệnh IF THEN [ELSE ;] {Lệnh trước từ khóa ELSE không có dấu chấm phảy (;); Phần giữa hai dấu [ ] có thể không có} + Chức năng của lệnh: Khi thực hiện lệnh này máy sẽ kiểm tra . Nếu nó nhận giá trị true thì thực hiện . Trong trường hợp nhận giá trị false, máy sẽ thực hiện lệnh sau từ khóa ELSE (lệnh 2) nếu có ELSE, ngược lại không có ELSE thì máy sẽ bỏ qua và thực hiện câu lệnh tiếp theo của chương trình. - Câu lệnh CASE: + Cấu trúc lệnh: CASE OF Tập hằng 1: ; Tập hằng 2: ; Tập hằng n: ; 8
- [ELSE ; ] END; {of CASE} {Giá trị của và giá trị trong tập hằng phải có cùng kiểu và phải là kiểu vô hướng đếm được như: kiểu nguyên, kiểu logic, kiểu kí tự, kiểu liệt kê} + Chức năng của lệnh: Khi thực hiện lệnh này máy sẽ so sánh giá trị của với các giá trị của tập hằng. Nếu tập hằng i là tập đầu tiên chứa giá trị của thì máy sẽ thực hiện (cũng có thể là thực hiện một khối lệnh), sau đó thoát khỏi câu lệnh CASE. Trong trường hợp không có tập hằng nào chứa giá trị của thì máy sẽ thực hiện (nếu có ELSE) rồi mới thoát khỏi câu lệnh CASE, ngược lại nếu không có ELSE thì máy sẽ thoát ra khỏi câu lệnh CASE ngay. c) Câu lệnh lặp - Câu lệnh FOR + Cú pháp câu lệnh: - Dạng tiến: For biến:=(biểu thức 1) to (biểu thức 2) do ; - Dạng lùi: For biến:=(biểu thức 1) downto (biểu thức 2) do ; + Hoạt động của vòng lặp for dạng tiến: (1) Đầu tiên biến sẽ nhận giá trị của biểu thức 1. (2) Kiểm tra điều kiện (biến<=biểu thức 2). 9