Hiển thị kết quả từ 1 đến 10 / 10
  1. #1
    Tham gia
    05-08-2007
    Location
    Thành Phố Cụ Hồ
    Bài viết
    62
    Like
    0
    Thanked 0 Times in 0 Posts

    Năm nhuận và VB.NET?

    Các bạn coi kĩ( hoặc copy về Test) và giải thích dùm mình nha.

    Class Day
    Code:
    ' Day.vb
    ' Encapsulates month, day and year.
    Class Day
        Private monthValue As Integer ' 1-12                    
        Private dayValue As Integer ' 1-31 based on month       
        Private yearValue As Integer ' any year (could validate)
    
        ' constructor confirms proper value for month, then calls
        ' method CheckDay to confirm proper value for day
        Public Sub New(ByVal mm As Integer, _
                ByVal dd As Integer, ByVal yy As Integer)
            Month = mm
            Day = dd
            Year = yy
        End Sub ' New
    
        ' property Month
        Public Property Month() As Integer
            Get
                Return monthValue
            End Get
    
            Set(ByVal mm As Integer)
                ' ensure month value is valid (in the range 1-12)
                If (mm > 0 AndAlso mm <= 12) Then
                    monthValue = mm
                Else
                    monthValue = 1 ' to ensure consistent state
    
                    ' inform user of error
                    Console.WriteLine("Invalid month (" & mm & _
                       ") set to 1.")
                End If
            End Set
        End Property ' Month
    
        ' property Day
        Public Property Day() As Integer
            Get
                Return dayValue
            End Get
    
            Set(ByVal dd As Integer)
                dayValue = CheckDay(dd) ' validate dayPassed
            End Set
        End Property ' Day
    
        ' property Year
        Public Property Year() As Integer
            Get
                Return yearValue
            End Get
    
            Set(ByVal yy As Integer)
                yearValue = yy
            End Set
        End Property ' Year
    
        ' confirm proper day value based on month and year
        Private Function CheckDay(ByVal testDayValue As Integer) As Integer
            Dim daysPerMonth() As Integer = _
                       {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
    
            ' validate day
            If (testDayValue > 0 AndAlso _
               testDayValue <= daysPerMonth(Month)) Then
                Return testDayValue
            End If
    
            ' check for leap year in February
            If (Month = 2 AndAlso testDayValue = 29 AndAlso _
            ((Year Mod 400 = 0) OrElse (Year Mod 4 = 0 AndAlso Year Mod 100 <> 0))) Then
                Return testDayValue
            End If
    
    
            ' inform user of error
            Console.WriteLine("Invalid day (" & testDayValue & ") set to 1. ")
            Return 1 ' leave object in consistent state
        End Function ' CheckDay
    
        ' create string containing month/day/year format
        Public Overrides Function ToString() As String
            Return (Month & "/" & Day & "/" & Year)
        End Function ' ToString
    End Class ' Day
    Class Employee
    Code:
    ' Employee.vb
    ' Represent employee name, birthday and hire date.
    Class Employee
        Private firstName As String
        Private lastName As String
        Private birthDate As Day ' member object reference
        Private hireDate As Day ' member object reference 
    
        ' Employee constructor
        Public Sub New(ByVal first As String, ByVal last As String, _
                ByVal birthMonth As Integer, ByVal birthDay As Integer, _
                ByVal birthYear As Integer, ByVal hireMonth As Integer, _
                ByVal hireDay As Integer, ByVal hireYear As Integer)
    
            firstName = first
            lastName = last
    
            ' create Day instance for employee birthday         
            birthDate = New Day(birthMonth, birthDay, birthYear)
    
            ' create Day instance for employee hire date    
            hireDate = New Day(hireMonth, hireDay, hireYear)
        End Sub ' New
    
        ' return employee information as String
        Public Overrides Function ToString() As String
            Return (lastName & ", " & firstName & " Hired:" _
               & hireDate.ToString() & " Birthday:" & birthDate.ToString())
        End Function ' ToString
    End Class ' Employee
    Module CompositionTest
    Code:
    ' CompositionTest.vb
    ' Demonstrate an object with member object reference.
    Module CompositionTest
        Sub Main()
            Dim employee As New Employee( _
              "Bob", "Blue", 2, 29, 2001, 2, 29, 2008)
            Console.WriteLine(employee.ToString())
    
            Console.ReadLine()
        End Sub ' Main
    End Module ' CompositionTest
    Đây là bài demo trong một cuốn sách mình đang học.(Visual Basic® 2005 for Programmers: Deitel® Developer Series, Second Edition)
    Mình đã Test rất nhiều lần nhưng vẫn ko hiểu tại sao,rõ ràng mình truyền giá trị một năm ko phải nhuận(2001) thế nhưng nó vẫn xuất ra tháng 2 có 29 ngày (đáng ra phải xuất 1 dòng báo lỗi và thay cái ngày lỗi đó bằng ngày 1)

    thế nhưng như ở dưới đây các bạn thấy đó tháng 2 năm 2001 vẫn có 29 ngày.
    Code:
    Blue, Bob Hired: 2/29/2008 Birthday: 2/29/2001
    Mình copy nguyên xi trong cuốn sách nên loại trừ trường hợp gõ sai,ko lẽ do tác giả nhưng mình kiểm tra rất kĩ cách tính năm nhuận rồi và cũng ko có sai sót gì hết.

    Mong cao thủ giải cái khúc mắc này dùm,cám ơn nhiều.
    Được sửa bởi MaiSatThanhKim lúc 23:44 ngày 05-09-2007
    Quote Quote

  2. #2
    Tham gia
    23-08-2007
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts
    sao phải vẽ vời ra làm gì nhỉ,có mấy dòng code là lấy được năm nhuận thôi mà
    Public Function NamNhuan(Nam As Integer) As String
    Dim KL As String
    If Nam Mod 4 = 0 And Nam Mod 100 <> 0 Or Nam Mod 400 = 0 Then
    KL = "la nam nhuan"
    Else
    KL = "ko phai nam nhuan"
    End If
    NamNhuan = KL
    End Function
    ...............

    rồi dùng cái hàm
    ngaycuoi=DateSerial(Năm,Tháng+1,0).Day //tháng 2 =>'return 28 nếu ko là năm nhuận,29 nếu là năm nhuận
    hoặc
    ngaycuoi=Date.DaysInMonth(Năm,Tháng) //tháng 2 như trên
    để tính ngày cuối của tháng

  3. #3
    Tham gia
    31-05-2006
    Location
    Hà Nội
    Bài viết
    130
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn chú ý nhé
    Code:
     
        Public Sub New(ByVal mm As Integer, _
                ByVal dd As Integer, ByVal yy As Integer)
            Month = mm
            Day = dd
            Year = yy
        End Sub ' New
    Khi khởi tạo property Day đc trao value trước property Year
    Code:
    ' check for leap year in February
            If (Month = 2 AndAlso testDayValue = 29 AndAlso _
            ((Year Mod 400 = 0) OrElse (Year Mod 4 = 0 AndAlso Year Mod 100 <> 0))) Then
                Return testDayValue
            End If
    khi CheckDay, cách tính năm nhuận k sai nhưng giá trị của thuộc tính Year chưa đc gán và = 0 --> 0 Mod 400=0

    Bạn thử sửa lại
    Code:
     
         Public Sub New(ByVal mm As Integer, _
                ByVal dd As Integer, ByVal yy As Integer)
            Year = yy        
            Month = mm        
            Day = dd
        End Sub ' New
    hy vọng sẽ hết lỗi

  4. #4
    Tham gia
    05-08-2007
    Location
    Thành Phố Cụ Hồ
    Bài viết
    62
    Like
    0
    Thanked 0 Times in 0 Posts
    @ KingsCat:cám ơn đã sửa được rồi.Cũng nghĩ là cái Year truyền dzô có vấn đề thế nhưng nghĩ hoài ko ra nên post lên đây.Rút kinh nghiệm lần sau sẽ suy nghĩ kĩ hơn.

    @ thanhlv84:cám ơn bạn đã trả lời thế nhưng câu trả lời của bạn ko ăn nhập vào đâu hết.

  5. #5
    Tham gia
    23-08-2007
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts
    tôi ko bàn luận đúng sai về cách làm của bạn,tôi chỉ thấy là nó quá dài dòng và rối mắt,bởi vì sách mà lại,mấy ông ấy cứ thích vẽ vời cho thêm phần nặng sách,chỉ cần cái hàm đó là lấy được năm nhuận và 2 cái hàm có sẵn là lấy được ngày của tất cả các tháng(chứ đâu mỗi tháng 2) mà ko cần quan tâm nó có phải là năm nhuận hay ko,nối ghép mấy cái hàm đó lại thì bạn thích lấy thông tin gì từ nó cũng có
    chỉ là góp ý thôi,đừng nghĩ gì nhé,hì

  6. #6
    Tham gia
    05-08-2007
    Location
    Thành Phố Cụ Hồ
    Bài viết
    62
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi thanhlv84 View Post
    tôi ko bàn luận đúng sai về cách làm của bạn,tôi chỉ thấy là nó quá dài dòng và rối mắt,bởi vì sách mà lại,mấy ông ấy cứ thích vẽ vời cho thêm phần nặng sách
    Dĩ nhiên là tôi đúng rồi ko còn gì bàn cãi ở đây.Và nói với bạn rằng nó ko dài dòng và rối mắt đâu(mới có vài trang code mà đã rối mắt rồi ah),bởi chính vì nó là một cuốn sách hay và nó đang dạy về cách sử dụng các "Class" và các quan hệ ,kết hợp giữa các "Class" lại với nhau(và còn nhiều cái ko nói hết được ở đây) nên nó mới dài như vậy chứ ko phải nó dạy về cách sử dụng các hàm có sẵn (nếu chỉ như vậy thì 100 trang là đủ rồi và cũng ko cần phải đọc sách làm gì.)

    Cái họ cần truyền đạt là "tư duy" chứ ko phải là "sử dụng".

    chỉ cần cái hàm đó là lấy được năm nhuận và 2 cái hàm có sẵn là lấy được ngày của tất cả các tháng(chứ đâu mỗi tháng 2) mà ko cần quan tâm nó có phải là năm nhuận hay ko,nối ghép mấy cái hàm đó lại thì bạn thích lấy thông tin gì từ nó cũng có
    Nhấn mạnh với bạn bài này ở đây họ ko dạy về cách tính năm nhuận(năm nhuận chỉ là 1 hàm nhỏ để check ngày trong tháng thôi).

    Chỉ cái hàm năm nhuận như bạn ko thì nói làm gì,thằng học sinh cấp 2 nó cũng biết năm nhuận là gì rồi và chỉ cần biết một chút về ngôn ngữ lập trình VB.NET nó cũng viết được như bạn (mà cái hàm của bác cũng ko được gọi là...)

    chỉ là góp ý thôi,đừng nghĩ gì nhé,hì
    Ko sao góp ý đúng thì nên góp ý,góp ý tầm bậy thì ko nên.Trước khi góp ý hãy xem kĩ vấn đề đang bàn luận ở đây là gì để tránh tình trạng nói lạc đề ko đúng trọng tâm.

    Cuốn sách này khá hay và nó dày gần 1500 trang,theo như nhiều người đã đọc và theo cả mình đây là một cuốn sách khá đầy đủ về VB.NET từ ứng dụng(Console and Form) tới web.Cũng như bạn thấy ở ngay cái tựa đề sách của nó "Visual Basic® 2005 for Programmers" cho nên...

    Nếu bạn cần mình gửi link cho down.

  7. #7
    Tham gia
    23-08-2007
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts
    có gì mà phải bức xúc vậy chứ,ùh,thì đúng rồi,bạn đang bảo vệ cuốn sách của bạn chứ đâu phải đang thể hiện trình độ của mình,nếu đúng rồi sao cái code nó lại ko theo ý muốn mà phải post lên đây để hỏi
    bạn nói cái họ truyền đạt là tư duy mà bạn lại nói rằng bạn chép nguyên code của người ta,điều này có quá mâu thuẫn ko,vậy bạn tư duy được gì từ cái code đấy
    đọc sách ko nhất thiết là phải bê nguyên code của người ta vào,rồi cứ thấy ai nói sách đó hay là nhất quyết bảo vệ,làm theo 1 cách máy móc,chủ quan,duy ý trí(ghi nhớ là tôi ko có ý nói cuốn sách đó ko hay nhé),chỉ cần tham khảo cách làm và kinh nghiệm họ đúc kết thôi
    bạn cũng ko cần nhấn mạnh tiêu đề của cuốn sách đó,tôi ko biết tiếng nước ngoài nên trả hiểu gì

  8. #8
    Tham gia
    05-08-2007
    Location
    Thành Phố Cụ Hồ
    Bài viết
    62
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi thanhlv84 View Post
    có gì mà phải bức xúc vậy chứ,ùh,thì đúng rồi,bạn đang bảo vệ cuốn sách của bạn chứ đâu phải đang thể hiện trình độ của mình,nếu đúng rồi sao cái code nó lại ko theo ý muốn mà phải post lên đây để hỏi
    bạn nói cái họ truyền đạt là tư duy mà bạn lại nói rằng bạn chép nguyên code của người ta,điều này có quá mâu thuẫn ko,vậy bạn tư duy được gì từ cái code đấy
    đọc sách ko nhất thiết là phải bê nguyên code của người ta vào,rồi cứ thấy ai nói sách đó hay là nhất quyết bảo vệ,làm theo 1 cách máy móc,chủ quan,duy ý trí(ghi nhớ là tôi ko có ý nói cuốn sách đó ko hay nhé),chỉ cần tham khảo cách làm và kinh nghiệm họ đúc kết thôi
    bạn cũng ko cần nhấn mạnh tiêu đề của cuốn sách đó,tôi ko biết tiếng nước ngoài nên trả hiểu gì
    Mình đang học nó mà thì trước tiên phải hiểu nó đã,hiểu được cách suy nghĩ,tư duy của người khác cũng là 1 cái hay rồi sau đó mới áp dụng vào trường hợp của mình chứ .

    Còn bạn muốn mình thể hiện trình độ thì ít nhất cũng đợi mình học xong chứ,thực sự mới tiếp xúc với lập trình có hơn 1 tháng àh thể hiện cái gì bây giờ (ko biết gì mà thể hiện tầm bậy tầm bạ giống bạn thì mình ko bao giờ làm)

    Tự học tự mầy mò nên còn nhiều cái ko hiểu mới lên đây hỏi . Và bạn lại là người ko hiểu câu hỏi của mình, trả lời ko ăn nhập dzô vấn đề rồi còn nói cuốn sách đó viết dài dòng, rối mắt (khó hiểu), rồi là mấy ông viết sách vẽ vời để dày sách (ko chê sách chứ còn gì,vậy dưới đây lại nói là ko chê cuốn sách này, ăn nói mâu thuẫn quá bạn ơi)

    Và ko phải người ta khen hay là mình cũng khen cuốn sách này hay vì sự thực là nó hay và mình đang đọc nó (hay mới đọc tiếp chứ).

    Mình nghĩ bạn hiểu cái tiêu đề đó chứ(ko lẽ ... dzậy), hihi mình chỉ nhấn mạnh tiêu đề đó để "nói khéo" bạn thôi mà chắc bạn cũng ko hiểu(ko hiểu thì thôi)

    Bạn ko đọc kĩ những gì người ta viết rồi gân cổ lên cãi hỏi sao mình ko phản kháng, mong bạn thông cảm .

    Thôi chấm dứt tranh cãi ở đây nếu bạn ko hiểu có nói tới 10 năm cũng vậy,mình nhường sân lại cho bạn đó tha hồ mà ...Hihi

  9. #9
    Tham gia
    23-08-2007
    Bài viết
    76
    Like
    0
    Thanked 0 Times in 0 Posts
    đúng văn hay chữ dốt,àh nhầm ...chữ tốt

  10. #10
    Tham gia
    28-08-2007
    Bài viết
    27
    Like
    0
    Thanked 0 Times in 0 Posts
    Em thay 2 bac cai nhau du qua. Len day la de trao doi kinh nghiem cho nhau chu co phai de cai nhau dau.
    Em thay bac MaiSatThanhKim noi la co duong link cua cuon sach do ha. Bac co the gui cho em de em down ve hoc ko? em moi tiep xuc voi VB.Net chua lau nen con rat nhieu van de chua hieu. Neu co the bac gui cho em ve dia chi NguyenTuanSinhVTS@gmail.com nhe.
    Thanks very much!

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •