4.1. Hệ thống từ khóa và ký hiệu
4.1.1. Từ khóa (Keywords)
Là những từ vựng “độc quyền” của ngôn ngữ lập trình. Bạn không được phép dùng các từ này để đặt tên cho biến hay hàm.
Đặc điểm: Trong Visual Studio, từ khóa thường có màu xanh dương.
Ví dụ trong C#:
Khai báo dữ liệu:
int,float,double,string,bool,char.Cấu trúc điều khiển:
if,else,switch,case,for,do,while.Cấu trúc chương trình:
class,namespace,using,static,void.
4.1.2. Ký hiệu (Symbols)
Là các dấu câu giúp trình biên dịch hiểu cấu trúc câu lệnh.
Chấm phẩy
;: Dấu hiệu kết thúc một câu lệnh (giống dấu chấm câu). Thiếu cái này là lỗi phổ biến nhất.Ngoặc nhọn
{ }: Đánh dấu điểm bắt đầu và kết thúc của một khối lệnh (một hàm, một vòng lặp…).Ngoặc tròn
( ): Dùng cho tham số của hàm hoặc gom nhóm biểu thức toán học.Dấu chấm
.: Dùng để truy cập vào thành phần con (Ví dụ:Console.WriteLine– vàoConsolerồi gọi lệnhWriteLine).
4.2. Khái niệm về Biến (Variable)
4.2.1. Biến là gì?
Hãy tưởng tượng bộ nhớ máy tính (RAM) giống như một cái nhà kho khổng lồ chứa hàng ngàn cái thùng các tông.
Biến (Variable): Chính là một cái thùng trong nhà kho đó.
Tên biến: Là cái nhãn dán bên ngoài thùng (ví dụ: “Tuoi”, “HoTen”) để ta tìm lại được nó.
Giá trị: Là đồ vật ta bỏ vào trong thùng (ví dụ: con số 20, chữ “Nguyen Van A”).
Kiểu dữ liệu: Là quy định cái thùng đó chỉ được chứa loại đồ gì (Thùng đựng nước thì không được đựng giấy, thùng đựng số thì không được đựng chữ).
4.2.2. Khai báo và Gán giá trị
Trong C#, muốn dùng một cái thùng (biến), bạn phải “xin” máy tính tạo ra nó trước.
Cú pháp:
Kiểu_dữ_liệu Tên_biến;Ví dụ:
C#int soLuong; // Khai báo biến tên là 'soLuong', kiểu số nguyên string tenKhachHang; // Khai báo biến tên là 'tenKhachHang', kiểu chuỗi soLuong = 5; // Gán giá trị 5 vào biến tenKhachHang = "Minh Tuấn"; // Gán chữ "Minh Tuấn" vào biếnVừa khai báo vừa gán (Khởi tạo):
C#int tuoi = 18; // Tạo biến 'tuoi' và bỏ ngay số 18 vào đó
4.3. Các Kiểu dữ liệu cơ bản (Data Types)
Bộ nhớ máy tính giống như một cái kho. Để lưu trữ hiệu quả, ta cần các loại “thùng chứa” khác nhau cho các loại dữ liệu khác nhau.
Tại sao máy tính cần phân biệt kiểu dữ liệu? Vì nó cần biết phải dành bao nhiêu chỗ trong RAM và được phép làm gì với dữ liệu đó (Ví dụ: Số thì được cộng trừ, Chữ thì không).
Ví dụ thực tế:
Số sinh viên trong lớp: dùng
int(vì không thể có 30.5 sinh viên).Điểm trung bình: dùng
double(vì có thể là 7.5).Họ tên sinh viên: dùng
string.Sinh viên đã nộp học phí chưa?: dùng
bool.
Dưới đây là giải thích chi tiết nhóm kiểu dữ liệu bạn sẽ dùng trong 99% các trường hợp:
4.3.1. Kiểu Số nguyên (Integer)
Từ khóa:
intĐặc điểm: Lưu các số tròn, không có dấu phẩy (…, -1, 0, 1, 2, 100…).
Khi nào dùng?
Đếm số lượng (số học sinh, số sản phẩm).
Làm chỉ số vòng lặp (i, j).
Lưu ID, mã số (nếu mã số chỉ toàn số).
4.3.2. Kiểu Số thực (Floating-point)
Từ khóa phổ biến:
double(độ chính xác cao, mặc định trong C#),float(nhẹ hơn, độ chính xác thấp hơn).Đặc điểm: Lưu các số có phần thập phân (có dấu chấm).
Khi nào dùng?
Lưu điểm trung bình (8.5), chiều cao (1.75m), cân nặng.
Các phép chia có thể ra số lẻ.
Đặc biệt: Kiểu tiền tệ (
decimal)Trong C#, khi làm việc với TIỀN, ta dùng
decimal. Nó có độ chính xác tuyệt đối, tránh lỗi làm tròn sai số củadouble.Ví dụ:
decimal giaTien = 500000.50m;(chữmở cuối để báo hiệu đây là decimal).
4.3.3. Kiểu Chuỗi văn bản (String)
Từ khóa:
stringĐặc điểm: Lưu một đoạn văn bản, đặt trong dấu nháy kép
" ".Khi nào dùng?
Họ tên, địa chỉ, email, nội dung tin nhắn.
Bất kỳ dữ liệu nào nhập từ bàn phím hoặc TextBox đều mặc định là
string.
4.3.4. Kiểu Logic (Boolean)
Từ khóa:
boolĐặc điểm: Chỉ có 2 giá trị:
true(Đúng) hoặcfalse(Sai).Khi nào dùng?
Lưu trạng thái:
bool daKetHon = true;Kết quả của phép so sánh (đúng hay sai).
4.4. Hằng, Biến, Hàm và Biểu thức
4.4.1. Biến (Variable) – “Cái thùng chứa thay đổi được”
Khái niệm: Là vùng nhớ được đặt tên để lưu trữ giá trị. Giá trị này có thể thay đổi trong quá trình chạy.
Cú pháp:
[Kiểu_dữ_liệu] [Tên_biến];hoặc[Kiểu_dữ_liệu] [Tên_biến] = [Giá_trị];Ví dụ:
C#
int soLuong = 10; string tenSanPham = "Laptop Dell"; // Sau đó có thể thay đổi: soLuong = 15; // Hợp lệ
4.4.2. Hằng (Constant) – “Cái thùng bị khóa”
Khái niệm: Giống như biến, nhưng giá trị không thể thay đổi sau khi đã khởi tạo. Dùng cho các giá trị cố định (PI, Thuế VAT…).
Cú pháp: Thêm từ khóa
constphía trước.Ví dụ:
C#const double PI = 3.14; const int SO_THANG_TRONG_NAM = 12; // PI = 3.15; // LỖI NGAY LẬP TỨC!
4.4.3. Các phép toán (Operators)
Số học:
+(Cộng),-(Trừ),*(Nhân),/(Chia),%(Chia lấy dư).Lưu ý:
5 / 2kết quả là2(chia nguyên).5.0 / 2kết quả là2.5(chia thực).Chia lấy dư:
5 % 2kết quả là1.
Gán:
=(Gán giá trị bên phải cho bên trái).So sánh:
==(Bằng),!=(Khác),>,<,>=,<=.
4.4.4. Biểu thức (Expressions)
Là sự kết hợp giữa biến, hằng và phép toán để tạo ra giá trị mới.
Ví dụ: (a + b) * 2 là biểu thức tính chu vi hình chữ nhật.
4.5. Các lệnh và Khối lệnh
4.5.1. Câu lệnh đơn (Statement)
Là một chỉ thị hoàn chỉnh cho máy tính thực hiện, luôn kết thúc bằng dấu chấm phẩy ;.
Ví dụ:
C#
int a = 5; // Lệnh khai báo và gán Console.Write(a); // Lệnh xuất ra màn hình
4.5.2. Khối lệnh (Block)
Là một nhóm các câu lệnh được bao bởi cặp ngoặc nhọn { }. Máy tính sẽ coi cả khối này như một đơn vị logic.
Thường dùng trong hàm, vòng lặp, câu lệnh điều kiện.
Ví dụ:
C#
{ // Đây là một khối lệnh int x = 10; int y = 20; int tong = x + y; Console.WriteLine(tong); }
4.6. Ép kiểu dữ liệu (Type Casting) – Rất quan trọng
4.6.1. Vấn đề thực tế
Khi bạn dùng lệnh Console.ReadLine() (Căn bản) hoặc lấy dữ liệu từ textBox1.Text (Trực quan), máy tính luôn trả về kết quả là string (Chuỗi).
Nếu bạn nhập số “10” và số “5”, máy tính hiểu đó là chữ “10” và chữ “5”.
“10” + “5” = “105” (Nối chuỗi, không phải cộng số).
Để tính toán được (10 + 5 = 15), bạn bắt buộc phải Ép kiểu từ Chuỗi sang Số.
4.6.2. Chuyển đổi từ Chuỗi sang Số (Parse)
Trong C#, chúng ta dùng phương thức .Parse().
Cú pháp:
C#string duLieuNhap = "10"; int soNguyen = int.Parse(duLieuNhap); // Biến chuỗi "10" thành số 10 double soThuc = double.Parse("8.5"); // Biến chuỗi "8.5" thành số 8.5Ứng dụng vào bài toán nhập liệu:
C#Console.Write("Nhập năm sinh: "); string s = Console.ReadLine(); // Máy tính nhận chuỗi "2000" int namSinh = int.Parse(s); // Ép sang số 2000 int tuoi = 2025 - namSinh; // Bây giờ mới trừ được
4.6.3. Ép kiểu giữa các số (Implicit & Explicit)
Ngầm định (Tự động): Chuyển từ kiểu nhỏ sang kiểu lớn (An toàn).
Ví dụ:
int(nhỏ) ->double(lớn).int a = 5; double b = a;// b sẽ là 5.0. Không mất dữ liệu.
Tường minh (Bắt buộc): Chuyển từ kiểu lớn về kiểu nhỏ (Nguy hiểm, có thể mất dữ liệu).
Ví dụ:
double(lớn, có số lẻ) ->int(nhỏ, chỉ lấy số nguyên).Bạn phải dùng dấu
(int)để ép.double diem = 8.9; int diemTron = (int)diem;// Kết quả diemTron là 8 (Mất phần .9).
4.7. Thực thi chương trình: Nhập – Xử lý – Xuất
Đây là quy trình cơ bản nhất của mọi phần mềm.
4.7.1. Xuất dữ liệu (Output)
Máy tính “nói” chuyện với người dùng.
Console.Write("Nội dung");: In ra và con trỏ đứng yên cuối dòng.Console.WriteLine("Nội dung");: In ra và con trỏ xuống dòng mới.
4.7.2. Nhập dữ liệu (Input)
Máy tính “nghe” người dùng nói.
Console.ReadLine();: Đợi người dùng gõ phím và nhấn Enter. Dữ liệu nhận được luôn là chuỗi (string).
4.8. Tổng kết: Khi nào dùng cái gì? (Ứng dụng thực tế)
| Tình huống thực tế | Kiểu dữ liệu nên dùng | Tại sao? |
| Đếm số lượng (Học sinh, Hàng hóa) | int | Không ai đếm 1.5 học sinh cả. |
| Tính toán khoa học (Diện tích, Vận tốc) | double | Cần độ chính xác thập phân. |
| Tính tiền (Giá bán, Lương, Hóa đơn) | decimal | Tránh sai số khi tính toán tài chính. |
| Lưu thông tin (Tên, Mã số có chữ) | string | Dữ liệu dạng văn bản. |
| Kiểm tra trạng thái (Giới tính, Đã xóa?) | bool | Chỉ cần biết Đúng/Sai hoặc Nam/Nữ. |
| Nhập liệu từ người dùng | string -> Ép kiểu | Luôn nhận vào chuỗi, sau đó ép sang kiểu cần thiết để xử lý. |
BÀI TẬP THỰC HÀNH
Bài 4.1: Sơ yếu lý lịch (Làm quen biến & string)
Yêu cầu: Viết chương trình nhập vào: Họ tên, Lớp. Sau đó in ra màn hình câu chào: “Xin chào [Họ tên], học sinh lớp [Lớp]”.
Mục tiêu: Hiểu cách nhập xuất chuỗi và nối chuỗi (dùng dấu
+hoặc{0}).
Hướng dẫn làm bài
Bước 1: Tạo dự án
Mở Visual Studio.
Tạo dự án Console Application mới.
Đặt tên là
Bai2_SoYeuLyLich.
Bước 2: Viết mã nguồn
Mở tệp Program.cs và viết đoạn mã sau vào trong hàm Main:
using System;
using System.Text;
namespace Bai4_1_SoYeuLyLich
{
class Program
{
static void Main(string[] args)
{
// Thiết lập để console hỗ trợ tiếng Việt
Console.OutputEncoding = Encoding.UTF8;
Console.InputEncoding = Encoding.UTF8;
Console.Write("Nhập họ tên: ");
string hoTen = Console.ReadLine();
Console.Write("Nhập lớp: ");
string lop = Console.ReadLine();
Console.WriteLine("Xin chào " + hoTen + ", học sinh lớp " + lop);
Console.WriteLine("\nNhấn phím bất kỳ để thoát...");
Console.ReadKey();
}
}
}Giải thích:namespace
: đặt tên cho chương trình, bạn có thể đổi tùy ý.
Console.ReadLine(): dùng để nhập chuỗi từ bàn phím.
Console.WriteLine(): in ra màn hình.
Console.ReadKey(): giữ màn hình console lại, tránh việc chương trình chạy xong rồi tự đóng.Bước 3: Chạy và Kiểm thử
Nhấn F5.
Nhập họ tên:
Nguyễn Văn A.Nhập lớp:
10A1.Kết quả: Màn hình hiện dòng chữ “Xin chào Nguyễn Văn A, học sinh lớp 10A1.”
Bài 4.2: Máy tính tuổi (Làm quen int & Parse)
Yêu cầu: Nhập vào Năm sinh. Tính và in ra tuổi hiện tại.
Hướng dẫn:
Dùng
Console.ReadLine()nhận năm sinh (đang là chuỗi).Dùng
int.Parse()ép sang số nguyên.Lấy 2025 trừ đi năm sinh.
Hướng dẫn làm bài:
Bước 1: Tạo dự án
Tạo dự án Console mới tên
Bai2_TinhTuoi.
Bước 2: Viết mã nguồn
C#
static void Main(string[] args)
{
// 1. Khai báo biến
string chuoiNamSinh; // Biến trung gian để nhận dữ liệu nhập
int namSinh; // Biến số để tính toán
int tuoi; // Biến chứa kết quả
// 2. Nhập dữ liệu
Console.Write("Bạn sinh năm bao nhiêu? ");
chuoiNamSinh = Console.ReadLine();
// Lúc này chuoiNamSinh là "2005" (dạng văn bản), chưa trừ được
// 3. Ép kiểu (Chuyển chuỗi sang số)
namSinh = int.Parse(chuoiNamSinh);
// 4. Tính toán
// Giả sử năm hiện tại là 2025
tuoi = 2025 - namSinh;
// 5. In kết quả
Console.WriteLine("Năm nay bạn {0} tuổi.", tuoi);
Console.ReadKey();
}
Bước 3: Chạy và Kiểm thử
Nhấn F5.
Nhập:
2000.Kết quả: “Năm nay bạn 25 tuổi.” (Lấy 2025 – 2000).
Bài 4.3: Tính tiền siêu thị (Làm quen double & decimal)
Yêu cầu: Nhập vào:
Tên sản phẩm (string).
Số lượng (int).
Đơn giá (double hoặc decimal).
Xử lý: Tính
Thành tiền = Số lượng * Đơn giá.Mục tiêu: Thấy được việc kết hợp giữa số nguyên và số thực trong phép nhân.
Bài 4.4: Ép kiểu tường minh (Thử nghiệm mất dữ liệu)
Yêu cầu: Nhập vào một điểm số thực (ví dụ 8.7). Ép kiểu nó sang số nguyên và in ra.
Kết quả mong đợi: Học sinh thấy kết quả là 8 (chứ không phải 9). Hiểu rằng ép kiểu
(int)là cắt bỏ phần thập phân chứ không phải làm tròn.
