Sie sind auf Seite 1von 27

EJERCICIOS DE PROCEDIMIENTOS Y FUNCIONES

1) hacer un programa que calcule el area de un triangulo

---PROCEDIMIENTOS Y FUNCIONES----

ALTER PROCEDURE dbo.Leer_Datos


@BASE FLOAT OUTPUT,
@ALTURA FLOAT OUTPUT
AS
BEGIN
SET @BASE = 5
SET @ALTURA = 26
END
GO
--------------------------------
ALTER PROCEDURE dbo.Area
@BASE FLOAT,
@ALTURA FLOAT,
@AREA FLOAT OUTPUT
AS
BEGIN
SET @AREA = (@BASE * @ALTURA)/2
END
GO
----PROGRAMA PRINCIPAL----
DECLARE @BASE FLOAT
DECLARE @ALTURA FLOAT
DECLARE @AREA FLOAT
EXEC dbo.Leer_Datos @BASE OUTPUT, @ALTURA OUTPUT
EXEC dbo.Area @BASE , @ALTURA , @AREA OUTPUT
PRINT 'EL AREA DEL TRIANGULO ES -> ' + CAST(@AREA AS VARCHAR(10))

LeerDatos (base, altura: Integer)


Programa Principal()
INICIO
INICIO

Leer: A
LeerDatos (base, altura)

Área (base, altura) Leer: B

Imprimir (Área)
FIN

FIN
Imprimir (Área: Float)

INICIO

Print: Área

FIN

2) hacer un programa que calcule la serie Fibonacci

---------FUNCION----------

alter FUNCTION dbo.SERIE_FIBONACCI(@N INT, @I INT)


RETURNS VARCHAR(40)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @A INT
DECLARE @B INT
DECLARE @C INT
DECLARE @S VARCHAR(100)
SET @A = 0
SET @B = 1
SET @S = ''
WHILE(@I<=@N-2)
BEGIN
SET @C = @A + @B
SET @S = @S + CAST(@C AS VARCHAR(100)) + ','
SET @A = @B
SET @B = @C
SET @I = @I + 1
END
RETURN @S
END
GO
-----PROGRAMA PRINCIPAL-----
DECLARE @N INT
DECLARE @I INT
DECLARE @S VARCHAR(100)
SET @I = 1
SET @N = 12
SET @S = '0' + ',' + '1' + ','
SET @S = @S + dbo.SERIE_FIBONACCI(@N, @I)
PRINT @S
Serie_Fibonacci (N int, I int): String

INICIO

Programa Principal() S=‘’

INICIO I=1
A=0
B=1
Leer: N C=0

I=integer
F W
I=1 I <=N - 2

V
S = '0'+','+'1'+','
C=A+B
S=S + Serie_Fibonacci (N, I)
S = S + InToChar(C) + ‘ ’

Print: S
A=B

FIN B=C

I=I+1

RETURN DEV

FIN

3) Dado un valor N cuyo valor inicial es arbitrario se imprima en pantalla un rombo


------PROCEDIMIENTOS Y/O FUNCIONES-------
------PROGRAMA PRINCIPAL-------
DECLARE @N INT
DECLARE @I INT
DECLARE @LETRA VARCHAR(30)
DECLARE @AUX VARCHAR(30)
SET @LETRA = ''
SET @AUX = ''
SET @I = 1
SET @N = 8
WHILE(@I<=@N)
BEGIN
SET @LETRA = @LETRA + CAST(@I AS VARCHAR(100)) + ' '
IF(@I=@N)
BEGIN
PRINT @AUX + @LETRA
SET @LETRA = ''
SET @AUX = @AUX + ' '
SET @N = @N - 1
SET @I = 1
END
ELSE
BEGIN
SET @I = @I + 1
END
END

Programa Principal() Imprimir_Triangulo (N integer, I integer)

INICIO
INICIO LETRA = String
ESPACIO = String

F W
Leer: N I <= N

V
I=1
LETRA = LETRA + InToChar(k) + ‘ ’

Imprimir_Triangulo (N,I)

IF
I=N
FIN
V F

ESPACIO = ESPACIO + LETRA I= I+1

Print: ESPACIO

2
espacios
LETRA = ‘ ’

ESPACIO = ESPACIO + ‘ ’

I= 1

N=N-1
FIN

4) Escribir un programa que transforme un número en letras y que lo imprima en


