35
29/12/21 1 C3: BiỂU THỨC (Expression) 1. Giới thiệu 2. Toán tử 3. Chuyển đổi kiểu dữ liệu 4. Thứ tự ưu tiên của toán tử 5. Vài chương trình mẫu

C3: BiỂU THỨC (Expression)

  • Upload
    phuoc

  • View
    60

  • Download
    0

Embed Size (px)

DESCRIPTION

C3: BiỂU THỨC (Expression). Giới thiệu Toán tử Chuyển đổi kiểu dữ liệu Thứ tự ưu tiên của toán tử Vài chương trình mẫu. 1. Giới thiệu. Toán tử: Dùng thực hiện các phép tính Toán hạng: Là hằng, biến hoặc biểu thức Biểu thức: - PowerPoint PPT Presentation

Citation preview

Page 1: C3: BiỂU THỨC (Expression)

21/04/23 1

C3: BiỂU THỨC (Expression)

1. Giới thiệu

2. Toán tử

3. Chuyển đổi kiểu dữ liệu

4. Thứ tự ưu tiên của toán tử

5. Vài chương trình mẫu

Page 2: C3: BiỂU THỨC (Expression)

21/04/23 2

1. Giới thiệu Toán tử: Dùng thực hiện các phép tính Toán hạng: Là hằng, biến hoặc biểu thức Biểu thức:

Là sự kết hợp giữa các toán tử (operator) và các toán hạng (operand) theo một trật tự nhất định.

Trong trường hợp biểu thức có nhiều toán tử, ta dùng cặp dấu ngoặc đơn () để chỉ định toán tử nào được thực hiện trước.

Ví dụ một biểu thức:

x=2*(y +3) -z

-Toán tử?

-Toán hạng?

Page 3: C3: BiỂU THỨC (Expression)

21/04/23 3

2. Toán tử

2.1 Toán tử gán

2.2 Các toán tử gán phức hợp

2.3 Các toán tử số học ( +, -, *, /, % )

2.4 Các toán tử quan hệ ( ==, !=, >, <, >=, <= => )

2.5 Các toán tử logic ( !, &&, || )

2.6 Toán tử điều kiện ( ? )

2.7 Toán tử sizeof

2.8 Toán tử BITWISE

2.9 Toán tử &, *

Page 4: C3: BiỂU THỨC (Expression)

2.1 Toán tử gán (=)

Ví dụ: int a=5; //gán giá trị nguyên 5 cho biến a

int k=a;

float x= 4.5 + a;

Toán tử gán dùng để gán một giá trị (biểu thức) nào đó cho một biến

Vế trái bắt buộc là biến Vế phải là hằng hoặc biến hoặc một biểu thức Toán tử gán thực hiện từ trái qua phải

21/04/23 4

Page 5: C3: BiỂU THỨC (Expression)

5

2.1 Toán tử gán (tt)

Ví dụ: a = b;

Gán giá trị đang chứa trong biến b cho biến a.

21/04/23

Chú ýSự thay đổi của b sau phép gán sẽ không ảnh hưởng đến giá trị của a.

int x=3;int y=x;x=5;cout<<x<<endl<<y;

Kết quả?

3 35 5355353

Page 6: C3: BiỂU THỨC (Expression)

6

2.1 Toán tử gán (tt)

Ví dụ:

a = 2 + (b = 5); //hợp lệ

Vì vậy biểu thức sau cũng hợp lệ trong C++

a=b=c=5; //hợp lệ

21/04/23

tương đương với

b = 5; a = 2 + b; Từ đó ta có a=7;

gán giá trị 5 cho cả ba biến a, b và c

Page 7: C3: BiỂU THỨC (Expression)

7

2.2 Các toán tử gán phức hợp (+=, -=, *=, /=, %=)

a += k; tức a = a+k;a -= k; tức a = a - k;

a /= k; tức a = a /k;c *= k; tức c = c*k;

e %= k; tức e = e %k;

21/04/23

int x=3,y=8,z=20;x+=15; x-=y;z/=y;x*=y+1; z%=y-4;

x=3+15=18x=18-8=10z=20/8=2x=10*(8+1)=90z=2%(8-4)=2

Với k là một hằng/ biến/ biểu thức

Page 8: C3: BiỂU THỨC (Expression)

8

Tăng và giảm

Toán tử tăng (++) là tăng 1 đơn vị và giảm (--) là giảm đi 1 đơn vị.  

21/04/23

a++;a+=1;a=a+1;

a--;a-=1;a=a-1;

Page 9: C3: BiỂU THỨC (Expression)

9

Tăng và giảm (tt)

Một tính chất của toán tử (++) là sự khác nhau giữa tiền tố a++ và hậu tố ++a;

++a?

giá trị của biến a tăng 1 trước khi tính biểu thức.

21/04/23

Ví dụ:

int x=3,y,z=5;y=++x; z+=++y;

x=4;y=4;

y=5;z=z+y=5+5=10

a++? giá trị của biến a tăng 1 sau khi tính biểu thức

Ví dụ:

int x=3,y,z=5;y=x++; z+=y++;

y=3; x=4;

z=z+y=5+3=8; y=4;

Page 10: C3: BiỂU THỨC (Expression)

10

Tăng và giảm (tt) Hãy chú ý sự khác biệt :

21/04/23

Page 11: C3: BiỂU THỨC (Expression)

21/04/23 11

2.3 Các toán tử số học ( +, -, *, /, % )

5 toán tử số học được hỗ trợ bởi ngôn ngữ là:

+ cộng

- trừ

* nhân

/ chia

% chia lấy phần dư

Ví dụ:

3 + 4 78 – 3 53 * 4 128 / 2 49 % 2 1

Thứ tự thực hiện các toán tử này cũng giống như chúng được thực hiện trong toán học

Page 12: C3: BiỂU THỨC (Expression)

21/04/23 12

Lưu ý: Trừ toán tử %, các toán tử còn lại đều chấp nhận việc

pha trộn toán hạng số nguyên hay số thực Nếu cả 2 toán hạng là số nguyên thì kết quả là số

nguyên Nếu có 1 toán hạng số thực thì kết quả là số thực

8/3 5-1.5

8/3.0 5-1.0

3*15.0 5+6

3*15 5+6.0

=2 (int)

=2.666667 (double)

=45 (double)

=45 (int)

5-1

5-1.0

5+6.0

5+6

=4 (int)

=4 (double)

=11 (double)

=11 (int)

Page 13: C3: BiỂU THỨC (Expression)

21/04/23 13

2.4 Các toán tử quan hệ ( ==, !=, >, <, >=, <= )

Để so sánh hai biểu thức với nhau chúng ta có thể sử dụng các toán tử quan hệ

== Bằng != Khác

> Lớn hơn < Nhỏ hơn

>= Lớn hơn hoặc bằng < = Nhỏ hơn hoặc bằng

Kết quả của phép toán quan hệ là một giá trị logic (hoặc đúng (1) hoặc sai (0))

int a=4,b=6;

int x=(a<=b)*10;

int y=(a!=b)*(2*a==2*b)*10;

int z=(a-b>0)*10;

x=1*10=10 y=1*0*10=0 z=0*10=0

Page 14: C3: BiỂU THỨC (Expression)

21/04/23 14

Lưu ý:

Các ký tự cũng là toán hạng (giá trị tính bằng vị trí trong ASCII)

‘A’ 65, ‘B’ 66 , . … ’Z’ 90;

‘a’ 97, ‘b’ 98, …. ’z’ 122;

int x=(‘A’<‘H’)*100 + (‘c’<100)*‘B’;

x=?x=1*100+1*66 = 166

Page 15: C3: BiỂU THỨC (Expression)

21/04/23 15

2.5 Các toán tử logic ( !, &&, || ).

Toán tử ! là toán tử “phủ định”

Toán tử && là toán tử “và”

Toán tử || là toán tử “hoặc”

!1 là 0 !0 là 1

1 && 1 là 1 1 && 0 là 00 && 1 là 0 0 && 0 là 0

1 || 1 là 1 1 || 0 là 10 || 1 là 1 0 || 0 là 0

Page 16: C3: BiỂU THỨC (Expression)

21/04/23 16

2.5 Các toán tử logic ( !, &&, || ) (tt)

Toán tử &&, || tính toán nhiều biểu thức logic để cho ra một kết quả logic.

Toán tử ! tính toán trên một biểu thức logic.

