Yêu cầu mọi thông tin sao chép từ blog này phải được ghi rõ đầy đủ: Thông tin được sao chép từ "http://www.dangngochoangthanh.blogspot.com".

Cool wallpaper http://www.fancymessage.com

EMOJI KEYBOARD PRO http://emojiselector.com

THƯ VIỆN HÌNH ĐỘNG FLASH ANIMATION: http://flashanimationlibrary.blogspot.ru/

Hệ thống học trực tuyến đang được phát triển và sẽ đưa vào sử dụng vào cuối năm nay. Hãy xem qua một số demo của Học Trực Tuyến.


HỌC TRỰC TUYẾN ĐÃ CUNG CẤP PHIÊN BẢN TRUY CẬP QUA MOBILE http://dangngochoangthanh.blogspot.com/?m=1

XEM KÊNH HỌC TRỰC TUYẾN TRÊN YOUTUBE



Search on This Blog

Thursday, September 23, 2010

5.3. Toán tử và Biểu thức

Toán tử là các phép toán được sử dụng trong AS. Các giá trị được sử dụng cho toán tử gọi là toán hạng. Biểu thức   tập hợp các toán tử và toán hạng được sắp xếp theo một trật tự có ý nghĩa.

Toán tử gán dùng để gán giá trị cho một biến. Ví dụ a = 5;
Câu lệnh gán sẽ thực hiện gán giá trị ở bên phải cho biến ở bên trái. Bạn cũng có thể gán giá trị của hai biến cho nhau. Ví dụ a = b;
a = b + 2;
Giá trị của a bằng giá trị của b cộng thêm 2
a = a + 1;
Tăng giá trị của a lên 1
a = b = c = 5;
Gán đồng thời nhiều giá trị. Nó tương ứng với tập các lệnh sau:
c = 5;
b = c;
a = b;


Ngôn ngữ lập trình AS hỗ trợ các toán tử số học sau đây
Toán tử
Ý nghĩa
+
Phép cộng
-
Phép trừ
*
Phép nhân
/
Phép chia (chia nguyên đối với số nguyên)
%
Chia lấy dư (chỉ với số nguyên)

Bạn lưu ý rằng, phép chia có thể thực hiện trên số nguyên hoặc số thực. Nếu thực hiện phép chia trên hai số nguyên thì đây chính là kết quả của phép chia lấy phần nguyên. Còn nếu nó thực hiện trên hai số thực, thì nó là kết quả của phép chia bình thường. Như vậy, theo mặc định, hai số nguyên (hoặc thực) thực hiện phép toán tương ứng thì nó sẽ trả về kết quả nguyên (hoặc thực). Nếu phép toán thực hiện trên một số nguyên và một số thực, nó sẽ tự động chuyển đổi về kiểu cao hơn (thành số thực). Vậy làm thế nào để thực hiện phép chia 3 cho 2, nếu ta muốn nhận được kết quả là 1.5. Ta biết rằng 3 và 2 là hai số nguyên, nếu ta thực hiện phép chia 3/2 thì ta thu được số nguyên – là kết quả của phép chia nguyên 3/2, tức là 1. Muốn thu được kết quả 1.5, bạn cần chuyển đổi 3 và 2 về dạng số thực bằng một trong các cách sau:
·        Khai báo 3 và 2 là các số thực (bằng cách quy định kiểu dữ liệu như a:Number = 3, b:Number = 2 hoặc 3.0, 2.0).
·        Chuyển đổi kiểu dữ liệu (Xem thêm phần toán tử chuyển đổi kiểu dữ liệu).

Toán tử logic
Toán tử
Phép toán
A
b
Kết quả
Toán tử phủ định !
Phép toán một ngôi !a
true
-
false
false
-
true

Toán tử và &&
Phép toán hai ngôi
a&&b
true
true
true
true
false
false
false
true
false
false
false
false

Toán tử hoặc
||
Phép toán hai ngôi
a||b
true
true
true
true
false
true
false
true
true
false
false
false

Các toán tử này được sử dụng đến tính toán trên các số nguyên bằng cách sử dụng các bit.
Toán tử
Tên gọi
Ví dụ
&
Phép “Và” bit
2&3=2
310=112
210=102
Phép “hoặc” bit
2|3=3
210=102
310=112
310=112
^
Phép “hoặc loại” bit
2^3=1
210=102
310=112
110=012
<< 
Dịch trái bit
2<<3=16
2*23=2*8=16
>> 
Dịch phải bit
2>>3=0
2/23=2/8=0
~
Phủ định bit
~2=1
210=102
110=012

