Trái với cấu trúc lặp Do while là kiểm tra điều kiện trước khi thực hiện công việc, Cấu trúc lặpDo ... Loop WhilevàDo ... Loop Untillại thực hiện công việc sau đó mới kiểm tra điều kiện lặp (Cấu trúc Do...Loop While giống như cấu trúcRepeat ... Until trong PAscal).
Thực hành:Viết chương trình nhập vào một danh sách gồm Họ tên và điểm thi của sinh viên trong một lớp. Việc nhập kết thúc nếu họ tên nhập vào là một xâu rỗng.
Hướng dẫn:
• Công việc nhập lặp đi lặp lại do vậy cần sử dụng vòng lặp
• Số lần lặp là không xác định nên không thể sử dụng vòng lặpfor
• Việc kiểm tra được tiến hành sau khi người dùng nhập họ tên, do vậy cần dùng vòng lặpDo ... Loop While.
Viết lệnh (sử dụng cấu trúc Do ... Loop While):
Option Explicit
'/// Định nghĩa kiểu bản ghi (Kiểu dữ liệu mới)
'/// Kiểu bản ghi định nghĩa trong Form phải có thuộc tính là Private (không được là public)
PrivateTypeKieu_SinhVien HoTenAsString
DiemAsInteger
End Type
DimNAsInteger'/// Dùng để lưu số lượng phần tử đã nhập vào
PrivateSubForm_Load()
DimSinhVien(100)AsKieu_SinhVien N = 0
N = N + 1
SinhVien(N).HoTen = InputBox("Họ tên của sinh viên thứ " & N) SinhVien(N).Diem = InputBox("Điểm của sinh viên thứ " & N)
LoopWhile SinhVien(N).HoTen <> ""
'/// Hiển thị kết quả vừa nhập
DimiAsInteger
Fori = 1 To N - 1
MsgBox "Họ tên : " & SinhVien(i).HoTen & " Điểm: " & SinhVien(i).Diem
Next End Sub
Viết lệnh (sử dụng cấu trúc Do ... Loop Until):
Option Explicit
'/// Định nghĩa kiểu bản ghi (Kiểu dữ liệu mới)
'/// Kiểu bản ghi định nghĩa trong Form phải có thuộc tính là Private (không được là public)
PrivateTypeKieu_SinhVien HoTenAsString
DiemAsInteger
End Type
DimNAsInteger'/// Dùng để lưu số lượng phần tử đã nhập vào
PrivateSubForm_Load()
DimSinhVien(100)AsKieu_SinhVien N = 0
Do
N = N + 1
SinhVien(N).HoTen = InputBox("Họ tên của sinh viên thứ " & N) SinhVien(N).Diem = InputBox("Điểm của sinh viên thứ " & N)
Loop Until SinhVien(N).HoTen = ""
'/// Hiển thị kết quả vừa nhập
DimiAsInteger
Fori = 1 To N - 1
Debug.Print "Họ tên : " & SinhVien(i).HoTen & " Điểm: " & SinhVien(i).Diem
Next End Sub
Nhận xét:
• Cấu trúc Do ...LoopWhile và cấu trúc Do ... LoopUntil đều thực hiện công việc lặp sau đó mới kiểm tra điều kiện nhưng trong cấu trúc lặp Do ...Loop
While thì việc lặp chỉ kết thúc nếu điều kiện là sai, còn Do ...LoopUntil thì kết thúc nếu điều kiện lặp là đúng (giống với Repeat until trong PAscal)