Tại sao cần hiểu ASCII

Tại sao cần hiểu ASCII

5

Mã ký tự trong C++: Có thực sự cần biết không?

Nếu chỉ viết:

char c = 'A';

cout << int(c);

thì trong thực tế hằng ngày, câu lệnh này không có nhiều ý nghĩa.

Điều quan trọng không phải là học thuộc câu lệnh này, mà là hiểu khi nào mã ký tự có ích.


Ví dụ 1: Kiểm tra chữ cái

char c = 'A';

if (c >= 'A' && c <= 'Z') {
    cout << "Chữ hoa";
}

Ở đây ta đang sử dụng thứ tự của các ký tự:

A < B < C < ... < Z

Nhờ vậy, ta có thể kiểm tra xem một ký tự có phải là chữ cái in hoa hay không.


Ví dụ 2: Đổi chữ thường thành chữ hoa

char c = 'b';

char hoa = c - 'a' + 'A';

cout << hoa;

Kết quả:

B

Giải thích:

'b' - 'a' = 1
'A' + 1 = 'B'

Nghĩa là chữ b cách chữ a một vị trí, nên chữ hoa tương ứng cũng là B.


Ví dụ 3: Tạo các chữ cái bằng vòng lặp

for (char c = 'A'; c <= 'Z'; c++) {
    cout << c << " ";
}

Kết quả:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Đây là một cách sử dụng thứ tự của các ký tự rất hữu ích.


Ví dụ 4: Kiểm tra ký tự có phải chữ số không

char c = '5';

if (c >= '0' && c <= '9') {
    cout << "Đây là chữ số";
}

Vì các ký tự từ 0 đến 9 nằm liên tiếp trong bảng mã ký tự.


Ví dụ 5: Đếm chữ cái in hoa

string s = "abcABC";

int dem = 0;

for (char c : s) {
    if (c >= 'A' && c <= 'Z') {
        dem++;
    }
}

cout << dem;

Kết quả:

3

Chương trình đếm được 3 chữ cái in hoa:

A B C

Vậy có cần học thuộc mã ASCII không?

Không cần thiết phải học thuộc tất cả các mã như:

A = 65
B = 66
C = 67
...

Điều quan trọng hơn là hiểu:

Mỗi ký tự trong máy tính được lưu bằng một mã số.
Các chữ cái có thứ tự liên tiếp, nên ta có thể dùng phép so sánh và vòng lặp để xử lý chúng.

Điều học sinh nên nhớ

Không cần quá chú trọng vào việc nhớ:

'A' = 65
'a' = 97

Mà nên hiểu cách sử dụng ký tự:

for (char c = 'A'; c <= 'Z'; c++) {
    cout << c;
}

Đây mới là phần quan trọng và có thể áp dụng vào nhiều bài toán.


Kết luận

Lệnh:

cout << int(c);

chủ yếu dùng để quan sát và kiểm tra mã số bên trong của ký tự.

Còn việc hiểu thứ tự các ký tự:

'A' < 'B' < 'C' < ... < 'Z'

mới thực sự hữu ích khi lập trình.

Tại sao cần hiểu ASCII