Câu lệnh if - else
Dạng 1, thực hiện khối lệnh khi biểu thức logic kiểm tra là true
if (biểu_thức) { //Viết lệnh chạy khi biểu_thức là true }
Dạng 2, nếu điều kiện là đúng thực hiện khối lệnh 1, nếu sai thực hiện khối lệnh 2
if (biểu_thức) { //Viết lệnh chạy khi biểu_thức là true } else { //Viết lệnh chạy khi biểu thức là false } //CÓ THỂ VIẾT NHIỀU LỆNH IF if (biểu_thức_1) { //..Các câu lệnh } else if (biểu_thức_2) { //Các câu lệnh } else if (biểu_thức_3) { //Các câu lệnh } else { //Các câu lệnh }
var a = 12; if (a < 10) { print('a nhỏ hơn 10'); } else if (a < 8) { print('a nhỏ hơn 8'); } else { print('a lớn hơn hoặc bằng 10'); }
Câu lệnh rẽ nhánh switch
Khi cần rẽ nhiều nhánh, thay vì dùng nhiều lệnh if else ở trên thì có thể dùng switch với cú pháp
switch (biểu_thức) { case : giá_trị_1 // Khối lệnh break; case : giá_trị_2 //Khối lệnh break; default: //Khối lệnh mặc định }
Giá trị của biểu_thức
được so sánh với các giá trị giá_trị_1
, giá_trị_2
... nếu bằng
cái nào thì thi hành khối lệnh bắt đầu tử điểm đó cho đến khi gặp break;
Nếu có khối default
thì khi không có giá trị nào phù hợp sẽ thi hành khối này.
var t = 0; switch(t) { case 0: print('Chủ Nhật'); break; case 1: print('Thứ 2'); break; default: print('Không có giá trị nào'); }
Vòng lặp for
Cú pháp:
for (statement1; statement2; statement3) { Khối lệnh thi hành }
statement1
: lệnh thi hành trước khi vòng lặpfor
bắt đầustatement2
: điều kiện kiểm tra trước mỗi lần thi hành khối lệnhfor
(true
thì khối lệnh sẽ thi hành,false
sẽ khối for sẽ không thi hành - thoát lặp)statement3
: thi hành sau mỗi lần một vòng hoàn thành
Ví dụ:
for (var i=1; i<=5; i++) { print(i); } //In ra 1 2 3 4 5
Có thể bỏ qua statement1
(vẫn giữ lại dấu ;
)
var i = 1; for (; i<=5; i++) { print(i); } //In ra 1 2 3 4 5
Tương tự bạn có thể bỏ qua statement3
và statement2
(vẫn giữ ;
), lưu ý bạn cũng có thể sử dụng lệnh break;
để thoát vòng lặp.
var k = 0; for (;;k+=2) { if (k>10) break; print(k); } //In ra 2 4 6 8 10
Vòng lặp while trong Dart
Thi hành khối lệnh khi mà điều kiện kiểm tra vẫn là true
while (điều-kiện) { //Khối lệnh }
Đầu tiên nó kiểm tra điều kiện, nếu true
sẽ thi hành khối lệnh. Đến cuỗi khối lại kiểm tra điều kiện,
nếu điều kiện vẫn là true
thì lại tiếp tục thì hành vòng mới của khối lệnh.
Ví dụ
var i=0; while (i<=5) { print(i); i++; } //In ra 0 1 2 3 4 5
Lưu ý về việc sau một số vòng thì điều kiện phải là false
nếu không vòng lặp sẽ lặp lại vô tận.
Vòng lặp do while trong Dart
Giống với vòng lặp while
nhưng khối lệnh thi hành luôn mà không kiểm tra điều kiện trước, khi khối lệnh
thi hành xong mới kiểm tra điều kiện để xem có lặp lại hay không
Cú pháp
do { //Khối lệnh } while (condition);
Ví dụ
var i=20; do { print(i); i++; } while (i<=25); //In ra 20 21 22 23 24 25
Vòng lặp do ... while khối lệnh luôn được thi hành ít nhất một lần
Lệnh continue và break
Trong vòng lặp khi gặp continue;
nó sẽ bỏ qua các lệnh còn lại và khởi tạo vòng lặp mới luôn. Còn nếu gặp break;
thì bỏ qua các lệnh còn lại đồng thời thoát khỏi vòng lặp.
for (i = 0; i <= 70000; i++) { if (i == 5) { continue; //Khởi tạo vòng lặp mới luôn } print(i); if (i >=7) { break; //Thoát lặp nếu i >=7 } }
//In ra các số: (bỏ qua 5) 0 1 2 3 4 6 7
Lệnh continue
còn dùng để nhảy đến một khối lệnh có nhãn bằng cú pháp
continue nhãn_khối_lệnh;
Lệnh break
còn dùng để hủy thi hành khối lệnh bên ngoài có nhãn, với cú pháp:
break nhãn_khối_lệnh_ngoài;
Phần nói về các đối tượng có kiểu liệt kê được (ví dụ như mảng, danh sách ...), còn có các lệnh duyệt qua từng phần tử liệt kê được đó với các lệnh for ... in
, for ... of
.
Test với Assert
Dart cung cấp lệnh Assert(biểu_thức_logic); để khi chạy mà biểu thức logic sai sẽ dừng chương trình ở đó. Assert là cách để kiểm tra một biểu thức, vấn đề là nó không có ảnh hưởng gì khi chạy ở chế độ product nó chỉ tác dụng khi phát triển (Chạy debug Ctrl + F5 trong VS)
// Đảm bảo một đối tượng khác null assert(myobject != null); // Đảm bảo số lớn hơn 100 assert(number > 100);