Ayuda ejercicios unidad 12: Funciones en VB





 

1.-   Hallar el área y la longitud de una circunferencia, solicitando el radio de la misma  R . Area  = PI * R al cuadrado, Longitud  =  2 * PI * R .

 

Module Module1

 

  Private Function AreaCirculo(ByVal Radio As Double) As Double

  AreaCirculo = Radio * Radio * 3.1415

  End Function

 

  Private Function LongitudCirculo(ByVal Radio As Double) As Double

  LongitudCirculo = Radio * 2 * 3.1415

  End Function

 

  Sub Main()

Dim Radio As Double

 

Console.WriteLine("Cálculo del área y longitud de un circulo")

Radio = Console.ReadLine

Console.WriteLine("Area de radio {0} es {1} ", Radio, AreaCirculo(Radio))

Console.WriteLine("Longitud radio  {0} es {1} ", Radio, LongitudCirculo(Radio))

Console.ReadKey()

 End Sub

End Module

 

2.-   Hallar el área de un triángulo. Area = Base por Altura / 2.

 

Module Module1

  Private Function AreaTriangulo(ByVal Base As Double, ByVal Altura As Double) As Double

  AreaTriangulo = Base * Altura / 2

  End Function

 

  Sub Main()

  Dim Base As Double

  Dim Altura As Double

 

  Console.WriteLine("Cálculo del área de un triángulo")

  Console.WriteLine("Introducir Base")

  Base = Console.ReadLine

  Console.WriteLine("Introducir Altura")

  Altura = Console.ReadLine

  Console.WriteLine("Area triángulo de base {0} y altura {1} es {2} ", Base, Altura, AreaTriangulo(Base, Altura))

 

  Console.ReadKey()

  End Sub

End Module

 

3.-   Introducir un número A y visualizar si es o no primo.

 

Module Module1

  Public Function Primos(ByVal Numero As Long) As Boolean

  Dim X As Integer = 3

 Dim Final As Long

  Dim Result As Boolean = True

 

  Select Case Numero Mod 2 <> 0

  Case True

  Final = CLng(Numero / 2) + 1

  While X < Final And Result

  Result = Numero Mod X <> 0

  X = X + 1

  End While

  Case Else

  If Numero > 2 Then Result = False

  End Select

  Primos = Result

  End Function

 

  Sub Main()

  Dim Numero As Integer

  Console.WriteLine("Números primos")

  Console.WriteLine("Introducir número")

  Numero = Console.ReadLine

  Select Case Objeto.Primos(Numero)

  Case True

  Console.WriteLine("El número {0} es primo ", Numero)

  Case Else

  Console.WriteLine("El número {0} no es primo ", Numero)

  End Select

  Console.ReadKey()

  End Sub

End Module

 

4.-   Introducir una calificación (entre cero y diez),  e imprimir su equivalente alfabético, según la siguiente tabla.

De 3   -------> M.D.

Desde 3 y menor que 5  -------> INS.

Desde 5 y menor que 6  -------> SUF

Desde 6 y menor que 7  -------> BIEN

Desde 7 y menor que 9  -------> NOT.

Desde 9 hasta 10  -------> SOB.

 

Module Module1

  Private Function Calificacion(ByVal Nota As Single) As String

  Dim Texto As String = ""

  Select Case Nota

  Case 0 To 2.99

  Texto = "M.D."

  Case 3 To 4.99

  Texto = "Ins"

  Case 5 To 5.99

  Texto = "Suf"

  Case 6 To 6.99

  Texto = "Bien"

  Case 7 To 8.99

  Texto = "Not"

  Case 9 To 10.0

  Texto = "Sob"

  Case Else

  Texto = "Calificación erronea"

  End Select

  Calificacion = Texto

  End Function

 

  Sub Main()

  Dim Nota As Single

  Console.WriteLine("Introducir nota ")

  Nota = Console.ReadLine

  Console.WriteLine(Calificacion(Nota))

  Console.ReadKey() 

  End Sub

End Module

 

5.-   Introducir un valor en metros y visualizar su valor en millas terrestres, marinas , yardas y leguas.

Milla terrestre = 1.609,34 m.

Milla marina = 1.852,00 m. 

Yarda = 4.190 m.

Legua = 0,9144 m.

 

Module Module1

  Private Function Conversion(ByVal M As Single, _

  ByVal T As String) As Single

  Dim C As Single

  Select Case T

  Case "T"

  C = CSng(M / 1609.34)

  Case "M"

  C = CSng(M / 1852)

  Case "L"

  C = CSng(M / 4190)

  Case "Y"

  C = CSng(M / 0.9144)

  End Select

  Conversion = C

  End Function

 

 

 

 

 

 

 

 

  Sub Main()

  Dim Metros As Single

  Dim Tipo as String

  Console.WriteLine("Convertir distancia en metros ")

  Console.WriteLine("Introducir distancia en metros")

  Metros = Console.ReadLine

  Console.WriteLine("Introducir M/T/L/Y ")

  Tipo  = Console.ReadLine

  Console.WriteLine(Conversion(Metros, Tipo))

  Console.ReadKey() 

  End Sub

