CyM98 << Usando las Funciones DCM >>
Dificultad: Computación

Se necesitan algunos conocimientos elementales de computación. Los temas matemáticos los pueden repasar de las lecciones relacionadas.

Lecciones relacionadas:

Divisor común mayor Comp. Mate.
Una función que calcula el DCM probando a lo bruto.

   
Google
Web www.oma.org.ar

Resumen:

En varias lecciones escribimos funciones que calculaban el Diviso Común Mayor entre dos números. Todas se llamaban DCMAlgo por ejemplo DCMTodos, DCMFactoriza, ... y se podían intercambiar. Las funciones no se pueden usar solas, sino que hay que armar un pequeño programa que las llame y muestre el resultado. Acá damos algunos programas que sirven para eso.

Usando las funciones:

Este programa está pensado para probar una función que calcula el divisor común mayor entre dos números. Pide que escriban en la pantalla dos números y les calcula el DCM llamando a una función DCMAlgo.

Todas las funciones que definimos tienen la misma forma. Tienen dos parámetros que son números enteros y después devuelven como resultado un número entero. Por eso es posible intercambiarlas una con otras sin problemas.

En el ejemplo aparecen tres funciones:

  • La primera es DCMError: sólo genera un mensaje de error al tratar de dividir uno por cero, está solamente para que te acuerdes de cambiarla.
  • La segunda es DCMUno: como se ve no hace nada, o más precisamente siempre responde 1, que es casi lo mismo. Esta función es útil cuando uno quiere analizar cuánto tarda cada método.
  • La tercera es DCMLenta: Es una de las formas más lentas de calcular el DCM, probando con todos los números y encima haciendo las cuentas con números reales.

Quizás lo más conveniente sea primero cambiar en la parte principal del programa DCMError por DCMLenta y probarlo un rato. Después copiar una función DCMALgo de otra de las lecciones que figuran abajo y probar un rato más.

Deflng A-Z 'Todas las variables son enteros largos
Do
    Print "Escriba 0 las dos veces para finalizar"
    Input "Escriba un numero", a
    Input "Escriba otro numero", b
    c = DCMError(a,b)'Cambiar!!!!!
    Print "El DCM entre";a;" y";b;" es";c
Loop Until a<=0 or b<=0


Deflng A-Z 'Todas las variables son enteros largos
Function DCMError(a,b) 'Esta funcion genera siempre un error!!
    Print "NO ANDA!!!!!!!!!!!!!!!"
    DCMError=1/0'Genera un error
    ' Hay que cambiar DCMError por otra funcion DCMAlgo
    'En general hay formas mas civilizadas, consultar la ayuda
    'Cambiar en la parte principal DCMError por otra
    'por ejemplo por DCMLenta
End Function


Deflng A-Z 'Todas las variables son enteros largos
Function DCMUno(a,b) 'Esta funcion no anda bien!!
    DCMUnoRaiz=1' no calculo nada, solo respondo "1"
End Function


Deflng A-Z 'Todas las variables son enteros largos
Function DCMLenta(a,b) 'Esta funcion no anda bien!!
    For d = 1 to a+b
        If a/d=int(a/d) and b/d=int(b/d) then
            MaximoDivisorHastaAhora = d
        End If
    Next d
    DCMLenta = MaximoDivisorHastaAhora
End Function

Todas las funciones DCMAlgo deberían dar lo mismo (salvo DCMError y DCMUno que están mal a proposito). La mayor diferencia es que algunas son más rápidas que otras. Sin embargo, el tiempo que tardan es muy poco y así de a una la dirferencia no se nota. Para poder compararlas sería bueno calcular muchas veces (¿un milllon?) el DCM entre dos números. Esto es lo que hace el probador de funciones DCM.

O usarlas directamente:

Tambien se puede hacer que calcule el DCM entre dos números conocidos directamente, por ejemplo

Print "El DCM entre 120 y 130 es"; DCMError(120, 130)

¡Y por supuesto hay que cambiar DCMError por otra!


Lecciones relacionadas:

Divisor común mayor Comp. Mate.
Una función que calcula el DCM probando a lo bruto.

Divisor común mayor factorizando Comp. Mate. Mate.
Otra función que calcula el DCM factorizando los números.

Algoritmo de Euclides Comp. Comp. Mate. Mate.
Otra función más astuta que calcula el DCM utilizando el Algoritmo de Euclides.

Probador de funciones DCM Comp. Comp.
Permite comparar el tiempo que tardan las distintas funciones DCM.

 


Comentarios, preguntas, sugerencias:

Más sobre funciones (Function)

Nombre y apellido (opcional):

E-mail (opcional):

    


OmaNet   Curso CyM98 OmaNet - Educación Interactiva
   
www.oma.org.ar/omanet | omanet@oma.org.ar
mensajes: webmaster@oma.org.ar
duty free alcohol rules duty free cigarettes airport duty free cigars online cosmetics duty free prices duty free perfumes online buy duty free tobacco uk