pantalla.
---PROCEDIMIENTOS Y O FUNCIONES------

CREATE FUNCTION dbo.IntToRomanoUnidad(@N int)


RETURNS VARCHAR(4)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @R VARCHAR(4)
SET @R = (CASE
WHEN @N = 0 THEN ' '
WHEN @N = 1 THEN 'I'
WHEN @N = 2 THEN 'II'
WHEN @N = 3 THEN 'III'
WHEN @N = 4 THEN 'IV'
WHEN @N = 5 THEN 'V'
WHEN @N = 6 THEN 'VI'
WHEN @N = 7 THEN 'VII'
WHEN @N = 8 THEN 'VIII'
WHEN @N = 9 THEN 'IX'
END)
RETURN @R
END
--------
GO
--------
CREATE FUNCTION dbo.IntToRomanoDecada(@N int)
RETURNS VARCHAR(10)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @Z INT
DECLARE @R VARCHAR(10)
SET @Z = @N/10
SET @R = (CASE @Z
WHEN 0 THEN dbo.IntToRomanoUnidad(@N-0)
WHEN 1 THEN 'X' + dbo.IntToRomanoUnidad(@N-10)
WHEN 2 THEN 'XX' + dbo.IntToRomanoUnidad(@N-20)
WHEN 3 THEN 'XXX' +dbo.IntToRomanoUnidad(@N-30)
WHEN 4 THEN 'XL' +dbo.IntToRomanoUnidad(@N-40)
WHEN 5 THEN 'L' +dbo.IntToRomanoUnidad(@N-50)
WHEN 6 THEN 'LX' +dbo.IntToRomanoUnidad(@N-60)
WHEN 7 THEN 'LXX' +dbo.IntToRomanoUnidad(@N-70)
WHEN 8 THEN 'LXXX' +dbo.IntToRomanoUnidad(@N-80)
WHEN 9 THEN 'XC' +dbo.IntToRomanoUnidad(@N-90)
END)
RETURN @R
END
--------
GO
--------
CREATE FUNCTION dbo.IntToRomanoMillar(@N int)
RETURNS VARCHAR(100)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @Z INT
DECLARE @R VARCHAR(100)
SET @Z = @N/100
SET @R = (CASE @Z
WHEN 0 THEN dbo.IntToRomanoDecada(@N-0)
WHEN 1 THEN 'C' + dbo.IntToRomanoDecada(@N-100)
WHEN 2 THEN 'CC' + dbo.IntToRomanoDecada(@N-200)
WHEN 3 THEN 'CCC' +dbo.IntToRomanoDecada(@N-300)
WHEN 4 THEN 'CD' +dbo.IntToRomanoDecada(@N-400)
WHEN 5 THEN 'D' +dbo.IntToRomanoDecada(@N-500)
WHEN 6 THEN 'DC' +dbo.IntToRomanoDecada(@N-600)
WHEN 7 THEN 'DCC' +dbo.IntToRomanoDecada(@N-700)
WHEN 8 THEN 'DCCC' +dbo.IntToRomanoDecada(@N-800)
WHEN 9 THEN 'CM' +dbo.IntToRomanoDecada(@N-900)
END)
RETURN @R
END
--------
GO
--------

CREATE FUNCTION dbo.IntToRomanoDMillar(@N int)


RETURNS VARCHAR(1000)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @Z INT
DECLARE @R VARCHAR(1000)
SET @Z = @N/1000
SET @R = (CASE @Z
WHEN 0 THEN dbo.IntToRomanoMillar(@N-0)
WHEN 1 THEN 'M' + dbo.IntToRomanoMillar(@N-1000)
WHEN 2 THEN 'MM' + dbo.IntToRomanoMillar(@N-2000)
WHEN 3 THEN 'MMM' +dbo.IntToRomanoMillar(@N-3000)
END)
RETURN @R
END
--------
GO
--------

CREATE FUNCTION dbo.IntToRomano(@N int)


RETURNS VARCHAR(150)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @Z INT
DECLARE @R VARCHAR(150)
SET @R = dbo.IntToRomanoDMillar(@N)
RETURN @R
END
--------
GO

-------PROGRAMA PRINCIPAL-------------

DECLARE @N INT
DECLARE @R VARCHAR(1000)
SET @N = 345
SET @R = dbo.IntToRomanoDMillar(@N)
--SET @R = dbo.IntToRomano(@N)
PRINT 'EL NUMERO INGRESADO COMBERTIDO ES: ' + @R

UNIDADES(N int):Int

PROGRAMA PRINCIPAL
INICIO
INICIO
Z = ‘’

Leer: N

CASE
Letra = ‘’ (N)

Letra = MILLAR (N) 0 1 2 9


Z = ‘CERO’ Z = ‘UNO’ Z = ‘DOS’ … Z = ‘NUEVE’

Print: N
Print: Letra

RETURN Z
FIN
FIN
5) Escribir un programa que transforme un número romano en número arábico y que
lo imprima.

---PROCEDIMIENTOS Y FUNCIONES---

alter FUNCTION dbo.UNIDAD_LETRAS(@AUX VARCHAR(100))


RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @N INT
SET @N = (CASE @AUX
WHEN 'I' THEN 1
WHEN 'V' THEN 5
WHEN 'X' THEN 10
WHEN 'L' THEN 50
WHEN 'C' THEN 100
WHEN 'D' THEN 500
WHEN 'M' THEN 1000
END)
RETURN @N
END
GO
---------------------------------------
alter FUNCTION dbo.DECENAS_LETRAS(@AUX VARCHAR(100))
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @N INT
DECLARE @EXT1 VARCHAR(100)
DECLARE @EXT2 VARCHAR(100)
DECLARE @RES1 INT
DECLARE @RES2 INT
SET @EXT1 = SUBSTRING(@AUX,1,1)
SET @EXT2 = SUBSTRING(@AUX,2,1)
SET @RES1 = dbo.UNIDAD_LETRAS(@EXT1)
SET @RES2 = dbo.UNIDAD_LETRAS(@EXT2)
IF(@RES2>@RES1)
BEGIN
SET @N = @RES2 - @RES1
END
ELSE
BEGIN
SET @N = @RES1 + @RES2
END
RETURN @N
END
GO
---------------------------------------
alter FUNCTION dbo.CENTENAS_LETRAS(@AUX VARCHAR(100))
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @N INT
DECLARE @EXT1 VARCHAR(100)
DECLARE @EXT2 VARCHAR(100)
DECLARE @EXT3 VARCHAR(100)
DECLARE @RES1 INT
DECLARE @RES2 INT
DECLARE @RES3 INT
SET @EXT1 = SUBSTRING(@AUX,1,1)
SET @EXT2 = SUBSTRING(@AUX,2,1)
SET @EXT3 = SUBSTRING(@AUX,3,1)
SET @RES1 = dbo.UNIDAD_LETRAS(@EXT1)
SET @RES2 = dbo.UNIDAD_LETRAS(@EXT2)
SET @RES3 = dbo.UNIDAD_LETRAS(@EXT3)
IF((@RES2>@RES1) AND (@RES2 > @RES3))
BEGIN
SET @N = @RES2 - @RES1 + @RES3
END
ELSE
BEGIN
IF(((@RES1>@RES2) AND (@RES1 > @RES3)) AND (@RES3 > @RES2))
BEGIN
SET @N = @RES1 + @RES3 - @RES2
END
ELSE
BEGIN
IF((@RES3 > @RES2) AND (@RES3>@RES1))
BEGIN
SET @N = 0
END
ELSE
BEGIN
SET @N = @RES1 + @RES2 + @RES3
END
END
END
RETURN @N
END
GO

----PROGRAMA PRINCIPAL----
DECLARE @A VARCHAR(40)
DECLARE @LETRA VARCHAR(40)
DECLARE @P INT
SET @A = 'LXI'
SET @P = dbo.CENTENAS_LETRAS(@A)
PRINT 'EL NUMERO ROMANO ES ->' +@A
PRINT 'EL NUMERO TRANSFORMADO A ARABIGO ES -> ' + CAST(@P AS VARCHAR(10))

UNIDAD_LETRAS (AUX String): Int

PROGRAMA PRINCIPAL
INICIO
INICIO
N=0
A: String
Leer: A

CASE
(AUX)
A = ‘’

P = CENTENAS_LETRAS(A)
N=1 N=5 N = 10 … N = 1000

Print: A
Print: P

RETURN N
FIN
FIN

CENTENAS_LETRAS (AUX String): Int


