Toán tử và Câu lệnh Điều khiển trong Dart
- 14-05-2024
- Toanngo92
- 0 Comments
Mục lục
Giới thiệu về Toán tử
Toán tử là gì?
Toán tử là một ký hiệu được sử dụng để thực hiện các phép toán cụ thể trên các Toán hạng. Các Toán hạng đại diện cho dữ liệu mà phép toán được thực hiện.
Trong ngôn ngữ Dart, có nhiều toán tử tích hợp sẵn được sử dụng để thực hiện các phép toán khác nhau. Ví dụ: Trong phương trình 5+7, 5 và 7 là các toán hạng và + là toán tử.
Các loại Toán tử khác nhau:
Toán tử Số học
Toán tử Số học được sử dụng để thực hiện các phép toán toán học như cộng, trừ và nhân trên các toán hạng.
Bảng bên dưới liệt kê các loại toán tử số học khác nhau.
Ví dụ, xét a=7 và b=4.
Ký hiệu Toán tử | Tên Toán tử | Mô tả | Ví dụ | Kết quả |
+ | Toán tử cộng | Sử dụng để cộng hai toán hạng | a + b | 11 |
– | Toán tử trừ | Sử dụng để trừ hai toán hạng | a – b | 3 |
* | Toán tử nhân | Sử dụng để nhân hai toán hạng | a * b | 28 |
/ | Toán tử chia | Sử dụng để chia toán hạng thứ nhất cho toán hạng thứ hai | a / b | 1.75 |
~/ | Chia lấy nguyên | Sử dụng để chia toán hạng thứ nhất cho toán hạng thứ hai và lấy phần nguyên của kết quả | a ~/ b | 1 |
% | Chia lấy dư | Sử dụng để lấy phần dư của phép chia toán hạng thứ nhất cho toán hạng thứ hai | a % b | 3 |
++ | Tăng | Sử dụng để tăng giá trị của một biến lên 1 | a++ | 8 |
— | Giảm | Sử dụng để giảm giá trị của một biến đi 1 | a– | 5 |
Toán tử Quan hệ
Toán tử Quan hệ hiển thị mối quan hệ giữa hai toán hạng. Nó còn được gọi là Toán tử So sánh. Toán tử Quan hệ được sử dụng để so sánh các biểu thức và các toán hạng. Nó trả về một giá trị boolean, có thể là true hoặc false.
Bảng bên dưới liệt kê các loại Toán tử Quan hệ khác nhau.
Ký hiệu Toán tử | Tên Toán tử | Mô tả | Ví dụ | Kết quả |
> | Lớn hơn | Sử dụng để kiểm tra xem toán hạng bên trái có lớn hơn toán hạng bên phải không | 2 > 3 | false |
< | Nhỏ hơn | Sử dụng để kiểm tra xem toán hạng bên trái có nhỏ hơn toán hạng bên phải không | 2 < 3 | true |
>= | Lớn hơn hoặc bằng | Sử dụng để kiểm tra xem toán hạng bên trái có lớn hơn hoặc bằng toán hạng bên phải không | 2 >= 3 | false |
<= | Nhỏ hơn hoặc bằng | Sử dụng để kiểm tra xem toán hạng bên trái có nhỏ hơn hoặc bằng toán hạng bên phải không | 2 <= 3 | true |
== | Bằng | Sử dụng để kiểm tra xem hai toán hạng có bằng nhau không | 2 == 3 | false |
!= | Khác | Sử dụng để kiểm tra xem hai toán hạng có khác nhau không | 2 != 3 | true |
Toán tử Gán
Toán tử gán được sử dụng để gán giá trị cho các toán hạng. Nó gán giá trị của toán hạng bên phải cho một biến được chỉ định bởi toán hạng bên trái. Kết quả của một biểu thức gán là giá trị được gán cho toán hạng bên trái.
Toán tử gán cơ bản nhất là =. Nó được sử dụng để gán một giá trị cho toán hạng. Dart cũng hỗ trợ các toán tử gán tắt, được sử dụng để kết hợp việc gán với các toán tử số học hoặc toán tử bitwise.
Bảng bên dưới liệt kê các loại toán tử gán khác nhau.
Ký hiệu Toán tử | Tên Toán tử | Mô tả | Ví dụ | Kết quả |
= | Gán | Gán giá trị của toán hạng bên phải cho biến được chỉ định bởi toán hạng bên trái | x = 5; | x bây giờ bằng 5 |
+= | Gán cộng | Thêm giá trị của toán hạng bên phải vào biến và gán kết quả cho biến | x += 3; | x bây giờ bằng x + 3 |
-= | Gán trừ | Trừ giá trị của toán hạng bên phải từ biến và gán kết quả cho biến | x -= 2; | x bây giờ bằng x – 2 |
*= | Gán nhân | Nhân giá trị của toán hạng bên phải với biến và gán kết quả cho biến | x *= 4; | x bây giờ bằng x * 4 |
/= | Gán chia | Chia giá trị của biến cho toán hạng bên phải và gán kết quả cho biến | x /= 2; | x bây giờ bằng x / 2 |
~/= | Gán chia lấy phần nguyên | Chia giá trị của biến cho toán hạng bên phải và gán kết quả là phần nguyên cho biến | x ~/= 3; | x bây giờ bằng x ~/ 3 |
%= | Gán phần dư | Lấy phần dư khi chia giá trị của biến cho toán hạng bên phải và gán kết quả cho biến | x %= 5; | x bây giờ bằng x % 5 |
<<= | Dịch trái | Dịch bit của biến sang trái bằng số lượng chỉ định bởi toán hạng bên phải và gán kết quả cho biến | x <<= 2; | x bây giờ bằng x << 2 |
>>= | Dịch phải | Dịch bit của biến sang phải bằng số lượng chỉ định bởi toán hạng bên phải và gán kết quả cho biến | x >>= 3; | x bây giờ bằng x >> 3 |
&= | Gán AND | Thực hiện phép AND logic giữa giá trị của biến và toán hạng bên phải và gán kết quả cho biến | x &= 1; | x bây giờ bằng x AND 1 |
^= | Gán XOR | Thực hiện phép XOR logic giữa giá trị của biến và toán hạng bên phải và gán kết quả cho biến | x ^= 2; | x bây giờ bằng x XOR 2 |
|= | Gán OR | Thực hiện phép OR logic giữa giá trị của biến và toán hạng bên phải và gán kết quả cho biến | x |= 3; | x bây giờ bằng x OR 3 |
Toán tử điều kiện
Toán tử điều kiện được coi là một cách viết tắt cho câu lệnh if-else.
Toán tử điều kiện cũng được gọi là Toán tử Ba ngôi.
Ký hiệu | Tên | Mô tả |
Điều kiện ? Biểu thức 1 : Biểu thức 2 | Toán tử Ba ngôi | Đây là một phiên bản đơn giản của câu lệnh if-else. Nếu điều kiện đúng, thì biểu thức 1 được thực thi, ngược lại biểu thức 2 được thực thi. |
Biểu thức 1 ?? Biểu thức 2: | Toán tử Null coalescing | Nếu biểu thức 1 không null, nó trả về giá trị của biểu thức 1. Ngược lại, nó trả về giá trị của biểu thức 2. |
Đoạn mã bên dưới là một ví dụ về Toán tử điều kiện:
void main() {
var n1 = null;
var n2 = 15;
var result = n1 ?? n2;
print(result);
}
Trong đoạn mã bên trên, hai biến var
đã được khai báo và giá trị null được lưu trữ trong n1
và 15 trong n2
. Một Toán tử điều kiện (??) đã được sử dụng, kiểm tra điều kiện đúng và in ra kết quả tương ứng.
Hình bên dưới hiển thị kết quả của Đoạn mã trên.
Toán tử Logic
Toán tử Logic được sử dụng để kết hợp hai hoặc nhiều điều kiện. Khi hai hoặc nhiều điều kiện cần được đánh giá trong một câu lệnh duy nhất, toán tử Logic có thể được sử dụng. Nó trả về một giá trị boolean có giá trị 0 – False hoặc 1 – True dựa trên đó các câu lệnh được thực thi.
Bảng bên dưới liệt kê các loại Toán tử Logic khác nhau.
Toán tử | Tên Toán tử | Mô tả |
&& | AND | Được sử dụng để kết hợp hai điều kiện và ngay cả khi một trong chúng là true, thì sẽ trả về true. |
|| | OR | Được sử dụng để kết hợp hai điều kiện và trả về true nếu một trong hai điều kiện là true. |
! | NOT | Được sử dụng để đảo ngược giá trị của điều kiện, trả về true nếu điều kiện ban đầu là false và ngược lại. |
Bên dưới là một ví dụ về Toán tử Logic.
void main()
{
int a = 5;
int b = 7;
bool c = a > 10 && b < 10;
print(c);
bool d = a > 10 || b < 10;
print(a);
bool e = !(a > 10);
print(e);
}
Trong Đoạn mã trên, hai biến đã được khai báo và giá trị int đã được lưu trữ. Toán tử Logic đã được sử dụng trên cả hai biến và in ra các giá trị true
hoặc false
tùy thuộc vào điều kiện, sử dụng câu lệnh print()
.
Hình bên dưới hiển thị kết quả của Đoạn mã trên.
Các Câu lệnh Điều khiển
Trong Dart, các câu lệnh trong chương trình thường được thực hiện tuần tự từ trên xuống dưới, theo thứ tự mà chúng được viết. Tuy nhiên, đôi khi có thể muốn thực hiện mã theo một cách không tuần tự.
Người ta có thể muốn thực hiện hoặc bỏ qua một tập hợp các hướng dẫn nhất định hoặc hỗ trợ các điều kiện, hoặc nhảy đến một câu lệnh khác, hoặc thực hiện một tập hợp các câu lệnh một cách lặp đi lặp lại. Trong Dart, các câu lệnh điều khiển được sử dụng để thay đổi luồng của chương trình khi cần thiết.
Các loại Câu lệnh Điều khiển
Các loại câu lệnh điều khiển được phân thành các nhóm sau:
Câu lệnh Quyết định
Các câu lệnh quyết định giúp xác định câu lệnh/block câu lệnh nào sẽ được thực thi để hỗ trợ một biểu thức tại thời gian chạy. Các câu lệnh lựa chọn được gọi là Câu lệnh điều kiện hoặc Câu lệnh Lựa chọn.
Trong một chương trình Dart, có thể tồn tại một hoặc nhiều biểu thức (hoặc điều kiện), mà đánh giá thành giá trị Boolean true
và false
. Kết quả của một biểu thức/điều kiện này giúp đưa ra quyết định về khối câu lệnh sẽ được thực thi, nếu điều kiện đã cho là true
hoặc false
.
Các loại câu lệnh quyết định
Các loại câu lệnh quyết định khác nhau như sau:
Câu lệnh if
Câu lệnh if
cho phép một khối mã được thực thi chỉ khi một điều kiện cụ thể là true
. Điều kiện đánh giá thành giá trị boolean true
hoặc false
và quyết định được thực hiện dựa trên kết quả này.
Đoạn mã bên dưới minh họa một ví dụ về câu lệnh if
.
void main() {
int num = 5;
if (num > 0)
print('number is positive');
}
Trong Đoạn mã bên trên, một biến int
num
đã được khai báo. Ở đây, câu lệnh if
đã được sử dụng với một điều kiện. Đó là, nếu số lớn hơn không nó sẽ in ra “number is positive
“.
Hình bên dưới biểu thị kết quả cho đoạn mã trên
b. Câu lệnh if-else
Khối mã trong câu lệnh if
được thực thi khi điều kiện được cho là true
. Nếu điều kiện cho trước là false
, khối else
sẽ được thực thi. Một khối else
không thể tồn tại độc lập và luôn liên kết với một khối if
.
Đoạn mã bên dưới minh họa một ví dụ về câu lệnh if-else
.
void main() {
int a = 15;
if (a < 30)
print('15 is less than 30');
else
print('30 is greater than 15');
}
Trong Đoạn mã trên, một biến int được đặt tên là a đã được khai báo. Câu lệnh if
kiểm tra một điều kiện rằng số đó nhỏ hơn 30. Điều này sẽ in ra “15 is less than 30” nếu điều kiện là true
và nếu điều kiện là false
, nó sẽ thực thi khối else
và in ra “30 is greater than 15”.
Hình bên dưới mô tả kết quả của đoạn mã trên
Câu lệnh if-else-if
Trong Dart, câu lệnh if-else-if cung cấp khả năng kiểm tra nhiều điều kiện trong biểu thức và thực thi các câu lệnh khác nhau. Nó được sử dụng khi cần phải đưa ra một quyết định từ hơn hai khả năng.
Đoạn mã bên dưới minh họa một ví dụ về câu lệnh if-else-if.
void main() {
int b = 10;
if (b < 9)
print('Condition 1 is true');
else if (b >= 10)
print('Condition 2 is true');
else
print('All the conditions are false');
}
Trong Đoạn mã trên, một biến int
được đặt tên là b đã được khai báo. Câu lệnh if
với một điều kiện rằng số đó nhỏ hơn 9 được thực thi. Điều này sẽ in ra “Condition 1 is true” nếu điều kiện là true
và nếu điều kiện là false
, sau đó nó sẽ kiểm tra câu lệnh khối else if
hoặc nếu cả hai điều kiện đều không được đáp ứng, nó sẽ in ra khối else
.
Câu lệnh switch case
Trong Dart, câu lệnh switch case được sử dụng để tránh một chuỗi dài các câu lệnh if-else
. Đó là một dạng đơn giản hóa của câu lệnh if-else
lồng nhau. Giá trị của một biến được so sánh với nhiều trường hợp và nếu có sự khớp, nó sẽ thực thi một khối câu lệnh liên quan đến trường hợp cụ thể đó.
Đoạn mã bên dưới minh họa một ví dụ về câu lệnh switch case
.
void main() {
var grade = 'B';
switch (grade) {
case 'A':
{
print('Excellent');
}
break;
case 'B':
{
print('Good');
}
break;
case 'C':
{
print('Fair');
}
break;
case 'D':
{
print('Poor');
}
break;
default:
{
print('Invalid choice');
}
break;
}
}
Trong Đoạn mã bên trên, biến grade
được gán giá trị là ‘B’. Câu lệnh switch
so sánh giá trị của grade
Trong Đoạn mã 6, một biến var grade đã được khai báo. Tiếp theo, một switch đã được sử dụng, trong đó, grade đã được truyền vào. Tiếp theo, bốn trường hợp A, B, C và D đã được chỉ định, cùng với một trường hợp mặc định.
Khi khớp với biến được khai báo, câu lệnh bên trong trường hợp khớp sẽ được in ra, hoặc nếu không có trường hợp nào khớp, nó sẽ thực thi câu lệnh mặc định. Một từ khóa break
cũng phải được sử dụng để kết thúc một dòng nếu điều kiện là đúng và nhà phát triển muốn kết thúc xử lý sau này trong khối switch
. Mà không có từ khóa break
, chương trình tiếp tục tới câu lệnh được gán nhãn trường hợp tiếp theo.
Hình bên dưới hiển thị kết quả của Đoạn mã trên.
với các trường hợp khác nhau và nếu có trùng khớp, nó sẽ thực thi một khối câu lệnh liên quan đến trường hợp cụ thể đó.
Các câu lệnh vòng lặp
Trong Dart, các câu lệnh lặp được sử dụng để thực thi một khối mã nhiều lần, cho đến khi nó khớp với điều kiện đã cho. Các câu lệnh này cũng được gọi là câu lệnh lặp lại. Các câu lệnh lặp lại hữu ích để lặp qua một bộ sưu tập/danh sách các mục hoặc để thực hiện một nhiệm vụ nhiều lần.
Các loại câu lệnh lặp
Câu lệnh vòng lặp For
Câu lệnh vòng lặp for
được sử dụng cho một khối mã khi cần phải thực thi một số lượng cụ thể lần. Vòng lặp for
nhận một biến làm trình lặp và gán cho nó một giá trị ban đầu, và lặp qua thân vòng lặp miễn là điều kiện kiểm tra là đúng. Quá trình lặp bắt đầu từ một giá trị ban đầu và chỉ thực thi một lần. Điều kiện là một biểu thức kiểm tra và nó được kiểm tra sau mỗi lần lặp. Vòng lặp for
sẽ thực thi cho đến khi điều kiện đã cho trả về false
. Vòng lặp for cũng chứa một biểu thức trong đó giá trị của trình lặp được tăng hoặc giảm.
Đoạn mã bên dưới mô tả một ví dụ về câu lệnh vòng lặp for
.
void main() {
int num = 1;
for (num; num <= 10; num++) {
print(num);
}
}
Trong Đoạn mã bên trên, một biến var num
đã được khai báo. Sau đó, một vòng lặp for
đã được sử dụng cùng với một điều kiện để in các số từ 1 đến 10. Sau đó, num++
đã được sử dụng để tăng giá trị và biến num
được in ra.
Hình bên dưới cho thấy kết quả của Đoạn mã trên.
Câu lệnh vòng lặp for…in
Vòng lặp for…in là một dạng nâng cao hơn của vòng lặp for
. Nó lấy một biểu thức hoặc đối tượng làm trình lặp và lặp qua các phần tử một cách tuần tự. Giá trị của phần tử được ràng buộc với biến var
, và nó có hiệu lực và sẵn có cho thân vòng lặp. Khi các câu lệnh vòng lặp được thực thi theo vòng lặp hiện tại, phần tử tiếp theo được lấy từ trình lặp, và nó lặp lại một lần nữa. Khi không còn phần tử nào trong trình lặp, vòng lặp kết thúc.
Đoạn mã bên dưới mô tả một ví dụ về câu lệnh vòng lặp for…in.
void main() {
var list = [10, 20, 30, 40, 50];
for (var i in list) {
print(i);
}
}
Trong đoạn mã trên, một biến var
đã được khai báo, đó là biến list
. Sau đó, một vòng lặp for
đã được sử dụng và một điều kiện đã được đưa ra trong đó biến i
đã được tạo ra và in
được sử dụng. Tiếp theo, list
được gọi và sau đó, biến i
được in ra bằng cách sử dụng lệnh print
.
Hình bên trên hiển thị kết quả cho đoạn mã
Lệnh vòng lặp while
Vòng lặp while
sẽ thực thi một khối lệnh cho đến khi điều kiện là true
.
Đoạn mã bên dưới mô tả một ví dụ về lệnh vòng lặp while
.
void main() {
var a = 1;
var num = 5;
while (a < num) {
print(a);
a++;
}
}
Trong Đoạn mã trên, hai biến var
đã được khai báo, đó là biến a
và num
. Sau đó, vòng lặp while
đã được sử dụng và điều kiện đã được đưa ra rằng biến a
nhỏ hơn num
. Nếu điều kiện này là true
, nó sẽ in ra biến a
hoặc nếu là false
, nó sẽ thực thi phương trình a = a + 1.
Hình bên dưới cho thấy kết quả của Đoạn mã trên.
Lệnh vòng lặp while
Vòng lặp do while
tương tự như vòng lặp while
. Tuy nhiên, điểm khác biệt duy nhất là rằng nó thực thi câu lệnh Loop
trước và sau đó kiểm tra điều kiện đã cho cho lần lặp tiếp theo. Sau đó nó chỉ thực hiện bước tiếp theo nếu điều kiện là đúng.
Đoạn mã bên dưới ví dụ về cách sử dụng vòng lặp do while
void main() {
var n = 10;
do {
print(n);
n--;
} while (n >= 0);
}
Trong Đoạn mã trên, một biến var
, biến n
đã được khai báo. Sau đó, vòng lặp do while
đã được sử dụng và biến n
được in theo thứ tự ngược bằng cách sử dụng n để giảm đi một. Tiếp theo, trong vòng lặp while
, một điều kiện đã được đưa ra rằng nếu n lớn hơn hoặc bằng không, nó sẽ trước tiên thực thi vòng lặp do và sau đó, kiểm tra điều kiện.
Hình bên dưới cho thấy kết quả của Đoạn mã trên.
Các Câu Lệnh Nhảy
Câu lệnh nhảy được sử dụng để nhảy từ một câu lệnh sang một câu lệnh khác, hoặc có thể nói rằng chúng chuyển việc thực thi sang một câu lệnh khác từ câu lệnh hiện tại.
Câu lệnh break
Câu lệnh break
trong Dart bên trong bất kỳ vòng lặp nào cung cấp một cách để dừng hoặc kết thúc việc thực thi của vòng lặp chứa nó và do đó, chuyển việc thực thi sang câu lệnh tiếp theo sau vòng lặp. Nó luôn được sử dụng với cấu trúc if-else
.
Đoạn mã bên dưới minh họa một ví dụ về câu lệnh break
.
void main() {
var count = 0;
print('Dart break Statement');
while (count <= 10) {
count = count + 1;
if (count == 5) {
break;
}
print("Inside loop ${count}");
}
print('Out of while loop');
}
Trong Đoạn mã trên, một biến var
, biến count
đã được khai báo. Sau đó, vòng lặp while
được sử dụng và một điều kiện đã được đưa ra rằng nếu biến count
nhỏ hơn hoặc bằng 10, thì biến count
sẽ được tăng lên 1.
Sau đó, câu lệnh if
đã được sử dụng, trong đó một điều kiện được đưa ra là nếu count
bằng 5, nó sẽ kết thúc việc thực thi và cho đến khi đó, nó sẽ in ra câu lệnh trong vòng lặp. Một khi đã đạt được 5, nó sẽ in ra câu lệnh Out of while loop
.
Hình bên dưới hiển thị đầu ra của Đoạn mã trên.
Lệnh Continue
Trong khi lệnh break
được sử dụng để kết thúc luồng điều khiển, lệnh continue
, ngược lại được sử dụng để tiếp tục luồng điều khiển. Khi một lệnh continue
được gặp trong một vòng lặp, nó không kết thúc vòng lặp, mà thay vào đó nhảy sang vòng lặp tiếp theo.
Đoạn mã bên dưới cho thấy một ví dụ về lệnh continue
.
void main() {
var num = 0;
print ('Dart Continue Statement!');
while (num < 10) {
num = num + 1;
if (num == 5) {
print ('S is skipped');
continue;
}
print ('Number is ${num}');
}
print ('Out of while loop');
}
Trong Đoạn mã trên, một biến var
, num
đã được khai báo. Sau đó, vòng lặp while
đã được sử dụng và điều kiện đã được đưa ra rằng nếu biến num nhỏ hơn 10 thì biến đếm đó phải được tăng lên 1.
Sau đó, một câu lệnh if
đã được sử dụng, trong đó một điều kiện đã được đưa ra rằng, nếu biến đếm là bằng 5, nó sẽ bỏ qua việc thực thi của chương trình. Tiếp theo, câu lệnh continue
đã được sử dụng. Câu lệnh continue
sẽ bỏ qua dòng đó và thực thi mã còn lại.
Hình bên dưới hiển thị đầu ra của Đoạn mã trên.