Khóa học lập trình C# căn bản

Serial tutorial hướng dẫn lập trình C# cơ bản

Toán tử trong C# Toán tử trong C# Toán tử trong C# Toán tử trong C# Toán tử trong C# 4.3/5 (279 reviews)

Toán tử trong C#

Đã đăng 2016-09-13 06:50:42 bởi Trần Thành Vi Thanh
16 bình luận 35028 lượt xem
Toán tử trong C# 4.3 /5 stars (8 reviews)
 

Dẫn nhập

Ở các bài trước, chúng ta đã tìm hiểu về BIẾNKIỂU DỮ LIỆU.  Vậy “làm sao để có thể thực hiện phép toán giữa các biến cũng như xử lý dữ liệu của biến?”

Bài học hôm nay sẽ giúp chúng ta giải quyết vấn đề này. Cùng tìm hiểu chi tiết về TOÁN TỬ TRONG C#.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Toán tử là gì? Có mấy loại toán tử?
  • Cú pháp và ý nghĩa của từng toán tử.
  • Độ ưu tiên của toán tử.
  • Ví dụ chương trình sử dụng một số toán tử.

Toán tử là gì?

Toán tử được định nghĩa như sau:

  • Là một công cụ để thao tác với dữ liệu.
  • Một toán tử là một ký hiệu dùng để đại diện cho một thao tác cụ thể được thực hiện trên dữ liệu.

Có 6 loại toán tử cơ bản:

  • Toán tử toán học.
  • Toán tử quan hệ.
  • Toán tử logic.
  • Toán tử khởi tạo và gán.
  • Toán tử so sánh trên bit.
  • Toán tử khác.

Cú pháp và ý nghĩa của từng toán tử

Toán tử toán học

Giả sử biến a có giá trị là 10 biến b có giá trị là 9

 

 

Lưu ý: đối với toán tử ++ -- cần phần biệt a++++a (hoặc a----a):

  •  a++: là sử dụng giá trị của biến a để thực hiện biểu thức trước rồi mới thực hiện tăng lên 1 đơn vị. Tương tự cho a--.
  •  ++a: là tăng giá trị biến a lên 1 đơn vị rồi mới sử dụng biến a để thực hiện biểu thức. Tương tự cho --a.

 Ví dụ:

static void Main(string[] args)
        {
            int i = 5, j = 5;

            Console.WriteLine(i++); // Sử dụng giá trị i để in ra rồi mới tăng i
            Console.WriteLine(++j); // Tăng j lên rồi mới in giá trị j ra màn hình
            
            Console.ReadKey();
        }
  • Kết quả khi chạy chương trình:

Kteam

  • Biến i đã được sử dụng để in ra màn hình rồi sau đó mới tăng lên 1 đơn vị cho nên màn hình mới in ra số 5.
  • Biến j thì ngược lại, tăng lên 1 đơn vị trước rồi mới sử dụng giá trị mới để in ra màn hình nên màn hình in ra số 6.

Toán tử quan hệ

Giả sử biến a có giá trị bằng 10 và biến b có giá trị bằng 9:

Lưu ý:

  1. Các toán tử quan hệ này chỉ áp dụng cho số hoặc ký tự.
  2. Hai toán hạng hai bên phải cùng loại (cùng là số hoặc cùng là ký tự).
  3. Bản chất của việc so sánh 2 ký tự với nhau là so sánh mã ASCII của các ký tự đó.
  • Ví dụ: so sánh ‘A’ và ‘B’ bản chất là so sánh số 65 với 66.
  1. Không nên sử dụng các toán tử trên để so sánh các chuỗi với nhau vì bản chất việc so sánh chuỗi là so sánh từng ký tự tương ứng với nhau mà so sánh ký tự là so sánh mã ASCII của ký tự đó như vậy ký tự ‘K’ sẽ khác ký tự ‘k’. Để so sánh hai chuỗi người ta thường dùng hàm so sánh chuỗi đã được hỗ trợ sẵn (sẽ tìm hiểu ở những bài tiếp theo).

Toán tử logic

Giả sử mệnh đề A là đúng và mệnh đề B là sai:

Lưu ý:

  • Các toán tử && và || có thể áp dụng đồng thời nhiều toán hạng, ví dụ như: A && B && C || D || K (Thứ tự thực hiện sẽ được trình bày ở phần sau).
  • Các toán hạng trong biểu thức chứa toán tử logic phải trả về true hoặc false.  

Toán tử khởi tạo và gán

Toán tử khởi tạo và gán thường được sử dụng nhằm mục đích lưu lại giá trị cho một biến nào đó. Một số toán tử khởi tạo và gán hay được sử dụng:

Một số lưu ý khi sử dụng các toán tử trên:

  1.  Toán tử bên trái thường là một biến, còn toán tử bên phải có thể là biến có thể là biểu thức đều được.
  2.  Một phép toán gán hoặc khởi tạo có thể được sử dụng như là toán hạng bên phải cho một phép gán hoặc khởi tạo khác. Ví dụ:
int H, K, T;
H = K = T = 10;
Console.WriteLine(" H = {0}, K = {1}, T = {2}", H, K, T);

H += K = T = 5;
Console.WriteLine(" H = {0}, K = {1}, T = {2}", H, K, T);

 

Kteam

  • Phép toán H =K =T = 10 sẽ thực hiện gán 10 cho biến T sau đó gán giá trị biến T cho biến K sau đó gán giá trị biến K cho biến H. Như vậy ta được cả 3 biến H K T đều có giá trị bằng 10.
  • Phép toán H += K = T = 5 sẽ thực hiện gán 5 cho biến T sau đó gán giá trị biến T cho biến K sau đó lấy H + K gán kết quả cho biến H. Cuối cùng ta được H = 15, K = 5, T = 5.

Toán tử so sánh trên bit

Các toán tử so sánh trên bit cũng ít gặp nên mình chỉ giới thiệu qua cho các bạn tham khảo thôi chứ chúng ta không giới thiệu rõ phần này.

Giả sử a có giá trị bằng 10 và b có giá trị bằng 9. Giá trị biến a đổi ra nhị phân là 1010 và giá trị biến b đổi ra nhị phân là 1001


Toán tử khác

Ngoài những toán tử đã giới thiệu ở trên chúng ta vẫn còn nhiều toán tử khác cũng hay sử dụng:


Độ ưu tiên của toán tử

Độ ưu tiên của các toán tử biểu thị cho việc toán tử nào được ưu tiên thực hiện trước trong câu lệnh. Độ ưu tiên được tóm tắt ở bảng sau:

Bảng thống kê trên chỉ thể hiện những toán tử chúng ta đã học, ngoài ra vẫn còn nhiều toán tử khác những ít khi sử dụng nên không đề cập đến.

Từ bảng trên ta có thể rút ra được 1 kinh nghiệm đó là nếu muốn biểu thức nào được thực hiện trước ta chỉ cần nhóm chúng vào cặp ngoặc tròn ( ) là được!


Ví dụ chương trình sử dụng một số toán tử

Ví dụ 1: Các phép toán cơ bản

static void Main(string[] args)
        {
            int a, b, c;

            a = b = (c = 9) + 1; // khởi tạo giá trị: a = 10, b = 10, c = 9
            a += b; // tương đương a = a + b
            b = c++; // thực hiện gán giá trị c cho biến b sau đó thực hiện c = c + 1
            --c; // thực hiện c = c - 1

            Console.WriteLine(" a = {0}, b = {1}, c = {2}", a, b, c);

            Console.ReadKey();

        }
  • Các bạn chú ý vào phn chú thích (chữ màu xanh lá) để hiểu ý nghĩa từng câu lệnh. Kết quả khi chạy chương trình:

Kteam

Lưu ý: đối với phép toán --c hoặc c-- khi đứng độc lập thì không có khác biệt gì.


 Ví dụ 2: Kết hợp các phép toán để viết chương trình kiểm tra số nhập vào là số chẵn số lẻ:

static void Main(string[] args)
        {
            string strSoNguyen; // Biến chứa dữ liệu nhập vào từ bàn phím
            int SoNguyen; // Biến chứa số nhập vào từ bàn phím
            string KetQua; // Biến chứa kết quả kiểm tra số vừa nhập là chẵn hay lẻ

            strSoNguyen = Console.ReadLine(); // Đọc dữ liệu nhập vào từ bàn phím (dữ liệu này ở dạng chuỗi) sau đó gán giá trị vào biến strSoNguyen
            SoNguyen = Int32.Parse(strSoNguyen); // Ép kiểu dữ liệu vừa nhập vào (dạng chuỗi) sang dạng số rồi gán giá trị vào biến SoNguyen
            KetQua = (SoNguyen % 2 == 0) ? "so chan" : "so le"; // Sử dụng toán tử 3 ngôi để kiểm tra số chẵn lẻ

            Console.WriteLine("{0} la {1}", SoNguyen, KetQua); // In kết quả ra màn hình
            
            Console.ReadKey();
        }

Đầu tiên ta có 3 biến:

  • strSoNguyen: Chứa dữ liệu nhập vào từ bàn phím. Vì dữ liệu nhập vào từ bàn phím mặc định là dạng chuỗi nên cần biến kiểu chuỗi để chứa giá trị.
  • SoNguyen: Chứa dữ liệu nhập vào từ bàn phím ở dạng số. Từ dữ liệu dạng chuỗi của biến strSoNguyen ta ép kiểu sang kiểu số để dễ xử lý (chi tiết về ép kiểu sẽ được trình bày ở bài ÉP KIỂU TRONG C#)
  • KetQua: Chứa kết quả kiểm tra số vừa nhập là chẵn hay lẻ. Kết quả này ở dạng chuỗi để có thể in ra màn hình luôn.

Tiếp theo ta nhận kết quả nhập từ bàn phím bằng lệnh Console.ReadLine() rồi gán giá trị cho biến strSoNguyen.

Ép kiểu kết quả vừa nhập sang dạng số rồi gán giá trị vào biến SoNguyen.

Sử dụng toán tử 3 ngôi kiểm tra xem số vừa nhập có chia hết cho 2 hay không (nếu chia hết cho 2 thì phép chia lấy dư với 2 sẽ cho kết quả là 0 và biểu thức SoNguyen % 2 == 0 sẽ trả về true ngược lại sẽ trả về false). Nếu chia hết thì trả về chuỗi “so chan” ngược lại trả về chuỗi “so le”.

Cuối cùng là in kết quả ra màn hình.

Kteam

Để có thể sử dụng thành thạo các toán tử trên các bạn nên luyện tập thường xuyên, vận dụng kết hợp nhiều toán tử để giải quyết vấn đề!


Kết luận

Nội dung bài này giúp các bạn nắm được:

  • Khái niệm về toán tử và các loại toán tử.
  • Cú pháp và ý nghĩa của từng toán tử.
  • Độ ưu tiên của các toán tử.
  • Ví dụ chương trình sử dụng một số toán tử.

Bài học sau chúng ta sẽ cùng tìm hiểu một khái niệm tiếp theo đó là HẰNG TRONG C#

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

 



Tài liệu 

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học TOÁN TỬ TRONG C# dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé! 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Toán tử trong C#
anhson99nb 2018-12-15 14:40:06

mình vẫn chưa hiểu cách sắp xếp các hàng trong bảng độ ưu tiên các toán tử của tác giả, theo mình thì mình hiểu là hàng nào sắp trên sẽ có độ ưu tiên cao hơn, nếu thế thì +,- phải sắp sau hàng toán tử *,/,% , vì thực hiện nhân chia trước cộng trừ sau chứ nhỉ ?

0 bình chọn
Reply
Toán tử trong C#
kyanh.huynh2000 2018-12-07 21:41:01

phép toán >> là sao nhỉ mình ko hiểu cho lắm

 

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
anhson99nb 2018-12-15 14:35:50
đây là phép dịch bit thao tác trên số nguyên toán tử >> sẽ thực hiện dịch 1 bit sang bên phải ví dụ số 11 hệ thập thì có biểu diễn hệ nhị phân là 1011 khi thực hiện dịch sang phải 1 bit sẽ trở thành 101 = 5( hệ thập phân )
0 bình chọn
Reply
Toán tử trong C#
phongsmod1 2018-10-14 11:46:01

Cái chỗ:

Console.WriteLine("{0} la {1}", SoNguyen, KetQua);

{0} la {1} là sao nhỉ ad? sao SoNguyen lại là 0 và KetQua lại là 1 ??

0 bình chọn
Reply
View all 2 comments
Kteam - Howkteam Free Education
phudtph04476 2018-10-16 08:26:29
0-1 là đại diện cho vị trí xuất hiện thôi. kiểu như vị trí của các phần tử trong mảng ý.
0 bình chọn
Reply
Kteam - Howkteam Free Education
phongsmod1 2018-10-16 11:54:42
tks bac!
0 bình chọn
Reply
Toán tử trong C#
trinhduyduy94 2018-04-05 12:29:03

static void Main(string[] args)
        {  
            int s = 0;
            int hold, i;
            Console.Write("Vui long nhap vao 1 so nguyen bat ki:");
            i = Convert.ToInt32(Console.ReadLine());
            hold = i;
            while (i>0){
                s += i % 10;

                i /= 10;
            }
            Console.WriteLine($"Bien i co gia tri la: {i}");
            Console.WriteLine($"So {hold} co tong cac chu so la: {s}");
            Console.ReadKey();
           }

Cau Hoi: Vi sao ta gan i cho hold(hold = i) roi, ma sau khi thay doi gia tri cua i, hold van khong thay doi gia tri??

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
CG 2018-04-11 08:50:06
Mình thấy 2 dòng này có lỗi nè: Console.WriteLine($"Bien i co gia tri la: {i}"); Console.WriteLine($"So {hold} co tong cac chu so la: {s}"); Sửa lại thế này: Console.WriteLine("Bien i co gia tri la: {0}", i); Console.WriteLine("So {0} co tong cac chu so la: {1}",hold,i); Tuy nhiên vẫn không hiểu ý bạn hỏi là thế nào, code của bạn thì nhập i bao nhiêu thì hold bằng bấy nhiêu mà
0 bình chọn
Reply
Toán tử trong C#
Đức Việt 2017-12-07 15:06:16

Thư thách "Không ngại khó" ở đâu vậy ae?

0 bình chọn
Reply
Toán tử trong C#
hiepnguyen1335 2017-12-01 16:15:22

Cho mình hỏi sao không có file pdf lý thuyết như mấy bài trước vậy ạ, lâu lâu cần xem lại kiến thức thì file pdf hữu dụng vô cùng

0 bình chọn
Reply
Toán tử trong C#
DucTuanmdt 2017-07-06 06:46:24
printf("Cám ơn ad\n");

 

0 bình chọn
Reply
Toán tử trong C#
JK. KyTs 2017-06-25 23:20:06

Đặc biệt thích phong cách vừa dạy, đôi lúc pha trò như trong bài này ạ :v

1 bình chọn
Reply
Toán tử trong C#
ngocdung1286 2017-06-21 14:22:30

hay quá anh ơi

0 bình chọn
Reply
Toán tử trong C#
huynhvekhuong 2017-05-13 15:18:02

cho mình hỏi tí theo vd H=K=T=10;

                                  H+=K=T=5;

thi in ra la 1>10 10 10 

                 2>15 5 5 

cho mình hỏi tại sao không phải in ra là 10  5 5 hoặc 20 5 5 mình chưa hiểu thứ tư công như thế nào?

1 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
nkto 2017-05-19 23:43:37
gán từ phải qua trái nha bạn, lúc đầu 5 được gán cho T, sau đó T được gán lại cho K, và H = H + K , H = 10 ( đã khai báo phía trên ) . Như vậy là H = 15, K=T=5 nha
0 bình chọn
Reply
Toán tử trong C#
TuanAnhDinh 2017-02-14 21:33:33
cám ơn Long nhé, cách giảng dễ hiểu lắm, Ăn đứt mấy trung tâm tiền triệu lúc trước mình học
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education