Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diseño de usuario i.
Planeación de requerimientos ii.
Mantenimiento iii. Construcción rápida
Transición iv.
Construcción rápida v.
Solución
a. VPN - iv; DSS - ii; SAN - i; RAID – iii
b. Diseño de usuario-ii; Planeación de requerimientos-i, Mantenimiento-v, Transición-iv, Construcción rápida-iii
6. (4 puntos) A una de sus compañeras siempre le ha gustado la poesía y recientemente ha descubierto una
fascinante forma poética. El tautograma es un caso especial de aliteración, el cual es la ocurrencia de la
misma letra al inicio de palabras adyacentes. En particular, una oración es un tautograma si todas sus
palabras inician con la misma letra.
Por ejemplo, las siguientes oraciones son tautogramas:
• Mi mamá me mima mucho.
• Susana sonreía satisfecha.
• Doce duendes de Dinamarca decidieron dividirse dos docenas de delicados diamantes después de
discutir diferentes dificultades durante dos días.
Tenga en cuenta que:
• Una palabra contiene al menos una letra.
Página 2 de 9 CONTINÚA…
• Una oración contiene al menos una palabra.
• La oración termina siempre con un punto.
Ayude a su compañera a analizar, mediante un programa implementado en VBA sobre Excel, para cada
una de las oraciones de una hoja de cálculo, su cantidad de palabras y si dicha oración es un tautograma,
tal como se muestra en la figura.
ora = Trim(ora)
letra = UCase(Left(ora, 1))
tamCad = Len(ora)
tautograma = True
palabras = 1
For i = 1 To tamCad
If (Mid(ora, i, 1) = " ") Then
If (UCase(Mid(ora, i + 1, 1)) <> letra) Then
tautograma = False
End If
palabras = palabras + 1
End If
Next
End Sub
Sub EsTautograma2(ByVal ora As String, tautograma As Boolean, palabras As Integer)
Dim letra As String
Dim pos As Integer, tamCad As Integer
ora = Trim(ora)
Página 3 de 9 CONTINÚA…
letra = UCase(Left(ora, 1))
tautograma = True
palabras = 1
pos = 0
Do
pos = InStr(pos + 1, ora, " ")
If (pos <> 0) Then
If (UCase(Mid(ora, pos + 1, 1)) <> letra) Then
tautograma = False
End If
palabras = palabras + 1
End If
Loop Until pos = 0
End Sub
Sub Principal()
Dim cantOraciones As Integer, i As Integer
Dim cantPalabras As Integer, tautograma As Boolean
Dim oracion As String, res As String
cantOraciones = Range("B1")
For i = 0 To cantOraciones - 1
oracion = Cells(3 + i, 1)
Call EsTautograma2(oracion, tautograma, cantPalabras)
If (tautograma) Then
res = "Si"
Else
res = "No"
End If
Cells(3 + i, 2) = cantPalabras
Cells(3 + i, 3) = res
Next
End Sub
7. (6 puntos) La Sociedad de Banca y Seguros (SBSS) regula el funcionamiento de todos los bancos y
aseguradoras del país. Como parte de esta regulación se le exige a los bancos que pasen por procesos de
auditoría interna y externa. Con la finalidad de estar preparados para la próxima auditoría en “Mi
Banquito” el gerente de auditoría interna prepara una hoja de cálculo que deberán llenar los gerentes de
cada sucursal con la información de todas las transacciones del último mes realizadas en la agencia.
Una vez llena la hoja Operaciones y utilizando los datos de la hoja Tipo de Cambio un programa en
VBA creará el reporte mostrado en la hoja Reporte.
Para formar el reporte se utilizarán los criterios que se encuentran en la hoja Reporte:
Página 4 de 9 CONTINÚA…
• Tipo de moneda: este criterio indica que se colocarán en el reporte las operaciones que coincidan con
el tipo de moneda indicado. Si en este criterio se encuentra la palabra “Todos” entonces se colocarán
en el reporte las operaciones realizadas en todos los tipos de monedas.
• Monto base en soles: este criterio indica que se colocarán en el reporte las operaciones cuyo monto
sea mayor o igual al monto base.
• Tipo de operación: este criterio indica que se colocarán en el reporte las operaciones que coincidan
con el tipo de operación indicado. Si en este criterio se encuentra la palabra “Todos” entonces se
colocarán en el reporte las operaciones de todos los tipos.
Considere que la cantidad de tipos de monedas que maneja el banco pueden variar y que los criterios del
reporte son datos de entrada para crearlo.
Se le pide:
a. (2 puntos) La definición y análisis del problema (el diagrama de módulos debe contener al menos
cuatro módulos).
b. (4 puntos) Implementar en VBA sobre Excel los módulos detallados en su análisis que permitan
obtener el reporte.
Solución
Definición: Hallar el reporte de las operaciones que cumplan con los criterios dados.
Datos de entrada: criterios del reporte: moneda, tipo de operación, monto base; cantidad de monedas, por cada
moneda: número, nombre, cambio; cantidad de operaciones, por cada operación: fecha, usuario, tipo, código,
moneda y monto.
Datos de salida: por cada operación que cumpla con los criterios: fecha, usuario, tipo, código, moneda y monto.
Diagrama de módulos
Principal
Página 5 de 9 CONTINÚA…
Sub Principal()
Dim operaciones As Integer, criterioMoneda As String, criterioMonto As Single, criterioTipo As String, _
filtradas As Integer, i As Integer, fecha As String, usuario As String, tipo As String, codigo As String, _
moneda As String, monto As Single, montoSoles As Single
operaciones = Sheets("Operaciones").Range("b1")
criterioMoneda = Sheets("Reporte").Range("b2")
criterioMonto = Sheets("Reporte").Range("b3")
criterioTipo = Sheets("Reporte").Range("b4")
filtradas = 0
For i = 1 To operaciones
Call LeerOperacion(i, fecha, usuario, tipo, codigo, moneda, monto)
montoSoles = Convierte(monto, moneda)
If (EvaluarOperacion(tipo, moneda, montoSoles, criterioTipo, criterioMoneda, criterioMonto)) Then
filtradas = filtradas + 1
Call MostrarOperacion(filtradas, fecha, usuario, tipo, codigo, moneda, monto)
End If
Next
End Sub
Sub LeerOperacion(ByVal i As Integer, fecha As String, usuario As String, tipo As String, codigo As String, moneda As
String, monto As Single)
fecha = Sheets("Operaciones").Cells(i + 2, 1)
usuario = Sheets("Operaciones").Cells(i + 2, 2)
tipo = Sheets("Operaciones").Cells(i + 2, 3)
codigo = Sheets("Operaciones").Cells(i + 2, 4)
moneda = Sheets("Operaciones").Cells(i + 2, 5)
monto = Sheets("Operaciones").Cells(i + 2, 6)
End Sub
Function EvaluarOperacion(ByVal tipo As String, ByVal moneda As String, ByVal monto As Single, ByVal criterioTipo
As String, ByVal criterioMoneda As String, ByVal criterioMonto As Single) As Boolean
EvaluarOperacion = ((tipo = criterioTipo) Or (criterioTipo = "Todos")) And ((moneda = criterioMoneda) Or
(criterioMoneda = "Todos")) And (monto >= criterioMonto)
End Function
Sub MostrarOperacion(ByVal i As Integer, ByVal fecha As String, ByVal usuario As String, ByVal tipo As String, ByVal
codigo As String, ByVal moneda As String, ByVal monto As Single)
Sheets("Reporte").Cells(i + 6, 1) = fecha
Sheets("Reporte").Cells(i + 6, 2) = usuario
Página 6 de 9 CONTINÚA…
Sheets("Reporte").Cells(i + 6, 3) = tipo
Sheets("Reporte").Cells(i + 6, 4) = codigo
Sheets("Reporte").Cells(i + 6, 5) = moneda
Sheets("Reporte").Cells(i + 6, 6) = monto
End Sub
Se sabe que los registros empiezan en la fila 8. Además se conoce que el nombre del archivo nuevo es
una cadena formada por el nombre seguido de un punto y la extensión de longitud tres, seguido de la
versión que se encuentra entre corchetes y finalmente entre “<” y “>” se encuentra el tamaño del archivo
en bytes.
Se le pide implementar utilizando VBA sobre Excel los siguientes subprogramas que permitan calcular
la información buscada en la hoja de cálculo anterior:
a. (0.5 puntos) Un subprograma LeerDatos que lee el número de registros, la cantidad de espacio
disponible en disco “C:”, la cantidad de espacio disponible en disco “D:”, el nombre del programa y
la versión.
b. (1.0 punto) Un subprograma llamado ObtenerInformacion que teniendo por parámetro de entrada el
nombre del archivo nuevo (con la estructura mencionada previamente) obtenga y devuelva el
nombre del archivo, la extensión, la versión y el tamaño del archivo en KB como datos separados y
utilizando los tipos de datos convenientes.
c. (0.5 punto) Un subprograma llamado UnidadDestino que teniendo como parámetro la extensión del
archivo y la descripción de requerido (“Si” / “No”), devuelva la unidad de destino del archivo. Si la
extensión es “exe” o “dll” y el archivo es requerido (valor es igual a “Si”) entonces la unidad de
destino es “C:” en caso contrario la unidad de destino es “D:”
d. (0.5 punto) Un subprograma llamado Compatible que teniendo como parámetro la versión del
aplicativo y la versión del archivo que se actualiza, evalúe la compatibilidad y devuelva el mensaje
correspondiente. Se produce error de compatibilidad si la versión del archivo a instalar/actualizar es
inferior a la del aplicativo o superior en más de una versión.
e. (1.5 punto) Un subprograma Principal que:
a. Lea los datos, utilizando el subprograma de la parte a)
b. Para cada uno de los archivos
i. Lea el nombre del archivo nuevo y si es requerido o no
ii. Utilizando el subprograma b) obtenga la información del nombre del archivo nuevo.
iii. Utilizando el subprograma c) halle la unidad destino
Página 7 de 9 CONTINÚA…
iv. Evalúe si la instalación se realizo correctamente. Esto depende de si hay espacio
suficiente en la unidad de destino para dicho archivo.
v. Utilizando el subprograma de la parte d) evalúe la compatibilidad.
vi. Escriba en la hoja de cálculo la unidad destino, el tamaño requerido, la evaluación de
la instalación y la compatibilidad.
Nota: debe tener en cuenta que conforme vaya avanzando, archivo por archivo, el espacio en los
discos ya no será el inicial. Es por eso que en el ejemplo para el archivo en la fila 12 no hay espacio.
Solución
Const KB As Integer = 1024
Sub leerdatos(ByRef comienzo As Byte, ByRef registros As Byte, ByRef sizec As Long, ByRef sized As Long,
ByRef nombrearchivo As String, ByRef version As Byte)
comienzo = Range("b1")
registros = Range("b2")
sizec = Range("e2")
sized = Range("e3")
nombrearchivo = Range("e4")
version = Range("e5")
End Sub
Sub obtenerinformacion(ByVal cadena As String, ByRef nombre As String, ByRef extension As String, _
ByRef version As Byte, ByRef size As Long)
Página 8 de 9
compatible = "Compatibilidad"
Else
compatible = "error de compatibilidad"
End If
End Function
Sub principal()
Dim nombre As String, extension As String, version As Byte, size As Long
Dim comienzo As Byte, registros As Byte, sizec As Long, sized As Long
Dim nombrearchivo As String, versionapp As Byte
Página 9 de 9