Có thể kết hợp nhiều toán tử logic cho nhau.

Ví dụ:

int a=4, b=6, kt=‘A’;

int x=((a<b) && (kt<‘H’))*10;

int y=(!(a<b) && (kt<‘H’))*10;

int z=(!(a<b) || (kt<=‘H’))*10;

=>x=10=>y=0

=>z=10

Page 17: C3: BiỂU THỨC (Expression)

21/04/23 17

2.6 Toán_tử_điều_kiện ( ? )

Toán_tử_điều_kiện tính toán một Biểu_thức_logic

Nếu Biểu_thức_logic là đúng: trả về Giá_trị1.

Nếu Biểu_thức_logic là sai: trả về Giá_trị2.

Biểu_thức_logic ? Giá_trị1 : Giá_trị2 ;

Đúng

Sai

Page 18: C3: BiỂU THỨC (Expression)

21/04/23 18

Toán tử điều kiện ( ? ) Xét ví dụ:

7==5 ? 4 : 3

7==5+2 ? 4 : 3

5>3 ? a : b

a>b ? a : b

3 vì 7 không bằng 5.

4 vì 7 bằng 5+2.

a, vì 5 lớn hơn 3.

giá trị lớn hơn, a hoặc b.

Page 19: C3: BiỂU THỨC (Expression)

Chương trình đơn giản

Nhập bán kính r từ bàn phím.

In ra chu vi đường tròn và diện tích hình tròn.

Nếu r <=0 thì chu vi và diện tích bằng 0.

chu vi? diện tích?

chu vi = 2*pi*r; diện tích =pi*r*r;

Page 20: C3: BiỂU THỨC (Expression)

Chương trình đơn giản#include <iostream.h>

#define pi 3.14159

void main()

{ float r, cv, dt;

cout<<“Ban hay nhap ban kinh”; cin>>r;

cv=(r>0? 2*pi*r : 0); //su dung toan tu dieu kieu

dt=(r>0? pi*r*r : 0); //su dung toan tu dieu kien

cout<<“\nChu vi la: ”<<cv<<endl;

cout<<“\nDien tich la: ”<<dt<<endl;

}

Page 21: C3: BiỂU THỨC (Expression)

21

2.7 Toán tử sizeofTrả về số byte của kiểu hay biến nào đó chiếm

giữ.Toán tử này có một đối số bên trong.

Cú pháp: int sizeof( đối số)

Ví dụ:

a = sizeof (char); b=sizeof(int);

a sẽ bằng 1 vì kiểu char có kích cỡ 1 byte.

b sẽ bằng 2 vì kiểu int có kích cỡ 2 byte.

21/04/23

Page 22: C3: BiỂU THỨC (Expression)

22

Kích thước một số kiểu:

21/04/23

char => 1 byte

int, short, unsigned int => 2 byte

long, unsigned long => 4 byte

float => 4 byte

double => 8 byte

a=sizeof(8/3)

b=sizeof(8/3.0)

c=sizeof(3.14*100)

d=sizeof(‘A’)

a=sizeof(int) = 2b=sizeof(double) = 8c=sizeof(double) = 8a=sizeof(char) = 1

Page 23: C3: BiỂU THỨC (Expression)

23

2.8 Toán tử BITWISE (Bit operator) Dùng kiểm tra, gán hay thay đổi các bit thật sự trong 1

byte Trong C++ chỉ sử dụng với dữ liệu và biến int, char

21/04/23

Page 24: C3: BiỂU THỨC (Expression)

24

2.8 Toán tử BITWISE (Bit operator)

Phủ định bit (~): Là toán tử đơn hạng, thực hiện đão bit trong toán hạng của nó.

Và bit (&): So sánh các bit tương ứng của các toán hạng và cho kết quả là 1 khi các bit tương ứng là 1, ngược lại là 0.

Hoặc bit (|): So sánh các bit tương ứng của các toán hạng và cho kết quả là 0 khi các bit tương ứng là 0, ngược lại là 1.

XOR bit (^): So sánh các bit tương ứng của các toán hạng và cho kết quả là 0 khi cả 2 bit là 0 hoặc cả 2 bit là 1, ngược lại là 1.

21/04/23

Page 25: C3: BiỂU THỨC (Expression)