DECENAS_LETRAS (AUX String): Int
INICIO
INICIO
N = 0 EXT1=0 EXT2=0
EXT3=0 RES1= 0
N = 0 EXT1=0 RES2=0 RES3=0
EXT2=0 RES1= 0
RES2=0
EXT1 = SUBSTRING(AUX,1,1)
EXT2 = SUBSTRING(AUX,2,1)
EXT1 = SUBSTRING(AUX,1,1)
EXT3 = SUBSTRING(AUX,3,1)
EXT2 = SUBSTRING(AUX,2,1)

RES1 = UNIDAD_LETRAS (EXT1)


RES1 = UNIDAD_LETRAS (EXT1) RES2 = UNIDAD_LETRAS (EXT2)
RES2 = UNIDAD_LETRAS (EXT2) RES3 = UNIDAD_LETRAS (EXT3)

V F V F
IF
RES2>RES1 IF
(RES2>RES1)
&
(RES2>RES3)
N = RES2 – RES1 N = RES1 + RES2
N = RES2 – RES1 + RES3

IF
((RES1>RES2) &
RETURN N (RES1>RES3))
& (RES3>RES2)

FIN
V

F
F
N = RES1 + RES3 - RES2

V
IF
(RES3>RES2) &
(RES3>RES1)
F

N=0

N = RES1 + RES3 - RES2

RETURN N

FIN

6) hacer un programa si un número es primo o no es primo

--- Procedimientos y Funciones


ALTER FUNCTION dbo.EsPrimo(@N int)
RETURNS BIT
WITH EXECUTE AS CALLER
AS
BEGIN

DECLARE @B INT
DECLARE @X INT
SET @B = 1
SET @X = 2
WHILE(@X<=@N-1)
BEGIN
IF(@N % @X = 0)
BEGIN
SET @B = 0
END
SET @X=@X+1
END
RETURN @B

END
GO

--- Programa Principal


DECLARE @N INT
DECLARE @OK INT
DECLARE @VALOR VARCHAR(20)
SET @N = 8
SET @OK = dbo.EsPrimo(@N)
IF(@OK = 1)
BEGIN
SET @VALOR = 'ES PRIMO'
END
ELSE
BEGIN
SET @VALOR = 'NO ES PRIMO'
END

PRINT 'EL NUMERO '


PRINT @N
PRINT @VALOR

7) implementar un programa que imprima todos los números divisores de N

----PROCEDIMIENTOS ALMACENADO----
ALTER PROCEDURE dbo.DIVISORES
@N INT
AS
BEGIN
DECLARE @J INT
SET @J = 1
WHILE(@J<=@N)
BEGIN
IF(@N%@J=0)
BEGIN
PRINT @J
END
SET @J = @J + 1
END
END
GO

--------PROGRAMA PRINCIPAL---------
DECLARE @N INT
DECLARE @I INT
SET @I = 1
SET @N = 48
EXEC dbo.DIVISORES @N
Divisores (N int)

Programa Principal()
INICIO
INICIO
Int : J J=1

Leer: N
Int : I
F
W
I=1 J<=N

Divisores(N) V

V IF F
FIN N%J=0

Print:J

FIN
8) Escribir un programa que imprima en pantalla todos los números primos del
Intervalo [m, n], m Y n son valores ingresados por el teclado.

----PROCEDIMIENTOS Y FUNCIONES----
alter FUNCTION dbo.PRIMO(@N INT)
RETURNS BIT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @I INT
DECLARE @C INT
DECLARE @DEV INT
SET @C = 0
SET @I = 1
WHILE(@I<=@N)
BEGIN
IF(@N%@I=0)
BEGIN
SET @C = @C + 1
END
SET @I = @I + 1
END
IF(@C=2)
BEGIN
SET @DEV = 1
END
ELSE
BEGIN
SET @DEV = 0
END
RETURN @DEV
END

--------PROGRAMA PRINCIPAL---------
DECLARE @A INT
DECLARE @B INT
DECLARE @I INT
DECLARE @RES BIT
SET @A = 2
SET @B = 13
SET @I = 1
WHILE(@A<=@B)
BEGIN
SET @RES = dbo.PRIMO(@A)
IF(@RES=1)
BEGIN
PRINT @A
END
SET @A = @A + 1
END Primo (N int): bit

INICIO
Programa Principal()
Leer: Dev
INICIO

I=1
Leer: A,B C=0
Leer: Res
Int : I
F
W
I=1 I <=N
F
V
W
A<=B
V IF F
V N%I=0

Res = Primo(A) C=C+1

V F
IF I=I+1
Res = 1

Print:A
V F
IF
C=2

Dev = 1 Dev = 0
A=A+1

FIN RETURN DEV

FIN

9) implementar un programa que calcule el MCD de unos numeros

----------FUNCION----------
alter FUNCTION dbo.MCD(@I INT,@A INT,@B INT)
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @ACUM INT
SET @ACUM = 1
WHILE(@I<=100)
BEGIN
IF((@A % @I = 0) AND (@B % @I = 0))
BEGIN
SET @A = @A/@I
SET @B = @B/@I
SET @ACUM = @ACUM * @I
SET @I = 1
END
SET @I = @I + 1
END
RETURN @ACUM
END
GO
--------PROGRAMA PRINCIPAL--------
DECLARE @A INT
DECLARE @B INT
DECLARE @I INT
DECLARE @ACUM INT
SET @I = 2
SET @A = 120
SET @B = 360
SET @ACUM = dbo.MCD(@I,@A,@B)
PRINT 'EL MAXIMO COMUN DIVISOR DE ESOS NUMERO ES: '+ CAST(@A AS
VARCHAR(10)) + ' ' + 'Y' + ' ' +
CAST(@B AS VARCHAR(10))+ ' ' + 'ES -> ' +CAST(@ACUM AS
VARCHAR(10))

MCD (I int, Aint, B int): float

PROGRAMA PRINCIPAL
INICIO

INICIO
ACUM = 1

Leer: A, B
F
W F
I<=100
ACUM=0

V
I =2
V F
IF
ACUM = MCD (I, A, B) (A%I=0)&&(B%I=0)

A=A/I I =I+1
Print: ACUM
B=B/I
ACUM = ACUM * I
I=1
FIN

RETURN ACUM

FIN
10) implementar un programa que calcule el MCM de unos números
----------FUNCION----------
alter FUNCTION dbo.MCM(@A INT,@B INT)
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @ACUM INT
DECLARE @I INT
SET @I = 2
SET @ACUM = 1
WHILE(@I<=1000)
BEGIN
IF((@A % @I = 0) AND (@B % @I = 0))
BEGIN
SET @A = @A/@I
SET @B = @B/@I
SET @ACUM = @ACUM * @I
SET @I = 1
END
ELSE
BEGIN
IF(@A % @I = 0)
BEGIN
SET @A = @A/@I
SET @ACUM = @ACUM * @I
SET @I = 1
END
IF(@B % @I = 0)
BEGIN
SET @B = @B/@I
SET @ACUM = @ACUM * @I
SET @I = 1
END
END
SET @I = @I + 1
END
RETURN @ACUM
END
GO
--------PROGRAMA PRINCIPAL--------
DECLARE @A INT
DECLARE @B INT
DECLARE @ACUM INT
SET @A = 70
SET @B = 54
SET @ACUM = dbo.MCM(@A,@B)
PRINT 'EL MINIMO COMUN DIVISOR DE '+ CAST(@A AS VARCHAR(10)) + ' ' + 'Y' +
' ' +
CAST(@B AS VARCHAR(10))+ ' ' + 'ES -> ' +CAST(@ACUM AS
VARCHAR(10))
MCM (A int, B int): float

INICIO
PROGRAMA PRINCIPAL

ACUM = 1
INICIO

I=2
Leer: A, B
F

W
ACUM=0
I<=1000

I =2
V
ACUM = MCM (A, B) IF
(A%I=0)&&(B%I=0)

Print: ACUM IF
A=A/I A%I = 0
B=B/I
ACUM = ACUM * I A=A/I
FIN I=1 ACUM = ACUM * I
I=1

IF
B%I = 0

B=B/I
ACUM = ACUM * I
I=1

I =I+1

RETURN ACUM

FIN
11) implementar un programa que genera la tabla de multiplicar de un numero
ingresado pr tecla

