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

pdf20 trang | Chuyên mục: Pascal | Chia sẻ: dkS00TYs | Lượt xem: 8606 | Lượt tải: 1download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 
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 
 + 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: 
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! 
 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)) 
Ckn = 
 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: 
Lớp Số học sinh khảo sát 
Kết quả từ TB trở lên 
Đầ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” 

File đính kèm:

  • pdfSá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.pdf