Khái niệm Biểu thức là một sự kết hợp giữa các toán tử phép toán và các toán hạng để diễn đạt một công thức toán học nào đó... Điều đó có nghĩa là biểu thức bên phải trở thành giá trị
Trang 1Chương 6 BIỂU THỨC VÀ PHÉP GÁN
1. Biểu thức
2. Biểu thức quan hệ và biểu thức Boolean
3. Câu lệnh
4. Tối ưu hoá tính toán
5. Phép gán
Trang 21 Biểu thức
1 Khái niệm
Biểu thức là một sự kết hợp giữa các toán tử ( phép toán)
và các toán hạng để diễn đạt một công thức toán học nào
đó
2 Các toán tử cơ bản trong C
Các phép toán số học
Giảm một đơn vị
Tăng một đơn vị ++
Chia lấy phần dư
%
Chia lấy phần nguyên /
Nhân
*
Trừ
-Cộng +
Ý nghĩa Toán tử
Trang 31 Biểu thức
Toán tử quan hệ và logic
NOT
!
OR
||
AND
&&
Toán tử logic
Không bằng (Khác)
!=
Bằng
= =
Nhỏ hơn hoặc bằng
<=
Nhỏ hơn
<
Lớn hơn hoặc bằng
>=
Lớn hơn
>
Toán tử quan hệ
Ý nghĩa Toán tử
Trang 41 Biểu thức
Toán tử Bitwise
Dịch trái
<<
Dịch phải
>>
NOT
~
XOR
^
OR
|
AND
&
Ý nghĩa Toán tử
Trang 51 Biểu thức
Toán tử điều kiện ?
bt0 ? bt1 : bt2
Trong đó bt0, bt1,bt2 là các biểu thức và bt0 thường là biểu thức điều kiện
Cú pháp trên tương đương với câu lệnh sau :
if (bt0)
{
bt1 ;
}
else
{
bt2 ;
}
Trang 61 Biểu thức
Toán tử dấu phẩy ‘,’
Toán tử dấu phẩy được sử dụng để kết hợp các biểu thức lại với nhau Bên trái của toán tử dấu phẩy luôn được xem là kiểu void Điều
đó có nghĩa là biểu thức bên phải trở thành giá trị của tổng các biểu thức được phân cách bởi dấu phẩy
Ví dụ: x = (y=3,y+1);
Trước hết gán 3 cho y rồi gán 4 cho x Cặp dấu ngoặc đơn là cần
thiết vì toán tử dấu phẩy có độ ưu tiên thấp hơn toán tử gán
Ngoài ra các toán tử trên, trong C còn có cặp dấu ngoặc đơn là toán
tử để tăng độ ưu tiên của các biểu thức bên trong nó Và các cặp dấu ngoặc vuông thực hiện thao tác truy xuất phần tử trong mảng
Trang 71 Biểu thức
Độ ưu tiên của các toán tử trong C
,
= += -= *= /=
?
||
&&
|
^
&
< <= > >=
<< >>
+
-* / %
! ~ ++
() []
Cao nhất
Thấp nhất
Trang 81 Biểu thức
Cách viết tắc trong C
Tổng quát:
(Biến) = (Biến) (Toán tử) (Biểu thức)
có thể được viết:
(Biến) (Toán tử) = (Biểu thức)
Cách viết này làm việc trên tất cả các toán tử nhị phân (phép toán hai ngôi) của Cíụ Ví dụ: x = x + 10 được viết thành x +=10
Trang 9Một toán tử quan hệ (relational operator) là một toán tử dùng để
so sánh các giá trị của hai toán hạng
Một biểu thức quan hệ (relational expression) là một biểu thức gồm có hai toán hạng và một toán tử quan hệ Giá trị của một biểu thức quan hệ là giá trị luận lý (boolean), ngoại trừ khi Boolean không được định nghĩa trong ngôn ngữ Các biểu thức quan hệ thường được nạp chồng cho một lớp các kiểu
Biểu thức Boolean là biểu thức quy về điều kiện đúng hoặc sai Biểu thức Boolean gồm có các biến Boolean, các hằng Boolean, các
biểu thức quan hệ và các toán tử Boolean
2 Biểu thức quan hệ và biểu thức Boolean
Trang 10Một câu lệnh (statement) xác định một công việc mà chương trình phải thực hiện để xử lý dữ liệu đã được mô tả và khai báo Các câu lệnh được ngăn cách nhau bởi dấu chấm phẩy (;)
Có hai loại câu lệnh : câu lệnh đơn và câu lệnh có cấu trúc
Lệnh đơn là một lệnh không chứa các lệnh khác Các lệnh đơn gồm : lệnh gán, các lệnh nhập xuất dữ liệu,
Lệnh có cấu trúc là lệnh mà trong đó có chứa các lệnh khác Lệnh có cấu trúc bao gồm : lệnh điều kiện, lệnh lặp và lệnh hợp thành
3 Câu lệnh
Trang 11Để tối ưu hoá được các tính toán trong các biểu thức, khi xây dựng chương trình chúng ta cần chú ý các vấn đề sau :
- Không dùng các biểu thức bất biến trong vòng lặp
- Loại bỏ các biểu thức con giống nhau trong vòng lặp
- Hạn chế khởi tạo các đối tượng không thật sự cần thiết
4 Tôi ưu hóa tính toán
Trang 12Gán trị cho biến là sự lưu trữ giá trị dữ liệu vào trong ô nhớ của biến đó
Gán trị là một phép toán cơ bản trong các NNLT Nó dùng để thay đổi sự liên kết của giá trị với ÐTDL Các ngôn ngữ khác nhau thì phép gán cũng khác nhau
Khác nhau về cú pháp Khác nhau về kết quả trả về Khac nhau cách thức tiến hành phép gán
5 Phép gán
Trang 13CÂU HỎI VÀ BÀI TẬP
1 Thế nào là một biểu thức ? Biểu thức có thể được dùng trong các trường hợp nào ?
2 Phân biệt biểu thức quan hệ và biểu thức Boolean
3 Thế nào là một phép gán ? Với các ngôn ngữ lập trình khác nhau, phép gán có những điểm cơ bản khác nhau nào ?
4 Cho các ví dụ về việc dùng các toán tử trong ngôn ngữ lập trình C