Giỏ hàng hiện tại chưa có sản phẩm nào!
Giỏ hàng hiện tại chưa có sản phẩm nào!
Mảng ký tự – chuỗi trong lập trình arduino chính là tập hợp các ký tự trong lập trình. Khi cần hiển thị những thông tin cho người dùng biết, chúng ta cần hiển thị các ký tự. Như là ký hiệu độ C, ký hiệu giờ, phút, và giây. Hoặc những thông báo cần hiện lên màn hình LCD. Mà bản chất của chuỗi là mảng các ký tự. Trong một chương trình Arduino có 2 cách để định nghĩa chuỗi, cách thứ nhất là sử dụng mảng ký tự để biểu diễn chuỗi. Cách thứ 2 là sử dụng đối tượng kiểu dữ liệu string.
NỘI DUNG BÀI VIẾT
|
1. CHUỖI KÝ TỰ MỘT CHIỀU
Cú pháp khai báo chuỗi
char <Tên chuỗi>[<Độ dài ký tự>];
char <Tên chuỗi>[] = {‘ký tự thứ 1‘, ‘ký tự thứ 2‘, ‘ký tự thứ 3‘, …} ;
Trong đó:
Ví dụ khai báo:
CHÚ Ý:
Khi khai báo mảng ký tự thì mặc định ký tự cuối cùng của mảng chuỗi sẽ là ký tự NULL (\0). Nếu bạn không khai báo thì mặc định chương trình sẽ tự thêm vào. Do đó, khi bạn khai báo chuỗi có độ dài ký tự là N thì chỉ lưu trữ được N-1 ký tự mà thôi. Mục đích của ký tự NULL là để trình biên dịch biết được điểm kết thúc của mảng chuỗi.
2. MẢNG CHUỖI KÝ TỰ HAI CHIỀU
Khi chúng ta cần thực hiện xử lý với nhiều chuỗi cùng lúc chẳng hạn hiển thị nhiều dòng trên LCD thì bạn cần phải sử dụng mảng chuỗi 2 chiều. Bản chất của mảng chuỗi 2 chiều chính là mảng chuỗi 2 chiều với mỗi phần tử chính là mảng 1 chiều.
Để khai báo một mảng chuỗi 2 chiều:
char* <Tên chuỗi>[] = {“chuỗi thứ 1“, “chuỗi thứ 2“, “chuỗi thứ 3“, …} ;
Ví dụ:
char * Quy[]={ “Quý 1”, “Quý 2”, “Quý 3”, “Quý 4” };
Chỉ cần thêm dấu * sau chữ char và trong dấu ngoặc vuông phía sau Quy[] bạn có thể thiết đặt số lượng phần tử tối đa của mảng chuỗi. Các chuỗi con trong mảng phải được đặt trong cặp nháy kép. Sau khi khai báo các phần tử của chuỗi sẽ được lưu theo cấu trúc như hình bên dưới.
Quy[] |
Quý 1 |
Quý 2 |
Quý 3 |
Quý 4 |
\n |
i |
i=0 |
i=1 |
i=2 |
i=3 |
i=4 |
Khi cần truy xuất đến các phần tử, chúng ta phải thực hiện gọi tên của mảng chuỗi và chỉ số của nó. Chỉ số của phần tử chính là vị trí ô nhớ chứa ký tự trong chuỗi. Ví dụ ta có các dòng lệnh gọi như sau:
3. KIỂU DỮ LIỆU STRING
Trong thư viện của arduino có định nghĩa sẵn đối tượng String. Đối tượng String này có thể làm nhiều việc hơn. Chẳng hạn như cộng chuỗi, tìm kiếm chuỗi, xóa chuỗi,.... Tuy nhiên, bạn cũng sẽ tốn nhiều bộ nhớ hơn, nhưng ngược lại bạn sẽ có nhiều hàm hỗ trợ cho việc xử lý chuỗi của mình. Nhìn về cơ bản thì mảng chuỗi và đối tượng String này giống nhau, chỉ khác nhau ở các hàm mở rộng liên quan và viết hoa chữ cái đầu cho đối tượng String.
3.1 Cách khai báo đối tượng String
Cú pháp:
String <Tên đối tượng>;
String <Tên đối tượng> = “<Giá trị gán cho đối tượng>”;
+ Tên đối tượng: là tên của đối tượng String, tuân theo quy tắc đặt tên.
Ví dụ:
String TayViet = “Trung tam tin hoc”; // Khai báo đối tượng TayViet có chứa dữ liệu là “Trung tam tin hoc”.
Nếu chúng ta không gán giá trị khi vừa khai báo thì có thể thực hiện lệnh gán khi sử dụng.
3.2 Phương thức truy xuất đến đối tượng String
Khi khai báo đối tượng String thì kèm theo đó chúng ta sẽ có một loạt các phương thức (hàm cơ bản) đã được định nghĩa sẵn trong thư viện của đối tượng String. Khi cần sử dụng chúng ta chỉ cần thực hiện đúng cú pháp phương thức (hàm) thì chương trình sẽ thực hiện đúng chức năng yêu cầu.
Cú pháp thực hiện phương thức: <Tên đối tượng>.<Hàm chức năng>
Ví dụ:
String Chuoi = “ Hoc Arduino That De”;
Chuoi.remove(8); // Xóa ký tự từ thứ 8 đến hết => Kết của còn “Hoc Ardu”
Chuoi.remove(3,7); // Xóa ký tự từ 3 đến 7 => Kết quả còn “ Houino That De”
Chuoi.length(); // Tính chiều dài của chuỗi => Kết quả là 19
3.3 Các hàm chức năng của đối tượng String
3.3.1 Hàm charAt()
Cú pháp: charAt(i)
Chức năng: hàm charAt(i) được sử dụng để lấy ký tự thứ i trong chuỗi. Trong đó là chỉ số của ký tự trong chuỗi.
Cú pháp sử dụng: <Tên đối tượng>.charAt(i)
Ví dụ:
String Chuoi = “Tu Hoc Arduino”;
Chuoi.chartAi(4); // Lấy ký tự có số thứ tự thứ 4 của chuỗi ‘o’
3.3.2 Hàm compareTo()
Cú pháp: compareTo(<Tên đối tượng 2>);
Chức năng: hàm compareTo(i) được sử dụng để so sánh 2 chuỗi với nhau, kiểm tra 2 chuỗi có mối quan hệ như thế nào.
Cú pháp sử dụng: <Tên đối tượng 1>.compareTo(<Tên đối tượng 2>);
Kết quả trả về:
>0 nếu chuỗi của Tên đối tượng 1 > chuỗi của tên đối tượng 2.
=0 nếu chuỗi của Tên đối tượng 1 = chuỗi của tên đối tượng 2.
<0 nếu chuỗi của Tên đối tượng 1 < chuỗi của tên đối tượng 2.
Ví dụ:
String chuoi1= “abcd”; String chuoi2= “adef”; if ( (chuoi1).compareTo(chuoi2) > 0) { Serial.println(chuoi1 + “lon hon” + chuoi2); } else if ((chuoi1).compareTo(chuoi2) = = 0) { Serial.println(chuoi1 + “bang nhau” + chuoi2); } else { Serial.println(chuoi1 + “nho hon” + chuoi2); }
3.3.3 Hàm concat()
Cú pháp: <Tên đối tượng>.concat(<Chuỗi 1>, <Chuỗi 2>);
Chức năng: hàm concat() có chức năng nối chuỗi 2 vào sau chuỗi 1.
Sẽ phải khai báo đối tượng nhận để lưu lại kết quả nối của 2 chuỗi.
3.3.4 Hàm equals()
Cú pháp: <Tên đối tượng>.equals(<Tên đối tượng 2>);
Chức năng: Hàm equals() được sử dụng để kiểm tra 2 chuỗi có giống nhau không. Lưu ý trong ngôn ngữ C của Arduino có sự phân biệt chữ in hoa và chữ thường.
Kết quả sẽ trả về true nếu 2 chuỗi giống nhau, ngược lại kết quả là false.
3.3.5 Hàm equalsIgnoreCase()
Cú pháp: <Tên đối tượng>.equalsIgnoreCase(<Tên đối tượng 2>);
Chức năng: Hàm equals() được sử dụng để kiểm tra 2 chuỗi có giống nhau không. Chức năng của hàm này giống hàm equals() nhưng không phân biệt chữ in hoa và chữ thường.
Kết quả sẽ trả về true nếu 2 chuỗi giống nhau, ngược lại kết quả là false.
3.3.6 Hàm length()
Cú pháp: <Tên đối tượng>.length();
Chức năng: Hàm length() có chức năng tính độ dài của chuỗi (không tính ký tự NULL).
Kết quả sẽ trả về là kiểu long.
Ví dụ:
String text = "Trung Tam Tin Hoc Tay Viet"; void setup() { Serial.begin(9600); // Bật Serial ở baudrate 9600 Serial.println(text.length()); // In ra độ dài của chuỗi là 26 } void loop() { }
3.3.7 Hàm remove()
Cú pháp: <Tên đối tượng>.remove(<Vị trí bắt đầu xóa>, <Vị trí kết thúc xóa>);
Chức năng: Hàm remove() có chức năng xóa các ký tự trong chuỗi. Vị trí xóa từ vị trí bắt đầu đến vị trí kết thúc.
Trong một số trường hợp nếu không có vị trí kết thúc thì hàm sẽ xóa từ vị trí bắt đầu đến hết chuỗi.
Ví dụ:
String Chuoi = “ Hoc Arduino That De”;
Chuoi.remove(8); // Xóa ký tự từ thứ 8 đến hết => Kết của còn “Hoc Ardu”
Chuoi.remove(3,7); // Xóa ký tự từ 3 đến 7 => Kết quả còn “ Houino That De”
3.3.8 Hàm toCharArray()
Cú pháp: <Tên đối tượng>.toCharArray(<Tên mảng chuỗi>, <Độ dài mảng>);
Chức năng: Hàm toCharArray() có chức năng tạo một bản copy từ đối tượng String để tạo một mảng chuỗi với số ký tự xác định.
Ví dụ:
String Chuoi = “ Hoc Arduino That De”;
char mang[10];
Chuoi.toCharArray(mang, 10); // Chương trình tạo ra mang[]= “Hoc Arduin”;
3.3.9 Hàm toInt()
Cú pháp: <Tên đối tượng>.toInt();
Chức năng: Hàm toInt() có chức năng chuyển một chuỗi số thành số nguyên dạng long.
Kết quả sẽ trả về số nguyên nếu như chuỗi ban đầu là chuỗi ký tự số, ngược lại nếu không phải là chuỗi ký tự số thì kết quả sẽ trả về 0.
Ví dụ:
String Chuoi = “ 089266588”;
long giatri;
giatri = Chuoi.toInt(); //chuyển ký tự số sang giá trị số và gán cho biến giatri = 89266588
3.3.10 Hàm toLowerCase()
Cú pháp: <Tên đối tượng>.toLowerCase();
Chức năng: Hàm toLowerCase() có chức năng chuyển tất cả các ký tự của chuỗi thành ký tự thường.
Ví dụ:
String Chuoi = “Trung Tam Tin Hoc Tay Viet”;
Chuoi.toLowCase(); //chuyển thành ký tự thường: Chuoi = “trung tam tin hoc tay viet”
3.3.11 Hàm toUpperCase()
Cú pháp: <Tên đối tượng>.toUpperCase();
Chức năng: Hàm toUpperCase() có chức năng chuyển tất cả các ký tự của chuỗi thành ký tự in hoa.
Ví dụ:
String Chuoi = “Trung Tam Tin Hoc Tay Viet”;
Chuoi.toUpperCase(); //chuyển thành ký tự thường: Chuoi = “TRUNG TAM TIN HOC TAY VIET”
3.3.12 Hàm trim()
Cú pháp: <Tên đối tượng>.trim();
Chức năng: Hàm trim() có chức năng xóa hết tất cả các ký tự trống ở đầu và cuối chuỗi.
Ví dụ:
String Chuoi = “ Trung Tam Tin Hoc Tay Viet ”;
Chuoi.toLowCase(); //chuyển thành ký tự thường: Chuoi = “Trung Tam Tin Hoc Tay Viet”
Để lại một bình luận