------------FUNCION ------------
alter FUNCTION dbo.TABLA_X_MULTIPLICAR(@N INT,@Z INT)
RETURNS VARCHAR(100)
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @S VARCHAR(100)
DECLARE @I INT
DECLARE @J INT
DECLARE @C INT
SET @I = 1
SET @J = 1
SET @S = ''
WHILE(@I<=@N)
BEGIN
WHILE(@J<=@Z)
BEGIN
SET @C = @I * @J
SET @S = CAST(@I AS VARCHAR(10)) + ' ' + '*' + '
' + CAST(@J AS VARCHAR(10))
+ ' ' + '=' + ' ' + CAST(@C AS VARCHAR(10))
SET @J = @J + 1
END
SET @J = 1
SET @I = @I + 1
END
RETURN @S
END
GO
-------PROGRAMA PRINCIPAL--------
DECLARE @N INT
DECLARE @S VARCHAR(100)
DECLARE @I INT
SET @I = 1
SET @N = 8
PRINT 'SI EL NUMERO ES: ' + '@N ES = '+ CAST(@N AS VARCHAR(10))
WHILE(@I<=12)
BEGIN
SET @S = dbo.TABLA_X_MULTIPLICAR(@N,@I)
PRINT @S
SET @I = @I + 1
END
Diagramas de flujo
TABLA_M (N Int, Zint):String
PROGRAMA PRINCIPAL
INICIO
INICIO
S = ’’

Leer: N
I=1 J=1 C=0
S: String
S = ’’
W
I :Int I<=N
I =1

W W
I<=12 J<=Z

S = TABLA_M (N, I) C=I*J

Print: S
S = InToChar(I) + ‘ ’+ InToChar(J)
+ ‘ ’+’=’ + InToChar(C)

I =I+1 J=J+1

J=1
FIN

I=I+1

RETURN S

FIN
12) implementar un programa que invierta una oracion
----PROCEDIMIENTO ALMACENADO----
alter PROCEDURE dbo.PALABRA_INVERTIDA
@N INT,
@I INT,
@LETRA VARCHAR(100),
@S VARCHAR(100) OUTPUT
AS
BEGIN
WHILE(@I<=@N)
BEGIN
SET @S = @S + SUBSTRING(@LETRA,@N-@I+1,1)
SET @I = @I + 1
END
END
GO
----PROGRAMA PRINCIPAL----
DECLARE @LETRA VARCHAR(100)
DECLARE @N INT
DECLARE @I INT
DECLARE @S VARCHAR(100)
SET @LETRA = 'TE AMO->MI BB YESCENIA S.F
SEMESTRE->2009-II UNAJMA'
SET @N = LEN(@LETRA)
SET @I = 1
SET @S = ''
EXEC dbo.PALABRA_INVERTIDA @N, @I, @LETRA, @S OUTPUT
PRINT 'LA ORACION INCIAL ES: ' + @LETRA
PRINT 'LA ORACION FINAL ES: ' + @S

Diagramas de flujo

PROGRAMA PRINCIPAL

INICIO PALABRA_INVERTIDA(N, I, LETRA): String


S,LETRA: STRING
N: INT S: STRING
Leer: N INICIO
Leer: LETRA

S = ‘’
I=1

F
W
I<=N

S = PALABRA_INVERTIDA(N, I, LETRA)
N = LEN (LETRA)

V
S = S + SUBSTRING (LETRA, N-I+1, 1)

Print: LETRA
Print: S
I=I+1

FIN
RETURN S

FIN

13) Escriba un programa que halle todos los números impares divisibles por N en el
intervalo [1 … 300] y los imprima. Nota -> Solo se tiene q ingresar un número impar
por teclado. Si se ingresa un número par, imprimir en pantalla ‘solo impares’

----PROCEDIMIENTOS Y FUNCIONES----
alter PROCEDURE dbo.IMPARES_DIVISIBLES_X_N
@N INT,
@I INT,
@AUX VARCHAR(100) OUTPUT
AS
BEGIN
IF(@I%@N=0)
BEGIN
IF(@I%2<>0)
BEGIN
SET @AUX = @AUX + CAST(@I AS VARCHAR(100)) + ','
END
END

END
GO
--------PROGRAMA PRINCIPAL---------
DECLARE @N INT
DECLARE @I INT
DECLARE @J INT
DECLARE @AUX VARCHAR(100)
SET @AUX = ''
SET @I = 1
SET @N = 9
IF(@N%2<>0)
BEGIN
WHILE(@I<=300)
BEGIN
EXEC dbo.IMPARES_DIVISIBLES_X_N @N , @I , @AUX OUTPUT
SET @I = @I + 1
END
PRINT @AUX
END
ELSE
BEGIN
PRINT 'SOLO IMPARES'
END

