Skip to content

📝 Cú pháp cơ bản C++

📖 Giới thiệu

Trong bài học này, chúng ta sẽ tìm hiểu về những quy tắc cú pháp cơ bản nhất của C++. Đây là nền tảng quan trọng giúp bạn viết code chính xác và dễ đọc.

Cú pháp C++ có một số điểm tương đồng với C và Java, nhưng cũng có những đặc trưng riêng. Việc nắm vững các quy tắc cơ bản sẽ giúp bạn tránh được nhiều lỗi thường gặp và phát triển thói quen lập trình tốt ngay từ đầu.

Chúng ta sẽ học về comments, statements, blocks, identifiers và các quy tắc định dạng code để tạo ra những chương trình dễ đọc và dễ bảo trì.

🔧 Cú pháp

Comments (Chú thích)

cpp
// Comment một dòng - dùng để giải thích code ngắn gọn

/*
   Comment nhiều dòng
   Dùng để giải thích phức tạp
   hoặc tạm thời disable code
*/

/**
 * Documentation comment
 * Thường dùng để mô tả hàm, class
 * Có thể được tools tự động xử lý
 */

Statements (Câu lệnh)

cpp
// Mỗi statement kết thúc bằng dấu chấm phẩy
int x = 10;                    // Declaration statement
cout << "Hello" << endl;       // Expression statement  
return 0;                      // Return statement
;                              // Empty statement (hợp lệ)

Blocks và Scope

cpp
{                              // Bắt đầu block
    int x = 10;               // Biến local trong block
    cout << x << endl;
}                             // Kết thúc block - x không tồn tại nữa

// Nested blocks
{
    int a = 1;
    {
        int b = 2;            // b chỉ tồn tại trong block này
        cout << a + b;        // Có thể truy cập a
    }
    // cout << b;             // Lỗi! b không tồn tại
}

Case Sensitivity

cpp
// C++ phân biệt chữ hoa/thường
int myVariable = 10;
int MyVariable = 20;          // Đây là biến khác
int MYVARIABLE = 30;          // Đây cũng là biến khác

🔬 Phân tích & Giải thích chi tiết

Tại sao cần Comments?

1. Giải thích mục đích của code

cpp
// Tính diện tích hình tròn với bán kính r
double area = 3.14159 * r * r;

2. Ghi chú các thuật toán phức tạp

cpp
/*
 * Thuật toán sắp xếp nhanh (Quick Sort)
 * Độ phức tạp: O(n log n) trung bình
 * Worst case: O(n²)
 */

3. TODO và FIXME

cpp
// TODO: Thêm validation cho input
// FIXME: Bug khi x = 0

Quy tắc đặt tên (Identifiers)

Hợp lệ:

cpp
int age;                      // Tên có nghĩa
int student_count;            // Snake_case
int studentCount;             // CamelCase  
int _private;                 // Bắt đầu bằng underscore
int var123;                   // Có chữ số

Không hợp lệ:

cpp
int 123var;                   // Không bắt đầu bằng số
int class;                    // Không dùng keyword
int my-var;                   // Không có dấu gạch ngang
int my var;                   // Không có khoảng trắng

Các Keywords (Từ khóa)

cpp
// Một số keywords thường dùng (không được dùng làm tên biến)
auto    bool    break   case    catch   char    class   const
do      double  else    enum    false   float   for     if
int     long    new     return  short   static  struct  switch  
true    void    while   public  private protected

Whitespace và Formatting

C++ bỏ qua whitespace:

cpp
// Tất cả đều hợp lệ nhưng khó đọc
int x=10;cout<<"Hello"<<endl;return 0;

// Nên viết như này
int x = 10;
cout << "Hello" << endl;
return 0;

Indentation (Thụt lề):

cpp
// Chuẩn: 4 spaces hoặc 1 tab
if (condition) {
    statement1;
    statement2;
    if (nested_condition) {
        nested_statement;
    }
}

💻 Ví dụ minh họa

Chương trình minh họa comments

cpp
#include <iostream>
using namespace std;

/*
 * Chương trình tính toán cơ bản
 * Tác giả: Học viên C++
 * Ngày tạo: [Ngày hiện tại]
 */