Các toán tử và bit, hoăc bit, hoặc loại bit và phủ định bit được tính như sau: chúng ta chuyển đổi các số thập phân sang nhị phân tương ứng, sau đó sử dụng các phép toán tương ứng cho từng bit theo vị trí của nó. Ví dụ như ở trên 210=102, 310=112 và ta sẽ thực hiện các phép toán tương ứng với từng bit. Bit thứ nhất (từ phải sang trái) là 0&1=1, bit thứ hai 1&1=1, như vậy kết quả của phép toán 2&3 là 102 hay 210. Tương tự cho các phép toán còn lại. Ở đây bạn lưu ý rằng phép toán tuyển loại sẽ có chân trị là 1 nếu hai bit tương ứng là khác nhau, nếu giống nhau thì tương ứng là 0(1^1=0^0=0, 1^0=0^1=1).
Các toán tử << và >> sẽ được tính như sau: a<b và a>>b=a/2b.
Toán tử gán hợp nhất
Khi muốn thay đổi giá trị của một biến, chúng ta có thể sử dụng cách viết thông thường, tuy nhiên AS cũng hỗ trợ các toán tử viết tắt.
Toán tử
Ví dụ
Ý nghĩa
Phạm vi
+=
a+=b
a=a+b
Phép toán số học
-=
a-=b
a=a-b
Phép toán số học
*=
a*=b
a=a*b
Phép toán số học
/=
a/=b
a=a/b
Phép toán số học
%=
a%=b
a=a%b
Phép toán số học
&=
a&=b
a=a&b
Phép toán bit
|=
a|=b
a=a|b
Phép toán bit
^=
a^=b
a=a^b
Phép toán bit
>>=
a>>=b
a=a>>b
Phép toán bit
<<=
a<<=b
a=a<
Phép toán bit

 

Một cách viết thu gọn hơn nữa, đó là sử dụng toán tử tăng và giảm. Nếu trong biểu thức a+=b, với b = 1 thì ta có thể viết thành a++. Tương tự, nếu a-=b, b = 1 thì ta có thể viết a--.
Chúng ta cũng lưu ý rằng, toán tử này có chút khác biệt. Nó có thể nằm trước hoặc nằm sau toán hạng. Có nghĩa là có thể có a++ hoặc ++a (tương ứng a-- hoặc --a).
Phép toán
Ý nghĩa
a++;
Thực hiện phép toán trước, sau đó mới thực hiện toán tử
++a;
Thực hiện toán tử trước, sau đó mới thực hiện phép toán
a--;
Tương tự a++;
--a;
Tương tự ++a;

Ví dụ
Cách thực thi
a:int = 1;

b:int = 1;

a+=b++;



a+=++b;
a = 1, b chưa khởi tạo

a = 1, b = 1

Thực hiện phép toán a+=b trước, sau đó mới thực hiện phép toán b++. Tức là a=2, b=2.

Thực hiện phép toán ++b trước, sau đó mới thực hiện phép toán a+=b. Tức là b=3, a=5.

Để thực hiện việc so sánh giá trị của hai biến, biểu thức; ta có thể sử dụng toán tử so sánh. Giá trị của phép toán so sánh trả về kiểu bool.
Toán tử
Tên gọi
Giá trị biểu thức “a Toán tử b”
Đúng
Sai
==
Bằng
Nếu a bằng b
Nếu a khác b
!=
Khác
Nếu a khác b
Nếu a bằng b
> 
Lớn hơn
Nếu a lớn hơn b
Nếu a nhỏ hơn hoặc bằng b
< 
Bé hơn
Nếu a nhỏ hơn b
Nếu a lớn hơn hoặc bằng b
>=
Lớn hơn hoặc bằng
Nếu a lớn hơn hoặc bằng b
Nếu a nhỏ hơn b
<=
Bé hơn hoặc bằng
Nếu a nhỏ hơn hoặc bằng b
Nếu a lớn hơn b

