Funciones
Funciones
Begin
Declare @Resto int
If @n2=0 Set @n1=0
While (@n2>0)
Begin
Set @Resto=@n1%@n2
Set @n1=@n2
Set @n2=@Resto
End
Return @n1
End
--Ejecutar
print dbo.MCD(25,10)
--******************************************************************************
**************
Leer un nmero entero en base 10, y conviertalo a una base menor que 10
Create Function Convertir
(
@N1 int,
@Base int
)
Returns Int
AS
BEGIN
Declare @R int,@C Varchar(11)
Set @C=''
While (@N1>0)
Begin
Set @R = @N1%@Base
Set @N1 = @N1/@Base
Set @C=Cast(@R as Char(1)) + Ltrim(Rtrim(@C))
End
Return Cast(@C as Int)
END
--Ejecutar
Print dbo.Convertir(10,2)
--******************************************************************************
**************
Leer un nmero entero en base 10, y conviertalo a una base menor que 10
Create Function Convertir
(
@N1 int,
@Base int
)
Returns Int
AS
BEGIN
Declare @Inv int,@Convert int
Set @Inv=0
Set @Convert=0
While (@N1>0)
Begin
Set @Inv=@Inv*10 + @N1%@Base
Set @N1 = @N1/@Base
End
While (@Inv>0)
Begin
Set @Convert=@Convert*10 + @Inv%10 --Invierte residuos obtenidos
Set @Inv = @Inv/10
End
Return @Convert
END
--Ejecutar
Print dbo.Convertir(194,5)
--******************************************************************************
**************
Leer un nmero entero en una base menor que 10, y conviertalo a base 10
Create Function Abase10
(
@N1 int,
@Base int
)
Returns Int
AS
BEGIN
Declare @i int,@Inv int
Set @Inv=0
Set @i=0
While (@N1>0)
Begin
Set @Inv=@Inv + (@N1%10)*Power(@Base,@i)
Set @N1 = @N1/10
Set @i=@i+1
End
Return @Inv
END
--Ejecutar
Print dbo.Abase10(1234,5)
--******************************************************************************
**************
Factorizar un nmero ingresado por teclado.Por ejemplo: 18=2x3x3, 8=2x2x2.
Create function Factorizar
(
@N int
)
Returns Varchar(50)
AS
BEGIN
Declare @i int,@F Varchar(50)
Set @i=2
Set @F=''
While (@i<=@N)
Begin
If (@N%@i=0)
Begin
Set @F=@F + ' x ' + Cast(@i as Varchar(10))
Set @N=@N/@i
End
Else
Begin
Set @i=@i+1
End
End
Return Substring(@F,3,Len(@F))
END
--Ejecutar
Print 'La factorizacin de 18 es: ' + dbo.Factorizar(18)
--******************************************************************************
*************************
Escribir una funcin que permita reducir una fraccin a su minima expresin. Por eejem
plo: 28/64 = 7/16
Alter function Fraccion
(
@N int,--Numerador
@D int --Denominador
)
Returns Varchar(50)
AS
BEGIN
Declare @i int,@F Varchar(50)
Set @i=2
Set @F=''
While (@i<=@N and @i<=@D) Begin If (@N%@i=0 and @D%@i=0)
Begin
Set
@N=@N/@i
Set @D=@D/@i
End Else
Begin
Set @i=@i+1
End End Se
t @F=Cast(@N as Varchar(10)) + '/' + Cast(@D as Varchar(10)) Return @F END --E
jecutar Print 'La nueva fraccin es: ' + dbo.Fraccion(28,64) --*******************
********************************************************************************
**** Hallar la raiz cuadrada de un nmero por el metodo de Newton. Alter Function
Raiz ( @N Float ) Returns Float AS BEGIN Declare @Lado1 Float, @Lado0 Float S
et @Lado0=@N/2 Hacer: Begin Set @Lado1=@N/@Lado0 Set @Lado0=(@Lado0+@Lado1
)/2 End If (Abs(@Lado1-@Lado0)>0.00001) Goto Hacer
Return @Lado0
END
--Ejecutar
Print 'La Raiz cuadrada es: ' + cast(dbo.Raiz(28) as Varchar(10))
--******************************************************************************
*************************
Create Function ConvertHexadecimal
(
@N1 Varchar(30),
@Base int
)
Returns Varchar(30)
AS
BEGIN
Declare @N Varchar(30)
Declare @Inv int,@Convert int,@H varChar(2),@Size int,@i int,@D Char(1),@C Varc
har(30)
Set @Inv=0
Set @Convert=0
Set @Size=Len(Ltrim(Rtrim(@N1)))
Set @H=''
Set @D=''
Set @N=''
Set @i=1
While (@i<=@Size) Begin Set @D=Substring(Ltrim(Rtrim(@N1)),@i,@Size) Sele
ct @H= Case @D
When 'A' then '10'
When 'B' then '11'
When 'C' then '1
2'
When 'D' then '13'
When 'E' then '14'
When 'F' then '15'
Else @D
End
Set @N=Ltrim(Rtrim(@N))+@H
Set @i=@i+1
)
Begin
Set @Inv=@Inv*10 + Cast(@N as int)%@Base
Set @N = Cast(@N as int)/@Base
End
While (@Inv>0)
Begin
Set @Convert=@Convert*10 + @Inv%10 --Invierte residuos obtenidos
Set @Inv = @Inv/10
End
Set @C=@Convert
If (Substring(Ltrim(Rtrim(@N1)),@Size,@Size)='A')
Begin
Set @C= Cast(Ltrim(Rtrim(@convert)) as Varchar(30)) + '0'
End
Return @C
END
--Ejecutar
Print dbo.ConvertHexadecimal('12A',2)