(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Ngôn ngữ lập trình FUZZY: biến String và phép gán dưới khía cạnh ngôn ngữ

Biến String

Kiểu dữ liệu String được thiết kế để tạo thuận lợi cho người lập trình khi xử lý các xâu kí tự. Kiểu String hỗ trợ các toán tử sau:

1. Phép gán (=)

String text;

text = "abc";

Phép gán cũng có thể thực hiện ngay khi khai báo biến

String text = "abc";

2. Phép cộng (+)

Kiểu String trong Fuzzy không chỉ là một đối tượng mà nó được quản lý ở mức chương trình dịch. Chúng ta có thể viết

String text = "abc" + "def";

Điều đó không thể thực hiện được đối với các đối tượng xâu kí tự trong C++ vì không thể cộng hai hằng xâu.

3. Phép gán tự cộng (+=)

String text = "abc";

text += "def";

4. Các phép so sánh bằng nhau (==), khác nhau (!=), lớn hơn (>), nhỏ hơn (<), lớn hơn hoặc bằng (>=), nhỏ hơn hoặc bằng (<=)

String text1 = "abc", text2 = "abcd", msg;

msg = "text1 is ";

if (text1 > text2)

        msg += "greater than";

else if (text1 < text2) 

        msg += "less than";

else
        msg += "equal to";

msg += " text2";

print msg;

Ngoài ra, một biến String có thể nhận giá trị logic, là true nếu không rỗng, là false nếu rỗng

if (text1)

        print text1;

Phép gán dưới khía cạnh ngôn ngữ

Phép gán thông thường được thực hiện như một lệnh, nhưng đôi khi nó có vai trò của một biểu thức

String text1, text2;

text1 = text2 = "abc";

Trong qui tắc của ngôn ngữ lập trình nói chung, phép gán được thực hiện từ bên phải sang. Đầu tiên giá trị “abc” được gán cho biến text2. Phép gán này không chỉ thực hiện lệnh gán mà nó còn phải trả về một giá trị, do đó nó có vai trò của một biểu thức. Sau đó giá trị biểu thức được gán sang biến text1.

Phép gán cũng có thể là một biểu thức điều kiện

if (text1 = text2)

        print text1;

text1 được gán từ text2 và lệnh `print text1;’ chỉ thực hiện nếu text2 không rỗng.

Nếu các toán hạng là các biến cấu trúc do bạn tự định nghĩa thì phép gán mặc định sẽ được thực hiện đầy đủ đối với các biến cùng kiểu. Rõ hơn là, các biến thành phần của các biến cấu trúc sẽ được gán sang nhau đầy đủ, kể cả có biến mảng. Điều đó cũng có nghĩa là nếu bạn có các biến mảng riêng lẻ cùng kiểu và cùng số phần tử thì chúng có thể gán sang nhau được. Ví dụ

struct OBJECT
{
        int m_i;

        String m_string;

        Number m_array[10];
};

OBJECT obj1, obj2;

obj1.m_array[0] = 100;

obj2 = obj1;

print obj2.m_array[0];

OBJECT obj_array1[100], obj_array2[100];

obj_array1[0].m_string = "abc";

obj_array2 = obj_array1;

print obj_array2[0].m_string;

Nếu bạn viết chồng phép gán thì hàm toán tử gán của bạn sẽ được gọi thay cho phép gán mặc định nhưng chương trình dịch sẽ thực hiện rồi trả về đối tượng mà không lấy giá trị trả về từ hàm toán tử. Chính vì vậy chúng ta có thể khai báo hàm toán tử gán có kiểu trả về là void, dù phép gán là một biểu thức.

struct OBJECT
{
        int m_i;

        String m_string;

        Number m_array[10];

        void operator = (OBJECT t)
        {
                m_i = t.m_i; 
        }

        void operator = (int i)
        {
                m_i = i; 
        }
};

OBJECT obj1, obj2;

obj1 = obj2 = 5;

print obj1.m_i;
Advertisements

Gửi phản hồi

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: