Vòng lặp xác định

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 52 - 55)

8. Các cấu trúc điều khiển

8.3. Vòng lặp xác định

Thực hiện lặp một khối lệnh theo một biến đếm với số lần lặp xác định, ví dụ như khi ta cần tính tổng của các số nằm giữa hai số nào đó.

Các từ khóa:For, to, Step, Next Cú pháp:

For <biến_đếm>=<Bắt_Đầu> To <Kết_Thúc> [Step <bước_nhảy>]

[Khối_lệnh]

Next [<biến_đếm>]

Cấu trúc lặp này thực hiện theo trình tự sau:

Gán<Biến_đếm> bằng giá trị<Bắt_đầu>

So sánh<Biến_đếm> với giá trị<Kết_thúc>:

Nếunhỏ hơn hoặc bằng: thực hiện các lệnh bên trong[Khối_lệnh]và tự động cộng vào<Biến_đếm> một giá trị bằng <bước_nhảy> nếu có từ khóaStep, còn không thì cộng thêm 1 và quay lại bướcso sánh<Biến_đếm> với giá trị<Kết_thúc>.

Nếulớn hơn: kết thúc khối lệnh lặp.

Ví dụ sau tính tổng của các số từ 1 đến 10:

Dim i As Integer Dim Tong As Integer Tong = 0

For i = 1 To 10 Step 1 Tong = Tong + i Next

Debug.Print ("Tong = " & Tong)

Kết quả như sau:

Ví dụ sau tính tổng của các số chẵn từ 0 đến 10:

Dim i As Integer Dim Tong As Integer Tong = 0

For i = 0 To 10 Step 2 Tong = Tong + i Next

Debug.Print ("Tong = " & Tong)

Kết quả như sau:

CHÚ Ý Khi giá trị của <bước_nhảy> là âm (<0) thì cấu trúc lặp sẽ thực hiện trình tự đếm ngược, nghĩa là vai trò của giá trị<bắt_đầu>và<kết_thúc>đổi chỗ cho nhau.

Ví dụ tính tổng của các số chẵn từ 0 đến 10 sử dụng vòng lặp đếm ngược:

Dim i As Integer Dim Tong As Integer Tong = 0

For i = 10 To 0 Step -2 Tong = Tong + i Next

Debug.Print ("Tong = " & Tong)

Kết quả như sau:

GỢI Ý Nếu như muốn thoát khỏi vòng lặp xác địnhFORkhi mà số lần lặp chưa đủ thì ta sử dụng từ khóaExit For.

Ví dụ sau sẽ tính tổng của các số chẵn từ 0 đến 10, nhưng sẽ dừng vòng lặpFOR ngay khi tổng lớn hơn 20:

Dim i As Integer Dim Tong As Integer Tong = 0

http://www.ebook.edu.vn For i = 10 To 0 Step -2

Tong = Tong + i

If Tong > 20 Then Exit For Next

Debug.Print ("Tong = " & Tong)

Kết quả như sau: (10 + 8 + 6 = 24)

8.3.2. Lặp trong một tập hợp

Trong trường hợp muốn thực hiện các khối lệnh lặp theo một biến đếm chạy trong một tập hợp mà tập hợp đó không thể xác định được số lượng hoặc bước nhảy thì người dùng có thể dùng vòng lặp trong tập hợp (For Each … Next). Tập hợp ở đây có thể là một tập đối tượng dạng Collection hoặc một mảng.

Các từ khoá sử dụngFor, Each, In, Next Cú pháp:

For Each <biến_chạy> In <tập_hợp>

[Khối_lệnh]

Next

Giải thích: <biến_chạy> sẽ nhận các giá trị từ phần tử đầu tiên đến phần tử cuối cùng trong

<tập_hợp>. Ứng với mỗi giá trị của<biến_chạy>, khối lệnh được thực hiện một lần.

CHÚ Ý Kiểu của<biến_chạy>trong vòng lặp (For Each … Next) sẽ phụ thuộc vào kiểu của <tập_hợp> mà nó duyệt qua là kiểu mảng hay kiểu tập đối tượng. Đối với

<tập_hợp> là tập đối tượng thì kiểu dữ liệu của <biến_chạy> có thể là Variant, hoặc đối tượng cùng kiểu với tập đối tượng đó. Đối với <tập_hợp> là mảng thì kiểu dữ liệu của<biến_chạy>chỉ có thể làVariant.

Ví dụ sau sẽ thực hiện tính tích các số trong một mảng 2 chiều với việc dùng vòng lặp trong tập hợp. Kết quả sẽ được hiển thị trong cửa sổ Immediate.

Public Sub TestForEach()

Dim a(0 To 2, 0 To 1) As Double Dim v As Variant

Dim Tich As Double

a(0, 0) = 1: a(1, 0) = 2: a(2, 0) = 3 a(0, 1) = 4: a(1, 1) = 5: a(2, 1) = 6 Tich = 1

Debug.Print "Cac phan tu trong mang"

For Each v In a Debug.Print v Tich = Tich * v Next

Debug.Print "Tich=" & Str(Tich) End Sub

Kết quả như sau:

Một phần của tài liệu Tự động hóa thiết kế cầu đường lê quỳnh mai (Trang 52 - 55)

Tải bản đầy đủ (PDF)

(434 trang)