Tải bản đầy đủ (.pdf) (46 trang)

Bai03 cac phep toan

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (660.34 KB, 46 trang )

IT001 – NHẬP MƠN LẬP TRÌNH

CÁC PHÉP TOÁN

Giải đáp bài cũ

double vs long double??? #define vs const

double vs long double???
- Phụ thuộc vào trình biên dịch và hệ điều hành.
- Kiểu double là 8 bytes.
- Thông thường hệ điều hành x86 kiểu long double là 8 bytes,

một số hệ điều hành x64 là 16 bytes.
#define vs const
- Sử dụng câu lệnh #define thì khi biên dịch tên hằng sẽ được

thay thế bằng giá trị. → Ko cần xài bộ nhớ để lưu hằng
- const là một biến hằng → Chiếm dung lượng trên bộ nhớ

2

Nội dung

5. Các phép toán
6. Biểu thức
7. Nhập xuất dữ liệu
8. Một số hàm hữu ích
9. Một số ví dụ minh họa

3



5. Các phép toán

1. Toán tử gán
2. Toán tử toán học
3. Toán tử tăng giảm
4. Toán tử phẩy
5. Toán tử toán học và gán
6. Toán tử bit
7. Toán tử điều kiện
8. Toán tử quan hệ
9. Toán tử luận lý
10. Độ ưu tiên các toán tử

4

5.1. Toán tử gán - Assignment operator

int x = 10; Dùng để gán giá trị cho 1 biến

Gán 10 cho biến x

int y = 10; Gán giá trị của y cho biến x
int x = y;

int a, b; a = ?, b = ?
a = 10; a = 10, b = ?
b = 4; a = 10, b = 4
a = b; a = 4, b = 4
b = 7; a = 4, b = 7


int x; x = 5;
int y = 2 + (x = 5); y = 2 + x;

int x = y = z = 5; Gán giá trị 5 cho 3 biến z, y, x

5

5.2. Toán tử toán học - Arithmetic operators

Phép toán Giải thích Ví dụ:
+ Cộng x = 11 + 3
- Trừ x = 11 – 3
* Nhân x = 11 * 3
/ Chia x = 11 / 3.
/ Lấy phần nguyên x = 11 / 3
% Lấy phần dư x = 11 % 3

??? float a = 5 / 2;
Phép / float b = 5 / 2.;
float c = 5. / 2;
Khi nào là phép chia? float d = (float)5/2;

→ Khi 1 trong các đối số là số thực a, b, c, d = ???

Khi nào là phép lấy phần nguyên?

→ Khi các đối số đều là số nguyên

6


5.2. Toán tử toán học - Arithmetic operators

#include <iostream> Vấn đề:
int main(){
1. Phép nhân (tràn kiểu dữ liệu)
int a = 123456; 2. Phép chia (sai logic do sử dụng phép
int b = 654321; lấy phần nguyên)
std::cout< std::cout< std::cout< std::cout< std::cin.get();
return 0; std::cout<<(long long)a*b<<"\n";
} std::cout<<(float)a/b<<"\n";

777777 Kết quả đúng
-530865
-824525248 80779853376
0 0.188678

Kết quả
không như
mong muốn

7

5.3. Toán tử tăng ++, giảm -- int a;
a = a + 1;
Dùng để tăng ++ hoặc giảm –- 1 đơn vị: a += 1;

a++;
Ví dụ:
Để tăng giá trị của biến a lên 1 đơn vị ta có
thể dùng các câu lệnh sau:

Sự khác biệt giữa ++x và x++ ???

int x = 5; 1. ++x →x=6
int y = ++x; 2. y = x →y =6
// x = 6, y = 6

int x = 5; 1. y = x → x = 5, y = 5
int y = x++; 2. x++ → y = 5, x = 6
// y = 5, x = 6

8

5.4. Tốn tử phẩy

• Các biểu thức đặt cách nhau bằng dấu ,

• Các biểu thức con lần lượt được tính từ trái sang phải

• Biểu thức mới nhận được là giá trị của biểu thức bên phải
cùng

• Ví dụ:

int x = 0; 1. ++x →x=1
int y = 2; 2. ++y →y=3

int z = (++x, ++y); 3. z = y →z=3

9

5.5. Toán tử toán học&gán -Compound assignment

Toán tử Ví dụ Giải thích Phép toán
+= x += 5 x=x+5 Cộng
-= x -= 5 x=x-5 Trừ
*= x *= 5 x = x *5 Nhân
/= x /= 5 x = x /5 Chia hay lấy phần nguyên
%= x %= 5 x=x%5 Lấy phần dư
<<= x <<= 5 x = x << 5 Dịch trái
>>= x >>= 5 x = x >> 5 Dịch phải
&= x &= 5 x = x &5 AND
^= x ^= 5 x=x^5 XOR
|= x |= 5 x=x|5 OR

10

5.6. Toán tử bit

p q p&q p^q p|q ~p

(AND) (XOR) (OR) (NOT)

00 0 0 0 1

01 0 1 1 1


11 1 0 1 0

10 0 1 1 0

Toán tử dịch bít sang trái Tốn tử dịch bít sang phải

3 = 0011 12 = 1100
3 << 1 = 0110 = 6 12 >> 1 = 0110 = 6
3 << 2 = 1100 = 12 12 >> 2 = 0011 = 3
3 << 3 = 1000 = 8 12 >> 3 = 0001 = 1

