SUY NGHĨ SAI LẦM VỀ VIỆC HỌC PASCAL !!
& 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
Cái người mà viết cái bài này chắc bị bệnh.CÔng nhận nếu pascal viết GUI thì viết đc, nhưng thử hỏi bây giờ có ai bảo bằng cấp Pascal ra làm việc kô?Hay học để chơi -> phí phạm , thà ta học VB,C#,C++ xem ta ra làm sẽ đc gì.Chỉ biết nói người ta sao kô nhìn lại bản thân.Học đi rồi đi mà ăn mày. Thuật toán ngôn ngữ nào chả có.Máy tính được làm từ hàng tỷ thuật toán.Vô số cách để ta học,Pascal chỉ là ngôn ngữ của thời xưa vì chẳng có gì lập trình bằng nó.Thời thế thế thời, thời phải thế.
Trả lờiXóaQuan niệm sai lầm nhé bạn. Người ta bảo vb dành cho con nít học vì các lệnh cơ bản, kéo thả mà chẳng có tư duy nhiều, như vậy không tốt. Pascal mà bạn nói là bản cũ. Vậy hỏi bạn Delphi là gì? Tự bạn tìm hiểu kĩ nhé. Nếu bỏ pascal là sai lầm. Vì chẳng có ngôn ngữ nào dạy dễ hiểu hơn pascal đâu- ý kiến chủ quan của tôi.
Trả lờiXóaGiả sử tôi chưa biết lập trình, đi theo cntt, dạy vb sẽ bị hạn chế về tư duy, nhưng chỉ có óc trực quan. Dạy C++ quay sinh viên như điên vì bộ nhớ, nguyên tắc hoạt động của máy tính. C#, hướng đối tượng là gì, cao qua với không tới. Không có gì là hoàn hảo. Thực tế là tốt, nhưng đôi khi ta phải nhìn lại những gì mình đã viết, xem đúng hay sai. Cái gì cũng có lý do, và tôi đưa bài nay lên cũng có lý do đấy.
hay! bài viết hay! t đồng tình với bạn án bình trọng! xin cảm ơn đã cho t hiểu được vấn đề rất lớn lao!
Trả lờiXóachúc bạn luôn mạnh khoẻ
sẽ rất vui nếu được làm quen với bạn
tutinit
Oh, rất vui vì bạn đã đồng tình với mình.
Trả lờiXóaMình nhận thấy: Mới đầu học lập trình nên học Pascal (Phổ thông) vì nó tương đối đơn giản, tập cho học sinh tư duy và giải quyết 1 bài toán thế nào trên máy tính.
Lên Đại Học (theo chuyên ngành CNTT), nếu theo java thì mình xin phép không bàn. Nếu theo dot NET, thì đầu tiên học về CTDL, thuật giải thì dùng C++, nâng lên 1 tầm mức mới. Sau đó chuyển qua C#, tập lập trình với giao diện đồ họa (dot net hỗ trợ rất mạnh).
Sau đó tìm hiểu về OOP trong C++, rồi trong C# (hay java).
Sau này vững thì tiếp đến phân tích thiết kế và tìm hiểu, xây dựng ứng dụng dựa trên các design pattern.
Pascal là bước đệm vô cùng quan trọng để học sinh bước vào thế giới lập trình. Rồi khi có bước đệm đó, bạn mới thấy thế giới lập trình còn muôn màu muôn vẻ phía sau.
Trả lờiXóaMình thấy rất đúng. Pascal không hề cổ đại chút nào, học thuật toán bằng pascal rất dễ nhớ. Nếu ngay từ lúc bắt đầu học lập trình mà đòi với lên C, C++, C#, Java,... thì quả thật là quá khó vì cú pháp của nó không sáng sủa như pascal. Bản thân mình, học sinh lớp 8, tuy rất đam mê Java nhưng cũng không bao giờ bỏ qua việc học Pascal
Trả lờiXóa