Tải bản đầy đủ (.pdf) (2 trang)

Sáng tạo trong thuật toán và lập trình trong pascal và C - Lời nói đầu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (302.31 KB, 2 trang )

Sáng tạo trong Thuật toán và Lập trình Tập I

4



Lời nói đầu

Thể theo yêu cầu của đông đảo bạn đọc, chúng tôi biên soạn lại cuốn Sáng
tạo trong Thuật toán và Lập trình với các bài Toán Tin nâng cao cho học sinh
và sinh viên nhằm cung cấp những kĩ thuật lập trình cơ bản để giải những bài
toán khó trên máy tính.
Một bài toán tin được hiểu là khó nếu ta sử dụng thuật giải mới nảy sinh
trong đầu khi vừa biết nội dung bài toán thì hoặc là ta thu được kết quả sai
hoặc là lời giải thu được sẽ không hữu hiệu theo nghĩa chương trình đòi hỏi
quá nhiều bộ nhớ hoặc/và chạy quá lâu. Những thuật giải nảy sinh lập tức
trong đầu như vậy thường được gọi là thuật giải tự nhiên. Dĩ nhiên, khái niệm
này chỉ là tương đối. Nếu bạn đã nắm vững nhiều dạng thuật giải và đã từng
thử sức với nhiều bài toán khó thì đến một lúc nào đó các thuật giải tự nhiên
của bạn sẽ đáng tin cậy. Đó cũng chính là mục đích của sự học tập và rèn luyện
và cũng là ước mơ của người viết tập sách này.
Để đọc sách không đòi hỏi bạn phải có tri thức gì đặc biệt. Để tiếp thu tốt
và đóng góp cho việc hiệu chỉnh và cải tiến nội dung cuốn sách chỉ cần bạn biết
sử dụng một trong các ngôn ngữ lập trình: Pascal trong môi trường Turbo hoặc
Free Pascal hoặc C#.
Các kĩ thuật lập trình được minh hoạ qua những bài toán cụ thể tương
đương với trình độ nâng cao của học sinh và sinh viên. Hình thức phát biểu bài
toán suy cho cùng là không quan trọng. Các kĩ thuật lập trình và phương pháp
xây dựng thuật giải cho những bài toán thường được dùng rộng rãi trong quá
trình thiết kế và cài đặt các phần mềm ứng dụng trong thực tiễn, cho nên việc
sớm làm chủ các tri thức này mới thật sự là cần thiết. Chính vì vậy mà chúng


tôi cho rằng nội dung cuốn sách có thể phù hợp với các bạn học sinh, sinh viên
các trường đại học và những bạn đọc muốn tự hoàn thiện tri thức trong lĩnh
vực giải thuật và lập trình. Thiết nghĩ cuốn sách cũng có thể được dùng làm tài
liệu tham khảo để dạy ở các lớp chuyên tin của các trường phổ thông. Nội dung
sách gồm hai phần. Phần thứ nhất giới thiệu vắn tắt về bản chất các phương
pháp và kĩ thuật lập trình và các đề toán để các bạn thử sức. Phần thứ hai trình
bày và phân tích chi tiết lời giải cùng với những bình luận và xuất xứ của các
bài toán.
Trong tập sách này cũng cung cấp toàn văn các chương trình viết bằng
ngôn ngữ lập trình Pascal và C# để bạn đọc tiện so sánh với lời giải của mình.
Cả hai phần đều đề cập đến nội dung của tám chương như sau.
Chương thứ nhất trình bày sơ đồ chung để giải một bài toán tin. Các bài
tập ở chương này hầu hết thuộc loại dễ giải. Chương thứ hai giới thiệu các kĩ
thuật sinh dữ liệu một cách tự động nhằm phục vụ cho việc kiểm thử (test)
chương trình. Chương thứ ba trình bày các kĩ thuật quản lí bàn phím và màn
hình. Chương thứ tư đề cập đến cách thức tổ chức dữ liệu cho một bài toán tin.
Ba chương tiếp theo giới thiệu ba trong số các phương pháp khá phổ biến
thường được vận dụng trong thiết kế thuật giải. Đó là phương pháp tham lam,
phương pháp quay lui và quy hoạch động. Các phương pháp này đều là không
vạn năng theo nghĩa không thể dùng chúng để giải mọi bài toán tin. Trong thực
Sáng tạo trong Thuật toán và Lập trình Tập I

5



tế, một phương pháp vạn năng như vậy là không hữu hiệu. Tuỳ theo nội dung
bài toán mà ta chọn phương pháp phù hợp. Đó cũng là điểm khó, đòi hỏi ở bạn
đọc một quá trình tìm tòi và tích luỹ kinh nghiệm.
Riêng chương cuối cùng của cuốn sách, chương thứ tám giới thiệu một số

bài toán tin để bạn đọc tự phát hiện phương pháp giải.
Những nội dung trong tập sách này được tập hợp và chỉnh lí từ các bài
giảng về thuật toán và lập trình, từ các cuốn sách Tìm đường trong mê cung,
Bắn tàu trên biển và từ các bài viết của tác giả đăng trong tạp chí Tin học và
nhà trường và một số lời giải hay của các bạn học sinh.
Lần xuất bản này chúng tôi trình bày thêm các bài giải viết trong môi
trường ngôn ngữ C# để các bạn sinh viên cùng tham khảo. Hi vọng rằng trong
các dịp khác chúng tôi sẽ cung cấp thêm các phương án giải với bạn đọc. Tuy
nhiên, suy cho cùng, môi trường lập trình chỉ mang tính minh hoạ. Khi đã biết
thuật toán, việc thể hiện thuật toán đó trong môi trường lập trình cụ thể chắc
chắn là việc làm quen thuộc của bạn đọc.
Xin được chân thành cảm ơn các em học sinh, sinh viên, các thầy cô giáo,
bạn bè và đồng nghiệp đã chia sẻ kinh nghiệm và trợ giúp tài liệu, nhận xét và
bình luận để hình thành nội dung cơ bản của cuốn sách.
Chúng tôi hi vọng sẽ tiếp tục nhận được những ý kiến phê bình của bạn đọc
về nội dung, chất lượng và hình thức trình bày để có thể định hướng cho các
tập tiếp theo.
Hà Nội, Lễ Hội Đạp Thanh - 2008
N.X.H



×