11

5.6. Tốn tử bit

• Ví dụ tốn tử trên bit:

int main(){
int a = 5;// 0000 0000 0000 0101
int b = 6;// 0000 0000 0000 0110
int z1, z2, z3, z4, z5, z6;
z1 = a & b;// 0000 0000 0000 0100
z2 = a | b;// 0000 0000 0000 0111
z3 = a ^ b;// 0000 0000 0000 0011
z4 = ~a;// 1111 1111 1111 1010
z5 = a >> 2;// 0000 0000 0000 0001
z6 = a << 2;// 0000 0000 0001 0100
return 0;

}


12

5.6. Toán tử bit a & 1 →a%2
a & 3 →a%4
Ứng dụng của toán tử bit: a & 7 →a%8

1. Kiểm tra chia hết cho 2 a = 2*21 →a=4
b = 2*22 →b=8
int number = 5; c = 8/21 →c=4
if(number & 1 == true) d = 8/22 →d=2

std::cout<<"So le\n";
else

std::cout<<"So chan\n";

2. Tích và thương cho 2𝑛

int a = 2 << 1;
int b = 2 << 2;
int c = 8 >> 1;
int d = 8 >> 2;

13

5.7. Toán tử điều kiện

Cú pháp: <điều_kiện>?<biểu_thức_1>:<biểu_thức_2>
Ý nghĩa: Nếu <điều_kiện>


đúng thì thực hiện <biểu_thức_1>
ngược lại thì thực hiện <biểu_thức_2>

Ví dụ: Giữa 2 số a,b tìm số nào lớn hơn.

int a = 1;
int b = 2;
int c = (a>b)?a:b;

Ứng dụng: Dùng để định nghĩa khi câu lệnh if khơng thể sử dụng được.
Ví dụ: sử dụng khi định nghĩa hằng
Số sinh viên lớn hơn 50 sinh viên thì số lớp bằng 2, ngược lại là 1.

int so_sinh_vien = 55;
const int so_lop = (so_sinh_vien>50)? 2:1;

14

5.8. Toán tử quan hệ

Toán tử Ký hiệu Ví dụ Giải thích
Lớn hơn > x > y
Nếu x lớn hơn y → true (1)
Nhỏ hơn < x < y Ngược lại → false (0)

Lớn hơn hoặc bằng >= x >= y Nếu x nhỏ hơn y → true (1)
Ngược lại → false (0)
Nhỏ hơn hoặc bằng <= x <= y
Nếu x lớn hơn hoặc bằng y → true (1)

Bằng == x == y Ngược lại → false (0)

Khác != x != y Nếu x nhỏ hơn hoặc bằng y → true (1)
Ngược lại → false (0)

Nếu x bằng y → true (1)
Ngược lại → false (0)

Nếu x khác y → true (1)
Ngược lại → false (0)

15

5.9. Tốn tử luận lý

Tốn tử Ký hiệu Ví dụ Bài tập:
1. (true && true) || false
NOT ! !x 2. (false && true) || true
3. (false && true) || false || true
AND && x && y 4. (5 > 6 || 4 > 3) && (7 > 8)
5. !(7 > 6 || 3 > 4)
OR || x || y
1. true
1 2 || && 2. true
false false false false 3. true
false true true false 4. false
true false true false 5. false
true true true true
16


5.10. Độ ưu tiên toán tử
Precedence of operators

Mức độ Tốn tử Nhóm ưu Mức độ Toán tử Nhóm ưu
1 tiên tiên
2 :: Trái sang phải 5 * / % Trái sang phải
Trái sang phải 6 + - Trái sang phải
3 ++ -- 7 Trái sang phải
4 () Phải sang trá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 || Phải sang trái
new delete
sizeof Trái sang phải 16 = *= /= %= += -= Trái sang phải
(type) >>= <<= &= ^= |=
.* ->*
?:
,

17

5.10. Độ ưu tiên toán tử

Bài tập:
1. x = 3 + 4 + 5;

2. x = y = z;
3. z *= ++y + 5;
4. a || b && c || d;

Bài giải:
1. x = ((3 + 4) + 5);
2. x = (y = z);
3. z *= (++y) + 5;
4. (a || (b && c)) || d;

18

5. Các phép tốn

Bài tập:
Bài 1: Tính

1. (5 > 3 && 4 < 8)
2. (4 > 6 && true)
3. (3 >= 3 || false)
4. (true || false) ? 4 : 5

Bài 2: Tính
1. 7 / 4
2. 14 % 5
3. 3 / 0

19

6. BIỂU THỨC


─ Tạo thành từ các toán tử (Operator) và các toán hạng (Operand).
─ Toán tử tác động lên các giá trị của toán hạng và cho giá trị có

kiểu nhất định.
─ Tốn hạng: hằng, biến, lời gọi hàm...
─ Ví dụ:

─ int a = 2 + 3;
─ int b = a / 5;
─ int c = (a + b) * 5;

─ int d = (x >= 3);

─ (x >= 0) ^ (y < 0) (Biểu thức này kiểm tra gì?)

─ int year = 2000;

int month = 29;
if((year%4!=0)||(year%400!=0))

return 28;

20


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×