25

2.8 Toán tử BITWISE (Bit operator) Toán tử dịch trái bit và dịch phải bit: Lấy 1 bit làm toán

hạng trái của chúng và 1 số nguyên dương n làm toán hnagj phải Toán tử dịch trái cho kết quả là 1 bit sau khi thực hiện

dịch n bit trong bit của toán hạng trái về bên trái Toán tử dịch phải cho kết quả là 1 bit sau khi thực

hiện dịch n bit trong bit của toán hạng trái về bên phải. Các bit trống sau khi dịch được đặt tới 0

105 & 7 = 1// 01101001 & 0000 0111= 00000001105 | 7 = 127//01101001 | 0000 0111= 011011110x60 = 0x96 /* 0110 1001 = 1001 0110 */

21/04/23

Page 26: C3: BiỂU THỨC (Expression)

26

2.9 Toán tử &, *

Toán tử &: Trả về địa chỉ bộ nhớ của hệ số của nó Cách viết: m=&abc;

• Toán tử *: Trả về giá trị của biến được cấp phát tại địa chỉ đi theo sau nó

• Cách viết: q=*m;

21/04/23

Page 27: C3: BiỂU THỨC (Expression)

27

Ví dụ: Giả sử biến abc ở vị trí bộ nhớ là 200, biến abc

có giá trị là 100

Vậy:

m=&abc;

q=*m;

200

100

21/04/23

Page 28: C3: BiỂU THỨC (Expression)

28

3. Chuyển đổi kiểu

Cho phép bạn chuyển đổi dữ liệu từ kiểu này sang kiểu khác.

Cách cơ bản nhất được thừa kế từ ngôn ngữ C là

(Kiểu_Dữ_liệu) <Biểu_Thức>

21/04/23

Page 29: C3: BiỂU THỨC (Expression)

29

Chuyển kiểu tường minh

int a=(int) 3.14; // giá trị của a là 3

int b=int (3.14); //tương đương (int) 3.14

float c=(float) 3; //giá trị của c là 3.0

21/04/23

Chuyển kiểu tường minh (các toán tử kiểu là đơn hạng)

Page 30: C3: BiỂU THỨC (Expression)

30

Chuyển kiểu không tường minh

Chuyển kiểu không tường minh (các giá trị của các kiểu khác nhau được trộn trong biểu thức)

Việc chuyển đổi kiểu tự động theo quy tắc sau: char-->int-->longint-->float-->double

double d=1; //d nhận giá trị thực 1.0

int i=10.5; //i nhận giá trị nguyên 10

i = i + d; // nghĩa là: i = int(double(i) + d)

21/04/23

Page 31: C3: BiỂU THỨC (Expression)

31

4. Thứ tự ưu tiên của các toán tử

Khi viết các biểu thức phức tạp với nhiều toán tử, phải dựa theo thứ tự ưu tiên các toán tử.

Ví dụ như trong biểu thức sau:

a = 5 + 7 % 2.

cách 1: a = 5 + 7 % 2 = 5+1 = 6cách 2: a = 5 + 7 % 2 = 12%2 = 0

21/04/23

Ta thực hiện theo cách 1 hay cách 2?

Page 32: C3: BiỂU THỨC (Expression)

32

Thứ tự …

21/04/23

Page 33: C3: BiỂU THỨC (Expression)

Ví dụ:

Ví dụ: a = = b + c * d

Thứ tự thực hiện các toán tử như sau: * -> + -> ==

Ví dụ: a == (b + c) * d

Thứ tự thực hiện các toán tử như sau: + -> * -> ==

Ví dụ: a = b += c

Tính phép cộng cho b trước rồi gán b sau khi cộng cho a.

int a=1, b=3, c=5;

a=b+=c;

Ta được a=8; b=8; c=5;

21/04/23 33

Page 34: C3: BiỂU THỨC (Expression)

TỔNG KẾT CHƯƠNG 3 Biểu thức Các phép toán:

=+, -, *, / ,%++, --, +=, -=, *=, /=, %=sizeof(kiểu/ biến) toán tử điều kiện ?…

chuyển đổi kiểu thứ tự ưu tiên các phép toán

Page 35: C3: BiỂU THỨC (Expression)

KẾT THÚC CHƯƠNG 3