Kính thưa: Ban quản trị diễn đàn, các bạn thành viên của 4rum thủ thuật Access
Hôm nay xin phép Ban quản trị diễn đàn cho mình lập chuyên mục này mục đích để tổng hợp tất cả các demo về các kiểu vòng lặp trong Access nhằm tìm hiểu, trao đổi, góp nhặt những cú pháp được các anh/chị chế biến ra từ những cú pháp vòng lặp.
Mình cũng biết trên diễn đàn mình cũng có nhiều về vấn đề này nhưng nó cũng hơi rời rạc để có thể tìm hiểu và thảo luận hoặc chia sẽ.
Lý do hôm nay mình làm như vậy: Đó là
1. Khi mới tập tành về Access mình rất khó khăn khi đọc cú pháp của vòng lặp ( đến nay cũng thế)
2. Muốn nhận được sự quan tâm, đóng góp của các Anh/chị, các bạn có cùng đam mê Access trong ứng dụng thực tiễn về các kiểu vòng lặp. Để bạn mới, bạn củ cùng nhau học tập, thảo luận...phát triển.
3. Tổng hợp thành một khu vực riêng, để dễ thảo luận, tìm kiếm.
4. Để tôi luyên bản thân mình khi nhìn vào kiểu vòng lặp nào cũng có thể giải thích ngay.
Để bắt đầu mình xin liệt kê:
Cấu trúc lặp Là cấu trúc cho phép điều khiển thi hành lập đi lập lại nhiều lần một hoặc nhiều câu lệnh. Số lần lặp lại tùy thuộc vào kết quả kiểm định 1 điều kiện trong cấu trúc lặp. Các cấu trúc lặp gồm có:
_______________________________________________________________________________________
1. Vòng lặp For
Mã PHP:
For <biến đếm> = <giá trị đầu> To <giá trị cuối> [Step <bước nhảy>]
<Các câu lệnh>
Next <biến đếm>
Giải thích cú pháp:
Lần tương ứng <biến đếm> chạy từ <giá trị đầu> đến <giá trị cuối>. Sau mỗi lần lặp <biến đếm> tăng <bước nhảy> đơn vị, giá trị mặc định của <bước nhảy> là 1, phần nằm trong cặp [ ] là phần tuỳ chọn.
Vòng lặp For là vòng lặp có số lần lặp xác định, người ta thường gọi tắt là vòng lặp xác định. Nếu muốn kết thúc vòng lặp For vào bất cứ thời điểm nào ta chỉ cần dùng câu lệnh Exit For.
Ví dụ:
1) Tính tổng: S = 1 + 2 + ... + n (sử dụng vòng lặp For)
Mã PHP:
S = 0 ‘ biến S dùng để chứa tổng ban đầu phải đặt bằng không'
For i = 1 To n ‘ i là biến đếm chạy từ 1 đến n'
S = S + i ‘ tổng S mới = tổng S cũ + số i'
Next i
2) Bài toán vừa gà vừa chó bó lại cho tròn, tổng cộng 36 con và có 100 chân. Hỏi có bao nhiêu gà, bao nhiêu chó?
Mã PHP:
For i = 1 To 36 ‘ vòng lặp cho số gà'
For j = 1 To 36 ‘ vòng lặp cho số chó (2 vòng lặp lồng nhau)'
If (i + j = 36) And (i * 2 + j * 4 = 100) Then
‘ nếu số gà + số chó =36 và tổng số chân là 100 thì'
Soga = i ‘ số gà = i'
Socho = j ‘ số chó =j'
End If
Next j ‘ của vòng lặp For trong'
Next i ‘ của vòng lặp For ngoài'
3) Tìm tất cả các phương án có thể để đổi 200000 đồng ra các loại tiền 1000 đồng, 2000 đồng và 5000 đồng:
Mã PHP:
For x=0 To 200 ‘ Số tờ 1000 đồng'
For y=0 To 100 ‘ Số tờ 2000 đồng '
For z=0 To 40 ‘ Số tờ 5000 đồng'
If (x*1000+y*2000+z*5000=200000) Then
Msgbox “Số tờ 1000 là: ” & x & “ 2000 là:” & y & “và 5000 là:” & z
End If
Next z
Next y
Next x
2. Vòng lặp While
Mã PHP:
Do While <điều kiện>
<Các câu lệnh>
Loop
Giải thích cú pháp:
1) Kiểm tra <điều kiện>, nhảy sang bước 2.
2) Nếu <điều kiện> đúng máy thực hiện <Các câu lệnh> rồi quay lại bước 1. Nếu <điều kiện> sai máy nhảy sang bước 3.
3) Kết thúc vòng lặp.
Khác với vòng lặp For, số lần lặp của vòng lặp Do While có thể không xác định được. Do While hoàn toàn có thể thay thế cho For nhưng ngược lại For không thể thay thế cho Do While trong một số trường hợp. Vòng lặp Do While có thể không được thực hiện lần nào nếu ngay từ đầu <điều kiện> đã bị sai.
Ví dụ:
1) Tính tổng: S = 1 + 2 + ... + n (sử dụng Do While)
Mã PHP:
S = 0 ‘ biến S chứa tổng'
i = 1 ‘ khởi động biến đếm vòng lặp i'
Do While i <= n ‘ chừng nào i <= n thì:'
S = S + i ‘ cộng thêm vào S giá trị i'
i = i + 1 ‘ tăng giá trị của biến đếm vòng lặp lên 1 đơn vị'
Loop
(Chú ý: Câu lệnh i = i + 1 là rất quan trọng bởi không có nó giá trị của biến i không thay đổi làm điều kiện luôn đúng và dẫn tới vòng lặp vô tận - không kết thúc).
2) Cho n là một số nguyên dương hãy tính tổng tất cả các chữ số của n. Ví dụ: n=2110 thì tổng các chữ số là: 2+1+1+0=4.
Mã PHP:
S = 0 ‘ Biến S dùng để chứa tổng'
Do While n <> 0 ‘ chừng nào n khác không thì:'
S = S + n Mod 10 ‘ n Mod 10 là phép chia cho 10 lấy phần dư'
n = n \ 10 ‘ n\10 là phép chia n cho 10 lấy phần nguyên'
Loop
(Chú ý: Bài toán này chỉ có thể được thực hiện bởi Do While, không thực hiện được với For bởi số các chữ số của n là không xác định)
3. Vòng lặp Do Until
Mã PHP:
Do Until <điều kiện>
<Các câu lệnh>
Loop
Giải thích cú pháp:
1) Kiểm tra <điều kiện>, nhảy sang bước 2
2) Nếu <điều kiện> đúng thì sang bước 3, ngược lại máy thực hiện <Các câu lệnh> rồi quay lại bước 1.
3) Kết thúc vòng lặp.
Vòng lặp Do Until chỉ khác Do While ở chỗ: <điều kiện> trong Do While là điều kiện để lặp còn trong Do Until là điều kiện để kết thúc.
Ví dụ:
1) Tính tổng: S = 1 + 2 + ... + n (sử dụng Do Until)
Mã PHP:
S = 0 ‘ biến S chứa tổng'
i = 1 ‘ khởi động biến đếm vòng lặp i'
Do Until i > n ‘ thực hiện cho đến khi i > n'
S = S + i ‘ cộng thêm vào S giá trị i'
i = i + 1 ‘ tăng giá trị của biến đếm vòng lặp lên 1 đơn vị'
Loop
2) Cho n là một số nguyên dương hãy kiểm tra n có phải là số đối xứng hay không. Ví dụ số 92529 là sô đối xứng.
Mã PHP:
m = n ‘ m là biến tạm ban đầu nhận giá trị bằng n'
S = 0 ‘ biến S dùng để chứa giá trị số đảo ngược của n'
Do Until = 0 ‘ thực hiện cho đến khi n=0'
S = S*10 + n Mod 10 ‘ lấy S trước * 10 cộng với số dư của n chia cho 10'
m = m \ 10 ‘ m\10 là phép chia m cho 10 lấy phần nguyên'
Loop
If S = n Then
‘ n là số đối xứng!'
Else
‘ n không phải là số đối xứng!'
End If
Xin sửa lại bài cho gọn...những phần bỏ sẽ được tiếp tục trong những ngày tới phía dưới....và kèm cả demo minh họa.