int main() {
    // Khai báo và khởi tạo biến
    int a = 10;        // Số thứ nhất
    int b = 5;         // Số thứ hai
    
    /* 
       Thực hiện các phép tính cơ bản
       và hiển thị kết quả
    */
    
    cout << "=== CHƯƠNG TRÌNH TÍNH TOÁN ===" << endl;
    
    // Phép cộng
    cout << a << " + " << b << " = " << (a + b) << endl;
    
    // Phép trừ  
    cout << a << " - " << b << " = " << (a - b) << endl;
    
    // Phép nhân
    cout << a << " * " << b << " = " << (a * b) << endl;
    
    // Phép chia
    cout << a << " / " << b << " = " << (a / b) << endl;
    
    return 0;  // Kết thúc chương trình thành công
}

Kết quả:

=== CHƯƠNG TRÌNH TÍNH TOÁN ===
10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
10 / 5 = 2

Chương trình minh họa blocks và scope

cpp
#include <iostream>
using namespace std;

int main() {
    cout << "=== DEMO BLOCKS VÀ SCOPE ===" << endl;
    
    int outer = 100;           // Biến ở scope ngoài
    cout << "Outer variable: " << outer << endl;
    
    {                          // Block level 1
        int inner1 = 200;      // Biến chỉ tồn tại trong block này
        cout << "Inner1 variable: " << inner1 << endl;
        cout << "Có thể truy cập outer: " << outer << endl;
        
        {                      // Block level 2 (nested)
            int inner2 = 300;
            cout << "Inner2 variable: " << inner2 << endl;
            cout << "Truy cập từ block cha: " << inner1 << endl;
            cout << "Truy cập từ block gốc: " << outer << endl;
        }
        
        // cout << inner2;     // Lỗi! inner2 không tồn tại nữa
        cout << "Sau khi thoát block con" << endl;
    }
    
    // cout << inner1;         // Lỗi! inner1 không tồn tại nữa
    cout << "Quay về scope chính: " << outer << endl;
    
    return 0;
}

Kết quả:

=== DEMO BLOCKS VÀ SCOPE ===
Outer variable: 100
Inner1 variable: 200
Có thể truy cập outer: 100
Inner2 variable: 300
Truy cập từ block cha: 200
Truy cập từ block gốc: 100
Sau khi thoát block con
Quay về scope chính: 100

Chương trình kiểm tra đặt tên

cpp
#include <iostream>
#include <string>
using namespace std;

int main() {
    // Các cách đặt tên hợp lệ
    int studentAge = 18;           // camelCase
    int student_count = 50;        // snake_case
    string firstName = "Nguyen";   // camelCase cho string
    double PI_VALUE = 3.14159;     // UPPER_CASE cho hằng số
    
    cout << "=== THÔNG TIN HỌC SINH ===" << endl;
    cout << "Tuổi học sinh: " << studentAge << endl;
    cout << "Số lượng học sinh: " << student_count << endl;
    cout << "Tên: " << firstName << endl;
    cout << "Giá trị PI: " << PI_VALUE << endl;
    
    // Minh họa case sensitivity
    int myVar = 10;
    int MyVar = 20;
    int MYVAR = 30;
    
    cout << "\n=== CASE SENSITIVITY ===" << endl;
    cout << "myVar = " << myVar << endl;
    cout << "MyVar = " << MyVar << endl;  
    cout << "MYVAR = " << MYVAR << endl;
    
    return 0;
}

🏋️ Thực hành

Bài tập 1: Sửa Comments

Thêm comments phù hợp vào chương trình sau:

cpp
#include <iostream>
using namespace std;

int main() {
    int length = 10;
    int width = 5;
    int area = length * width;
    int perimeter = 2 * (length + width);
    
    cout << "Area: " << area << endl;
    cout << "Perimeter: " << perimeter << endl;
    
    return 0;
}

Bài tập 2: Tìm và sửa lỗi syntax

cpp
#include <iostream>
using namespace std

int main() 
    int x = 10
    int y = 20;
    cout << "Sum: " << x + y << endl
    return 0;

