Bài viết này hướng đến các bạn học sinh muốn tìm hiểu thêm về ngôn ngữ C khi các bạn chỉ biết về Pascal. Ở phần này mình chỉ phân tích chủ yếu về các khái niệm, sự giống và khác nhau trong cú pháp giữa 2 ngôn ngữ và các vấn đề rắc rối thường gặp trong ngôn ngữ C chứ không đi sâu vào cụ thể.
C là một ngôn ngữ hướng cấu trúc và được tổ chức theo đơn vị cơ bản là các hàm. Vì vậy, chương trình chính của C cũng là một hàm. Một lệnh của C cũng được kết thúc bằng dấu chấm phẩy (;), tương tự như Pascal.
Bây giờ chúng ta cùng xem một chương trình đơn giản trong Pascal và C khác nhau như thế nào.
//Đoạn chương trình Pascal
program vi_du;
uses crt;
var
a: integer;
begin
writeln('Nhap A: ');
readln(a);
writeln('A = ', a);
end.
//Đoạn chương trình C
#include<stdio.h>
int main()
{
int a;
printf("Nhap A: ");
scanf("%d", &a);
printf("A = %d", a);
return 0;
}
Lệnh
program
trong Pascal chỉ tên chương trình, trong C không có lệnh này và nó cũng không cần thiết. Ngay cả khi lập trình trong Pascal không có lệnh này chương trình vẫn chạy bình thường mà phải không? Cho nên đây không phải là một lệnh quan trọng.
Lệnh
uses
để khai báo thư viện trong Pascal. Thư viện quan trọng là
crt
(có các hàm như
clrscr()
chẳng hạn). Lệnh này trong C khai báo là
#include<stdio.h>
(nhớ là không có dấu chấm phẩy nhé).
Thư viện nhập xuất chuẩn của C là stdio.h, thư viện này chứa các hàm để bạn xuất ra màn hình hay nhập dữ liệu từ bàn phím vào biến, v.v...
Biến trong Pascal được khai báo bằng từ khóa
var
và phải được đặt trước khối lệnh
begin .. end
. Trong C biến được khai báo bất kỳ đâu bên trong hàm và nó có phạm vi sử dụng từ lúc khai báo đến hết hàm.
Bonus: Kiểu mảng trong Pascal khai báo khá phức tạp, cho phép đặt kiểu chỉ số (thông thường bắt đầu từ 1). Còn trong C kiểu mảng khai báo như khai báo biến nhưng có thêm cặp ngoặc vuông chỉ
số lượng phần tử. Các phần tử được đánh chỉ số từ 0 đến n-1.
Ví dụ:
//Khai báo mảng a có 10 phần tử được đánh chỉ số từ 0 đến 9
int a[10];
Cặp lệnh
begin .. end
là một đặc trưng của Pascal, nó đánh dấu bắt đầu chương trình và kết thúc chương trình, đồng thời nó cũng chỉ một khối các lệnh (trong
if .. then
chẳng hạn, khi mà bạn muốn thực hiện nhiều lệnh trong cùng 1 điều kiện).
Như ban đầu mình đã nói, chương trình trong C được tổ chức theo các hàm. Chương trình chính cũng là một hàm và hàm này mang tên là
main()
. Cặp dấu chỉ khối lệnh trong C là cặp dấu ngoặc nhọn { }. Nếu tìm hiểu về C bạn sẽ thấy những rắc rối như tại sao hàm
main()
không nên trả về kiểu
void
, v.v...
Thêm một tí: Trong C, khai báo hàm cũng đặt kiểu trả về trước tên hàm như khai báo biến. Thủ tục (procedure) cũng là hàm nhưng có kiểu trả về là
void
. Dùng lệnh
return
để trả về thay vì gán tên hàm với giá trị trả về như Pascal.
C có các hàm nhập xuất chuẩn
printf()
,
scanf()
cũng giống như
write
,
writeln
,
read
,
readln
của Pascal. Tuy nhiên, cú pháp cũng khá rắc rối và không tiện dụng như Pascal, bạn sẽ phải tìm hiểu về mã đặc tả, địa chỉ, v.v...
Có thể thấy Pascal hướng đến sự trong sáng rõ ràng nên thích hợp dạy trong nhà trường, còn C yêu cầu phải tìm hiểu thêm về yếu tố kỹ thuật. Tuy nhiên, nếu nắm được ngôn ngữ C và rèn luyện tư duy lập trình thì các bạn sẽ tìm hiểu các ngôn ngữ khác rất dễ dàng.
Với phần 1 các bạn đã thấy được những điểm giống và khác biệt giữa C và Pascal. Phần tiếp theo mình sẽ nói về cú pháp một số cấu trúc rẽ nhánh, lặp thông dụng giữa 2 ngôn ngữ.