bisestile6
considerazioni su anno bisestile e suo riconoscimento mediante due metodi diversi
anno bisestile condizioni:deve essere pari,divisibile per 4, divisibile anche per 400 se secolare( xx00...1200,1600,2000 si ....1300,1400,1500 no) prova: vedi se divisibile per 4 ? resto4=anno mod 4 = 0 >> si vedi se divisibile per 100 ?resto100=anno mod 100 =0 >> si vedi se edivisibile per 400 :?resto400=anno mod 400 = 0 >> si risulta bisestile, altrimenti non bisestile if resto4=0 then possibile bisestile if resto4=0 and resto100=0 and resto400=0 :bisestile if resto4=0 and resto100=0 and resto400<>0 :non bisestile
anno bisestile possiede data 2/29/anno dopo data 2/28/anno se aggiungo 1 giorno alla data 2/28/anno e ottengo 2/29/anno vuol dire che anno=bisestile se ottengo invece 3/1/anno (cambio mese) significa che anno <> bisestile
nella listbox1 a sinistra si visualizzano risultati in funzione del primo metodo nella listbox2 a destra si visualizzano( e confrontano) risultati con DateSerial
vedi bisestile6.ppt
rem codice per calcolo con primo metodo
Private Sub CommandButton1_Click()
Dim resto4, resto100, resto400 As Integer
Dim anno As Integer
anno = TextBox1.Value
ListBox1.AddItem ("anno da verificare=" & anno)
resto4 = anno Mod 4
resto100 = anno Mod 100
resto400 = anno Mod 400
If resto4 = 0 Then
ListBox1.AddItem ("possibile bisestile:divisibile per
4")
Else
ListBox1.AddItem ("non bisestile:non divisibile per 4")
End If
If resto4 = 0 And resto100 = 0 And resto400 = 0 Then
ListBox1.AddItem ("anno bisestile:divisibile per 4 e per
400")
Else
If resto4 = 0 And resto100 = 0 And resto400 <> 0 Then
ListBox1.AddItem ("non bisestile:divisibile per 4 ma non per
400")
End If
End If
ListBox1.AddItem ("---------------")
Rem conferma con altro metodo che usa DateSerial
verifica (anno)
End Sub
Private Sub CommandButton2_Click()
TextBox1 = ""
End Sub
Private Sub CommandButton3_Click()
TextBox1 = ""
ListBox1.Clear
ListBox2.Clear
End Sub
rem ricerca se anno bisestile
usando funzione DateSerial
Private Function verifica(anno As Integer) As Boolean
Dim data As Date
Dim mese2 As Integer
data = DateSerial(anno, 2, 28)
data = data + 1
mese2 = Month(data)
If Month(data) = 2 Then
verifica = True
ListBox2.AddItem (data & " bisestile " &
Month(data))
Else
verifica = False
ListBox2.AddItem (data & " non bisestile " &
Month(data))
End If
End Function