VB6 - Funcion para Calcular la Edad

Publicado en 'Programación' por Snoopy, 15 Jul 2007.





  1. Snoopy

    Snoopy Suspendido

    Registro:
    5 Nov 2006
    Mensajes:
    173
    Likes:
    0




    Espero que mi funcion este libre de errores, sino, avisen :D
    Verifica si el año es Bisiesto

    PHP:
    Public Function CalculaEdad(Nacio As Date) As String
        Dim MesesPasados 
    As Integer
        Dim Anios 
    As Integer
        Dim Meses 
    As Integer
        Dim dias 
    As Integer
     
        
    If Nacio Now Then
            CalculaEdad 
    "Fecha de Nacimiento Invalida"
            
    Exit Function
        
    End If
     
        
    MesesPasados DateDiff("m"NacioNow)
     
        
    Anios Int(MesesPasados 12)
        
    Meses MesesPasados Mod 12
     
        
    If Day(Now) >= Day(NacioThen
            dias 
    Day(Now) - Day(Nacio)
        Else
            
    Select Case Month(Now)
            Case 
    12468911dias 31 Day(Nacio) + Day(Now)
            Case 
    573012dias 30 Day(Nacio) + Day(Now)
            Case 
    3:  dias Bisiento(Year(Now)) - Day(Nacio) + Day(Now)
            
    End Select
            Meses 
    Meses 1
            
    If Meses = -1 Then
                Meses 
    11
                Anios 
    Anios 1
            End 
    If
        
    End If
        If 
    Anios 1 Then
            CalculaEdad 
    Anios " año "
        
    Else
            
    CalculaEdad Anios " años "
        
    End If
     
        If 
    Meses 1 Then
            CalculaEdad 
    CalculaEdad Meses " mes y "
        
    Else
           
    CalculaEdad CalculaEdad Meses " meses y "
        
    End If
     
        If 
    dias 1 Then
            CalculaEdad 
    CalculaEdad dias " dia"
        
    Else
            
    CalculaEdad CalculaEdad dias " dias"
        
    End If
     
    End Function
     
    Private Function 
    Bisiento(Anio As Integer) As Integer
        
    If (Anio Mod 4) = 0 Then
            Bisiento 
    29
        
    Else
            
    Bisiento 28
        End 
    If
    End Function
     
     
    Última edición: 15 Jul 2007


  2. Adriancero

    Adriancero Miembro nuevo

    Registro:
    3 Jul 2007
    Mensajes:
    25
    Likes:
    0
    Creo que nadie entendio, lo supongo porque nadie a comentado hasta el momento, al menos yo no entendi...que bruto no? xD
     
  3. Snoopy

    Snoopy Suspendido

    Registro:
    5 Nov 2006
    Mensajes:
    173
    Likes:
    0
    Esto es para los lurkers del foro, date cuenta cuantas visitas tiene, ademas, mira las veces que descargan los archivos atachados

    Saludos
     
  4. Goku

    Goku Miembro de bronce

    Registro:
    23 Set 2006
    Mensajes:
    1,646
    Likes:
    86
    Algo así enseñan en Cibertec, en un curso del primer ciclo que se llama Introducción a la Algoritmia; pero usando Java. Por cierto, si mal no recuerdo tú también eres de Cibertec, ¿cierto?

    Pienso que la programación sería maravillosa si no le metieran matemática... :D
     
  5. Snoopy

    Snoopy Suspendido

    Registro:
    5 Nov 2006
    Mensajes:
    173
    Likes:
    0
    La matematicas es lo de menos, aqui solo es lógica y nada más, si alguiente te pregunta: "Pasos para hacer una llamada", la mayoria dice: "Marcar y hablar" y lo programadores decimos:

    Paso 1: Tener Numero a Llamar
    Paso 2: Descolgar el Telefono
    Paso 3: Esperar tono de marcado
    Paso 4: Marcar Numero
    Paso 5: Si el Número esta Ocupado entonces colgar, esperar 5 minutos y volver al Paso 2, si contesta entonces seguir Paso 6
    Paso 6: Dar el mensaje
    Paso 7: Colgar el Telefono

    Es solo lógica, la matematicas entra pero en muy poco

    Saludos
     
  6. Goku

    Goku Miembro de bronce

    Registro:
    23 Set 2006
    Mensajes:
    1,646
    Likes:
    86
    Creo que has dado en el punto. Entonces parece que tengo que entrenar mejor mi lógica :(

    Básicamente los problemas con las condiciones para validar situaciones de error. Uhm... adjunto el proyecto de Introducción a la Algoritmia para este ciclo, como para que lo veas y opines qué tal está.

    Aunque para ti que te gusta la programación supongo que estará súper fácil.
     
  7. gian1200

    gian1200 Miembro frecuente

    Registro:
    6 Jul 2007
    Mensajes:
    85
    Likes:
    0
    Te falto lo más importante: tener telefono
     
    Última edición: 13 Ago 2007
  8. esmitt

    esmitt Miembro nuevo

    Registro:
    2 Ago 2007
    Mensajes:
    6
    Likes:
    0
    Comentario

    Hola
    En tú función Bisiento, te falta algo como (OJO, no se PHP)
    PHP:
    Private Function Bisiento(Anio As Integer) As Integer
        
    If (Anio Mod 4) = 0 Then
            
    If ((Anio Mod 100) = 0Then
                
    if ((Anio Mod 400) = 0)Then
                    Bisiento 
    29
                
    Else
                    
    Bisiento 28
            
    Else
                
    Bisiento 29
        
    Else
            
    Bisiento 28
        End 
    If
    End Function
    Lo que trato que hacer es que un año NO es bisiesto si es divisible entre 4 y al mismo tiempo entre 100 a menos que sea divisible entre 400.

    Por ejemplo, el año 2100 no es bisiesto; pero el 2000 si lo es
     
  9. Snoopy

    Snoopy Suspendido

    Registro:
    5 Nov 2006
    Mensajes:
    173
    Likes:
    0
    Tienes Razón, lo acabo de leer en Wikipedia

    Pero para ese tiempo ya estaré muerto y poco me importará mi edad.

    Saludos

    PD: ahorita ando con sueño, mañana sin falta te hago la rectificación... buenas noches
     
    Última edición: 14 Ago 2007
  10. Hadess_inf

    Hadess_inf Miembro nuevo

    Registro:
    16 Oct 2007
    Mensajes:
    11
    Likes:
    0
    Las matematicas representan el99% a la hora de programar
     
    Última edición: 16 Oct 2007
  11. Snoopy

    Snoopy Suspendido

    Registro:
    5 Nov 2006
    Mensajes:
    173
    Likes:
    0
    Si lo dices, asi debe ser.............. pero recuerda que en cualquier LP haces codigo con una secuencia Lógica, no una Hoja de Calculo, para eso esta el EXCEL

    Saludos
     
  12. Hadess_inf

    Hadess_inf Miembro nuevo

    Registro:
    16 Oct 2007
    Mensajes:
    11
    Likes:
    0

    La logica esta muy ligada a las matematicas, mientras mas conocimientos y practica tengas en lo que es matematica podras dar solucion de una forma mas facil y eficiente a la hora de programar o desarrollar un algoritmo, puesto que la matematica ayuda a desarrollar la lagica, veamos un ejemplo:

    Ordenar un vector: M(8)

    M(0)=15
    M(1)=93
    M(2)=10
    M(3)=35
    M(4)=5
    M(5)=10
    M(6)=25
    M(7)=30

    Solucion:

    int a, b, aux
    For(a=0;a<8;a++)
    {
    For(b=a+1;b<8;b+)
    {
    If m(a) > m(b) Then
    aux = m(a)
    m(a) = m(b)
    m(b) = aux
    End If
    }
    }
     
  13. Snoopy

    Snoopy Suspendido

    Registro:
    5 Nov 2006
    Mensajes:
    173
    Likes:
    0
    Esperemos que los sistemas sean basados en un 99% en vectores entonces

    Y eso yo lo conozco como un Arreglo (ARRAY) y lo que estas haciendo es un simple Ordenamiento (comparando el valor actual con el siguiente y cambiandolos de ser necesario), te aseguro que no use ningun solo calculo matemático ni mucho menos un lapiz y papel para poder ver claramente tu codigo

    Saludos
    PD: Saque 0 en matematicas discreta
     
  14. Hadess_inf

    Hadess_inf Miembro nuevo

    Registro:
    16 Oct 2007
    Mensajes:
    11
    Likes:
    0
    Exacto, pero eso es matematica basica, y es solo un simple ejemplo con un Array. Y si usaste un calculo matematico, porque sino lo ubieses hecho no sabrias enterner ni la solucion ni el problema. Claro que no usaste una calculadora( si una maquina te refieres ), tu cerebro trabajo, seria un poco absurdo decir que el cerebro lo hizo sin saber que 1 + 1 es 2.
     
  15. Snoopy

    Snoopy Suspendido

    Registro:
    5 Nov 2006
    Mensajes:
    173
    Likes:
    0
    Ok.....................