Está en la página 1de 7

ALGORITMOS (IN220)

EXAMEN PARCIAL - SOLUCIÓN


Ciclo 2015-02

Secciones : IN41, IN42, IN43, IN44, IN45, IN46, IV42, IV43, IV44,
IV45, IX41, IX42, IX43, IX44, IX45, IX46, IX47, IX48
Profesores : Aranda Ipince, Duilio Ángel
Cárdenas Rengifo, Luís Enrique
Castillo Villalobos, Violeta Isabel
De La Cerna García, Nelva Bethy
Guevara Parker, Hans Christian
Morán Huanay, Eduardo Martín
Moya Tapia Mauricio Alonso
Namay Zevallos, Wilder Adán
Power Porto, George Félix
Segura Peña, Jaime Ildefonso
Vásquez Oré, Marco Antonio
Duración : 150 minutos

Indicaciones:

 No está permitido el uso de ningún material de consulta (cuadernos, libros, diccionarios,


lecturas, etc.).
 No se permite el uso de calculadora científica o programable.
 No se permite el uso de teléfono celular o cualquier otro aparato electrónico durante el
examen, los cuales deben permanecer apagados y guardados.
 Escriba con lapicero azul o negro solo en los espacios indicados
 Los exámenes resueltos con lápiz no tienen derecho a reclamo
 Devuelva todo el material recibido, inclusive la hoja de borrador (no será corregida)

1 (3 p.) 2 (2 p.) 3 (2 p.) 4 (3 p.) 5 (4 p.) 6 (6 p.) Nota

1
PREGUNTA 1 (3 p.)

Marque la opción correcta según corresponda (0.5 p. c/u)

1.1 ¿Cuántas condiciones tiene la instrucción 1.4 ¿Cuál no corresponde necesariamente a


selectiva doble? las características de un algoritmo?
a) Una a) Preciso
b) Dos b) Estructurado
c) Tres c) Finito
d) Más de tres d) Definido
e) Ninguna de las anteriores e) Repetitivo

1.2 Se quiere declarar una variable para el 1.5 Para manejar la hora de ingreso de un tra-
número de DNI de una persona, ¿qué tipo de bajador, la variable debe ser declarada como:
variable es más adecuado? a) Time
a) Integer b) Date
b) Single c) String
c) Long d) Cualquiera de ellas
d) Double e) Ninguna de anteriores
e) String
1.6 La instrucción MessageBox en Visual
1.3 ¿Cómo debe ser el tipo de variable del Basic sirve para:
contador de la estructura de control repetitiva I. Entrada de información
(For-Next)? II. Salida de información
I. Entero III. Mostrar botones
II. Real Son verdaderas:
III. Cadena de texto a) Solo I
Son verdaderas: b) Solo II
a) Solo I c) I y II
b) Solo II d) Todas
c) I y II e) Ninguna
d) Todas
e) Ninguna

Observaciones:
1.1) La instrucción selectiva doble (If-Then-Else) solo tiene una condición (que puede ser verdadera o falsa); se
entiende como condición a un valor tipo Boolean que puede resultar de una o más operaciones lógicas
1.2) También podría usarse el tipo Long (DNI es un número entero de 8 cifras) pero debe considerarse el formato
adecuado cuando empieza con cero y que no se realizarán operaciones con ese número; el tipo de variable más
adecuado es String*8, debiendo verificarse que el valor ingresado sea numérico
1.5) El tipo de variable Date almacena fecha y hora en un solo número, Time no existe
1.6) La instrucción MessageBox no existe, el nombre correcto es MsgBox.

2
PREGUNTA 2 (2 p.)

2.1 Analice el siguiente segmento de programa e indique qué valores se mostrarán para las
variables T, M y A luego de ejecutar el programa. (0.5 p.)

Dim A As Integer, C As Integer, T As Integer, M As Integer


A = 1 : C = 0 : T = 0 : M = 10
Do
T = T + (M Mod A)
M=M\A
A=A+2
Loop Until A > = 8 Respuesta: T = 4 M = 0 A = 9
2.2 Analice el siguiente segmento de programa e indique los valores de las variables T, M y C
luego de ejecutar el programa. (0.5 p.)

Dim A As Integer, C As Integer, T As Integer, M As Integer


A = 1 : C = 0 : T = 0 : M = 10
If A < > C Or M > T Then T = T + C
If C = T And A > T Then
M=M\A
Else
C=C*A
End If Respuesta: T = 0 M = 10 C = 0

2.3 Analice el siguiente programa y complete la tabla de


los valores que se obtendrán para las variables N, C y S N C S
al ejecutarse el programa. (1 p.) 0 1 12
0 3 9
Dim N As Integer, C As Integer, S As Integer 0 5 4
N = 0 : C = 1 : S = 12 0 7 -3
Do
If S Mod 3 >= 0 Then C = C + 2
S=S–C
Loop Until S <= N

PREGUNTA 3 (2 p.)

Elabore en pseudocódigo el algoritmo que solicite el monto de la Venta a un cliente (debida-


mente validado), y calcule el Descuento otorgado sabiendo que el % se aplica sobre el monto
de venta:
 Si el monto vendido es menor que $2000 entonces se le descuenta 3%
 Si el monto está entre $2000 y $5000 se descuenta 5%
 Si la venta es mayor que $5000 pero menor que $8000 se descuenta 7%
 En cualquier otro caso se le otorga el 9.5%

3
Calificación: Ingreso y validación de datos (0.5 p.); Procesamiento y salida (1.5 p.)

Inicio
Repetir
Mostrar “Ingrese el monto de la venta”
Ingresar Venta
Si Venta <= 0 Entonces Mostrar “El valor de la venta debe ser positivo”
Hasta Venta > 0
Si Venta < 2000 Entonces
pDesc  0.03
De otro modo Si Venta <= 5000 Then
pDesc  0.05
De otro modo Si Venta < 8000 Entonces
pDesc  0.07
De otro modo
pDesc  0.095
Fin de Si
Descuento  Venta * pDesc
Mostrar “El descuento a aplicar es: ” & Descuento
Fin

PREGUNTA 4 (3 p.)

El siguiente programa en VBA calcula el volumen de una pirámide, dados los lados de la base
(a y b) y la altura (h). Coloque en la columna de la izquierda un número indicando el orden en
que deben ir las instrucciones. (0.2 p. c/u)

No. Instrucción
0 Private Sub Piramide( )
4/5/6 a = Val(InputBox("Ingrese un lado de la base"))
2/3 Do
11 V=a*b*h/3
13 Respuesta = MsgBox("¿Desea realizar otro cálculo?", vbYesNo)
5/4/6 h = Val(InputBox("Ingrese la altura de la pirámide"))
12 MsgBox "El volumen de la pirámide es " & V
6/4/5 b = Val(InputBox("Ingrese el otro lado de la base"))
8 MsgBox "Los datos deben ser positivos"
7 If a <= 0 Or b <= 0 Or h <= 0 Then
10 Loop Until a>0 And b>0 And h>0
15 End Sub
9 End If
14 Loop Until Respuesta= vbNo
3/2 Do
1 Dim a As Single, b As Single, h As Single, V As Single, Respuesta As Integer

4
PREGUNTA 5 (4 p.)

Se pide desarrollar el diagrama de flujo del algoritmo para calcular la raíz n-ésima de un nú-
mero real positivo A por iteraciones sucesivas, según la fórmula siguiente:

1 𝐴
𝑥𝑘+1 = ( + (𝑛 − 1)𝑥𝑘 )
𝑛 𝑥𝑘𝑛−1

Donde los subíndices (k y k +1) denotan las iteraciones sucesivas de 𝑥, siendo 𝑥0 el valor inicial
de estimación. Las iteraciones continúan hasta que el valor absoluto de la diferencia entre los
resultados sucesivos |𝑥𝑘+1 − 𝑥𝑘 | sea menor que 110–6.

Como datos se debe ingresar:


 el número A del cual se desea calcular la raíz n-ésima,
 el valor de n, y
 el valor inicial de estimación x0.

Debe validar que los valores ingresados sean positivos y que además x0 sea menor que A.

Calificación: Ingreso y validación de datos (1 p.); Procesamiento y salida (3 p.)

INICIO

A, n, x0

A>0n>0
x0 > 0  x0 < n
No

x1  (A/x0^(n-1) + (n-1)*x0)/n “Datos incorrectos”

No Abs(x1-x0) <
x0  x1
0.000001

“La raíz ” & n & “ de ” & A


& “ es ” & x1

FIN

5
PREGUNTA 6 (6 p.)

