& Tiếp cận với ngôn ngữ Pascal từ một vài bài toán thực tế
Phuctho, 3/2009
* * *
Thế là sắp hết năm học lớp 11 mà mình thấy việc học pascal của các bạn trong lớp chẳng có gì khả quan! Có lẽ các bạn không có đam mê với môn học này chăng hay các bạn còn có những điều chưa rõ về mục đích của việc học pascal trong nhà trường!
Đã có lần mình đọc được trên mạng một bài viết rất phản cảm nói về ngôn ngữ Pascal. Bài viết cho rằng việc học pascal là vô bổ, là phí phạm thời gian! là làm sao mà bộ GDĐT không cho học Visual Basic thay cho pascal vốn đã cũ rích! ...tóm lại bài viết đó có ý nói rằng pascal là ngôn ngữ thiếu tính thực tế, không thể viết phần mềm ứng dụng !!!!
Về phần mình, mình xin nhận xét rằng tác giả của bài viết trên đã có một cái nhìn phiếm diện, một cái nhìn nông cạn của một kẻ qua đường với một ngôn ngữ trong sáng như pascal!!! Không một người đam mê pascal và giỏi lập trình nào lại có những cái nhìn như vậy!!
Xin hỏi lại bạn rằng nếu điều bạn nói là đúng thì biết bao sinh viên CNTT trên toàn thế giới hiện nay vẫn còn học hợp ngữ (ASM) làm cái gì chứ? Là vì họ không muốn sử dụng những hàm, thủ tục có sẵn mà họ luôn muốn tìm hiểu cách thức làm việc và cách tạo ra nó, cách tạo ra cái gọi là vỏ giao diện!!
Xin lấy ví dụ sau: bạn biết trong Visual Basic có thủ tục khởi tạo menu nhưng nó chỉ cho phép bạn lựa chọn những kiểu menu sẵn có, làm việc theo cách quản lí của microsoft nhưng tôi không thích thế! với pascal, tôi làm được nhiều thứ hơn: tôi tự lập trình cái gọi là menu cho chương trình của mình, không giống ai, tự do, thích kiểu nào tôi sẽ tự lập trình kiểu đó!
Sau đây mình sẽ phân tích ích lợi từ việc học pascal và có lẽ cũng là nguyên nhân vì sao pascal được đưa vào giảng dạy trong nhà trường. Sau đó sẽ là những bài toán ứng dụng cơ bản để có thể thấy khả năng của pascal khi nó nằm dưới tay một coder.
Phần I: Vì sao chọn Pascal?
- Thứ nhất:
pascal là ngôn ngữ có cú pháp trong sáng, nghĩa là cú pháp trong pascal rất sáng sủa, không gò bó, trình bày theo cấu trúc dễ hiểu, khoa học!
- Thứ hai:
học pascal là học tiếp xúc với việc lập trình cấu trúc và các thuật toán (có thể coi thuật toán là sợi dây nối vững chắc giữa Tin học với Toán học)!!
Điều này được thể hiện rõ khi muốn giải bài toán nào đó, ta đều có thể áp dụng những thuật toán tin học đã được nghiên cứu trên khắp thế giới (vd: Vét cạn, Tham lam, Đệ quy, Quy hoạch động, ... các thuật toán sắp xếp như Bubble Sort, Selection Sort, Insertion Sort, Shell Sort, Quick Sort, Heap Sort, Radix Sort, Merge Sort,... các thuật toán tìm kiếm như DFS, BFS, Ford Bellman, Dijkstra, Floyd, Kruskal, Prim, Edmonds, Lawler,... nhiều vô kể mà có lẽ một học sinh giỏi cũng không biết hết nên có thể coi việc nghiên cứu thuật toán là một môn khoa học!!!
Thử hỏi việc học Visual Basic có trở nên khoa học như việc học Pascal hay đó chỉ là những cái lợi trước mắt từ Visual Basic đem lại mà bạn chạy theo trong khi không có kiến thức về khoa học máy tính (điều này, Pascal sẽ trang bị cho bạn) !
- Thứ ba:
việc học pascal tạo tiền đề vững chắc cho việc học các ngôn ngữ khác, rất quan trọng cho mọi sinh viên CNTT
- Thứ tư: việc học pascal không xa rời thực tế cuộc sống! giống như tin học nói chung vậy! (sẽ chứng minh qua các ví dụ)
Phần II: Ứng dụng thực tiễn
Sau đây chỉ là 3 ví dụ mẫu cho các bài toán tin học
Vấn đề thứ nhất: Bài toán chia phần
Trong ngày sinh nhật, hai chị em An và Liên nhận được rất nhiều đồ chơi. Đồ chơi thứ i có ghi giá tiền Xi. Hai chị em quyết định mỗi người phải có trách nhiệm bảo quản một phần số đồ chơi và phân chia sao cho chênh lệch tổng giá trị đồ chơi mà mỗi người quản lí là ít nhất. Hãy giúp An và Liên thực hiện việc này!
Bài toán rất đơn giản nếu như số đồ chơi chỉ đếm trên đầu ngón tay nhưng lại trở nên vô vùng phức tạp khi số lượng đồ chơi là con số lớn (VD: 1000 đồ chơi hoặc hơn thế nữa!!!) Nếu vậy thì làm sao chia phần!? Có lẽ cả tháng bạn cũng chưa giải quyết được!! Song với phương pháp Quy Hoạch Động áp dụng được trên pascal, bạn sẽ có kết quả trong vòng vài giây!!
Vấn đề thứ hai: Bài toán cái túi
Trong siêu thị có n gói hàng (n < >)
Kết Luận
#Lập trình cấu trúc là tiền thân của lập trình hướng đối tượng và luôn mạnh mẽ khi giải quyết mọi vấn đề!
#Có thể nhận ra rằng pascal còn quá nhiều điều bí ẩn mà chúng ta chưa biết!
#Xin có lời khuyên rằng: nếu sau này bạn muốn trở thành một lập trình viên hay một hacker thì điều cốt lõi là bạn phải làm quen với những thuật toán tin học. Hãy tìm tài liệu về vấn đề này và bắt đầu chúng với Pascal.
=> Việc chọn Pascal hay C để giảng dạy trong nhà trường là một quyết định sáng suốt của bộ GDĐT
Không có nhận xét nào:
Đăng nhận xét