End Module

 

6.-   Introducir una fecha en pantalla con el formato día, mes y año en tres variables numéricas, validar la fecha y emitir el mensaje de fecha incorrecta o correcta.

Module Module1

  Function Fecha(ByVal D As Integer, _

ByVal M As Integer, _

ByVal A As Integer) _

As Boolean

 

  Dim Fec As Boolean

  Select Case M

  Case 1, 3, 5, 7, 8, 10, 12

  Fec = D > 0 And D < 32

  Case 4, 6, 9, 11

  Fec = D > 0 And D < 31

  Case 2

  Select Case A Mod 100 = 0

  Case True

  Fec = (D > 0 And D < 29) Or (D = 29 And A Mod 400 = 0)

  Case Else

  Fec = (D > 0 And D < 29) Or (D = 29 And A Mod 4 = 0)

  End Select

  End Select

  Fecha = Fec

  End Function

 

  Sub Main()

  Dim Dia As Integer

  Dim Mes As Integer

  Dim Year As Integer

  Console.WriteLine("Comprobar fecha ")

  Console.WriteLine("Introducir dia")

  Dia = Console.ReadLine

  Console.WriteLine("Introducir mes")

  Mes = Console.ReadLine

  Console.WriteLine("Introducir año")

  Year = Console.ReadLine

  Select Case Fecha(Dia, Mes, Year)

  Case True

  Console.WriteLine("La fecha es correcta")

  Case Else

  Console.WriteLine("La fecha no es correcta")

  End Select

  Console.ReadKey()

  End Sub

End Module

 

7.-   A partir de los siguientes valores de moneda extranjera, crear una función que a partir de un importe en pesetas devuelva su equivalente en la moneda que se indique.

Module Module1

  Function ConversionMoneda(ByVal Pesetas As Single, _

  ByVal Moneda As String) As Single

  Dim Result As Single

  Select Case Moneda

  Case "F"

  Result = CSng(Pesetas / 25.24)

  Case "L"

  Result = CSng(Pesetas / 0.0859)

  Case "I"

  Result = CSng(Pesetas / 245.556)

  Case "D"

  Result = CSng(Pesetas / 150.228)

  Case "M"

  Result = CSng(Pesetas / 84.648)

  Case "S"

  Result = CSng(Pesetas / 101.755)

  Case "H"

  Result = CSng(Pesetas / 5.117)

  Case "P"

 Result = CSng(Pesetas / 0.826)

  End Select

  ConversionMoneda = Result 

  End function

 

  Sub Main()

  Dim Pesetas As Integer

  Dim Moneda As Char

 

  Console.WriteLine("Convertir moneda ")

  Console.WriteLine("Introducir pesetas")

  Pesetas = Console.ReadLine

  Console.WriteLine("Introducir moneda F/L/I/D/M/S/H/P")

  Moneda = Console.ReadLine

  Console.WriteLine("El importe de {0} pesetas en la moneda {1} es {2} ", Pesetas, Moneda, ConversionMoneda(Pesetas, Moneda))

  Console.ReadKey()

  End Sub

End Module

 

Las soluciones por las que se ha optado son mejorables, y solo pretenden ilustrar como abordar una función.

 

En estos ejercicios en algunos casos sería necesario añadir instrucciones del tipo

 

T = Ucase(T)

 

Siendo T una variable de tipo char, que puede venir indistintamente en minúsculas o mayúsculas, de esa forma nos aseguramos su completo funcionamiento, convirtiéndola a mayúsculas.

 

También se ha optado por utilizar una variable auxiliar, y luego que la función reciba su valor, no siendo eso imprescindible, pero sin embargo si válido en cualquier lenguaje.

 

En función de cómo se tenga configurado VB, las líneas del tipo

 

  Result = CSng(Pesetas / 101.755)

  C = CSng(M / 1609.34)

 

Pueden funcionar también con esta sintaxis.

 

  Result = Pesetas / 101.755

  C = M / 1609.34

 

CSng, CDbl, Cint, etc, son funciones de conversión de un valor numérico a un valor determinado, Single, doble, entero etc..

 

Ello viene obligado por la definición del parámetro Option Strict, para acceder al mismo

 

Proyecto ŕ Propiedades ŕ Compilar

 

 

 

Si está en off, no exige la conversión obligada de tipos, es fuente de posibles errores, si está en On, sí.

Su valor adecuado debería ser On, aunque obligue a la conversión de los datos.

 

   Inicio    






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies