SKKN: Vận dụng Pascal giải quyết một số bài toán Toán học
lượt xem 354
download
Với học sinh việc học ngôn ngữ lập trình Turbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợi của các chương trình hoạt động trong máy tính, các máy tự động… Qua đó giúp các em có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp mà các em chọn sau này. Mời quý thầy cô tham khảo sáng kiến “Vận dụng Pascal giải quyết một số bài toán Toán học”.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: SKKN: Vận dụng Pascal giải quyết một số bài toán Toán học
- SÁNG KIẾN KINH NGHIỆM VẬN DỤNG PASCAL GIẢI QUYẾT MỘT SỐ BÀI TOÁN TOÁN HỌC
- MỤC LỤC A. PHẦN I: ĐẶT VẤN ĐỀ 1. Lý do chọn đề tài ................................................................................. 2 2. Mục đích nghiên cứu ........................................................................... 3 3. Phạm vi đề tài .......................................................................................3 4. Đối tượng, kế hoạch và phạm vi nghiên cứu ....................................... 3 B. PHẦN II: NỘI DUNG CHƯƠNG I : TỔNG QUAN .................................................................... 4 1. Cơ sở lý luận ....................................................................................... 4 2. Cơ sở thực tiễn .....,.............................................................................. 4 CHƯƠNG II : NỘI DUNG VẤN ĐỀ NGHIÊN CỨU ............................. 5 I. Giới thiệu về ngôn ngữ lập trình Pascal …......................................5 II. Cấu trúc chung của chương trình Pascal......................................... 5 III. Một số bài toán toán học: .................................................................. 6 1) Bài toán 1 ........................................................................................... 6 2) Bài toán 2 ........................................................................................... 7 3) Bài toán 3 ........................................................................................... 8 4) Bài toán 4 ........................................................................................... 8 5) Bài toán 5 ........................................................................................... 9 6) Bài toán 6 ........................................................................................... 10 7) Bài toán 7 ........................................................................................... 11 8) Bài toán 8 ........................................................................................... 13 9) Bài toán 9 ........................................................................................... 15 CHƯƠNG III: PHƯƠNG PHÁP VÀ KẾT QUẢ NGHIÊN CỨU................17 1) Phương pháp nghiên cứu .....................................................................17 2) Kết quả nghiên cứu ..............................................................................17 C. PHẦN III: PHẦN KẾT THÚC TÀI LIỆU THAM KHẢO ............................................................................. 19
- A. PHẦN I: ĐẶT VẤN ĐỀ 1) Lý do chọn đề tài : Sự phát triển mạnh mẽ như vũ bão của tin học đã làm cho xã hội có nhiều nhận thức mới về cách tổ chức các hoạt động. Nhiều quốc gia trên thế giới ý thức được rất rõ tầm quan trọng của tin học và có những đầu tư lớn cho lĩnh vực này, đặc biệt trong giáo dục nâng cao dân trí về tin học và đào tạo nguồn nhân lực có chất lượng cao. Người Việt Nam có nhiều tố chất thích hợp với ngành khoa học này, vì thế chúng ta hi vọng có thể sớm hoà nhập với khu vực và trên thế giới. Trong thời đại thông tin bùng nổ ngày nay, việc lập được các chương trình tự hoạt động cho máy tính, máy gia dụng là cần thiết. Và để làm được việc đó cần có một quá trình nghiên cứu, học tập về ngôn ngữ lập trình lâu dài, qua đó nhà lập trình có thể chọn một ngôn ngữ lập trình thích hợp. Từ năm 2006 đến nay, môn tin học đã được áp dụng cho mọi đối tượng học sinh trung học phổ thông (THPT) không phân hóa theo chuyên ban và được dạy cho cả 3 khối lớp 10, 11, 12. Song môn tin học ở bậc Trung học cơ sở là một môn học tự chọn. Do vậy mà môn tin học ở bậc THPT được xây dựng trên giả thiết là một môn học mới nên học sinh phải học lại từ đầu. Vả lại môn tin học nhằm cung cấp cho học sinh những kiến thức phổ thông về ngành khoa học tin học, hình thành và phát triển khả năng tư duy thuật toán, năng lực sử dụng các thành tựu của ngành khoa học trong học tập và trong lĩnh vực hoạt động của mình sau này. Đặc biệt là về kiến thức sẽ trang bị cho học sinh một cách tương đối có hệ thống các khái niệm cơ bản nhất ở mức phổ thông về tin học, một ngành khoa học với những đặc thù riêng, các kiến thức về hệ thống, thuật toán, cấu trúc dữ liệu, lập trình, …. Về kỹ năng thì học sinh bước đầu biết được sử dụng máy tính, biết soạn thảo văn bản, biết sử dụng Internet, khai thác được các phần mềm thông dụng, giải được các bài toán đơn giản bằng máy tính. Còn về thái độ thì rèn luyện cho học sinh phong cách suy nghĩ và làm việc khoa học như sự ham hiểu biết, tìm tòi, sáng tạo, chuẩn mực chính xác trong suy nghĩ và hành động, say mê môn học, cẩn thận trong công việc, hợp tác tốt với bạn bè. Tin học là một môn học mới ở các trường phổ thông nên học sinh còn nhiều bỡ ngỡ khi tiếp cận với môn học này. Nội dung tin học lập trình lớp 11 là một nội dung mới lạ đối với đa số học sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu. Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học sinh việc học ngôn ngữ lập trình Turbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua đó giúp các em hình dung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợi của các chương trình hoạt động trong
- máy tính, các máy tự động… Qua đó giúp các em có thêm một định hướng, một niềm đam mê về tin học, về nghề nghiệp mà các em chọn sau này. Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Vận dụng Pascal giải quyết một số bài toán toán học”. 2) Mục đích nghiên cứu: Do gặp phải những bài toán khó nên khi giải các em gặp rất nhiều khó khăn, đôi khi dẫn đến nản chí, do đó khi cho các em lập trình giải các bài toán bằng máy tính, sẽ gây được hứng thú tìm tòi và học tập. Vì vậy trong nội dung đề tài này tôi giới thiệu việc lập trình giải một vài bài toán toán học để giúp cho học sinh lớp 11. Tuy vậy, đối với đối tượng học sinh khá giỏi, đa phần các em rất hào hứng với việc học lập trình, cụ thể là ngôn ngữ lập trình Turbo Pascal. Do đó, đề tài này giúp học sinh có thêm kĩ năng lập trình Pascal thông qua một số ví dụ từ cơ bản đến nâng cao thích hơn với mọi đối tượng học sinh. 3) Phạm vi đề tài: Các chú ý khi dạy ngôn ngữ lập trình nói chung, ngôn ngữ lập trình Turbo Pascal nói riêng là rất nhiều, rất phong phú. Tuy nhiên trong phạm vi sáng kiến kinh nghiệm này tôi chỉ trình bày một số kinh nghiệm của cá nhân tôi qua một số bài tập cụ thể. 4) Đối tượng, kế hoạch và phạm vi nghiên cứu: Đối tượng nghiên cứu: học sinh các lớp 11B4, 11B5, 11B6 trường THPT Tôn Đức Thắng năm học 2012-2013. Kế hoạch nghiên cứu: ở các tiếp bài tập và thực hành. Phạm vi nghiên cứu: toàn bộ chương trình tin học lớp 11.
- B. PHẦN II: NỘI DUNG CHƯƠNG I TỔNG QUAN 1. Cơ sở lí luận: Đảng và Nhà nước ta đã nhận thấy được tầm quan trọng của ngành Tin học và đã đưa môn học này vào nhà trường phổ thông như những môn khoa học khác bắt đầu từ năm học 2006- 2007. Chỉ thị số 55/2008/CT- BGTĐT ngày 30/9/2008 của Bộ trưởng Bộ GD& ĐT về tăng cường giảng dạy, đào tạo và ứng dụng công nghệ thông tin trong ngành giáo dục giai đoạn 2008-2011. Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương pháp dạy học theo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập. Điều 24.2 của Luật giáo dục đã nêu rõ : “Phương pháp giáo dục phổ thông phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh”. Như vậy, chúng ta có thể thấy định hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề tranh luận. Cốt lõi của việc đổi mới phương pháp dạy học ở trường phổ thông là giúp học sinh hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động. Với một số nội dung trong đề tài này, học sinh có thể tự học, tự rèn luyện thông qua một số bài tập, dạng bài tập cụ thể. 2. Cơ sở thực tiễn: Qua thực tế giảng dạy ở trường THPT Tôn Đức Thắng các năm qua, tôi nhận thấy khi học đến chương trình tin học lớp 11 đa số học sinh đều nhận xét bộ môn tuy khó nhưng gây được hứng thú khi giải quyết được các bài toán toán học bằng máy tính với nhiều bộ test khác nhau. Nhiều học sinh tỏ ra rất thích thú khi lập trình để giải được một bài toán và cho chạy ra kết quả đúng. Từ đó hăng say lập trình giải quyết các bải toán khó hơn. Bằng cách này sẽ giúp phần nào cho các em trong việc học toán, một môn khá khó.
- CHƯƠNG II: NỘI DUNG VẤN ĐỀ NGHIÊN CỨU I. GIỚI THIỆU VỀ PASCAL: Pascal là ngôn ngữ lập trình bậc cao do giáo sư Niklaus Wirth (trường đại học mỹ thuật, Zurich, Thụy Sĩ) sáng tác và công bố vào đầu những năm 1970, với tên Pascal để kỷ niệm nhà toán học người Pháp Blaise Pascal, thế kỷ 17. Lúc đầu, Pascal được sáng tác ra với mục đích làm một ngôn ngữ máy tính để dạy học cho sinh viên ở các trường đại học: nó giúp cho sinh viên cũng như những người mới học lập trình có được thói quen viết một chương trình có cấu trúc sáng sủa, rõ ràng, dễ hiểu và dễ đọc cho các đối tượng khác nhau. Trước khi có Pascal, các sinh viên đều được học ngôn ngữ lập trình Fortran, một ngôn ngữ lâu đời nhất và là một ngôn ngữ không có cấu trúc. Giáo sư Wirth thấy rằng có thể tránh được rất nhiều Pascal là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh, là ngôn ngữ đặc biệt thích hợp cho kiểu lập trình có cấu trúc.Pascal dựa trên ngôn ngữ lập trình Algol. Cho đến nay Pascal vẫn được dùng để giảng dạy về lập trình trong nhiều trường trung học và đại học trên thế giới, và nhiều thế hệ sinh viên đã "vào đời" thông qua việc học Pascal như ngôn ngữ vỡ lòng trong các chương trình học đại cương. Nhiều biến thể của Pascal ngày nay vẫn còn được sử dụng khá phổ biến, cả trong giảng dạy lẫn trong công nghiệp phát triển phần mềm.Phần lớn hệ điều hành Macintosh được viết bằng Pascal. Hệ sắp chữ TeX được Donald Knuth viết bằng ngôn ngữ mang nhiều yếu tố của Pascal.Trong chương trình Tin học cấp trung học phổ thông, ở lớp 11 phần lập trình đơn giản, học sinh được học ngôn ngữ lập trình Pascal để lập trình giải các bài toán trong chương trình trung học và cũng như nội dung thi học sinh giỏi môn Tin học đều sử dụng ngôn ngữ lập trình Pascal để giải các bài toán đó. II. CẤU TRÚC CHUNG CỦA CHƯƠNG TRÌNH PASCAL: Cấu trúc chung, tổng quát nhất của một chương trình Pascal gồm ba phần: - Phần tiêu đề của chương trình. - Phần khai báo dữ liệu hằng, biến, mô tả kiểu dữ liệu, khai báo chương trình con. - Phần thân chương trình chứa các lệnh để máy tính thực hiện. Program Ten_chuong_trinh; Uses Ten_thu_vien; Const Ten_hang… Type … Var … Procedure … Function …
- BEGIN Các câu lệnh; END. III. MỘT SỐ BÀI TOÁN TOÁN HỌC: 1. BÀI TOÁN 1: Viết chương trình giải phương trình ax + b = 0 a. Ý tưởng: - Nhập a, b bất kỳ. - Xét 3 trường hợp: + Nếu a ≠ 0 thì kết luận phương trình đã cho có 1 nghiệm x = - b/a + Nếu a = 0 và b = 0 thì kết luận phương trình đã cho có vô số nghiệm. + Nếu a = 0 và b ≠ 0 thì kết luận phương trình vô nghiệm. b. Chương trình: c. Chạy chương trình:
- 2. BÀI TOÁN 2: Giải phương trình: ax2 + bx + c = 0 (a ≠ 0) a. Ý tưởng: Dùng ∆ = b2 – 4ac Xét 3 trường hợp: ∆ < 0, ∆ > 0, ∆ = 0 + Nếu ∆ 0 thì kết luận phương trình đã cho có 2 nghiệm phân biệt là x1:= (-b – sqrt(Delta))/2*a; x2:= (-b + sqrt(Delta))/2*a; b. Chương trình: c. Chạy chương trình:
- 3. BÀI TOÁN 3: Giải hệ phương trình tuyến tính 2 ẩn: ax + by = m cx + dy = n a. Ý tưởng: Ta dùng DD, DX, DY: DD = ad – bc DX = md – bn DY = an – mc x = DX / DD y = DY/DD b. Chương trình: c. Chạy chương trình: 4. BÀI TOÁN 4: Tính N! a. Ý tưởng: Dùng chương trình con và kiến thức toán học về N! b. Chương trình:
- c. Chạy chương trình: 5. BÀI TOÁN 5: Tính Ckn a. Ý tưởng: Ta có: n! C kn = k!(n - k)! Ta đặt tên cho Ckn là CNK và phải dùng phép chia số nguyên để nhận kết quả là số nguyên, phép chia DIV chứ không thể dùng phép chia / vì kết quả sẽ là số thực, không gán được cho biến CNK là biến nguyên: CNK:= GT(N) DIV (GT(k)*GT(n-k))
- b. Chương trình: c. Chạy chương trình: 6. BÀI TOÁN 6: Lập tam giác Pascal a. Ý tưởng: Sử dụng Ckn b. Chương trình:
- c. Chạy chương trình: 7. BÀI TOÁN 7: Tìm giá trị cực đại của một hàm Cho hàm số f(x) = xcos(x) Hãy tìm giá trị của x sao cho f(x) có giá trị cực đại trong khoảng x = [0, ∏] a. Ý tưởng: Chúng ta có thể hình dung ra ngay cách làm là tính hàm số đã cho với việc chia khoảng xác định thành nhiều đoạn đủ nhỏ, nghĩa là cần tính toán hàm số tại x=0.0000, x=0.0001, x=0.0002…x=3.1416. Sau đó so sánh các giá trị hàm số này để tìm ra số lớn nhất bằng cách xem xét bằng mắt. Cách này quả thực không hiệu quả chút nào vì phải có sự can thiệp của người dùng. Chúng ta hãy xem sơ đồ loại trừ là một thủ tục tính toán khá hiệu quả cho các hàm số có một đỉnh cực đại trong miền xác định. Cách tiến hành như sau:
- Chúng ta bắt đầu bằng 2 điểm ở giữa miền xác định. Hai điểm này có khoảng cách vô cùng nhỏ trong chừng mực có thể. Tọa độ hai điểm này là xt →Delta← +-------------------------------------------------|---|----------------------------------------+ a xt xp b Delta +--------------------|---|-------------------------+ a b Các tọa độ được tính như sau: xt = a + 0.5*(b – a – Delta); xp = a + 0.5*(b – a + Delta) = xt + Delta Sau đó, chúng ta tính giá trị hàm tại xt và xp là yt = f(xt) và yp = f(xp) Giả sử yt > yp. Chúng ta đoán ra là điểm maximum sẽ nằm ở khoảng bên trái, tức là khoảng [a, xt]. Do vậy chúng ta lại tiến hành khảo sát tiếp theo kiểu chia đôi trong khoảng [a, xt]. Cứ thế cho đến khi tìm được giá trị cực đại. Sau đây là thủ tục cắt giảm khoảng xác định bằng cách chia đôi loại trừ nói trên. Procedure GIAM_KHOANG_CACH (Var a, b, xt, xp, yt, yp: real); Begin xt:= a + 0.5*(b – a - Delta); xp:= xt + Delta; yt:= xt*cos(xt); yp:= xp*cos(xp); If yt > yp then b:=xp; If yp > yt then x:=xt; End; b. Chương trình:
- c. Chạy chương trình: 8. BÀI TOÁN 8: Tính tích phân xác định của hàm f(x) trong đoạn [a, b] a S = ∫ f(x)dx b a. Ý tưởng: Dùng kiến thức toán học. ∆ = (b-a)/N
- b. Chương trình: c. Chạy chương trình: 9. BÀI TOÁN 9: Bài toán tháp Hà Nội của các nhà sư.
- Tương truyền rằng ở một ngôi đền lớn tại Bénarès (Ấn Độ) có một tấm đế bằng đồng, trên đó có 3 cái cọc bằng kim loại, trong đó Thượng đế khi khai sinh ra thế giới đã xếp 64 cái đĩa bằng vàng trên một cái cọc khác với nguyên tắc sau: Mỗi lần chỉ được dịch chuyển một đĩa. Một đĩa có thể được chuyển từ một cọc này sang cọc khác bất kỳ. Không được để một đĩa trên một đĩa khác có đường kính nhỏ hơn. Và ngày tận thế sẽ đến khi 64 chiếc đĩa vàng được dịch chuyển và để làm việc này phải mất trên 58 tỉ năm! a. Ý tưởng: Đánh số 3 cọc là C1, C2, C3. Giả sử có N đĩa với đường kính giảm dần và lúc đầu được xếp vào cọc 1 như hình vẽ. Cọc 1 Cọc 2 Cọc 3 Thí dụ với N = 2 (2 đĩa), ta thấy ngay cách làm: chuyển đĩa bé nhất (đĩa 1) sang cọc 3, chuyển đĩa 2 sang cọc 2, chuyển đĩa 1 từ cọc 3 sang cọc 2. Thí dụ với N = 3 (3 đĩa) ta làm lần lượt như sau với giả thiết đã biết cách làm với N – 1 đĩa (2 đĩa trong ví dụ N = 3): chuyển đĩa 1 và 2 sang cọc 3 theo cách làm đã nói trên, chuyển đĩa 3 sang cọc 2, chuyển 2 đĩa 1 và 2 từ cọc 3 sang cọc 2. Chúng ta có thể tổng quát hóa thuật toán chuyển như sau: lập một chương trình con DICH_CHUYEN N đĩa từ cọc này tới cọc khác thông qua cọc trung gian (là cọc thứ ba còn lại). DICH_CHUYEN(N_Dia, TuCoc, ToiCoc, CocTrungGian); Với N = 2 công việc được diễn tả lại như sau: DICH_CHUYEN(1, C1, C3, C2); DICH_CHUYEN(1, C1, C2, C3); DICH_CHUYEN(1, C3, C2, C1); Với N = 3 công việc được diễn tả lại thông qua DICH_CHUYEn 2 đĩa: DICH_CHUYEN(2, C1, C3, C2); DICH_CHUYEN(1, C1, C2, C3);
- DICH_CHUYEN(2, C3, C2, C1); Với N tổng quát, ta có: DICH_CHUYEN(N-1, C1, C3, C2); DICH_CHUYEN(1, C1, C2, C3); DICH_CHUYEN(N-1, C3, C2, C1); Và khởi đầu với N = 1, ta chỉ việc di chuyển từ cọc tới cọc, cọc trung gian không cần nữa. b. Chương trình: c. Chạy chương trình: CHƯƠNG III:
- PHƯƠNG PHÁP VÀ KẾT QUẢ NGHIÊN CỨU 1) Phương pháp nghiên cứu: Viết sáng kiến kinh nghiệm thường xuyên liên tục cũng là nhiệm vụ chính trị của mỗi giáo viên, nhưng cần phải lựa chọn phương pháp nghiên cứu đúng đắn và phù hợp với nhà trường trung học phổ thông. Sáng kiến kinh nghiệm đang trình bày của tôi dựa theo các luận cứ khoa học hướng đối tượng, cụ thể: thuyết trình, quan sát, điều tra cơ bản, phân tích kết quả thực nghiệm sư phạm,v.v… phù hợp với bài học và môn học. 2) Kết quả nghiên cứu: - Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2011-2012 khi chưa thực hiện đề tài: STT Lớp Sĩ số Đạt yêu cầu Không đạt yêu cầu 1 11A 46 90% 10% 2 11B1 42 80% 20% 3 11B3 42 85% 15% - Khi thực hiện thực nghiệm qua các đối tượng học sinh đã nêu trên, đa số các em tránh được các lỗi thường gặp khi học lập trình Pascal. - Một số không ít học sinh có tiến bộ rõ rệt khi viết các chương trình có sử dụng lập trình có cấu trúc. - Nâng cao việc yêu thích học tin học đối với một bộ phận học sinh và một số em có định hướng nghề nghiệp sau này. - Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2012-2013 sau khi thực hiện đề tài: Kết quả từ TB trở lên Lớp Số học sinh khảo sát Đầu năm Học kì I Cuối năm 11B4 42 37 38 42 11B5 41 30 37 41 11B6 39 30 33 39 C. PHẦN III: PHẦN KẾT THÚC
- Trong nội dung của đề tài này, với mong muốn giúp cho việc dạy và học ngôn ngữ lập trình nói chung và Pascal nói riêng của giáo viên và học sinh được tốt hơn. Trên đây là kinh nghiệm của tôi dạy ở khối lớp 11 cũng như tham khảo qua nhiều nguồn thông tin, tư liệu khác nhau, rất mong được sự đóng góp của các đồng nghiệp nhằm giúp đề tài của tôi được hoàn thiện thêm.
- TÀI LIỆU THAM KHẢO 1) Tài liệu nghiên cứu khoa học sư phạm ứng dụng 2) Tạp chí “Tin học và nhà trường” 3) Hồ Sĩ Đàm (chủ biên) - Sách giáo khoa, sách giáo viên tin học lớp 11. 4) GS - TS Hoàng Kiếm - “Giải một bài toán trên máy tính như thế nào” 5) Quách Tuấn Ngọc - Ngôn ngữ lập trình Pascal 6) Các bài tập tham khảo ở đĩa CD “100 bài toán - tin”
CÓ THỂ BẠN MUỐN DOWNLOAD
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn