10/4/15

Làm quen với ngôn ngữ C từ Pascal (Phần 1)

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ữ.

Không có nhận xét nào:

Đăng nhận xét