Diagramas de flujo

Programa Principal()
Impares_Divisibles_X_N (N int, I int, Aux String)
INICIO

INICIO
Leer: N
L: Aux
Int : I
V F
IF
I=1 I%N=0

V F
IF
N%2<>0
V IF F
I%2<>0
W
I<=300
Aux = Aux + InToChar(I) + ','
V
Impares_Divisibles_X_N(N,I,Aux)

I = I +1

FIN

Print:AUX

FIN
14) implementar un programa, q le a un número N y que se forme un rombo con
operadores matemáticos y que imprima en pantalla:
----PROCEDIMIENTOS ALMACENADO----
alter PROCEDURE dbo.OPERADORES
@N INT,
@FILA INT
AS
BEGIN
DECLARE @S VARCHAR(100)
DECLARE @I INT
SET @I = 1
SET @S = ''
------CALCULANDO EL ESPACIO------
WHILE(@I<=@N-@FILA)
BEGIN
SET @S = @S + ' '
SET @I = @I + 1
END
SET @I = 1
WHILE(@I<=@FILA)
BEGIN
IF(@FILA%2<>0)
BEGIN
SET @S = @S + '/' + ' '
END
ELSE
BEGIN
SET @S = @S + '-' + ' '
END
SET @I = @I + 1
END
PRINT @S
END
GO
------------------------------
----PROGRAMA PRINCIPAL----
DECLARE @N INT
DECLARE @I INT
DECLARE @S VARCHAR(100)
SET @S = ''
SET @N = 5
SET @I = 1
WHILE(@I<=@N)
BEGIN
EXEC dbo.OPERADORES @N , @I
SET @I = @I + 1
END
SET @I = @N - 1
WHILE(@I>=1)
BEGIN
EXEC dbo.OPERADORES @N , @I
SET @I = @I - 1
END
Operadores(Nint, I int)
Programa Principal()

INICIO
S = String I =int INICIO

I = int
Leer: N
I=1

I=1 F
W
I <= N-Fila

F V
W
I <= N
S=S+‘’
V
I= I+1
Operadores(N, I)

I= I+1

I=1

I =N - 1 F
W
I <= Fila

F W V
I >=1

v V IF
F
Fila%2<>0
Operadores(N, I)
S = S +'+'+'' S = S +'-'+''
'' ''
I= I+1

I= I+1 I= I+1

FIN Print: S

FIN
15) Dado un monto calcular el descuento considerando que por encima de 100 el
descuento es el 10% y por debajo de 100 el descuento es el 2%.

-------FUNCIONES-----
CREATE FUNCTION dbo.DESCUENTO(@MONTO INT)
RETURNS FLOAT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @DESCUENTO FLOAT
IF(@MONTO>100)
BEGIN
SET @DESCUENTO = (@MONTO * 10)/100
END
ELSE
BEGIN
SET @DESCUENTO = (@MONTO * 2)/100
END
RETURN @DESCUENTO
END
GO
-----PROGRAMA PRINCIPAL-----
DECLARE @MONTO INT
DECLARE @DESCUENTO FLOAT
DECLARE @TOTAL FLOAT
SET @MONTO = 110
SET @DESCUENTO = dbo.DESCUENTO(@MONTO)
SET @TOTAL = @MONTO - @DESCUENTO
PRINT 'EL MONTO ES -> ' + CAST(@MONTO AS VARCHAR(10))
PRINT 'EL DESCUENTO ES -> ' + CAST(@DESCUENTO AS VARCHAR(10))
PRINT 'EL MONTO CON EL DESCUENTO ES -> ' + CAST(@TOTAL AS VARCHAR(10))

Diagramas de flujo

DESCUENTO (Monto int): float


PROGRAMA PRINCIPAL
INICIO
INICIO
Leer: Descuento
Leer: Monto

V F
IF
Descuento = 0 Monto > 100
Total = 0
Descuento = (Monto * 0.1) Descuento = (Monto * 0.02)
Descuento = DESCUENTO (Monto)

Total = Monto - Descuento


RETURN Descuento

Print: Monto
Print: Descuento
FIN
Print: Total

FIN

Das könnte Ihnen auch gefallen