Giới thiệu về ngôn ngữ lập trình C

Bắt đầu với C, một ngôn ngữ lập trình cơ bản

C có lẽ là ngôn ngữ lập trình được biết đến rộng rãi nhất. Nó được sử dụng làm ngôn ngữ tham khảo cho các khóa học khoa học máy tính trên toàn thế giới và có lẽ nó là ngôn ngữ mà mọi người học nhiều nhất ở trường cùng với Python và Java.

Tôi nhớ nó là ngôn ngữ lập trình thứ hai của tôi sau Pascal.

C không chỉ là thứ sinh viên dùng để học lập trình. Nó không phải là một ngôn ngữ học thuật. Và tôi có thể nói rằng nó không phải là ngôn ngữ dễ nhất, bởi vì C là một ngôn ngữ lập trình cấp thấp.

Ngày nay, C được sử dụng rộng rãi trong các thiết bị nhúng và nó cung cấp năng lượng cho hầu hết các máy chủ Internet, được xây dựng bằng Linux. Nhân Linux được xây dựng bằng C, và điều này cũng có nghĩa là C cung cấp năng lượng cho lõi của tất cả các thiết bị Android. Chúng ta có thể nói rằng mã C chạy một phần tốt của toàn bộ thế giới. Ngay bây giờ. Khá đáng chú ý.

Khi nó được tạo ra, C được coi là một ngôn ngữ cấp cao, vì nó có thể di động qua các máy. Hôm nay, chúng tôi đã cho rằng chúng tôi có thể chạy một chương trình được viết trên máy Mac trên Windows hoặc Linux, có lẽ bằng cách sử dụng Node.js hoặc Python. Ngày xưa, điều này hoàn toàn không phải như vậy. Những gì C mang lại cho bảng là một ngôn ngữ đơn giản để thực hiện, có một trình biên dịch có thể dễ dàng chuyển sang các máy khác nhau.

Tôi đã nói trình biên dịch: C là một ngôn ngữ lập trình biên dịch, giống như Go, Java, Swift hoặc Rust. Các ngôn ngữ lập trình phổ biến khác như Python, Ruby hoặc JavaScript đều được thông dịch. Sự khác biệt là nhất quán: một ngôn ngữ biên dịch tạo ra một tệp nhị phân có thể được thực thi và phân phối trực tiếp.

C không phải là rác được thu gom. Điều này có nghĩa là chúng ta phải tự quản lý bộ nhớ. Đó là một nhiệm vụ phức tạp và đòi hỏi nhiều sự chú ý để ngăn chặn lỗi, nhưng nó cũng là điều khiến C trở nên lý tưởng để viết các chương trình cho các thiết bị nhúng như Arduino.

C không giấu sự phức tạp và khả năng của máy bên dưới. Bạn có rất nhiều quyền lực, một khi bạn biết mình có thể làm gì.

Tôi muốn giới thiệu chương trình C đầu tiên ngay bây giờ, chương trình mà chúng tôi sẽ gọi là “Hello, World!”

chào c

#include <stdio.h>

int main(void) {
	printf("Hello, World!");
}

Hãy mô tả mã nguồn chương trình: trước tiên chúng ta nhậpstdiothư viện (tên viết tắt của thư viện đầu vào-đầu ra tiêu chuẩn).

Thư viện này cho phép chúng ta truy cập vào các chức năng nhập / xuất.

C là một ngôn ngữ rất nhỏ trong cốt lõi của nó và bất cứ thứ gì không phải là một phần của lõi đều được cung cấp bởi các thư viện. Một số thư viện trong số đó được xây dựng bởi các lập trình viên bình thường và có sẵn cho những người khác sử dụng. Một số thư viện khác được tích hợp sẵn trong trình biên dịch. Giốngstdiovà những người khác.

stdiolà thư viện cung cấpprintf()chức năng.

Hàm này được bao bọc thành mộtmain()chức năng. Cácmain()hàm là điểm đầu vào của bất kỳ chương trình C nào.

Nhưng dù sao thì một hàm là gì?

Một hàm là một quy trình nhận một hoặc nhiều đối số và trả về một giá trị duy nhất.

Trong trường hợpmain(), hàm không nhận được đối số và trả về một số nguyên. Chúng tôi xác định rằng bằng cách sử dụngvoidtừ khóa cho đối số vàinttừ khóa cho giá trị trả về.

Hàm có một phần thân, được bao bọc trong dấu ngoặc nhọn và bên trong phần thân, chúng ta có tất cả mã mà hàm cần để thực hiện các hoạt động của nó.

Cácprintf()chức năng được viết khác nhau, như bạn có thể thấy. Nó không có giá trị trả về được xác định và chúng tôi chuyển một chuỗi, được bao bọc trong dấu ngoặc kép. Chúng tôi không chỉ định loại đối số.

Đó là bởi vì đây là một lệnh gọi hàm. Ở một nơi nào đó, bên trongstdiothư viện,printfđược định nghĩa là

int printf(const char *format, ...);

Bạn không cần phải hiểu điều này có nghĩa là gì bây giờ, nhưng tóm lại, đây là định nghĩa và khi chúng ta gọiprintf("Hello, World!");, đó là nơi chạy hàm.

Cácmain()chức năng chúng tôi đã xác định ở trên:

#include <stdio.h>

int main(void) {
	printf("Hello, World!");
}

sẽ được chạy bởi hệ điều hành khi chương trình được thực thi.

Làm thế nào để chúng tôi thực hiện một chương trình C?

Như đã đề cập, C là một ngôn ngữ biên dịch. Để chạy chương trình trước tiên chúng ta phải biên dịch nó. Mọi máy tính chạy hệ điều hành Linux hoặc macOS đều đã có sẵn trình biên dịch C. Đối với Windows, bạn có thể sử dụng Hệ thống con Windows dành cho Linux (WSL).

Trong mọi trường hợp, khi mở cửa sổ dòng lệnh, bạn có thể nhậpgccvà lệnh này sẽ trả về cho bạn một lỗi nói rằng bạn không chỉ định bất kỳ tệp nào:

Tốt đấy. Nó có nghĩa là trình biên dịch C ở đó và chúng ta có thể bắt đầu sử dụng nó.

Bây giờ gõ chương trình trên vào mộthello.ctập tin. Bạn có thể sử dụng bất kỳ trình soạn thảo nào, nhưng để đơn giản hơn, tôi sẽ sử dụngnanotrình soạn thảo trong dòng lệnh:

Nhập chương trình:

Bây giờ bấmctrl-Xđể thoát:

Xác nhận bằng cách nhấny, sau đó nhấn enter để xác nhận tên tệp:

Vậy là xong, bây giờ chúng ta sẽ quay lại terminal:

Bây giờ gõ

gcc hello.c -o hello

Chương trình sẽ không cung cấp cho bạn lỗi:

nhưng nó nên tạo ra mộthellocó thể thực thi được. Bây giờ gõ

./hello

để chạy nó:

Tôi thêm trước./vào tên chương trình, để cho thiết bị đầu cuối biết rằng lệnh nằm trong thư mục hiện tại

Tuyệt vời!

Bây giờ nếu bạn gọils -al hello, bạn có thể thấy rằng chương trình chỉ có dung lượng 12KB:

Đây là một trong những ưu điểm của C: nó được tối ưu hóa rất cao và đây cũng là một trong những lý do nó tốt cho các thiết bị nhúng có số lượng tài nguyên rất hạn chế.

Kiểm tra một số hướng dẫn khác của tôi về C:

Tải xuống miễn phí của tôiSổ tay C


Các hướng dẫn khác về tiếng clang: