Các Phép Toán Quan Hệ Và Logic Các Phép Toán Quan Hệ


{

static void Main(string[] args)

{

int x = 9;


System.Console.WriteLine("Sau khi khoi tao: x ={0}", x); Console.Write("Nhap gia tri moi = ");

x = int.Parse(Console.ReadLine());//chuyển đổi chuỗi nhập từ bàn phím sang kiểu số nguyên

System.Console.WriteLine("Sau khi gan: x ={0}", x); System.Console.ReadLine();

}

}

}

Kết quả chương trình:

Hình 2 1 Kết quả chương trình ví dụ 2 3 Chương trình trên thực hiện khai báo 1

Hình 2.1: Kết quả chương trình ví dụ 2.3

Chương trình trên thực hiện khai báo biến x và khởi gán giá trị ban đầu bằng 9, khi hiển thị x thì x có giá trị là 9, sau đó thực hiện phép gán biến x với giá trị mới là 15 thì biến sẽ có giá trị là 15 và xuất kết quả là 15.

Gán giá trị xác định cho biến

C# đòi hỏi các biến phải được khởi tạo trước khi được sử dụng. Để kiểm tra luật này, thực hiện thay đổi dòng lệnh khởi tạo biến bien1 trong ví dụ 2.3 như sau:

Ví dụ 2.4: Sử dụng một biến không khởi tạo.

namespace Vidu2_4

{

class Program

{

static void Main(string[] args)

{

int x;

System.Console.WriteLine("Sau khi khoi tao: x ={0}", x);

x = int.Parse(Console.ReadLine());//chuyển đổi chuỗi nhập từ bàn phím sang kiểu số nguyên

System.Console.WriteLine("Sau khi gan: x ={0}", x); System.Console.ReadLine();

}

}

}


Khi biên dịch chương trình trên thì trình biên dịch C# sẽ thông báo một lỗi sau: Use of unassigned local variable ‗x

Việc sử dụng biến khi chưa được khởi tạo là không hợp lệ trong C#.Tuy nhiên không nhất thiết lúc nào cũng phải khởi tạo biến nhưng để dùng được thìbắt buộc phải gán cho chúng một giá trị trước khi có một lệnh nào sử dụng đến biến đó.

Ví dụ 2.5: Biến không được khi tạo nhưng sau đó được gán giá trị.

namespace Vidu2_5

{

class Program

{

static void Main(string[] args)

{


x = 9;


x = 15;


}

int x;


System.Console.WriteLine("Sau khi khoi tao: x ={0}", x);


System.Console.WriteLine("Sau khi gan: x ={0}", x); System.Console.ReadLine();

}

}

Tầm hoạt động của biến

Tầm hoạt động của một biến là vùng mã lệnh mà trong đó biến có thể truy xuất.

Nói chung, tầm hoạt động của biến được xác định theo các quy tắc sau:

- Một trường dữ liệu (field), còn được gọi là một biến thành phần của một lớp đối tượng sẽ có tầm hoạt động trong phạm vi lớp chứa nó.

- Một biến cục bộ sẽ có tầm hoạt động trong khối khai báo nó (trong cặp dấu ngoặc

nhọn { })

- Một biến cục bộ được khai báo trong các lệnh lặp for, while, … sẽ có tầm hoạt động trong thân vòng lặp

Lưu ý, trong cùng phạm vi hoạt động, các biến không được phép trùng tên.

2.3.3. Hằng

Để khai báo một hằng sử dụng từ khóa const và cú pháp sau:

const kiểu_dữ_liệu tên_hằng = giá_trị;

Ví dụ 2.6: Sử dụng hằng.

namespace Vidu2_6

{

class Program

{


static void Main(string[] args)

{

const int DoSoi = 100; // Độ C const int DoDong = 0; // Độ C

System.Console.WriteLine( "Do dong cua nuoc {0}", DoDong ); System.Console.WriteLine( "Do soi cua nuoc {0}", DoSoi ); System.Console.ReadLine();

}

}

}

Kết quả chương trình:

Hình 2 2 Kết quả chương trình ví dụ 2 6 Ghi chú Trong chương trình nếu có 2

Hình 2.2: Kết quả chương trình ví dụ 2.6.

Ghi chú: Trong chương trình nếu có một câu lệnh làm thay đổi giá trị của hằng thì trình biên dịch sẽ phát sinh lỗi: “The left-hand side of an assignment must be a variable, property or indexer”

2.4. Biểu thức

2.4.1. Biểu thức

Biểu thức được tạo nên bằng sự kết hợp giữa các toán hạng và toán tử. Toán hạng gồm: hằng, biến, hàm,… Trong các phần tiếp theo dưới đây, sẽ nói đến các toán tử.Ngoài ra, biểu thức được phân loại theo kiểu giá trị ví dụ như nguyên hoặc thực. Trong các mệnh đề logic, biểu thức được phân thành đúng (true) và sai (false).

2.4.2. Lệnh gán và biểu thức

Biểu thức gán là biểu thức có dạng: v=e

Trong đó v là một biến, e là một biểu thức cùng kiểu với v. Giá trị của biểu thức gán là giá trị của e, kiểu của nó là kiểu của v. Nếu đặt dấu; vào sau biểu thức gán sẽ thu được phép toán gán có dạng:

v=e;

Biểu thức gán có thể sử dụng trong các phép toán và các câu lệnh như các biểu thức khác. Ví dụ như khi viết

a=b=5;

thì điều đó có nghĩa là gán giá trị của biểu thức b=5 cho biến a. Kết qủa là b=5 và a=5.


Hoàn toàn tương tự như:

a=b=c=d=6; //gán 6 cho cả a, b, c và d

z=(y=2)*(x=6); //ở đây * là phép toán nhân, gán 2 cho y, 6 cho x và

//nhân hai biểu thức sẽ cho z=12.

2.4.3. Các phép toán số học

Các phép toán hai ngôi số học là:


Phép toán

Ý nghĩa

Ví dụ

+

Phép cộng

a+b

-

Phép trừ

a-b

*

Phép nhân

a*b

/

Phép chia

a/b

Khi chia hai số nguyên thì C# sẽ bỏ phần phân số, hay bỏ phần dư. Khi chia cho số thực có kiểu như float, double, hay decimal

thì kết quả chia đượctrả về là một số thực.

%

Phép lấy phần dư

a%b

(Cho phần dư của phép chia a cho b)

Có thể bạn quan tâm!

Xem toàn bộ 212 trang tài liệu này.

Bảng 2.3: Các phép toán số học hai ngôi

Có phép toán một ngôi (-), ví du -(a+b) sẽ đảo giá trị của phép cộng (a+b). Ví dụ 2.7: Minh họa sử dụng các phép toán các số nguyên, thực...

namespace Vidu2_7

{

class Program

{

static void Main(string[] args)

{

int i1, i2; float f1, f2; double d1, d2;

decimal dec1, dec2; i1 = 17;

i2 = 4; f1 = 17f;

f2 = 4f; d1 = 17;

d2 = 4;

dec1 = 17;

dec2 = 4;

Console.WriteLine("i1 + i2 = t{0}", i1 + i2); Console.WriteLine("i1 - i2 = t{0}", i1 - i2);

Console.WriteLine("i1 * i2 = t{0}", i1 * i2); Console.WriteLine("nCac phep chia:"); Console.WriteLine(" Integer: i1/i2 = t{0}", i1/i2); Console.WriteLine(" Float: f1/f2 = t{0}", f1 / f2); Console.WriteLine(" Double: d1/d2 = t{0}", d1 / d2);

Console.WriteLine(" Decimal: dec1/dec2 = t{0}", dec1 / dec2); Console.WriteLine("nPhep toan lay du: i1%i2 = t{0}", i1%i2); Console.ReadLine();

}

}

}

Kết quả chương trình:

Hình 2 3 Kết quả chương trình ví dụ 2 7 2 4 4 Các phép toán quan hệ và logic 4

Hình 2.3: Kết quả chương trình ví dụ 2.7

2.4.4. Các phép toán quan hệ và logic Các phép toán quan hệ

Những toán tử quan hệ được dùng để so sánh giữa hai giá trị và trả về kết quả là một giá trị logic kiểu bool (true hay false). Các toán tử quan hệ trong ngôn ngữ C# được trình bày trong bảng 2.4. Các toán tử trong bảng được minh họa với hai biến là value1 và value2, trong đó value1 có giá trị là 100 và value2 có giá trị là 50.

Phép toán

Ý nghĩa

Biểu thức so sánh

Kết quả so sánh

==

So sánh bằng

value1 == 100

value1 == 50

true

false

!=

Không bằng

value2 != 100

value2 != 90

false

true

>

Lớn hơn

value1 > value2

value2 > value1

true

false

>=

Lớn hơn hay bằng

value2 >= 50

true

<

Nhỏ hơn

value1 < value2

value2 < value1

false

true


<=

Nhỏ hơn hay bằng

value1 <= value2

false

Bảng 2.4: Các toán tử so sánh (giả sử value1 = 100 và value2 = 50).

Như trong bảng 2.4 trên lưu ý toán tử so sánh bằng (==), toán tử này được ký hiệu bởi hai dấu bằng (=) liền nhau và cùng trên một hàng, không có bất kỳ khoảng trống nào xuất hiện giữa chúng. Trình biên dịch C# xem hai dấu này như một toán tử.

Phép toán logic

Bảng 2.5 liệt kệ ba phép toán logic, bảng này cũng sử dụng hai biến minh họa là x và y trong đó x có giá trị là 5 và y có giá trị là 7

Tên toán tử

Ký hiệu

Biểu thức logic

Giá trị

Logic

&&

(x == 3) && (y ==7)

false

Cả hai điều kiện

phải đúng

Hoặc

||

(x == 3) || (y == 7)

true

Chỉ cần một điều

kiện đúng

Phủ định

!

! (x == 3 )

true

Biểu thức trong

ngoặc phải sai.

Bảng 2.5: Các toán tử logic (giả sử x = 5, y = 7).

2.4.5. Phép toán tăng giảm Tính toán và gán trở lại

Do việc tăng hay giảm giá trị của một biến rất thường xảy ra trong khi tính toán nên C# cung cấp các phép toán tự gán (self- assignment). Bảng 2.6 sau liệt kê các phép toán tự gán.

Tên toán tử

Ý nghĩa

+=

Cộngthêm giá trị toán hạng bên phải vào giá trị toán

hạng bên trái

-=

Toán hạng bên trái được trừ bớt đi một lượng bằng giá

trị của toán hạng bên phải

*=

Toán hạng bên trái được nhân với một lượng bằng giá

trị của toán hạng bên phải.

/=

Toán hạng bên trái được chia với một lượng bằng giá

trị của toán hạng bên phải.

%=

Toán hạng bên trái được chia lấy dư với một lượng

bằng giá trị của toán hạng bên phải.

Bảng 2.6: Mô tả các phép toán tự gán.

Ví dụ có biến nguyên a với giá trị ban đầu bằng 5, để cộng thêm 10 vào giá trị của biến a thì hai cách viết sau là tương đương:


a = a + 10;

hoặc sử dụng phép toán tự gán:

a+=10;

Do việc tăng hay giảm 1 rất phổ biến trong lập trình, C# cung cấp hai toán tử đặc biệt là tăng một (++) hay giảm một (--). Để tăng giá trị của một biến bienDem lên 1 có thể viết như sau:

bienDem++;

Ví dụ vớin=5, khi thực hiện:

++n sẽ cho n=6

--n sẽ cho n=4

Có thể viết phép toán ++ và -- trước hoặc sau toán hạng như sau : ++n, n++, --

n, n--.

Sự khác nhau của ++n và n++ ở chỗ: trong phép n++ thì tăng sau khi giá trị của

nó đã được sử dụng, còn trong phép ++n thì n được tăng trước khi sử dụng. Sự khác nhau giữa n-- và --n cũng như vậy.

Ví dụ với n = 5, khi thực hiện:

x=++n sẽ cho x=6 và n=6

x=n++ sẽ chon x=5 và n=6

Ví dụ 2.8: Minh hoạ sử dụng toán tử tăng trước và tăng sau khi gán.

namespace Vidu2_8

{

class Program

{

static void Main(string[] args)

{


b= a++; a= 20;

b= ++a;


}

}

int a = 10; int b;


Console.WriteLine("Thuc hien tang sau: {0}, {1}", a, b);


Console.WriteLine("Thuc hien tang truoc: {0}, {1}", a, b); Console.ReadLine();

}

Kết quả chương trình:


Hình 2 4 Kết quả chương trình ví dụ 2 8 Các phép toán khác Bảng 2 7 mô tả 5

Hình 2.4: Kết quả chương trình ví dụ 2.8.

Các phép toán khác

Bảng 2.7 mô tả một số các phép toán khác có trong C#


Phép toán

Mô tả

Ví dụ

sizeof()

Trả lại kích thước của một

kiểu dữ liệu

sizeof(int), trả về 4.

typeof()

Trả lại kiểu của một lớp nào

đó

typeof(int), trả về

System.Int32

? :

Biểu thức điều kiện

(Điều kiện)?X:Y, trả về X

nếu Điều kiện đúng và trả về Y nếu Điều kiện là sai.

is

Xác định xem một đối tượng có phải có kiểu nào đó hay

không


as

Chuyển đổi không phát sinh

lỗi nếu chuyển đổi sai


Bảng 2.7: Một số các phép toán khác có trong C#

2.4.6. Thứ tựưu tiên các phép toán

Trình biên dịch phải xác định thứ tự thực hiện các toán tử trong trường hợp một biểu thức có nhiều phép toán. Bảng 2.8 liệt kê thứ tự độ ưu tiên các phép toán trong C#.

STT

Loại toán tử

Toán tử

Thứ

tự

1

Phép toán cơ bản

(x) x.y f(x) a[x] x++ x—new

typeof sizeof checked unchecked

Trái

2

Phép toán một ngôi

+ - ! ~ ++x --x (T)x

Trái

3

Phép nhân

* / %

Trái

4

Phép cộng

+ -

Trái

Xem toàn bộ nội dung bài viết ᛨ

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 03/07/2022