Bài tập 3: Cải thiện formatting

Sắp xếp lại code sau cho dễ đọc:

cpp
#include <iostream>
using namespace std;int main(){int a=10;int b=20;if(a>b){cout<<"a is greater"<<endl;}else{cout<<"b is greater"<<endl;}return 0;}

Bài tập 4: Viết chương trình với nested blocks

Viết chương trình có 3 level blocks, mỗi level khai báo 1 biến và in ra giá trị của tất cả biến có thể truy cập được.

Lời giải chi tiết

Bài tập 1:

cpp
#include <iostream>
using namespace std;

/*
 * Chương trình tính diện tích và chu vi hình chữ nhật
 */

int main() {
    // Khai báo kích thước hình chữ nhật
    int length = 10;           // Chiều dài (cm)
    int width = 5;             // Chiều rộng (cm)
    
    // Tính toán diện tích và chu vi
    int area = length * width;                    // Diện tích = dài * rộng
    int perimeter = 2 * (length + width);         // Chu vi = 2 * (dài + rộng)
    
    // Hiển thị kết quả
    cout << "Area: " << area << endl;             // In diện tích
    cout << "Perimeter: " << perimeter << endl;   // In chu vi
    
    return 0;  // Kết thúc chương trình
}

Bài tập 2:

cpp
#include <iostream>
using namespace std;        // Thiếu dấu ;

int main() {               // Thiếu {
    int x = 10;            // Thiếu dấu ;
    int y = 20;
    cout << "Sum: " << x + y << endl;  // Thiếu dấu ;
    return 0;
}                          // Thiếu }

Bài tập 3:

cpp
#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int b = 20;
    
    if (a > b) {
        cout << "a is greater" << endl;
    } else {
        cout << "b is greater" << endl;
    }
    
    return 0;
}

Bài tập 4:

cpp
#include <iostream>
using namespace std;

int main() {
    int level1 = 1;
    cout << "Level 1 - có thể truy cập: level1=" << level1 << endl;
    
    {
        int level2 = 2;
        cout << "Level 2 - có thể truy cập: level1=" << level1 
             << ", level2=" << level2 << endl;
        
        {
            int level3 = 3;
            cout << "Level 3 - có thể truy cập: level1=" << level1 
                 << ", level2=" << level2 << ", level3=" << level3 << endl;
        }
        
        cout << "Quay về Level 2 - có thể truy cập: level1=" << level1 
             << ", level2=" << level2 << endl;
    }
    
    cout << "Quay về Level 1 - có thể truy cập: level1=" << level1 << endl;
    
    return 0;
}

📋 Tóm tắt

🎯 Những gì đã học

  • Comments: // cho một dòng, /* */ cho nhiều dòng
  • Statements: Mỗi câu lệnh kết thúc bằng dấu ;
  • Blocks: Code được nhóm trong { }, tạo ra scope riêng
  • Identifiers: Quy tắc đặt tên biến, hàm (bắt đầu bằng chữ cái hoặc _)
  • Case Sensitivity: C++ phân biệt chữ hoa/thường

🔧 Best Practices đã học

  • Sử dụng comments để giải thích code
  • Thụt lề code đúng cách (4 spaces hoặc 1 tab)
  • Đặt tên biến có ý nghĩa
  • Sử dụng consistent naming convention
  • Tránh dùng keywords làm tên biến

🚀 Chuẩn bị cho bước tiếp theo

Bài học tiếp theo sẽ tìm hiểu về biến và hằng số trong C++. Đảm bảo bạn đã:

  • [x] Hiểu cách viết comments hợp lý
  • [x] Biết quy tắc kết thúc statements bằng ;
  • [x] Nắm được khái niệm blocks và scope
  • [x] Áp dụng được quy tắc đặt tên identifiers

💡 Lời khuyên

"Code được đọc nhiều hơn là được viết. Hãy viết code như thể người đọc nó là một kẻ có khuynh hướng bạo lực và biết địa chỉ nhà bạn!"


Chuyển sang: Biến và hằng số để học cách khai báo và sử dụng biến trong C++!

Khóa học C++ miễn phí