Sie sind auf Seite 1von 3

Curso: Introduccin a la Computacin Profesor: Layla Hirsh M.

H111

Clase 7
1 Fachada de la casa
Se desea pintar la fachada (techo y paredes) de la casa que se muestra a continuacin, se sabe que las ventanas son cuadradas. Para lo cual se necesita hallar el rea en cuestin.

Se pide implementar en VBA:

a) Un subprograma LeerDatos que permita leer los datos de entrada. b) Un subprograma CalcularAreaPared que recibiendo por parmetros la altura de la pared, el ancho de la pared, la ancho de la ventana, la altura de la puerta y el ancho de la puerta calcule y devuelva el rea de la pared. c) Un subprograma CalcularAreaTecho que recibiendo por parmetros la altura del techo y el ancho del techo y calcule y devuelva el area del techo d) Un subprograma CalcularAreaTotal que reciba por parmetros altura de la puerta, altura de la pared, altura del techo, ancho de la ventana, ancho de la pared, ancho de la puerta y ancho del techo y que utilizando los dos subprogramas anteriores calcule y devuelva el rea total. e) Un subprograma Mostrar que muestre el rea total hallada.
PONTIFICIA UNIVERSIDAD CATLICA DEL PER

Curso: Introduccin a la Computacin Profesor: Layla Hirsh M.

H111

f) Un subprograma CalcularAreaTotalCasa que lea, calcule el rea total de la fachada de la casa y la muestre. Utilice los subprogramas anteriores que crea convenientes.

Sub LeerDatos(ByRef aTecho As Single, ByRef htecho As Single, ByRef aPared As Single, ByRef hPared As Single, ByRef aPuerta As Single, ByRef hPuerta As Single, ByRef aVent As Single) aTecho = Range("a1") htecho = Range("a2") aPared = Range("a3") hPared = Range("a4") aPuerta = Range("a5") hPuerta = Range("a6") aVent = Range("a7") End Sub Function CalcularAreaPared(ByVal hPared As Single, ByVal aPared _ As Single, ByVal aVent As Single, ByVal hPuerta As Single, _ ByVal aPuerta As Single) As Single CalcularAreaPared = (hPared * aPared) - (2 * aVent ^ 2) - (hPuerta * aPuerta) End Function Function CalcularAreaTecho(ByVal htecho As Single, ByVal aTecho As Single) As Single CalcularAreaTecho = (htecho * aTecho) / 2 End Function Function CalcularAreaTotal(ByVal aTecho As Single, ByVal htecho As Single, ByVal aPared As Single, ByVal hPared As Single, ByVal aPuerta As Single, _ ByVal hPuerta As Single, ByVal aVent As Single) As Single Dim areaPared As Single, areaTecho As Single areaPared = CalcularAreaPared(hPared, aPared, aVent, hPuerta, aPuerta) areaTecho = CalcularAreaTecho(htecho, aTecho) CalcularAreaTotal = areaPared + areaTecho End Function Sub MostrarArea(ByVal areaTotal As Single, ByVal Esmayor As Boolean) Range("b1") = areaTotal Range("b2") = Esmayor End Sub Sub CalcularAreaTotalCasa() Dim aTecho As Single, htecho As Single, aPared As Single, hPared As Single, aPuerta As Single, hPuerta As Single, aVent As Single Dim Atotal As Single, Esmayor As Boolean Call LeerDatos(aTecho, htecho, aPared, hPared, aPuerta, hPuerta, aVent) Atotal = CalcularAreaTotal(aTecho, htecho, aPared, hPared, aPuerta, hPuerta, aVent) Esmayor = (Atotal > 1) And (aTecho > 20) Call MostrarArea(Atotal, Esmayor) End Sub

PONTIFICIA UNIVERSIDAD CATLICA DEL PER

Curso: Introduccin a la Computacin Profesor: Layla Hirsh M.

H111

2 Mi Correo

Sub MiCorreo() Dim nombre As String, serv As String, longMax As Byte Dim correo As String, valida As Boolean nombre = Range("a2") serv = Range("b2") longMax = Range("c2") Call HallaValores(nombre, serv, longMax, correo, valida) Range("d2") = correo Range("e2") = valida End Sub Sub HallaValores(ByVal nombre As String, ByVal serv As String, _ ByVal longMax As Byte, ByRef correo As String, ByRef valida _ As Boolean) correo = HallaCorreo(nombre, serv) valida = HallaEsValida(longMax, correo) End Sub Function HallaCorreo(ByVal nombre As String, ByVal serv As String) As String Dim posb As Byte, nomb As String, apellido As String Dim letra As String, posb2 As Byte, corr As String posb = InStr(1, nombre, " ") nomb = Left(nombre, posb - 1) posb2 = InStr(posb + 1, nombre, " ") apellido = Mid(nombre, posb + 1, posb2 - posb - 1) letra = Mid(nombre, posb2 + 1, 1) corr = nomb & apellido & letra & "@" & serv & ".com" HallaCorreo = LCase(corr) End Function Function HallaEsValida(ByVal longMax As Byte, ByVal correo As String) As Boolean HallaEsValida = longMax >= Len(correo) End Function

PONTIFICIA UNIVERSIDAD CATLICA DEL PER