Traffic Count

Bên trong chiếc hộp đen

Máy Tính Thực Sự Làm Gì? - Biến, Dữ Liệu, Quyết Định và Giao Diện trong C#

Nguồn: Starting Out with Visual C#, 5th Edition - Tony Gaddis


1. Máy Tính Và Phần Mềm - Nền Tảng Cần Biết

Trước khi lập trình, người học cần hiểu rõ cách máy tính hoạt động. Phần cứng (Hardware) là tập hợp các thiết bị vật lý: CPU thực thi lệnh, RAM lưu dữ liệu tạm thời trong quá trình chạy, ổ cứng (HDD/SSD) lưu dữ liệu lâu dài. Phần mềm (Software) gồm hệ điều hành (system software) và ứng dụng (application software).

Điểm đặc biệt của máy tính: mọi dữ liệu đều được lưu dưới dạng nhị phân (binary) - chuỗi các bit 0 và 1. Một byte gồm 8 bit, có thể biểu diễn các giá trị từ 0 đến 255. Ký tự được mã hóa theo bảng ASCII/Unicode để ánh xạ số nguyên sang ký tự cụ thể.

Hình 1. Cách CPU, RAM và thiết bị lưu trữ phối hợp

2. Giới Thiệu Visual C# và Giao Diện Đồ Họa

2.1 Visual Studio và Windows Forms

Visual C# là ngôn ngữ lập trình hiện đại do Microsoft phát triển, chạy trên nền tảng .NET Framework. Visual Studio cung cấp môi trường phát triển tích hợp (IDE) với Designer cho phép kéo-thả điều khiển (control) lên form để xây dựng giao diện đồ họa (GUI - Graphical User Interface).

Hình 2. Giao diện Visual Studio

Một ứng dụng Windows Forms cơ bản gồm: Form (cửa sổ chính), Button (nút bấm), TextBox (ô nhập liệu), Label (nhãn hiển thị), PictureBox (hiển thị hình ảnh). Mỗi điều khiển đều có tên (Name property) để code có thể truy cập.

Hình 3. Các đối tượng được sử dụng trong giao diện người dùng đồ họa (GUI).

2.2 Sự Kiện (Event) và Xử Lý Sự Kiện (Event Handler)

C# là ngôn ngữ lập trình hướng sự kiện. Khi người dùng click button, nhập liệu hay đóng form, các sự kiện (event) tương ứng được kích hoạt. Lập trình viên viết các hàm xử lý sự kiện (event handler) để phản hồi.

private void calculateButton_Click(object sender, EventArgs e)

 {

  // Lấy giá trị từ TextBox

  string input = numberTextBox.Text;

 

  // Hiển thị thông báo

  MessageBox.Show("Bạn đã nhập: " + input);

 }

3. Biến Và Kiểu Dữ Liệu

3.1 Khai Báo Biến

Biến (variable) là vùng nhớ được đặt tên dùng để lưu trữ dữ liệu. C# là ngôn ngữ có kiểu tĩnh (statically typed) - mỗi biến phải được khai báo kiểu dữ liệu trước khi sử dụng.

// Khai báo và khởi tạo biến

 int age = 20;               // Số nguyên

 double salary = 15000000.0; // Số thực

 decimal price = 49.99m;     // Số thực chính xác (dùng cho tiền tệ)

 string name = "Nguyen Van A";// Chuỗi ký tự

 bool isStudent = true;      // Giá trị logic

 

 // Hằng số (giá trị không thể thay đổi)

 const double PI = 3.14159;

 const int MAX_ITEMS = 100;

3.2 Nhập Dữ Liệu và Chuyển Đổi Kiểu

Dữ liệu nhập từ TextBox luôn có kiểu string. Để thực hiện tính toán, cần chuyển đổi (parse) sang kiểu số thích hợp. C# cung cấp các phương thức Parse và TryParse để làm điều này.

Hình 4. Minh họa cách thực thi của int.Parse

// Cách 1: Parse - ném ngoại lệ nếu chuỗi không hợp lệ

 int num = int.Parse(inputTextBox.Text);

 double val = double.Parse(inputTextBox.Text);

 

 // Cách 2: TryParse - an toàn hơn, trả về true/false

 int result;

 if (int.TryParse(inputTextBox.Text, out result))

 {

  // Hợp lệ, dùng result

  MessageBox.Show("Giá trị: " + result);

 }

 else

 {

  MessageBox.Show("Dữ liệu nhập không hợp lệ!");

 }

Thực hành tốt: Luôn dùng TryParse thay vì Parse để tránh ngoại lệ khi người dùng nhập sai dữ liệu.

3.3 Định Dạng Chuỗi

Phương thức ToString() với tham số định dạng giúp hiển thị số theo nhiều kiểu: tiền tệ, phần trăm, số thập phân cố định...

