Lập trình máy tính - Ký tự

Nếu làm việc với các con số trong lập trình máy tính đã dễ dàng thì làm việc với các ký tự còn dễ dàng hơn. Các ký tự là các bảng chữ cái đơn giản như a, b, c, d ...., A, B, C, D, ....., nhưng có một ngoại lệ. Trong lập trình máy tính, bất kỳ số có một chữ số nào như 0, 1, 2, .... và các ký tự đặc biệt như $,%, +, -..., v.v., cũng được coi là ký tự và để gán chúng trong một kiểu ký tự , bạn chỉ cần đặt chúng vào bên trongsingle quotes. Ví dụ, câu lệnh sau định nghĩa một biến kiểu ký tựch và chúng tôi gán giá trị 'a' cho nó -

char ch = 'a';

Đây, ch là một biến kiểu ký tự có thể chứa một ký tự trong bộ ký tự của triển khai và 'a' được gọi là character literalhoặc một hằng số ký tự. Không chỉ a, b, c, .... mà khi bất kỳ số nào như 1, 2, 3 .... hoặc bất kỳ ký tự đặc biệt nào như !, @, #, #, $, .... được giữ bên trong dấu nháy đơn , thì chúng sẽ được coi là một ký tự theo nghĩa đen và có thể được gán cho một biến kiểu ký tự, vì vậy sau đây là một câu lệnh hợp lệ:

char ch = '1';

Một kiểu dữ liệu ký tự tiêu thụ 8 bit bộ nhớ, có nghĩa là bạn có thể lưu trữ bất kỳ thứ gì trong một ký tự có giá trị ASCII nằm trong khoảng -127 đến 127, vì vậy nó có thể chứa bất kỳ giá trị nào trong số 256 giá trị khác nhau. Kiểu dữ liệu ký tự có thể lưu trữ bất kỳ ký tự nào có sẵn trên bàn phím của bạn bao gồm các ký tự đặc biệt như!, @, #, #, $,%, ^, &, *, (,), _, +, {,}, V.v.

Lưu ý rằng bạn chỉ có thể giữ một bảng chữ cái duy nhất hoặc một số chữ số bên trong dấu nháy đơn và nhiều hơn một bảng chữ cái hoặc chữ số không được phép bên trong dấu nháy đơn. Vì vậy, các câu lệnh sau không hợp lệ trong lập trình C:

char ch1 = 'ab';
char ch2 = '10';

Dưới đây là một ví dụ đơn giản, cho thấy cách xác định, gán và in các ký tự trong ngôn ngữ Lập trình C -

#include <stdio.h>

int main() {
   char  ch1;
   char  ch2;
   char  ch3;
   char  ch4;
   
   ch1 = 'a';      
   ch2 = '1';
   ch3 = '$';
   ch4 = '+';  

   printf( "ch1: %c\n", ch1);
   printf( "ch2: %c\n", ch2);
   printf( "ch3: %c\n", ch3);
   printf( "ch4: %c\n", ch4);
}

Ở đây, chúng tôi đã sử dụng% c để in một kiểu dữ liệu ký tự. Khi chương trình trên được thực thi, nó tạo ra kết quả sau:

ch1: a
ch2: 1
ch3: $
ch4: +

Trình tự thoát

Nhiều ngôn ngữ lập trình hỗ trợ một khái niệm được gọi là Escape Sequence. Khi một ký tự đứng trước dấu gạch chéo ngược (\), nó được gọi là một chuỗi thoát và nó có ý nghĩa đặc biệt đối với trình biên dịch. Ví dụ: \ n trong câu lệnh sau là một ký tự hợp lệ và nó được gọi là một ký tự dòng mới -

char ch = '\n';

Đây, nhân vật nđứng trước dấu gạch chéo ngược (\), nó có ý nghĩa đặc biệt là một dòng mới nhưng hãy nhớ rằng dấu gạch chéo ngược (\) chỉ có ý nghĩa đặc biệt với một vài ký tự. Câu lệnh sau sẽ không truyền đạt bất kỳ ý nghĩa nào trong lập trình C và nó sẽ được coi là một câu lệnh không hợp lệ:

char ch = '\1';

Bảng sau liệt kê các trình tự thoát có sẵn trong ngôn ngữ lập trình C:

Trình tự thoát Sự miêu tả
\ t Chèn một tab trong văn bản tại điểm này.
\ b Chèn một backspace trong văn bản tại thời điểm này.
\ n Chèn một dòng mới trong văn bản tại điểm này.
\ r Chèn một ký tự xuống dòng trong văn bản tại điểm này.
\ f Chèn một nguồn cấp dữ liệu biểu mẫu vào văn bản tại điểm này.
\ ' Chèn một ký tự trích dẫn duy nhất trong văn bản tại thời điểm này.
\ " Chèn một ký tự dấu ngoặc kép trong văn bản tại thời điểm này.
\\ Chèn một ký tự gạch chéo ngược trong văn bản tại thời điểm này.

Ví dụ sau đây cho thấy cách trình biên dịch diễn giải một chuỗi thoát trong một câu lệnh in:

#include <stdio.h>

int main() {
   char  ch1;
   char  ch2;
   char  ch3;
   char  ch4;
   
   ch1 = '\t';      
   ch2 = '\n';

   printf( "Test for tabspace %c and a newline %c will start here", ch1, ch2);
}

Khi chương trình trên được thực thi, nó tạo ra kết quả sau:

Test for tabspace     and a newline 
will start here

Các ký tự trong Java

Sau đây là chương trình tương đương được viết bằng Java. Java xử lý các kiểu dữ liệu ký tự giống như cách chúng ta đã thấy trong lập trình C. Tuy nhiên, Java cung cấp hỗ trợ bổ sung cho thao tác ký tự.

Bạn có thể thử thực hiện chương trình sau để xem kết quả đầu ra phải giống với kết quả được tạo bởi ví dụ C ở trên.

public class DemoJava {
   public static void main(String []args) {
      char  ch1;
      char  ch2;
      char  ch3;
      char  ch4;
   
      ch1 = 'a';      
      ch2 = '1';
      ch3 = '$';
      ch4 = '+';  

      System.out.format( "ch1: %c\n", ch1);
      System.out.format( "ch2: %c\n", ch2);
      System.out.format( "ch3: %c\n", ch3);
      System.out.format( "ch4: %c\n", ch4);
   }
}

Khi chương trình trên được thực thi, nó tạo ra kết quả sau:

ch1:  a
ch2:  1
ch3:  $
ch4:  +

Java cũng hỗ trợ trình tự thoát giống như cách bạn đã sử dụng chúng trong lập trình C.

Các ký tự trong Python

Python không hỗ trợ bất kỳ kiểu dữ liệu ký tự nào nhưng tất cả các ký tự được coi là chuỗi, là một chuỗi ký tự. Chúng ta sẽ nghiên cứu chuỗi trong một chương riêng biệt. Bạn không cần phải có bất kỳ sự sắp xếp đặc biệt nào khi sử dụng một ký tự trong Python.

Sau đây là chương trình tương đương được viết bằng Python:

ch1 = 'a';      
ch2 = '1';
ch3 = '$';
ch4 = '+'; 

print "ch1: ", ch1
print "ch2: ", ch2
print "ch3: ", ch3
print "ch4: ", ch4

Khi chương trình trên được thực thi, nó tạo ra kết quả sau:

ch1:  a
ch2:  1
ch3:  $
ch4:  +

Python hỗ trợ các trình tự thoát theo cách giống như cách bạn đã sử dụng chúng trong lập trình C.