Hỏi thêm về vòng lập FOR

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Bài trước anh SA có cho 1 vòng lập như sau:
Mã:
[LEFT]Option Explicit
Function TongLapPhuong(Optional Thu As Byte)
 Dim iJ As Integer
 Dim bChuc As Byte, bDVi As Byte, SoNghiem As Byte
 For iJ = 100 To 999
    bDVi = iJ Mod 10
    bChuc = (iJ \ 10) Mod 10
    If (iJ \ 100) ^ 3 + bChuc ^ 3 + bDVi ^ 3 = iJ Then
        SoNghiem = 1 + SoNghiem
        If SoNghiem = Thu Then Exit For
    End If
 Next iJ
 If Thu = 0 Then TongLapPhuong = SoNghiem Else TongLapPhuong = iJ
End Function
Em đã giãi dc gần hết ý nghĩa của Function này... Tuy nhiên vẫn ko hiểu dc mấy chổ
Tại sao TongLapPhuong(0) lại = 4
Tại sao TongLapPhuong(số lớn hơn 4) lại = 1000
Nhờ anh Sa giãi thích thêm chút
Mến
ANH TUẤN[/LEFT]
 
Optional !

Optional là từ khóa, cho phép ta tùy chọn việc cung cấp giá trị cho biến!

Nếu ta không cung cấp, nó sẽ = 0 hay ="" hay = False (tùy kiểu của biến)

Ở đây Tuấn cung cấp hẵn giá trị 0 thì dòng lệnh gần cuối có vế bảo rằng,
Mã:
If Thu = 0 Then TongLapPhuong = SoNghiem
SoNghiem là biến đếm khi gặp điều kiện thỏa;
Đúng là có bốn nghiệm; sẽ cung cấp đúng cái ta iêu cầu
Nếu ta iêu cầu cái thứ 3 sẽ là TongLapPhuong( 3) . . .
Nếu ta nhập vô > SoNghiem có (5-255) thì vòng lặp đến cuối mới thoát;
Và như vậy VBA ghi giữ số iJ = 1000 (không phải 999 à nha) Ta đòi thì nó đưa thôi:
Đây:
If Thu = 0 Then TongLapPhuong = SoNghiem Else TongLapPhuong = iJ

Nếu Tuấn nhập vô số > 255 xem sao! Nó đuổi đi chỗ khác tức thì!

&ui nha!
 
Lần chỉnh sửa cuối:
Upvote 0
vong lap kho qua

em cung dang co bai ve vong lap for ma khong biet giai quyet lam sao
Ham o day em tinh de tim ra gia tri Y (gia tri thich hop cua cac X(i)) voi gia tri X(1) va A (ham cua X) ban dau duoc gan= 0.3. sau moi lan chay (vi du em co X(2) va tu X(2) em lai co cong thuc tinh giatri moi cua A, va lai quay tro lai voi gia tri ban dau la X(2) vua tinh va gia tri A moi. Cuoi cung tim ra Y tu lenh If ... ( o day em da don gian cong thuc, va A la mot ham cua X ). Em nghi phai viet hai vong for, nhung khong biet lam sao
Cac bac giup em voi

Function y(ByRef A As Double) As Double
Dim i As Integer
Dim j As Integer
Dim min As Double
Dim equal(5) As Double
Dim a1 As Double
Dim X(7) As Double
'For j = 1 To 5
For i = 1 To 5
a1 = 0.3
X(1) = a1
X(i + 1) = X(i) - A ^ 3 * 5 * X(i) / (X(i) + 1)
Next i
min = 1E+300
For i = 1 To 5
equal(i) = A ^ 3 * 5 * X(i)
If equal(i) < 0 Then
Exit For
Else
If equal(i) < min Then
min = equal(i)
y = X(i) ' Choose the best value gan = Y
End If
End If
Next i
'Next j
End Function
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Ghi chép từ sách:

Bạn có bao giờ thắc mắc, làm thế nào mà máy tính của bạn (hay đơn giản chỉ là 1 chương trình ứng dụng như excel chẳng hạn) tính được hàm Sin(0.35) hay Exp(.701)?
Dĩ nhiên, câu trả lời là chúng được tính từ chuỗi lũy thừa;
Hai ví dụ về chuỗi Maclaurin:
Mã:
           [B]Sin ( x) =  x - (X^3/ 3!) + (X^5/5!) - (X^7/7!) + . . . 
           Exp(x) =  1 + X + X^2/2! + X^3/3! + . . . . [/B]
Vậy chúng ta có thể dùng vòng lặp For . . . Next để tính Exp(x) đến giá trị X chỉ định không?
Mã:
Option Explicit
Function ExpMac(X)
 Const Minm = 0.0001
 Dim Temp, iK, iZ
    Temp = 1: iK = 0
    For iZ = 1 To 2 * 10 ^ 6
        ExpMac = ExpMac + Temp
        iK = iK + 1
        Temp = Temp * X / iK
        If ExpMac < Minm Then Exit For
    Next iZ
'  [COLOR="Blue"]  MsgBox Str(iZ)[/COLOR]
End Function

Bạn có thể chiêm nghiệm nhờ vô excel!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom