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
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:
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 đó.
2. BÀI TOÁN 2: Giải phương trình: ax
2
+ bx + c = 0 (a ≠ 0)
a. Ý tưởng:
Dùng ∆ = b
2
– 4ac
Xét 3 trường hợp: ∆ < 0, ∆ > 0, ∆ = 0
+ Nếu ∆ <0 thì kết luận phương trình đã cho vô nghiệm.
+ Nếu ∆ = 0 thì kết luận phương trình đã cho có 1 nghiệm kép là –b/2*a
+ 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:
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 C
k
n
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á
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. 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:
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”