Các cấu trúc rẽ nhánh if switch và vòng lặp for while trong Dart

Tìm hiểu các cấu trúc lệnh như rẽ nhánh với lệnh if else, swich case các loại vòng lặp fore, while với ngôn ngữ lập trình Dart

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ặp for bắt đầu
  • statement2 : điều kiện kiểm tra trước mỗi lần thi hành khối lệnh
    for (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 statement3statement2 (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);

ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB

Đăng ký nhận bài viết mới