Hình 5. Minh họa cách thực thi của ToString

 decimal price = 1500000m;

 double tax = 0.1;

 int score = 95;

 

 // Định dạng tiền tệ

 outputLabel.Text = price.ToString("C");   // $1,500,000.00

 

 // Định dạng phần trăm

 taxLabel.Text = tax.ToString("P");         // 10.00%

 

// Số thập phân cố định 2 chữ số

 scoreLabel.Text = score.ToString("F2");    // 95.00

 

 // Nội suy chuỗi (string interpolation)

 string msg = $"Điểm: {score}, Học phí: {price:C}";

4. Cấu Trúc Điều Khiển - Rẽ Nhánh

4.1 Câu Lệnh if / if-else

Hình 6. Minh họa về cách thức rẽ nhánh

Câu lệnh if kiểm tra một biểu thức logic (boolean). Nếu đúng (true) thì thực thi khối lệnh bên trong, ngược lại có thể xử lý trong khối else.

double score = 75.5;

 if (score >= 90)

 {

  gradeLabel.Text = "Xuất sắc";
}

 else if (score >= 75)

 {

  gradeLabel.Text = "Khá";

 }

 else if (score >= 50)

 {

  gradeLabel.Text = "Trung bình";

 }

 else

 {

  gradeLabel.Text = "Không đạt";

 }

4.2 Toán Tử Logic

C# cung cấp ba toán tử logic chính: && (AND - và), || (OR - hoặc), ! (NOT - phủ định). Các toán tử này cho phép kết hợp nhiều điều kiện.

int age = 20;

 bool hasID = true;

 

 // AND: cả hai điều kiện phải đúng

 if (age >= 18 && hasID)

  MessageBox.Show("Được phép vào");

 

// OR: một trong hai đúng là đủ

if (age < 0 || age > 150)

MessageBox.Show("Tuổi không hợp lệ");

 

// NOT: đảo ngược điều kiện

if (!hasID)

MessageBox.Show("Vui lòng xuất trình CMND/CCCD");

Hình 7. Toán tử logic dạng giao diện đồ họa là Radio và Checkbox

4.3 Câu Lệnh switch

Câu lệnh switch phù hợp khi cần so sánh một biến với nhiều giá trị cụ thể, giúp code rõ ràng hơn chuỗi if-else dài.

Hình 8. Cấu trúc quyết định đa phương án

int dayOfWeek = 3;

 string dayName;

 

switch (dayOfWeek)

{

case 1: dayName = "Thứ Hai"; break;

case 2: dayName = "Thứ Ba"; break;

case 3: dayName = "Thứ Tư"; break;

case 4: dayName = "Thứ Năm"; break;

case 5: dayName = "Thứ Sáu"; break;

case 6: dayName = "Thứ Bảy"; break;

case 7: dayName = "Chủ Nhật"; break;

default: dayName = "Không hợp lệ"; break;

}

dayLabel.Text = dayName;

5. Xử Lý Ngoại Lệ (Exception Handling)

Hình 9.1. Dữ liệu nhập vào gallon không hợp lệ.

Hình 9.2. Lỗi xuất hiện

Ngoại lệ (exception) xảy ra khi chương trình gặp tình huống lỗi không mong muốn trong khi chạy, ví dụ: nhập chữ vào ô cần số, chia cho 0, tệp không tồn tại. C# dùng cấu trúc try-catch-finally để xử lý ngoại lệ một cách kiểm soát.

try

 {

 // Đặt code có thể gây lỗi vào đây

 double a = double.Parse(aTextBox.Text);

 double b = double.Parse(bTextBox.Text);

 double result = a / b;

 resultLabel.Text = result.ToString("F2");

 }

 catch (FormatException)

 {

  MessageBox.Show("Lỗi: Vui lòng nhập số hợp lệ.");

 }

 catch (DivideByZeroException)

 {

  MessageBox.Show("Lỗi: Không thể chia cho 0.");

 }

 catch (Exception ex)

 {

  // Bắt tất cả loại lỗi còn lại

  MessageBox.Show("Lỗi không xác định: " + ex.Message);

 }

 finally

 {

  // Luôn chạy, dù có lỗi hay không

  statusLabel.Text = "Đã xử lý xong.";

 }

6. Tóm Tắt

Bài viết đã tóm tắt về việc xây dựng nền tảng vững chắc cho người học lập trình C#. Từ hiểu nguyên lý hoạt động của máy tính, xây dựng giao diện đồ họa cơ bản, khai báo và thao tác với dữ liệu, đến kiểm soát luồng thực thi bằng các cấu trúc rẽ nhánh - đây là bộ kỹ năng cơ bản không thể thiếu cho bất kỳ lập trình viên C# nào.

Tài liệu tham khảo: Starting Out with Visual C#, 5th Edition, Tony Gaddis - Chương 1–4. Pearson Education (https://www.amazon.com/Starting-out-Visual-C-5th/dp/0135183510).

ThS. Trương Châu Long - Trưởng bộ môn ngành CNTT - HTTT