1 / 35

C3: BiỂU THỨC (Expression)

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:

phuoc
Download Presentation

C3: BiỂU THỨC (Expression)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  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?

  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ử &, *

  4. 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

  5. 2.1 Toán tử gán (tt) Ví dụ: a = b; Gán giá trị đang chứa trong biến bcho biến a. 3 3 5 5 int x=3; int y=x; x=5; cout<<x<<endl<<y; 3 5 Chú ý Sự thay đổi của b sau phép gán sẽ không ảnh hưởng đến giá trị của a. Kết quả? 5 3 5 3

  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ệ 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

  7. 2.2 Các toán tử gán phức hợp (+=, -=, *=, /=, %=) a += k; tức a = a+k;a -= k;tứca = a - k; a /= k; tứca = a /k;c *= k; tức c = c*k; e %= k;tứce = e %k; Với k là một hằng/ biến/ biểu thức int x=3,y=8,z=20; x+=15; x-=y; z/=y; x*=y+1; z%=y-4; x=3+15=18 x=18-8=10 z=20/8=2 x=10*(8+1)=90 z=2%(8-4)=2

  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ị.   a++; a+=1; a=a+1; a--; a-=1; a=a-1;

  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. 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; Ví dụ: int x=3,y,z=5; y=x++; z+=y++; x=4;y=4; y=3; x=4; y=5;z=z+y=5+5=10 z=z+y=5+3=8; y=4;

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

  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  7 8 – 3  5 3 * 4  12 8 / 2  4 9 % 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

  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)

  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

  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=1*100+1*66 = 166 x=?

  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à 0 0 && 1 là 0 0 && 0 là 0 1 || 1 là 1 1 || 0 là 1 0 || 1 là 1 0 || 0 là 0

  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

  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_logiclà đúng: trả về Giá_trị1. Nếu Biểu_thức_logiclà sai: trả về Giá_trị2. Đúng Biểu_thức_logic ? Giá_trị1 : Giá_trị2 ; Sai

  18. Toán tử điều kiện ( ? ) • Xét ví dụ: 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. 7==5 ? 4 : 3 7==5+2 ? 4 : 3 5>3 ? a : b a>b ? a : b

  19. 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;

  20. 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; }

  21. 2.7 Toán tử sizeof • Trả 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.

  22. Kích thước một số kiểu: 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) = 2 b=sizeof(double) = 8 c=sizeof(double) = 8 a=sizeof(char) = 1

  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

  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.

  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= 00000001 105 | 7 = 127//01101001 | 0000 0111= 01101111 0x60 = 0x96 /* 0110 1001 = 1001 0110 */

  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;

  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

  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>

  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 Chuyển kiểu tường minh (các toán tử kiểu là đơn hạng)

  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)

  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 Ta thực hiện theo cách 1 hay cách 2?

  32. Thứ tự …

  33. 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;

  34. 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

  35. KẾT THÚC CHƯƠNG 3

More Related