Bạn hãy cẩn thận khi sử dụng toán tử so sánh bằng. Hãy chú ý rằng toán tử so sánh bằng là ==, khác với toán tử gán =.
Toán tử điều kiện có dạng cú pháp như sau:
điều_kiện?kết_quả_1:kết_quả_2;

Kết quả trả về giá trị kết_quả_1 nếu điều_kiện là đúng, ngược lại, nếu điều_kiện là sai, thì trả về giá trị kết_quả_2.
Ví dụ
Kết quả
a:int = 1;
b:int = 2;
c:int;
c = (a>b)?a:b;
trace(c);
2

Toán tử này kí hiệu là dấu phẩy. Nó dùng để phân tách hai hay nhiều biểu thức chứa trong một biểu thức tương ứng.
Ví dụ
Kết quả
a:int;
b:int;
c:int;
c = (a=1, b=2, a+b);
trace(c);
3

Toán tử này dùng để chuyển đổi một biến hay hằng thuộc kiểu dữ liệu này sang kiểu dữ liệu khác. Giả sử bạn có biến int a = 3, int b = 2. Khi thực hiện phép chia để nhận được kết quả thực, bạn chỉ cần viết như sau: (Number)3/2. Bạn phải lưu ý rằng số 3 ở đây đã bị chuyển thành kiểu thực, và việc thực hiện phép chia một số thực cho số nguyên sẽ trả về kiểu thực 1.5. Nếu bạn viết 3/(float)2, kết quả cũng tương tự. Trong C, nếu bạn viết (float)(3/2) thì kết quả lại khác. Sở dĩ như vậy là vì, nó sẽ thực hiện phép chia nguyên 3/2 (kết quả là 1), sau đó nó sẽ chuyển giá trị 1 nguyên này sang 1 thực. Nhưng với AS thì kết quả tương tự hai trường hợp trên.
Cách biểu diễn sự chuyển đổi một biến thuộc kiểu dữ liệu này, sang kiểu khác chỉ có thể thực hiện nếu kiểu của chúng tương đương. Bạn có thể chuyển số thành số (sau này khi học về hướng đối tượng, bạn có thể chuyển giữa các đối tượng tương đương). Bạn không thể chuyển đổi từ số thành xâu, hay ngược lại. Khi chuyển đổi, bạn sử dụng một trong các cú pháp sau: (kiểu_dữ_liệu)biến hoặc (kiểu_dữ_liệu)(biến) hoặc kiểu_dữ_liệu(biến).
Trong toán học, chúng ta biết rằng khi tính giá trị của một biểu thức, thì luôn có sự ưu tiên của các toán tử như: phép nhân thực hiện trước phép cộng, phép chia và nhân thực hiện đồng thời, ưu tiên từ trái sang phải… Trong lập trình C++ cũng vậy, các toán tử cũng có những độ ưu tiên nhất định. Trong một biểu thức phức tạp, bạn nên chú ý đến độ ưu tiên của các toán tử, điều này rất dễ gây ra sai xót. Trong bảng sau đây, chúng tôi xin đưa ra thứ tự ưu tiên của các toán tử trong lập trình AS
Mức ưu tiên
Toán tử
Độ ưu tiên cùng loại
1
::
Trái-sang-phải
2
() [] . -> ++ -- (hậu tố) dynamic_cast static_cast reinterpret_cast const_cast typeid
Trái-sang-phải
3
++ --  (tiền tố) ~ ! sizeof new delete
Phải-sang-trái
* &
+ - (dấu dương âm)
4
(type) (chuyển đổi kiểu)
Phải-sang-trái
5
.* ->*
Trái-sang-phải
6
* / %
Trái-sang-phải
7
+ - (phép toán công, trừ)
Trái-sang-phải
8
<< >>
Trái-sang-phải
9
< > <= >=
Trái-sang-phải
10
== !=
Trái-sang-phải
11
&
Trái-sang-phải
12
^
Trái-sang-phải
13
|
Trái-sang-phải
14
&&
Trái-sang-phải
15
||
Trái-sang-phải
16
?:
Phải-sang-trái
17
= *= /= %= += -= >>= <<= &= ^= |=
Phải-sang-trái
18
,
Trái-sang-phải

Các toán tử được thực hiện theo mức ưu tiên từ trên xuống. Nếu các toán tử cùng mức, nó sẽ được thực hiện theo độ ưu tiên cùng loại.

No comments:

Post a Comment