Ud. ha sido contratado recientemente como asistente del Gerente de Ventas de un hotel, y el
primer trabajo que se le encarga es desarrollar un programa en Visual Basic que permita atender
diariamente a los clientes que llegan al hotel según el siguiente esquema:
a) Se ingresan como datos la cantidad de habitaciones disponibles de tipo Simple y Doble
para ese día. La atención finaliza cuando no queden clientes por atender o no hay habi-
taciones disponibles. (1 p.)
b) Cuando el cliente llega se le solicita los siguientes datos: Tipo de habitación (S o D),
y si es cliente Particular o viene de una Empresa (E o P) y el número de noches que se
quedará. (1 p.)
c) Si hubieran habitaciones disponibles del tipo solicitado por el cliente, se le indica el
monto total a pagar. Los precios se muestran en la tabla debajo. (2 p.)
Precios de habitaciones
Tipo de Precio por noche, US$
habitación E – Empresa P – Particular
S – Simple 65.00 75.00
D – Doble 80.00 100.00

Finalizada la atención de los clientes del día, muestre las siguientes estadísticas:
d) Monto Total cobrado por el alquiler de las habitaciones. (1 p.)
e) ¿Qué porcentaje de habitaciones de tipo Doble están ocupadas? (1 p.)

Option Explicit
Private Sub CommandButton1_Click()

Dim QSimples As Integer, QDobles As Integer, Tipo As String * 1, Cliente As String * 1, Noches As
Integer, Rpta As Integer
Dim TotalDobles As Integer, TSimples As Integer, TDobles As Integer, Asignado As String * 1
Dim C As Integer, Precio As Single, Total As Single, S As Single

'Ingresar cantidad inicial de habitaciones simples y dobles disponibles


QSimples = Val([B4]): QDobles = Val([B5])

If QSimples < 0 Or QDobles < 0 Then


MsgBox "Debe ingresar valores mayores o iguales a cero", vbCritical
Else
TotalDobles = QDobles 'Guardar el valor inicial para contestar a la pregunta (d) % de habitaciones
dobles ocupadas
C = 0: S = 0

Do 'Ingreso repetitivo de datos hasta que se conteste NO o se hayan agotado todas las habitaciones
Do
Tipo = UCase(InputBox("Ingrese el tipo de habitación: Simple o Doble"))
Loop Until Tipo = "S" Or Tipo = "D"

6
Do
Cliente = UCase(InputBox("Ingrese el tipo de cliente: Empresa o Particular"))
Loop Until Cliente = "E" Or Cliente = "P"
Do
Noches = Val(InputBox("Ingrese el número de noches que se quedará:"))
Loop Until Noches > 0

'Determinar la tarifa correspondiente y ver disponibilidad de habitación solicitada


If Tipo = "S" Then
If Cliente = "E" Then Precio = 65 Else Precio = 75
If QSimples > 0 Then
QSimples = QSimples - 1
Asignado = "S"
Else
Asignado = "N"
End If
'También puede programarse en una sola línea:
'If QSimples > 0 Then QSimples = QSimples - 1: Asignado = "S" Else Asignado = "N"
Else
If Cliente = "E" Then Precio = 80 Else Precio = 100
If QDobles > 0 Then
QDobles = QDobles - 1
Asignado = "S"
Else
Asignado = "N"
End If
'También puede programarse en una sola línea:
'If QDobles > 0 Then QDobles = QDobles - 1: Asignado = "S" Else Asignado = "N"
End If

'Calcular y mostrar datos de habitación asignada


If Asignado = "S" Then
C = C + 1: Total = Precio * Noches: S = S + Total
Cells(7 + C, 1) = C: Cells(7 + C, 2) = Tipo: Cells(7 + C, 3) = Cliente
Cells(7 + C, 4) = Noches: Cells(7 + C, 5) = Total
Else
MsgBox "No hay disponibilidad de habitaciones del tipo " & Tipo, vbCritical
End If

Rpta = MsgBox("¿Hay más clientes?", vbYesNo)


Loop Until Rpta = vbNo Or (QSimples + QDobles = 0) 'Se repite hasta que se contesta No, o se
agoten todas las habitaciones

[H8] = S 'Monto total de ingresos


If TotalDobles > 0 Then [H9] = (TotalDobles - QDobles) / TotalDobles * 100 & " %"
End If
End Sub

También podría gustarte