Las funciones de fisica son un poco simples... pero es lo que se da ahora en el bachiller
El UDF tiene 6 funciones, las dos dichas anteriormente mas:
- KmH_a_MS: pasa de Km/h a m/s y vicecersa
- Raíz: hace la raiz de un numero
- Velocidad_Media: Calcula la velocidad media de u nmóvil
- Ley_Ohm: La famosa Ley de Ohm, con esta funcion se puede averiguar una incognita de las 3 posibles.
Les dejo el código:
Código: Seleccionar todo
;****************************************************************
;
; Todas estas funciones han sido creadas por Ángel Miguel García Vico.
; Son totalmente Freeware y no hay ninguna restricción en su uso
;
;*****************************************************************
#include-once
;****************************************************************
; Funcion Factorial($numero)
;
;Realiza el factorial de un número.
; $numero = número a factorizar
;
; Valores de @error:
; @error = 1 Si el número es decimal.
;****************************************************************
Func Factorial($numero)
If IsInt($numero)= 0 Then
SetError(1)
EndIf
If $numero > 0 Then
For $a = $numero -1 To 1 step -1
$numero = $numero * $a
Next
ElseIf $numero < 0 Then
For $a = $numero +1 To -1 step +1
$numero = $numero * $a
Next
ElseIf $numero = 0 Then
$numero = 1
EndIf
Return $numero
EndFunc
;**********************************************************+
; Funcion Raiz($base, $Exponente)
;
;Realiza la raíz enésima ($Exponente) de un número ($base)
;@error = 1 ; si al ser el exponente de la raiz par y el radicando negativo
;
;***********************************************************
Func Raiz($base,$Exponente)
$ExponenteR = 1 / $Exponente
$par = $Exponente / 2
If IsInt($par) and $base < 0 Then
SetError(1)
Else
If $base < 0 Then
$base = Abs($base)
$Resulta = $base ^ $ExponenteR
$Result = "-" & $Resulta
Else
$Result = $base ^ $ExponenteR
EndIf
Return $Result
EndIf
EndFunc
;******************************************************************
; Funcion Combinatoria($m,$n)
; Realiza el combinatorio de dos números.
;
; $m: Término Superior de la combinatoria
; $n: Término Inferior de la combinatoria
;
; Valores de @error:
; @error = 1 Si el termino superior, inferior o ambos, son negativos.
; @error = 2 Si el termino superior, inferior o ambos, son decimales.
; @error = 3 Si el término Inferior es mayor que el superior
;
;**********************************************************************
Func Combinatoria($m,$n)
If $m < 0 Or $n < 0 Then SetError(1)
If not IsInt($m) Or not IsInt($n) Then SetError(2)
If $m < $n Then SetError(3)
If $n = 0 Or $n = $m Then
$resultado = 1
Else
local $a = Factorial(Abs($m))
$c = $m - $n
Local $resta = Factorial(Abs($c))
Local $resultado = $a / (Factorial($n) * $resta)
EndIf
Return $resultado
EndFunc
;*********************************************************************************
; Función KmH_a_MS($velocidad, [$modo = "1"])
; Pasa la velocidad de Km/h al sistema internacional (m/s) y viceversa
;
; Valores para $modo:
; $modo = 1 (Por Defecto): Pasa de Km/h a m/s
; $modo = 2: Pasa de m/s a Km/h
;
; Valores de @error:
; @error = 1 si $modo no es ni 1 ni 2
; ********************************************************************************
Func KmH_a_MS($velocidad,$modo = "1")
If $modo = 1 Then
$resultado = $velocidad / 3.6
Elseif $modo = 2 Then
$resultado = $velocidad * 3.6
Else
SetError(1)
EndIf
Return $resultado
EndFunc
;********************************************************************************
; Función Velocidad_Media($Espacio,$Tiempo)
; Obtiene la velocidad media de un móvil
;********************************************************************************
Func Velocidad_Media($Espacio,$Tiempo)
$resultado = $Espacio / $Tiempo
Return $resultado
EndFunc
;*********************************************************************************
; Función Ley_Ohm($V,$I,$R,$incognita)
; Obtiene el voltaje ($v), la intensidad ($I) o la resistencia ($R) de un circuito a través de la Ley de Ohm
;
; Valores: $V = Voltaje (En Voltios)
; $I = Intesidad (En Amperios)
; $R = Resistencia (En Ohmios)
; Dejar un valor de los tres en blanco para calcularlo.
; $incognita = Valor a obtener
; Valores Para $incognita:
; - "R" = Calcula la resistencia (La devuelve en Ohmios.
; - "I" = Calcula la intensidad (La devuelve en Amperios)
; - "V" = Calcula el voltaje (Lo devuelve en Voltios)
;
; Valores para @error:
; @error = 1 Si alguna si hay mas de una incognita
; @error = 2 Si No hay valores para $incognita o este es erróneo
;**************************************************************************************************
Func Ley_Ohm($V = "",$I = "", $R = "",$incognita = "")
If not $incognita = "I" or not $incognita = "R" or not $incognita = "V" Then SetError(2)
If $incognita = "I" And $R = "" OR $incognita = "I" And $V = "" Or $incognita = "I" And $V = "" And $R = "" Then
SetError(1)
ElseIf $incognita = "R" And $I = "" OR $incognita = "R" And $V = "" Or $incognita = "R" And $V = "" And $I = "" Then
SetError(1)
ElseIf $incognita = "V" And $R = "" OR $incognita = "V" And $I = "" Or $incognita = "V" And $R = "" And $I = "" Then
SetError(1)
EndIf
If $incognita = "I" Then
$resultado = $V / $R
ElseIf $incognita = "V" Then
$resultado = $I * $R
ElseIf $incognita = "R" Then
$resultado = $V / $I
EndIf
Return $resultado
EndFunc
Saludos!!!
P.D.: Yo entiendo bien el portugues, pero no se hablarlo... se hablar gallego que se parece muchisimo al portugues, lo digo porque he visto que hay gente que habla portugues por aqui, a ver si los proximos programas que haga los hago en multilenguaje