---
# System prepended metadata

title: PhanDinhKhoi CPP
tags: [CPP]

---

*Người viết: Phan Đình Khôi*

```cpp=
// Day la mot chuong trinh C++ 
#include <iostream>

int main() {
    std::cout << "Hello World";
    return 0;
}
```
# Phần cơ bản

## Biến

Ta sử dụng biến (variables) để lưu trữ dữ liệu tạm thời trong bộ nhớ máy tính.

Để khai báo một biến, ta cần phải chỉ định loại dữ liệu và đặt tên cho nó

```cpp
int so_nguyen; 
double so_thuc;
```

Ta nên khởi tạo một biến trước khi sử dụng, một biến chưa được khởi tạo có giá trị ngẫu nhiên do trình biên dịch cung cấp.

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

int main() {
    int a = 5; // khởi tạo biến a có giá trị là 5
    int b; // biến b chưa được khởi tạo
    cout << a << endl; // 5
    cout << b << endl; // giá trị ngẫu nhiên 
    return 0;
}
```

**Luyện tập:**
- Hoàn thiện chương trình sau (dấu ba chấm) để in ngày tháng năm của hôm nay.
```cpp=
#include <iostream>
using namespace std;

int main() {
    ...
    cout << "Ngay " << ngay << " thang " << thang << " nam " << nam;
    return 0;
}
```
- Hoàn thiện chương trình sau (dấu ba chấm) để hoán đổi giá trị của hai biến `a` và `b`.
```cpp=
#include <iostream>
using namespace std;

int main() {
    int a; cin >> a;
    int b; cin >> b;
    ...
    cout << a << " " << b; 
    // Ví dụ:
    // Nhập: 1 2
    // Kết quả: 2 1
    return 0;
}
```

## Biểu thức toán học

Biểu thức trong C++ là đoạn code tạo ra một giá trị.
Một biểu thức toán học bao gồm một toán tử `+`, `-`, `*`, `/`, `%` và hai toán hạng.
Ta có gán một biến bằng giá trị của một biểu thức. 

```cpp=
int x = 5;
int y = 6;
int z = x + y;
x = 10;
// Gia tri cua z la 16 hay 11 ?

int age = 18;
age = age + 1;
// Gia tri cua age la bao nhieu ?

int x = 100;
int y = 3;
double z = x / y;
// Gia tri cua z la bao nhieu ?
```

Lưu ý toán tử `/`, trả giá trị chia lấy nguyên nếu hai toán hạng có kiểu dữ liệu số nguyên, giá trị chia lấy thực nếu một trong hai toán hạng có kiểu số thực.

Biếu thức toán học trong C++, có ưu tiên nhân chia trước, cộng trừ sau và có thể thêm dấu ngoặc vào.

**Luyện tập:**

- Ta có `x = 20, y = 5, z = 3`, hãy viết chương trình in ra giá trị của phân số $\frac{x}{y + z}$.
- Chỉ sử dụng hai biến (**không khai báo thêm biến mới**), viết chương trình khởi tạo hai biến `a` và `b` và hoán đổi giá trị của `a` và `b`. Sau đó in ra màn hình hai giá trị đó.

## Nhập xuất từ màn hình

Sử dụng từ khóa `cout` và toán tử `<<` xuất kết quả ra màn hình.
Sử dụng từ khóa `cin` và toán tử `>>` nhập dữ liệu từ màn hình.

```cpp=
#include <iostream>

int main() {
    int year;
    cout << "Moi ban nhap nam sinh: ";
    cin >> year;
    cout << "Ban da " << 2024 - year << " tuoi roi";
    return 0;
}
```

**Luyện tập:**
Viết chương trình nhập vào ngày tháng năm sinh, hãy cho biết ngày đó là thứ mấy trong tuần và in ra màn hình (chủ nhật in ra 8).


# Kiểu dữ liệu

## Kiểu số học 
```cpp=
int a = 10;
short b = 20;
long c = 30000;
unsigned int d = 40000;
long long ...
    
float e = 3.14f;
double f = 2.71828;
long double g = 1.6180339887L;
```

## Kiểu boolean

```cpp=
bool ronaldo_goat = true; // 1
bool mesi_goat = false; // 0
bool mu_vo_dich = 1;
```

## Kiểu ký tự và chuỗi ký tự

```cpp=
char ch = 'a';
cout << ch;
cout << "J" << +ch;

char ch = 100;
cout << ch;

string name = "Phan Dinh Khoi";
cout << name << " dep trai";
```

## Kiểu mảng 
```cpp=
int numbers[5] = {1, 2, 3, 4, 5};
cout << numbers[0] << ' ';
cout << numbers[1] << ' '; 
cout << numbers[2] << ' '; 
cout << numbers[3] << ' '; 
cout << numbers[4] << ' ';
cout << numbers[5] << ' '; // ???
```

## Chuyển đổi kiểu dữ liệu (C-Style Casting)
```cpp=
int a = 5;
int b = 2;
double c = (double) a / b;

double pi = 3.14;
cout << (int) pi;
```
# Câu lệnh điều kiện 
## Toán tử so sánh 

`>`, `<`, `==`, `!=`, `<=`, `>=`

## Toán tử logic 

`&&` `and`
`||` `or`
`!` `not`

## Câu lệnh điều kiện

```cpp=
if (dieu_kien) {
    cau_lenh;
}
else {
    ...
}
```

```python=
if dieu_kien:
    cau_lenh
else:
    ...
```

```cpp=
if (...) {
    
} 
else if (...) {
    
}
else if (...) {
    
}
else (...) {
    ...
}
```

