So sánh ngôn ngữ lập trình Pascal và C
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.
#include
Hầu hết chúng ta đều biết và sử dụng ngôn ngữ lập trình Pascal. Đó là ngôn ngữ được sử dụng nhiều nhất trong các kì thi tin học ở nước ta hiện nay. Tuy nhiên, C cũng là một ngôn ngữ được sử dụng rộng rãi để giải các bài toán tin học; đôi khi nó cung cấp một số thuận lợi nhất định so với Pascal. Chủ đề này sẽ giúp các bạn nắm được các khái niệm cơ bản của C, thông qua đối chiếu với ngôn ngữ Pascal, từ đó áp dụng vào việc giải các bài toán tin học, hoặc chỉ đơn giản là muốn chuyển từ môi trường Pascal sang C. Sau khi đọc xong bài viết này, bạn cũng có thể chuyển đổi một chương trình giải toán bằng Pascal sang ngôn ngữ C. Nếu bạn đã thông thạo ngôn ngữ Pascal, thì bài viết này sẽ giúp bạn hiểu C nhanh chóng hơn việc đọc tòan bộ một quyển giáo trình dạy C. Đều là những ngôn ngữ lập trình có cấu trúc nên mỗi khái niệm trong Pascal có một khái niệm tương ứng , hoặc tương tự, trong C; chỉ có cú pháp, câu lệnh là khác nhau. C tương đối khó hơn vì cú pháp của nó tự do hơn, dẫn đến những lỗi khó phát hiện trong khi viết chương trình. Trong bài viết này, bạn cũng gặp một số khái niệm của ngôn ngữ C mà Pascal không có. Phần lớn những khái niệm này liên quan đến con trỏ (pointer). Một số lưu ý cơ bản:
Dưới đây là một chương trình C rất đơn giản tính giai thừa của 6. Bạn nên gõ lại chứ đừng copy đoạn mã; như thế sẽ giúp bạn thuộc cú pháp của C nhanh hơn.
Bạn có thể thấy tương ứng giữa những câu lệnh. Khác biệt duy nhất là đọan chương trình C bắt đầu bằng #include . Dòng này đưa thư viện I/O chuẩn vào chương trình để bạn có thể đọc/viết các giá trị, xử lý file văn bản, v.v… C có rất nhiều các thư viện chuẩn như stdio, string, time, math, v.v… Còn phía Pascal, đó là lệnh uses. Ngoài ra, Pascal có program để đặt tên cho chương trình, tuy nhiên, C thì không cần nên nó có thể coi là vô dụng. Dòng #define định nghĩa một hằng. Lệnh int i,j; khai báo 2 biến tòan cục kiểu số nguyên Các kiểu dữ liệu thông dụng khác là float (số thực), char (ký tự), cả hai đều có thể định nghĩa theo cùng cú pháp như trên. Pascal sử dụng const để khai báo các hằng. Dòng main() khai báo thủ tục chính. Mọi chương trình C đều phải có một thủ tục có tên “main”. Trong C, 2 dấu ngoặc kép { và } thay thế cho begin và end của Pascal. Tượng tự, phép gán = thay thế cho :=. Vòng lặp for và lệnh printf hơi lạ một chút, nhưng chúng có cùng chung chức năng như các dòng lệnh tương ứng trong chương trình Pascal (write và writeln). Lưu ý C sử dụng dấu ngoặc kép thay vì dấu nháy đơn (‘ ‘) đối với chuỗi ký tự. Khi bạn quen, lệnh printf của C sẽ dễ sử dụng hơn lệnh write/writeln trong Pascal. Phần trong dấu ngoặc kép được gọi là chuỗi định dạng (format string); nó mô tả dữ liệu được định dạng thế nào khi viết ra. Chuỗi định dạng chứa những chữ như Giai thừa của x, \n (kí tự xuống dòng), và các toán tử xác định vị trí của các biến. Hai toán tử trong chuỗi định dạng trên (%d %d) cho biết các giá trị nguyên trong chuỗi tham số phía sau sẽ được in ra tại vị trí này. Có những toán tử khác dành cho số thực, kí tự, chuỗi, v.v… Bạn có thể dùng phần hướng dẫn của Turbo C chẳng hạn để xem danh sách các toán tử này. Một điều quan trọng là các tham số đi đằng sau phải có kiểu đúng như các toán tử trong chuỗi định dạng. Ví dụ bạn không thể viết %d nhưng tham số tương ứng đằng sau lại là một biến kiểu float. Chương trình trên chạy tốt, nhưng có thể được cải tiến bằng cách đọc thẳng giá trị thay vì sử dụng hằng số. Bạn hãy sửa lại chương trình, lọai bỏ hằng VALUE, thay vào đó khai báo value như một biến toàn cục. Sau đó thêm hai dòng sau vào đầu thủ tục main (tương ứng với Pascal):
Lệnh scanf cùng sử dụng một kiểu chuỗi định dạng như printf (bạn hãy xem phần help để biết thêm chi tiết). Bạn cũng cần lưu ý dấu & trước biến value. Đây là toán tử địa chỉ (address operator) của C: nó trả về địa chỉ của biến; nhưng chúng ta sẽ bàn điều này sau khi đề cập đến kiểu con trỏ. Bạn phải sử dụng dấu & trong lệnh scanf trước bất kỳ biến nào kiểu char, int, float, hoặc kiểu những kiểu record (chúng ta sẽ để cập kiểu record sau). Nếu bạn gõ thiếu dấu &, bạn sẽ gặp lỗi “segmentation fault” khi chạy chương trình. Những lỗi cần tránh:
Đây là phần mở đầu giữa sự khác biệt căn bản trong cấu trúc của C và Pascal. Bài tiếp theo chúng ta sẽ xem những thay đổi cú pháp trong các vòng lặp. Cheers,
Vì cần nhiều lời khuyên khi chuyển từ pascal sang c và lần đâu tiên học C nên mong mọi người cho cháu ý kiến và lời khuyên khi học C, điều gì của pascal có thể giống hoặc khác C ạ!
Lời khuyên: Quên đi những gì liên quan đên ngôn ngữ lập mình đã hoc trước đó, và hãy học ngôn ngữ mới như mới bắt đầu học lập trình 5 Likes
Pascal là ngôn ngữ case-insensitive, tức là không phân biệt chữ hoa chữ thường, C thì có phân biệt chữ hoa chữ thường, ví dụ biến x khác với biến X. 2 Likes
C không hỗ trợ lập trình hướng đối tượng Còn Pascal hỗ trợ lập trình hướng đối tượng ! … Không nghịch C và Pascal nên k biết nhìu hun ! 2 Likes
Cảm ơn bạn thông não giùm mình, hồi đó giờ học Pascal mình cứ nghĩ nó chỉ có hướng thủ tục :)) 1 Like
Mình cũng vừa mới biết đc tầm 1 tháng ! Căn bản sách Tin học dạy ở Trung học của chúng ta đc viết hơn chục năm trc đến hơn chục năm sau vẫn k chịu sửa đổi nên đến giờ vẫn ghi : Pascal là ngôn ngữ lập trình hướng thủ tục Mình cũng có biết đâu , do 1 lần cãi nhau vs 1 đứa về sự lỗi thời của Pascal mới biết là nó có hướng đối tượng từ thuở nào rùi 4 Likes
Lập trình hướng đôí tượng và hướng thủ tục là sao ạ? 2 Likes
Bạn có thể paste câu hỏi của bạn nên Google và xem câu trả lời ! 1 Like
Theo ý mình thì C và pascal khác nhau cơ bản nhất đó là cấu trúc của ngôn ngữ, vì C có thể viết theo thủ túc (procedure) và OOP còn pascasl thì chỉ có procedure… còn mọi thứ thì giống nhau, nhưng C hơn pascal đó là C/C++ có hỗ trợ UI
có gì đó sai sai C có OOP? Pascal không có OOP?
Mình đọc nhiều tài liệu thì k hề thấy pascal có đề cập tới OOP, nhưng C/C++ thì có
Chưa cặp bồ với hai thằng này bao giờ nên cũng chưa hiểu nhau lắm. C không có hướng đối tượng còn Pascal thì có. C được ứng dụng nhiều ( Được dùng để viết Driver, mà đi đâu cũng có phần cứng, tất nhiên
6 Likes
Bạn thấy Pascal có String, tức là nó có đối tượng rồi
không phải, string trong pascal bản chất cũng chỉ là array of char thôi nhưng nó được hỗ trợ bằng các hàm đặc biệt dành riêng cho nó 6 Likes
Nếu bạn tìm hiểu sâu về pascal bạn sẽ thấy rất rõ. Thứ nhất, pascal có rất nhiều kiểu string, widestring, unicodestring, ansistring, shortstring (255 kí tự). Chỉ có shortstring mới là mảng kí tự, còn hầu hết kiểu chuỗi pascal hiện đại ngày nay được tạo ra từ con trỏ, PWideChar, PChar, … Tài liệu tiếng việt quá quá cũ rồi, đừng tin vào những gì quá lỗi thời, muốn thông tin chính xác lên wiki tiếng Anh của free pascal mà xem. (Sorry vì đã đào lại bài cũ, lâu lâu xem lại thấy khó chịu nên rep, xin đừng ném đá) 3 Likes
Thanks for rep
Thì mảng nó cũng thực chất là con trỏ thôi, shortstring vẫn dùng phần tử [0] để lưu lại. 2 Likes
mình cũng học pascal rồi mới học c 1 Like
Không nhé bạn, thư viện Crt của Pascal không chứa bất kì hàm toán học nào. 1 Like next page → Home Categories FAQ/Guidelines Terms of Service Privacy Policy |