N V: TRNG THPT SễNG RAY
I. L DO CHOẽN ẹE TAỉI:
Da trờn mc tiờu i mi chng trỡnh giỏo dc ph thụng ca B GDT ban hnh nhm gúp phn nng cao cht lng giỏo dc ton din, tng
cng bi dng cho th h tr lũng yờu nc, tinh thn t tụn dõn tc, lũng
nhõn ỏi, ý thc tụn trng phỏp lut, tinh thn hiu hc, chớ tin th. H tr tớch
cc vic i mi phng phỏp dy v hc; Phỏt huy t duy sỏng to v nng
lc t hc, kh nng ng dng kin thc ó hc ca hc sinh, quan tõm ỳng
mc ti cỏc loi trỡnh hc tp. Tip cn trỡnh giỏo dc ph thụng ca cỏc
nc tiờn tin trong khu vc v trờn th gii. m bo tớnh k tha, m bo
cỏc tiờu chun c bn, tinh gin, sỏt thc tin v iu kin ca nn giỏo dc
Vit Nam ó ỏp dng cho tt c cỏc mụn hc núi chung v mụn tin hc núi
riờng.
T nm 2006 n nay, mụn tin hc ó c ỏp dng cho mi i tng
hc sinh trung hc ph thụng (THPT) khụng phõn húa theo chuyờn ban v c
dy cho c 3 khi lp 10, 11, 12. Song mụn tin hc bc Trung hc c s l
mt mụn hc t chn. Do vy m mụn tin hc bc THPT c xõy dng trờn
gi thit l mt mụn hc mi nờn hc sinh phi hc li t u. V li mụn tin
hc nhm cung cp cho hc sinh nhng kin thc ph thụng v ngnh khoa hc
tin hc, hỡnh thnh v phỏt trin kh nng t duy thut toỏn, nng lc s dng
cỏc thnh tu ca ngnh khoa hc trong hc tp v trong lnh vc hot ng
ca mỡnh sau ny. c bit l v kin thc s trang b cho hc sinh mt cỏch
tng i cú h thng cỏc khỏi nim c bn nht mc ph thụng v tin hc,
GV: Nguyn Hunh Thanh Trang
1
ĐƠN VỊ: TRƯỜNG THPT SƠNG RAY
2
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
o Có nhiều bài toán cho đến nay vẫn chưa tìm ra một cách giải theo kiểu
thuật toán và cũng không biết là có tồn tại thuật toán hay không.
o Có nhiều bài toán đã có thuật toán để giải nhưng không chấp nhận được
vì thời gian giải theo thuật toán đó quá lớn hoặc các điều kiện cho thuật
toán khó đáp ứng.
o Có những bài toán được giải theo những cách giải vi phạm thuật toán
nhưng vẫn chấp nhận được.
Từ những nhận định trên, người ta thấy rằng cần phải có những đổi mới
cho khái niệm thuật toán. Người ta đã mở rộng hai tiêu chuẩn của thuật toán:
Tính xác định và tính đúng đắn. Việc mở rộng tính xác định đối với thuật toán
đã được thể hiện qua các giải thuật đệ quy và ngẫu nhiên. Tính đúng của thuật
toán bây giờ không còn bắt buộc đối với một số cách giải bài toán, nhất là các
cách giải gần đúng. Trong thực tiễn có nhiều trường hợp người ta chấp nhận
các cách giải thường cho kết quả tốt nhưng ít phức tạp và hiệu quả. Chẳng hạn
nếu giải một bài toán bằng thuật toán tối ưu đòi hỏi máy tính thực hiện nhiều
năm thì chúng ta có thể sẵn lòng chấp nhận một giải pháp gần tối ưu mà chỉ cần
máy tính chạy trong vài ngày hoặc vài giờ. Các cách giải chấp nhận được
nhưng không hoàn toàn đáp ứng đầy đủ các tiêu chuẩn của thuật toán thường
được gọi là các thuật giải. Khái niệm mở rộng này của thuật toán đã mở cửa
cho chúng ta trong việc tìm kiếm phương pháp để giải quyết các bài toán được
đặt ra.
Hạt nhân của chương trình máy tính là sự lưu trữ và xử lý thông tin. Việc
tổ chức dữ liệu như thế nào có ảnh hưởng rất lớn đến cách thức xử lý dữ liệu
đó, cũng như tốc độ thực thi và sự chiếm dụng bộ nhớ của chương trình. Do đó
mục đích của đề tài này là cung cấp những hiểu biết nền tảng trong việc thiết kế
một số kỹ năng chuẩn bị tiếp thu việc học ngôn ngữ lập trình, cách dùng biến,
khởi tạo giá trị biến. Các kiến thức trên góp phần phát triển khả năng tư duy khi
giải quyết các vấn đề trong khoa học cũng như trong cuộc sống.
2.Nội dung, biện pháp thực hiện các giải pháp của đề tài
Học sử dụng máy tính thực chất là học cách giao cho máy tính việc mà ta
muốn nó làm. Khả năng khai thác máy tính phụ thuộc rất nhiều vào sự hiểu biết
của người dùng. Để giải bài toán trên máy tính thường được tiến hành qua các
bước như sau:
Bước 1: Xác định bài toán
GV: Nguyễn Huỳnh Thanh Trang
4
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
Việc xác định bài toán tức là xác định xem ta phải giải quyết vấn đề gì?
Với giả thiết nào đã cho và lời giải cần đạt những yêu cầu gì? Khác với các bài
toán thuần túy trong toán học là chỉ cần xác định rõ giả thiết và kết luận chứ
không cần xác định yêu cầu về lời giải, đôi khi những bài toán tin học trong
thực tế chỉ cần tìm lời giải tốt tới mức nào đó, thậm chí là chỉ ở mức chấp nhận
được. Như đã trình bày ở mục cơ sở lí luận, mỗi bài toán được đặc tả bởi hai
thành phần đó là Input và Output. Việc xác định bài toán chính là xác định rõ
hai thành phần này và mối quan hệ giữa chúng. Các thông tin đó cần được
nghiên cứu cẩn thận để có thể lựa chọn thuật toán, cách thể hiện các đại lượng
đã cho, các đại lượng phát sinh trong quá trình giải bài toán và ngôn ngữ lập
trình thích hợp.
Ví dụ 1:
Bài toán tìm ước chung lớn nhất của hai số nguyên dương a và b.
thuật toán người ta thường quan tâm đến các tài nguyên như thời gian thực
hiện, số lượng ô nhớ,… Trong các loại tài nguyên người ta quan tâm nhiều nhất
đến thời gian vì đó là dạng tài nguyên không tái tạo được.
Ví dụ: với bài toán tìm kiếm, nếu dãy đã cho là dãy đã sắp xếp thì dễ
thấy thuật toán tìm kiếm nhị phân cần ít thao tác hơn nhiều so với thuật toán
tìm kiếm tuần tự. Vì thế nó cần ít thời gian thực hiện hơn.
Một tiêu chí khác được rất nhiều người quan tâm là cần thiết kế hoặc lựa
chọn thuật toán sao cho việc viết chương trình cho thuật toán đó ít phức tạp. Do
vậy khi thiết kế hoặc lựa chọn thuật toán để giải một bài toán cụ thể cần căn cứ
vào lượng tài nguyên mà thuật toán đòi hỏi và lượng tài nguyên thực tế cho
phép.
Ngoài ra khi giải một bài toán, ta cần phải định nghĩa tập hợp dữ liệu để
biểu diễn tình trạng cụ thể. Việc lựa chọn này tùy thuộc vào vấn đề cần giải
quyết và những thao tác sẽ tiến hành trên dữ liệu vào. Có những thuật toán chỉ
thích ứng với một cách tổ chức dữ liệu nhất định, đối với những cách tổ chức
dữ liệu khác thì sẽ kém hiệu quả hoặc không thể thực hiện được. Chính vì vậy
nên bước xây dựng cấu trúc dữ liệu không thể tách rời bước tìm kiếm thuật toán
giải quyết vấn đề. Các tiêu chuẩn khi lựa chọn cấu trúc dữ liệu:
• Cấu trúc dữ liệu trước hết phải biểu diễn được đầy đủ các thông tin nhập
và xuất của bài toán.
• Cấu trúc dữ liệu phải phù hợp với các thao tác của thuật toán mà ta lựa
chọn để giải quyết bài toán.
GV: Nguyễn Huỳnh Thanh Trang
6
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
• Cấu trúc dữ liệu phải cài đặt được trên máy tính với ngôn ngữ lập trình
nếu lượng bộ nhớ mà nó yêu cầu vượt quá khả năng lưu trữ của hệ thống máy
tính.
Thuật toán phải chuyển được thành chương trình: Ví dụ thuật toán yêu cầu
phải biểu diễn được số vô tỷ với độ chính xác tuyệt đối là không thể thực hiện
được với các hệ thống máy tính hiện nay.
Thuật toán phải được máy tính thực hiện trong thời gian cho phép, điều này
khác với lời giải toán(chỉ cần chứng minh và kết thúc sau một số hữu hạn
bước). Ví dụ: chương trình sắp xếp thời khóa biểu cho một học kỳ thì không thể
cho máy tính chạy tới học kỳ sau mới có kết quả được.
Ví dụ:
Bài toán tìm ước chung lớn nhất của hai số nguyên dương a và b.
Thuật toán sẽ được tiến hành mô tả như sau: (có 2 cách)
Cách 1: Diễn tả thuật toán
B1: Nhập 2 số nguyên dương a,b
B2: Nếu a = b thì lấy giá trị chung này làm UCLN rồi chuyển đến
B5.
B3: Nếu a>b thì a a – b; rồi quay lại B2.
B4: Nếu b>a thì b b – a; rồi quay lại B2.
B5: Đưa ra kết quả UCLN rồi kết thúc.
GV: Nguyễn Huỳnh Thanh Trang
8
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
Ngoài cách liệt kê dãy các thao tác như trên, thuật toán còn có thể được diễn
tả bằng sơ đồ khối. Trong sơ đồ khối, người ta dùng một số khối, đường có mũi
tên với:
Lấy giá trị chung
làm UCLN, rồi két
thúc.
Đ
a>b
S
bb-a
GV: Nguyễn Huỳnh Thanh Trang
10
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
Bước 3: Viết chương trình
Sau khi đã có thuật toán ta phải lập trình để thực hiện thuật toán đó.
Muốn lập trình đạt hiệu quả cao, cần phải có kỹ thuật lập trình tốt. Kỹ thuật lập
trình tốt thể hiện ở kỹ năng viết chương trình, khả năng gỡ rối và thao tác
nhanh.
Lập trình tốt không chỉ nắm vững ngôn ngữ lập trình là đủ, mà phải biết
cách viết chương trình một cách uyển chuyển, khôn khéo và phát triển dần dần
để chuyển các ý tưởng ra thành chương trình hoàn chỉnh.
Kinh nghiệm cho thấy một thuật toán hay nhưng do cài đặt vụng về nên
khi chạy lại cho kết quả sai hoặc tốc độ chậm.
Thông thường, ta không nên cụ thể hóa ngay toàn bộ chương trình mà nên
chương trình trên.
Program UCLN;
Uses crt;
Var a,b : Integer;
Begin
Clrscr;
Write (‘nhap 2 so nguyen duong a, b:’); readln(a,b);
While a< > b do
Begin
If a > b then a:= a - b
Else
b: = b - a;
End;
Writeln(‘UCLN cua 2 so nguyen duong la:’,a);
Readln
End.
Bước 4: Hiệu chỉnh
Chương trình là do con người viết ra, cho nên khó có thể tránh khỏi sự nhầm
lẫn. Một chương trình viết xong chưa chắc đã chạy được ngay trên máy tính để
cho ra kết quả mong muốn. Kỹ năng tìm lỗi, sửa lỗi, điều chỉnh lại chương trình
cũng là một kỹ năng quan trọng của người lập trình. Kỹ năng này có được bằng
kinh nghiệm tìm và sửa lỗi của chính mình.
Có 3 loại lỗi thường gặp khi lập trình:
GV: Nguyễn Huỳnh Thanh Trang
12
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
GV: Nguyễn Huỳnh Thanh Trang
13
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
• Một chương trình chạy đúng không có nghĩa là việc lập trình đã xong. Ta
phải sửa đổi lại một vài chi tiết để chương trình có thể chạy nhanh hơn,
hiệu quả hơn.
• Thông thường trước khi kiểm thừ thì ta nên đặt mục tiêu viết chương
trình sao cho đơn giản (miễn chạy ra kết quả đúng là được), sau đó khi
tối ưu chương trình, ta xem lại những chỗ nào viết chưa tốt thì tối ưu lại
những mã lệnh để chương trình ngắn gọn hơn, chạy nhanh hơn.
• Không nên viết tới đâu tối ưu mã đến đó (bởi chương trình có mã tối ưu
thường phức tạp và khó kiểm soát).
- Việc tối ưu chương trình nên dựa theo 4 tiêu chuẩn chính sau:
• Tính tin cậy
Chương trình phải chạy đúng như dự định, mô tả đúng một giải thuật đúng.
Thông thường khi viết chương trình, ta luôn có thói quen kiểm tra tính đúng
đắn của các bước mỗi khi có thể.
• Tính uyển chuyển
Chương trình phải dễ sửa lỗi. Vì ít chương trình nào viết ra mà hoàn hảo
ngay được mà vẫn cần phải sửa đổi lại. Chương trình viết dễ sửa đổi sẽ làm
giảm bớt công sức của lập trình viên khi phát triển chương trình.
• Tính trong sáng
Chương trình viết ra đễ đọc, dễ hiểu. Để sau một thời gian dài khi đọc lại
còn hiểu mình làm cái gì? . Để nếu có điều kiện thì còn có thể sửa sai (nếu phát
hiện lỗi mới), cải tiến hay biến đổi để được chương trình giải quyết bài toán
khác. Tính trong sáng của chương trình phụ thuộc rất nhiều vào công cụ lập
ax2 + bx + c = 0 (a ≠ 0) ; Ta có thể sử dụng ba bộ Input khác nhau:
• Biệt số ∆ > 0 : a = 1, b = - 5, c = 6 (chương trình đưa ra hai nghiệm)
• Biệt số ∆ = 0 : a = 1, b = - 4, c = 4 (chương trình đưa ra một nghiệm)
• Biệt số ∆ < 0 : a = 1, b = 4, c = 8 (chương trình đưa ra thông báo phương
trình vô nghiệm)
Bước 5: Viết tài liệu
Viết tài liệu là bước cuối cùng của quá trình triển khai, thực hiện kết quả đạt
được của bài toán giải trên máy tính. Ở thời điểm hiện nay máy tính đã trở
thành công cụ không thể thiếu để phục vụ công việc viết tài liệu. Với các ý
tưởng, dữ liệu, thông tin đã tích lũy được và sắp xếp, phát triển đầy đủ trong bài
viết. Tài liệu phải mô tả bài toán, thuật toán, thiết kế chương trình, kết quả thử
GV: Nguyễn Huỳnh Thanh Trang
15
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
nghiệm và hướng dẫn sử dụng. Khi viết một tài liệu hay thì sẽ rất có ích cho
người sử dụng chương trình và cho việc đề xuất những khả năng hoàn thiện
thêm.
Các bước trên có thể lặp đi lặp lại nhiều lần cho đến khi ta cho rằng chương
trình đã làm việc đúng đắn và hiệu quả.
GV: Nguyễn Huỳnh Thanh Trang
16
15(30%)
10A 5
49
11(22.4%) 30(61.2%) 8(16.4%)
0(0%)
10A 6
51
21(41.2%) 23(45.1%) 7(13.7%)
0(0%)
10B 1
48
4(8.3%)
12(25%)
27(56.3%)
5(0.4%)
29(66%)
10(22.6%)
1(2%)
0(0%)
10A 2
46
8(17%)
29(63%)
9(20%)
0(0%)
10A 3
47
7(15%)
30(64%)
10(21%)
0(0%)
9(18%)
Yếu
0(0%)
17
ĐƠN VỊ: TRƯỜNG THPT SÔNG RAY
2008 – 2009
2009 – 2010
2010- 2011
10A 1
46
8(17%)
29(63%)
9(20%)
0(0%)
10A 2
12A 1
47
7(15%)
30(64%)
10(21%)
0(0%)
12A 2
11B 6
49
43
11(22.4%) 30(61.2%) 8(16.4%)
0(0%)
9(21%)
31(72%)
0(0%)
3(7%)
11B 7
42
0(0%)
12A 3
46
8(17%)
9(63%)
9(20%)
0(0%)
12A 4
47
2(4.3%)
19(40.3%) 24(51.1%)
2(4.3%
12A 5
44
5(11.4%)
0(0%)
7(16%)
37(84%)
0(0%)
10c13
43
0(0%)
9(21%)
31(72%)
3(7%)
10c14
46
8(17%)
9(63%)
9(20%)
8(19.5%)
19(46.3%) 14(34.2)
0(0%)
12a 5
42
1(2%)
14(33%)
0(0%)
12a 13
47
0(0%)
27(57.4%) 18(38.3%)
2(7.3%)
12a 14
44
bản giúp học sinh giải bài tốn trên máy tính” và bước đầu ứng dụng như đã
trình bày ở trên nên tơi có một số đề xuất và khuyến nghị các cấp lảnh đạo tiếp
tục mở rộng việc phổ biến và hướng dẫn thực hiện.
v. tài liệu tham khảo
1.
Hồ Sĩ Đàm- Sách giáo viên tin học 10, 11,12 NXB Giáo Dục
2.
Hồ Sĩ Đàm - Sách giáo khoa tin học 10,11,12 . NXB Giáo Dục
3.
Hồ Sĩ Đàm - Sách bài tập tin học 11 . NXB Giáo Dục .
4.
Hướng dẫn thực hiện chuẩn kiến thức, kỹ năng mơn tin học THPT. NXB
Giáo Dục.
5.
Nguyễn Xn Huy – Thuật tốn. NXB thống kê, Hà Nội 1988
6.
Bồi dưỡng giáo viên : Giáo dục tin học – NXB Hà Nội 1993
Đồng Nai, ngày 15 tháng 05 năm 2012
Người Thực Hiện