Trong bài viết này, chúng ta sẽ tìm hiểu về ngôn ngữ lập trình C, một trong những ngôn ngữ phổ biến nhất và mạnh mẽ nhất hiện nay.
Đối tượng phù hợp:
- Học sinh thi đỗ vào trường đại học, đặc biệt là các môn liên quan đến cấu trúc dữ liệu (cần sử dụng C/C++).
- Học sinh thi đỗ vào trường đại học với môn lập trình C/C++.
- Những người tự học lập trình, yêu thích lập trình mà không có kinh nghiệm trước đó.
- Những ai muốn tham gia phát triển nhúng nhưng yếu kém về ngôn ngữ lập trình.
- Sinh viên thực tập cuối khóa.
1. Hiểu Về Ngôn Ngữ Máy Tính
1.1 Định Nghĩa Ngôn Ngữ Máy Tính
- Ngôn ngữ con người: Là phương tiện giao tiếp giữa con người. Ví dụ, người Việt Nam nói tiếng Việt, còn muốn nói chuyện với người Anh, có thể sử dụng tiếng Việt hoặc tiếng Anh.
- Ngôn ngữ lập trình máy tính: Là cách để con người truyền đạt lệnh cho máy tính, khiến máy thực hiện các chức năng cần thiết.
Ngôn ngữ lập trình có nhiều loại như: C, C++, Java, Go, JavaScript, Python, Scala, v.v.
1.2 Lịch Sử Ngôn Ngữ Máy Tính
- Thế hệ thứ nhất: Ngôn ngữ máy (tương đương thời kỳ đá của con người)
- 1946, máy tính đầu tiên ENAC ra đời, sử dụng thẻ chồi với mã nhị phân. Đây chính là ngôn ngữ máy, khó hiểu đối với con người.
- Thế hệ thứ hai: Ngôn ngữ lắp ráp (tương đương thời kỳ đồng và sắt)
- Sử dụng ký hiệu tắt để biểu diễn các lệnh cơ bản, dễ hiểu hơn so với ngôn ngữ máy.
- Lợi ích: Viết chương trình hiệu quả cao.
- Nhược điểm: Phụ thuộc vào kiến trúc máy tính cụ thể, khó移植.
- Thế hệ thứ ba: Ngôn ngữ cao cấp (tương đương thời kỳ thông tin)
- Tương tự ngôn ngữ hàng ngày, dễ học và sử dụng.
- Không phụ thuộc vào phần cứng máy tính, được biên dịch hoặc giải thích thành ngôn ngữ máy để thực thi.
2. Hiểu Về Ngôn Ngữ C
2.1 Nguồn Gốc C
C được phát triển vào năm 1972 bởi Dennis Ritchie tại Bell Labs, nhằm mục đích viết lại hệ điều hành Unix bằng ngôn ngữ cao cấp hơn so với ngôn ngữ lắp ráp.
2.2 Tại Sao Cần Học C?
- C có tính khả năng di chuyển tốt và đa nền tảng.
- C được sử dụng rộng rãi trong nhiều lĩnh vực như hệ điều hành, hệ thống nhúng, hệ thống phần mềm, mạng, cơ sở dữ liệu, trò chơi, trí tuệ nhân tạo, khoa học và tài chính.
- C cho phép tương tác trực tiếp với phần cứng, quản lý bộ nhớ, và giao tiếp với hệ điều hành.
- Học C giúp dễ dàng chuyển sang các ngôn ngữ khác như C++, C#, Java, PHP, JavaScript, Perl.
- C vẫn là một trong những ngôn ngữ lập trình phổ biến nhất.
2.3 Xếp Hạng Ngôn Ngữ Lập Trình
TIOBE Index là bảng xếp hạng ngôn ngữ lập trình phổ biến hàng tháng dựa trên mức độ sử dụng trên toàn cầu.
2.4 Ý Kiến Người Dùng Về C
Xem thêm tại: NowCoder
2.5 Phiên Bản C
- K&R C: Phiên bản gốc, xuất hiện năm 1978.
- ANSI C (hoặc C89, C90): Chuẩn hóa năm 1989.
- C99: Phát hành năm 1999, bổ sung nhiều tính năng mới.
- C11: Phát hành năm 2011.
- C17: Phát hành năm 2018, chỉ sửa lỗi của C11.
- C23: Dự kiến phát hành năm 2023, cải tiến tính năng an toàn và đáng tin cậy.
3. Viết Chương Trình Đầu Tiên -> Biên Dịch -> Chạy
3.1 Bước 1: Viết Chương Trình HelloWorld
#include <stdio.h>
int main() {
printf("Xin chào, thế giới!!\n");
return 0;
}
3.2 Bước 2: Cài Đặt Và Cấu Hình Biên Dịch Viên
C là ngôn ngữ biên dịch, cần sử dụng trình biên dịch như GCC hoặc MinGW.
3.3 Bước 3: Biên Dịch Và Chạy Chương Trình
> gcc Hello.c
> ./a.out
Xin chào, thế giới!!
Hoặc:
> gcc -o Hello Hello.c
> ./Hello
Xin chào, thế giới!!
4. Sử Dụng IDE
4.1 Công Cụ Phát Triển
- Code::Blocks: Miễn phí, hỗ trợ nhiều ngôn ngữ lập trình.
- Microsoft Visual Studio: Phù hợp với nhiều ngôn ngữ lập trình, mạnh mẽ nhưng kích thước lớn.
- CLion: Từ JetBrains, hỗ trợ C/C++ hiệu quả.
4.2 Cách Sử Dụng CLion
(Mô tả chi tiết về việc tải và sử dụng CLion).
4.3 Cơ Chế Chạy Chương Trình C
- Bước 1: Soạn thảo mã nguồn.
- Bước 2: Biên dịch mã nguồn thành mã máy.
- Bước 3: Liên kết các module mã máy thành một file thực thi.
- Bước 4: Chạy file thực thi.
5. Bình Luận (Comment)
Bình luận là các dòng văn bản giải thích mã nguồn, không ảnh hưởng đến việc thực thi chương trình.
5.1 Loại Bình Luận
- Bình luận một dòng: Sử dụng
//. - Bình luận nhiều dòng: Sử dụng
/* ... */.
6. Phân Tích Chương Trình HelloWorld
6.1 Phong Cách Mã Hóa
- Sử dụng tab để căn lề.
- Thêm khoảng trắng xung quanh các toán tử.
- Dùng phong cách đặt ngoặc nhọn.
6.2 Phân Tích Chi Tiết Mã Nguồn
- Ham main(): Điểm bắt đầu của chương trình.
- Printf(): Hàm in ra màn hình.
- Thu viện chuẩn và file header: Định nghĩa các hàm, hằng số cần thiết.
7. Về Việc Xuất Ra
7.1 Cú Pháp printf()
printf("Chuỗi định dạng", danh_sách_tham_số);
7.2 Các Ký Tự Đặt Biệt
Các ký tự đặt biệt như %d, %f, %c, %s dùng để định dạng kiểu dữ liệu.
7.3 Ví Dụ Sử Dụng printf()
- In số nguyên:
printf("%d", 10); - In số thực:
printf("%f", 3.14); - In ký tự:
printf("%c", 'A'); - In chuỗi:
printf("%s", "Hello"); - In nhiều giá trị:
printf("%d %s", 5, "items");
7.4 Định Dạng Xuất Ra
- Chiều rộng cố định:
printf("%5d", 123); - Hiển thị dấu âm dương:
printf("%+d", 123); - Chiều dài thập phân cố định:
printf("%.2f", 123.456);
8. Bài Tập
Bài Tập 1:
Viết chương trình in ra màn hình "Người dùng đang học C!".
#include <stdio.h>
int main() {
printf("Người dùng đang học C!\n");
return 0;
}
Bài Tập 2:
Viết chương trình in ra màn hình "5 + 3 = 8".
#include <stdio.h>
int main() {
printf("%d + %d = %d\n", 5, 3, 5 + 3);
return 0;
}