# 📘 Buổi 2 - Các thành phần cơ bản trong C#
---
## 🔹 1. Biến và kiểu dữ liệu trong C#
### 🔸 Biến (Variables)
- Là vùng bộ nhớ dùng để lưu trữ giá trị có thể thay đổi trong quá trình chạy chương trình.
- Cú pháp khai báo:
```csharp
int age = 20;
string name = "Minh";
```
### 🔸 Kiểu dữ liệu (Data Types)
| Nhóm | Ví dụ | Ghi chú |
|------|-------|---------|
| Số nguyên | `int`, `long`, `byte`, `short` | Dùng để lưu số |
| Số thực | `float`, `double`, `decimal` | Dùng cho số có phần thập phân |
| Ký tự | `char` | Một ký tự đơn |
| Chuỗi | `string` | Dãy ký tự |
| Boolean | `bool` | Giá trị `true` hoặc `false` |
---
## 🔹 2. Ghi chú (Comments) và tài liệu XML
### 🔸 Ghi chú trong mã (Comments)
```csharp
// Đây là ghi chú 1 dòng
/* Đây là
ghi chú nhiều dòng */
```
### 🔸 XML Documentation
Dùng để tạo tài liệu cho class, method, giúp hiển thị khi dùng chuột hover:
```csharp
/// <summary>
/// Hàm tính tổng hai số
/// </summary>
int Sum(int a, int b) => a + b;
```
---
## 🔹 3. Hằng số và literal
### 🔸 Hằng số (Constants)
```csharp
const double Pi = 3.14159;
```
- Không thể thay đổi giá trị sau khi khai báo.
### 🔸 Literal
- Là giá trị cụ thể trong mã: `42`, `"Hello"`, `true`, `'A'`.
---
## 🔹 4. Chuỗi nội suy hằng số (Constant Interpolated Strings)
- Từ C# 10, có thể dùng chuỗi nội suy trong hằng số nếu tất cả phần nội dung đều là hằng:
```csharp
const string Name = "C#";
const string Message = $"Xin chào từ {Name}";
```
---
## 🔹 5. Từ khóa và chuỗi thoát (escape sequences)
### 🔸 Một số từ khóa cơ bản:
```text
int, double, string, bool, if, else, for, while, return, const, static, public, class
```
### 🔸 Escape sequences:
| Ký hiệu | Ý nghĩa |
|--------|---------|
| `
` | Xuống dòng |
| ` ` | Tab |
| `"` | Dấu ngoặc kép |
| `\` | Ký tự `\` |
```csharp
Console.WriteLine("Xin chào\nC#");
```
---
## 🔹 6. Nhập và xuất dữ liệu
### 🔸 Xuất (Output):
```csharp
Console.WriteLine("Hello, World!");
Console.Write("Nhập tên: ");
```
### 🔸 Nhập (Input):
```csharp
string name = Console.ReadLine();
int age = int.Parse(Console.ReadLine());
```
---
## 🔹 7. Các loại câu lệnh
| Loại | Ví dụ | Mục đích |
|------|-------|----------|
| Câu lệnh khai báo | `int x = 5;` | Khai báo biến |
| Câu lệnh gán | `x = 10;` | Gán giá trị |
| Câu lệnh điều kiện | `if`, `else`, `switch` | Điều hướng chương trình |
| Câu lệnh lặp | `for`, `while`, `do while` | Lặp lại đoạn mã |
| Câu lệnh nhảy | `break`, `continue`, `return` | Thoát vòng lặp, trả về giá trị |
---
## 🔹 8. Các loại toán tử trong C#
| Loại | Ví dụ | Ý nghĩa |
|------|-------|--------|
| Toán tử số học | `+`, `-`, `*`, `/`, `%` | Cộng, trừ, nhân, chia, chia dư |
| Toán tử gán | `=`, `+=`, `-=` | Gán và gán mở rộng |
| So sánh | `==`, `!=`, `<`, `>`, `<=`, `>=` | So sánh giá trị |
| Logic | `&&`, `||`, `!` | AND, OR, NOT |
| Bitwise | `&`, `|`, `^`, `~` | Toán tử bit |
| Ternary | `condition ? true : false` | Toán tử điều kiện |
---
## 📌 Ghi chú
- Luôn kiểm tra kiểu dữ liệu khi dùng `Console.ReadLine()` vì dữ liệu nhập là dạng chuỗi.
- Có thể dùng `Convert.ToInt32()` thay cho `int.Parse()` để tránh lỗi khi nhập sai.
---
## 🧠 Bài tập thực hành - Buổi 2: Các thành phần cơ bản trong C#
---
### 🔸 Bài 1: Khai báo và in ra thông tin cá nhân
Viết chương trình khai báo các biến sau:
- Họ tên (chuỗi)
- Tuổi (số nguyên)
- Điểm trung bình (số thực)
- Có phải là sinh viên không (bool)
Sau đó in ra màn hình tất cả thông tin trên theo định dạng đẹp.
---
### 🔸 Bài 2: Tính diện tích hình tròn
Viết chương trình khai báo một hằng số `Pi = 3.14159` và một biến bán kính.
Tính diện tích hình tròn theo công thức: `diện tích = Pi * r * r`.
In kết quả ra màn hình.
---
### 🔸 Bài 3: Sử dụng nhập và xuất
Viết chương trình yêu cầu người dùng nhập vào tên và năm sinh.
Sau đó tính tuổi hiện tại (giả sử năm hiện tại là 2025) và in ra câu:
> Xin chào [Tên], bạn [Tuổi] tuổi.
---
### 🔸 Bài 4: Toán tử và biểu thức
Viết chương trình khai báo 2 số nguyên. Tính và in ra:
- Tổng
- Hiệu
- Tích
- Thương (phần nguyên)
- Phần dư
---
### 🔸 Bài 5: Kiểm tra số chẵn lẻ
Viết chương trình yêu cầu người dùng nhập một số nguyên.
Dùng toán tử chia dư và câu lệnh `if` để kiểm tra và in ra:
- "Đây là số chẵn" nếu số chia hết cho 2.
- "Đây là số lẻ" nếu không chia hết cho 2.
---