# TypeScript - Quyết Định

Xin chào, các bạn đang theo đuổi lập trình! Hôm nay, chúng ta sẽ cùng nhau khám phá một trong những khái niệm quan trọng nhất trong lập trình: quyết định. Như một người giáo viên máy tính gần gũi, tôi rất vui mừng được hướng dẫn các bạn trong hành trình này với TypeScript. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - chúng ta sẽ bắt đầu từ những điều cơ bản và cùng nhau tiến hóa.

## Quyết Định Là Gì?

Trước khi chúng ta nhảy vào mã, hãy nói về khái niệm quyết định thực sự có nghĩa là gì trong lập trình. Hãy tưởng tượng bạn đang chơi một trò chơi điện tử. Trò chơi liên tục đưa ra quyết định dựa trên hành động của bạn: nếu bạn nhấn nút nhảy, nhân vật của bạn sẽ nhảy; nếu bạn va vào kẻ thù, bạn sẽ mất một mạng. Đó chính là quyết định trong hành động!

Trong lập trình, quyết định cho phép mã của chúng ta đưa ra các lựa chọn dựa trên một số điều kiện. Nó giống như tặng cho chương trình của bạn một bộ não để suy nghĩ và hành động tương ứng.

## Câu Lệnh if

Định dạng cơ bản nhất của quyết định trong TypeScript (và nhiều ngôn ngữ lập trình khác) là câu lệnh `if`. Hãy xem một ví dụ đơn giản:

```typescript
let playerScore = 75;

if (playerScore > 50) {
    console.log("Bạn đã vượt qua cấp độ!");
}

Trong đoạn mã này, chúng ta đang kiểm tra xem điểm số của người chơi có lớn hơn 50 hay không. Nếu có, chúng ta in ra một thông báo chúc mừng. Hãy phân tích nó:

TypeScript - Decision Making

  1. Chúng ta khai báo một biến playerScore và đặt giá trị là 75.
  2. Từ khóa if bắt đầu quá trình quyết định của chúng ta.
  3. Trong dấu ngoặc đơn, chúng ta có điều kiện: playerScore > 50.
  4. Nếu điều kiện này là đúng, mã trong dấu curly {} sẽ chạy.

Chạy đoạn mã này, bạn sẽ thấy "Bạn đã vượt qua cấp độ!" được in ra. Thử thay đổi playerScore thành 40 và xem会发生什么!

Câu Lệnh if-else

Nhưng nếu chúng ta muốn làm gì đó khi điều kiện không đúng? Đó là lúc câu lệnh else phát huy tác dụng:

let playerLives = 0;

if (playerLives > 0) {
    console.log("Trò chơi đang diễn ra! Bạn vẫn còn sống.");
} else {
    console.log("Trò chơi kết thúc! May mắn lần sau.");
}

Ở đây, chúng ta đang kiểm tra xem người chơi còn mạng hay không. Nếu có, trò chơi tiếp tục. Nếu không, trò chơi kết thúc. Đây là một ví dụ tuyệt vời về cách trò chơi sử dụng quyết định để kiểm soát luồng của trò chơi.

Câu Lệnh else-if

Đôi khi, chúng ta cần kiểm tra nhiều điều kiện. Đó là lúc else if ra vào:

let grade = 85;

if (grade >= 90) {
    console.log("A - Xuất sắc!");
} else if (grade >= 80) {
    console.log("B - Làm tốt!");
} else if (grade >= 70) {
    console.log("C - Không tệ, tiếp tục cải thiện!");
} else {
    console.log("Bạn cần học tập nhiều hơn!");
}

Đoạn mã này kiểm tra điểm số của học sinh và cung cấp phản hồi khác nhau dựa trên điểm số. Nó bắt đầu từ điểm cao nhất và xuống. Khi một điều kiện là đúng, đoạn mã đó sẽ chạy, và các đoạn còn lại sẽ bị bỏ qua.

Câu Lệnh switch

Khi bạn có nhiều điều kiện để kiểm tra, đặc biệt là khi bạn đang so sánh một biến duy nhất với nhiều giá trị, câu lệnh switch có thể sạch sẽ và hiệu quả hơn:

let dayNumber = 3;
let day: string;

switch (dayNumber) {
    case 0:
        day = "Chủ nhật";
        break;
    case 1:
        day = "Thứ hai";
        break;
    case 2:
        day = "Thứ ba";
        break;
    case 3:
        day = "Thứ tư";
        break;
    case 4:
        day = "Thứ năm";
        break;
    case 5:
        day = "Thứ sáu";
        break;
    case 6:
        day = "Thứ bảy";
        break;
    default:
        day = "Ngày không hợp lệ";
}

console.log(`Ngày là ${day}`);

Câu lệnh switch này kiểm tra giá trị của dayNumber và gán tên ngày tương ứng cho biến day. Dấu break rất quan trọng ở đây - nó chỉ cho mã dừng lại khi tìm thấy một khớp.

Operator Điều Kiện (Ternary)

Đối với các quyết định if-else đơn giản, TypeScript cung cấp một cách viết rút gọn gọi là operator điều kiện (ternary). Nó giống như một câu hỏi có hoặc không:

let age = 20;
let canVote = age >= 18 ? "Có" : "Không";

console.log(`Người này có thể bỏ phiếu không? ${canVote}`);

Đoạn mã này kiểm tra xem age có lớn hơn hoặc bằng 18 hay không. Nếu có, canVote sẽ được đặt là "Có"; ngược lại, nó sẽ là "Không". Đây là một cách viết gọn cho các câu lệnh if-else đơn giản.

Quyết Định Đôi

Đôi khi, bạn cần đưa ra quyết định trong quyết định. Điều này được gọi là quyết định đôi:

let isRaining = true;
let hasUmbrella = false;

if (isRaining) {
    if (hasUmbrella) {
        console.log("Bạn có thể ra ngoài với dù của mình!");
    } else {
        console.log("Tốt nhất là ở trong nhà, bạn không có dù.");
    }
} else {
    console.log("Thưởng thức thời tiết đẹp bên ngoài!");
}

Đoạn mã này đầu tiên kiểm tra xem có mưa hay không. Nếu có, nó sau đó kiểm tra xem bạn có dù hay không. Dựa trên các điều kiện này, nó đưa ra lời khuyên khác nhau.

Tóm Tắt Các Phương Pháp Quyết Định

Dưới đây là bảng tóm tắt các phương pháp quyết định mà chúng ta đã xem xét:

Phương Pháp Trường Hợp Sử Dụng Cú Pháp
if Đ điều kiện đơn if (điều kiện) { ... }
if-else Hai kết quả khả năng if (điều kiện) { ... } else { ... }
else-if Nhiều điều kiện if (điều kiện1) { ... } else if (điều kiện2) { ... } else { ... }
switch Nhiều giá trị cho một biến switch (biến) { case giá trị1: ... break; case giá trị2: ... break; default: ... }
Ternary Quyết định đơn giản trong một dòng điều kiện ? giáTrịNêúĐúng : giáTrịNêúSai

Nhớ rằng, chìa khóa để thành thạo quyết định trong lập trình là luyện tập. Thử tạo ra các tình huống riêng của bạn và thực hiện các phương pháp khác nhau. Có thể tạo một trò chơi văn bản đơn giản sử dụng quyết định để phát triển cốt truyện!

Cuối cùng, tôi muốn chia sẻ một chút trí tuệ lập trình: Mã hóa rất giống với nấu ăn. Bạn bắt đầu với các nguyên liệu cơ bản (biến), theo một công thức (thuật toán), và sử dụng các kỹ thuật khác nhau (như quyết định) để tạo ra điều kỳ diệu. Vậy đừng ngại thử nghiệm và vui vẻ với nó!

Tiếp tục mã hóa, giữ vững sự tò mò, và chúc bạn quyết định vui vẻ!

Credits: Image by storyset