Lập trình C là gì – Những kiến thức cơ bản về lập trình C

Thực tế thì C được biết đến là một ngôn ngữ được sử dụng để lập trình mọi thứ từ các tiện ích dành cho máy tính để bàn đến toàn bộ hệ điều hành, khiến nó trở thành một trong những ngôn ngữ lập trình quan trọng nhất. Đồng thời nó còn là một trong những ngôn ngữ chính được sử dụng để lập trình vi điều khiển trong các thiết bị phần cứng và robot. Box.edu sẽ giúp bạn trả lời: Lập trình C là gì?

Xem thêm: Tổng hợp tài liệu lập trình c nâng cao cho người mới bắt đầu

Xem thêm: Phương pháp học lập trình c từ cơ bản đến nâng cao

Xem thêm: Ngôn ngữ lập trình C là gì? Những kiến thức cần biết

Mục lục bài viết

Lịch sử ngôn ngữ lập trình C

lich-su-ngon-ngu-lap-trinh-c.jpg

Lịch sử ngôn ngữ lập trình C

Để hiểu lập trình C là gì thì trước tiên bạn cần nắm được nguồn gốc ra đời của nó. Bạn có bao giờ tự hỏi ngôn ngữ C là gì mà được nhiều người ưa chuộng sử dụng như vậy không? Nhưng nó là một ngôn ngữ đã được ra đời từ lâu bởi Dennis Ritchie lần đầu tiên phát triển nó vào cuối những năm 60 và đầu những năm 70. Tuy nhiên không giống như các ngôn ngữ cấp cao hiện đại hơn (ví dụ như Java, C # và Python), C thậm chí không có khả năng hướng đối tượng.

Đặc biệt là tính đơn giản tương đối của C là một trong những điểm mạnh nhất của nó. Điều này sẽ giúp một lập trình viên có kỹ năng có thể viết các chương trình nhanh hơn, nhỏ hơn và hiệu quả hơn bằng ngôn ngữ lập trình C so với những ngôn ngữ khác như Java hoặc Python.

Đối với các ứng dụng quan trọng về tốc độ, một micro giây có nghĩa là sự khác biệt giữa thành công và thất bại. Trong các hệ thống nhúng, điều này cũng rất quan trọng. Hãy nhớ rằng C ngôn ngữ đơn giản hơn C ++, là một phần mở rộng theo hướng đối tượng của C. Do đó những bạn mới bắt đầu thì nên tìm hiểu về C trước.

Lập trình C là gì? Một ví dụ về Hello World

Dưới đây là ví dụ về một chương trình C ngắn và đơn giản. Theo truyền thống, chương trình đầu tiên được viết khi học một ngôn ngữ mới là chương trình hiển thị dòng chữ “Hello world”. 

#include <stdio.h> main() {  printf("hello world\n"); }

Chương trình này sử dụng mã từ thư viện mã chuẩn C ‘,’ stdio, bằng cách sử dụng câu lệnh sau đây: 

#include <stdio.h>

Thư viện mã được hiểu là một tập hợp các mã được viết sẵn nhằm mục đích thực hiện các hoạt động liên quan nhất định. Ở đây stdio.h là một thư viện chứa các hàm để xử lý đầu vào và đầu ra. Ví dụ về ‘đầu vào’ sẽ là một số văn bản được nhập tại dấu nhắc hệ thống. Còn về ‘đầu ra’ sẽ là văn bản được hiển thị tại dấu nhắc. Tại đây thì hàm printf sẽ hiển thị văn bản “Hello world” theo sau là một dòng mới “\ n” cụ thể:

printf("hello world\n");

Tệp tiêu đề 

Một điều đơn giản là tên của thư viện mã stdio.h, có phần mở rộng là “.h”. Điều này cho thấy rằng đây là một “tệp tiêu đề”. Tệp tiêu đề sẽ chứa (trong số những thứ khác) các định nghĩa về các chức năng khác nhau bên trong thư viện mã. Khi một tệp tiêu đề được ‘bao gồm’, nội dung của nó sẽ được chèn (giống như việc bạn đã sao chép và dán chúng) vào mã nguồn của bạn khi thực hiện biên dịch chương trình.

Biên dịch chương trình C 

Trình biên dịch AC (và một công cụ liên quan được gọi là ‘trình liên kết’) là chương trình dịch mã nguồn của bạn thành mã máy. Đây là mã máy sẽ được thực thi bởi hệ điều hành của bạn khi chương trình bắt đầu chạy. Trình biên dịch C thường có sẵn cho tất cả các hệ điều hành chính, bao gồm Windows, macOS và Linux. 

Hiện nay có rất nhiều ngôn ngữ hiện đại, ví dụ như Java và C # biên dịch mã nguồn thành ‘mã trung gian’ hoặc ‘mã bytecode’ thay vì thành mã máy. Ngoài ra có một chương trình phần mềm chạy mã trung gian, trong khi mã máy mà C biên dịch được sẽ chạy trực tiếp bởi phần cứng của máy tính.

Điều này cũng lý giải việc tại sao ngôn ngữ C là một chương trình rất hiệu quả. Chúng giao tiếp trực tiếp với phần cứng thay vì được chạy bởi một phần mềm trung gian. 

Nếu bạn đang sử dụng IDE (Môi trường phát triển tích hợp) như Visual Studio hay CodeLite, có thể bạn sẽ không rõ mã nguồn của bạn được dịch sang mã máy như thế nào vì IDE tự động hóa quy trình. Đồng thời biên dịch một chương trình C với 3 công cụ khác nhau: bộ xử lý trước, trình biên dịch và trình liên kết. 

Bộ xử lý trước 

Bộ tiền xử lý chính là một công cụ xử lý các lệnh đặc biệt trước ký tự #. Ví dụ: #include là lệnh tiền xử lý sẽ bao gồm các tệp tiêu đề. 

Trình biên dịch 

Trình biên dịch dịch mã nguồn thành một định dạng mã trung gian được gọi là ‘mã đối tượng.’ Mã đối tượng này được lưu thành một số tệp biên dịch riêng biệt, hay gọi là ‘tệp đối tượng.’

Trình liên kết 

Đa phần tất cả các tệp riêng biệt được kết hợp trong một quá trình sẽ được gọi là ‘liên kết’. Điều này cũng tạo ra một chương trình thực thi cuối cùng có chứa mã máy. Trình liên kết bổ sung ‘liên kết trong’ ở bất kỳ thư viện đối tượng nào được mà yêu cầu, ví dụ: mã cho hàm printf ().

Cách thức hoạt động của lập trình C là gì?

cach-thuc-hoat-dong-cua-lap-trinh-c-la-gi.jpg

Cách thức hoạt động của lập trình C là gì?

Khi bạn viết một chương trình C, bạn phải bắt đầu với một ‘chức năng chính’. Một hàm là một khối mã được đặt tên. Hàm chính là bit mã đầu tiên chạy khi chương trình tự chạy. Hàm chính bắt đầu bằng tên của nó, theo sau là một cặp dấu ngoặc đơn. Mã mà bạn muốn chạy được phải đặt giữa một cặp dấu ngoặc nhọn. 

main() { 
}

Trong chương trình Hello World đã được thêm một dòng mã vào hàm chính. Mã này gọi printf () – một hàm được cung cấp theo tiêu chuẩn của C – để in chuỗi (đoạn văn bản) giữa các dấu ngoặc kép: 

main() { 
 printf("hello world\n"); 
}

Khi nói về ‘in’ một chuỗi nghĩa là nó được ‘in’ theo đầu ra tiêu chuẩn. Nhiều năm trước, đầu ra tiêu chuẩn có thể là một máy in. Những ngày này, nó có khả năng là màn hình máy tính. 

Cách phân tích một chương trình lập trình C

Mọi chương trình C đều được tạo thành từ các phần tử là: từ khóa, hàm và biến. 

Tìm hiểu về chương trình hello world

Đầu tiên cần xem xét kỹ hơn chương trình “Xin chào thế giới” đơn giản mà đã được trình bày ở trên. 

#include1<stdio.h>2 
main3()4{5 
 printf6("hello world\n"7);8 
}
  • #include là một chỉ thị tiền xử lý. Tại đây, nó khiến nội dung của tệp stdio.h được đưa vào chương trình hiện tại
  • Dấu ngoặc nhọn, <>, xung quanh tên tệp sẽ yêu cầu trình biên dịch tìm kiếm tệp đó (ở đây là tệp ‘tiêu đề’ stdio.h ) trong các thư mục ‘hệ thống C’
  • main là tên của hàm được chạy khi chương trình bắt đầu
  • Cặp dấu ngoặc đơn trống sau hàm main cho biết đây là một hàm không có đối số
  • Dấu ngoặc nhọn {} phân tách các khối mã. Chúng bao gồm mã của chức năng chính
  • printf () là một hàm được định nghĩa trong tệp stdio.h 
  • “hello world \ n” là một chuỗi ký tự, được chuyển giữa các dấu ngoặc vào hàm printf (), và “\ N” là ký tự ‘dòng mới’. 
  • Dấu chấm phẩy kết thúc câu lệnh 

Dây 

Trong C một chuỗi là tập hợp các kỹ tự được kết thúc bằng một kỹ tự rỗng. Do vậy nó sẽ liên quan đến phần cứng máy tính, số và ký tự cơ bản.

Trong C, một chuỗi chỉ là một mảng và mảng này được lưu trữ tại một địa chỉ trong bộ nhớ. Khi bạn đang làm việc với các chuỗi trong C, bạn cần truy cập địa chỉ bắt đầu và sau đó đếm trên tất cả các ký tự đến khi bạn tìm thấy giá trị rỗng. Trong C, bạn sẽ thường xuyên cần truy cập dữ liệu được lưu trữ tại một địa chỉ trong bộ nhớ. Để làm được điều này, bạn cần hiểu các con trỏ. 

Con trỏ 

Một biến con trỏ trong C là một định danh như aPtr, nó lưu trữ địa chỉ của một phần dữ liệu. Địa chỉ đơn giản là một con số. Con số đó chỉ ra một vị trí trong bộ nhớ. Ví dụ: chuỗi “Hello world” có thể được lưu trữ tại vị trí bộ nhớ 2686746. Lập trình viên có thể tạo dữ liệu đó dưới dạng một mảng các ký tự như sau: 

char str1[] = "Hello world";

Khai báo trên cho thấy biến có tên str1 là một mảng của kiểu dữ liệu char. Các ký tự của chuỗi “Hello world” được đặt vào mảng đó và chúng được lưu trữ tại một địa chỉ trong bộ nhớ. Nếu muốn một tham chiếu đến địa chỉ đó thì cần lưu trữ nó trong một biến con trỏ. Một biến con trỏ được khai báo bằng cách sử dụng ‘dấu sao’ hoặc dấu hoa thị:

char *aPtr;

Bạn có thể lưu trữ địa chỉ của str1 trong biến con trỏ aPtr như sau:

aPtr = str1;

Con trỏ là một trong những thứ khó thành thạo nhất trong C. Trong nhiều ngôn ngữ như Java, C # và Python, bạn sẽ không cần sử dụng đến con trỏ. Các ngôn ngữ đó ẩn con trỏ khỏi lập trình viên. 

Các con trỏ cung cấp cho một lập trình viên C. Có kinh nghiệm khả năng truy cập bộ nhớ rất nhanh để đạt hiệu quả cao. Cũng lý giải tại sao nó vẫn được ưa chuộng như một ngôn ngữ lập trình hệ thống. C là một lựa chọn tuyệt vời để viết hệ điều hành và trình điều khiển thiết bị. Hoặc khi lập trình vi điều khiển và thiết bị phần cứng.

Tổng kết

Những thông tin trên được Box.edu chia sẻ đã giúp bạn hiểu Lập trình C là gì? Cũng như đặc điểm, chức năng của nó một cách cụ thể nhất. Chúng đều là những kiến thức cần thiết để học về ngôn ngữ lập trình C.

5/5 - (20 bình chọn)
Xin chào các bạn! Mình là Hà Nguyên Phương Hiện đang là tác giả của Box.edu.vn website nổi tiếng chuyên review, đánh giá, giới thiệu các khóa học hay nhất hiện nay.