Sunteți pe pagina 1din 16

Facultad de Ingeniería Industrial

IN220 Algoritmos
Guía de ejercicios
Unidad 4 – Funciones y Procedimientos

Ejercicios para practicar


1. Elabore una función en VBA que reciba 3 valores enteros y calcule la suma de los cuadrados de cada uno
de ellos.

2. Elabore el diagrama de flujo de una función, que evalúe un número entero enviado como parámetro, y
determine si el número es primo o no. Empleando el subprograma anterior evalúe los elementos de un
vector de N datos de números enteros.

3. Represente mediante un diagrama de flujo el algoritmo que se muestra en el siguiente seudocódigo.

Función suma_cifras(Entero: numero) Entero


suma =0
Mientras numero>0 hacer
cifra = numero resto 10
numero = numero cociente 10
suma = suma + cifra
Fin Mientras
suma_cifras = suma
Fin Función

4. Elabore una función en VBA llamada ValidarNota que permita validar un número real de 0 a 20.

5. Elabore un procedimiento o subrutina en VBA que permita convertir un número en base 10 a base
binaria. Luego, ejecute dicha conversión a través del botón Convertir. Utilice la siguiente interfaz gráfica:

6. Elabore un diagrama Nassi-Shneiderman que calcule el seno de un ángulo, use en la solución la función
factorial.

𝑥 2𝑖+1 𝑥3 𝑥5 𝑥7
𝑆𝑒𝑛𝑜(𝑥) = ∑(−1)𝑖 =𝑥− + − +⋯
(2𝑖 + 1)! 3! 5! 7!
𝑖=0

El ángulo X, está dado en radianes.


La sumatoria debe calcularse considerando los N primeros términos de la serie. N, es ingresado como
dato.
Algoritmos – Guía de ejercicios Unidad 4 Página 2

7. Elabore una función en VBA que permita obtener el promedio de 3 números reales, pero anulando el
menor número de los tres.

8. Desarrolle un diagrama de flujo para leer un vector de N elementos y luego cuente los elementos pares
y sume los elementos impares. La lectura del vector se realizará a través de un procedimiento.

9. Elabore un programa en VBA que muestre un menú con 4 opciones:


• Mostrar los números del 1 al 10 (ambos inclusive)
• Mostrar la tabla de multiplicar de un numero deseado (entre 1 y 9)
• Mostrar las primeras diez potencias de un número (entre 1 y 5)
• Salir

10. Se le pide realizar el pequeño juego de adivinar un número. Este número se guardará en una variable con
el valor que se desee. El número será entre 1 y 100 y se tendrá que hacer los siguientes subprocesos:

• LeerNúmero(): Solicita un número hasta que el usuario ingrese un valor entre 1 y 100, sino vuelve a
pedir el valor.

• ComprobarValor(numeroUsuario, numeroCorrecto): Comprueba si el número ingresado es correcto,


este devuelve un número que puede ser:
a. 0: Si los dos números son iguales.
b. 1: El numeroUsuario es mayor que el numeroCorrecto
c. -1: El numeroUsuario es menor que el numeroCorrecto

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 3

Solución
1. Elabore una función en VBA que reciba 3 valores enteros y calcule la suma de los cuadrados de cada uno
de ellos.

Function Cuadrados (num1 as Integer, num2 as Integer, num3 as Integer) as Integer


Dim Suma as Integer
Suma = num1 ^ 2 + num2 ^ 2 + num3 ^ 2
Cuadrados = Suma
End Function

2. Elabore el diagrama de flujo de una función, que evalúe un número entero enviado como parámetro, y
determine si el número es primo o no.
Empleando el subprograma anterior evalúe los elementos de un vector de N datos de números enteros.

3. Represente mediante un diagrama de flujo el algoritmo que se muestra en el siguiente seudocódigo.

Función suma_cifras(Entero: numero) Entero


suma =0
Mientras numero>0 hacer
cifra = numero resto 10
numero = numero cociente 10
suma = suma + cifra
Fin Mientras
suma_cifras = suma
Fin Función

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 4

4. Elabore una función en VBA llamada ValidarNota que permita validar un número real de 0 a 20.

5. Elabore un procedimiento o subrutina en VBA que permita convertir un número en base 10 a base
binaria. Luego, ejecute dicha conversión a través del botón Convertir. Utilice la siguiente interfaz gráfica:

6. Elabore un diagrama Nassi-Shneiderman que calcule el seno de un ángulo, use en la solución la función
factorial.

𝑥 2𝑖+1 𝑥3 𝑥5 𝑥7
𝑆𝑒𝑛𝑜(𝑥) = ∑(−1)𝑖 =𝑥− + − +⋯
(2𝑖 + 1)! 3! 5! 7!
𝑖=0

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 5

El ángulo X, está dado en radianes.


La sumatoria debe calcularse considerando los N primeros términos de la serie. N, es ingresado como
dato.
Lista de variables:
• N, cantidad de términos de la serie
• X, ángulo
• C, contador de términos
• Signo, signo del término
• Termino, término de la serie
• S, acumulador

7. Elabore una función en VBA que permita obtener el promedio de 3 números reales, pero anulando el
menor número de los tres.

8. Desarrolle un diagrama de flujo para leer un vector de N elementos y luego cuente los elementos pares
y sume los elementos impares. La lectura del vector se realizará a través de un procedimiento.

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 6

9. Elabore un programa en VBA que muestre un menú con 4 opciones:


• Mostrar los números del 1 al 10 (ambos inclusive)
• Mostrar la tabla de multiplicar de un numero deseado (entre 1 y 9)
• Mostrar las primeras diez potencias de un número (entre 1 y 5)
• Salir
Sub Proceso1()
Dim I As Integer
For I = 1 To 10
MsgBox (I)
Next I
End Sub
Sub Proceso2(A As Integer)
Dim I As Integer
For I= 1 To A
MsgBox (A & “ X “ & I & “= “ & A*I)
Next I
End Sub
Sub Proceso3 (B As Integer)
Dim I As Integer
For I To B
MsgBox (“Potencia “ & I & “ De “ & B & “ Es = “ & B^I)
Next I
End Sub

Private Sub Calculo_Click()


Dim Opcion As String, Rpta as Integer
Do
Do
Opcion = Val(InputBox(“Ingrese Opción”)
If Opcion <> 1 And Opcion <> 2 And Opcion <> 3 Then
MsgBox (“Seleccione una de las opciones hábiles”)
End if
Loop Until Opcion = 1 Or Opcion = 2 Or Opcion = 3
Select Case Opcion
Case is = 1

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 7

Call Proceso1()
Case is = 2
Do
n = Val(InputBox(“Ingrese número del 1 al 9”)
If n <1 or n>9 Then MsgBox (“seleccione un numero del 1 al 9”)
Loop until n>=1 and n<=9
Call Proceso2(n)
Case is = 3
Do
n = Val(InputBox(“Ingrese número del 1 al 5”)
If n <1 or n>5 Then MsgBox (“seleccione un numero del 1 al 5”)
Loop Until n>=1 and n<=5
Call Proceso3(n)
Case Else
Rpta = MsgBox (“¿Desea Continuar Haciendo Otro Calculo?” , VbYesNo)
End Select
Loop Until Rpta = VbNo
End Sub

10. Se le pide realizar el pequeño juego de adivinar un número. Este número se guardará en una variable con
el valor que se desee. El número será entre 1 y 100 y se tendrá que hacer los siguientes subprocesos:
• LeerNúmero(): Solicita un número hasta que el usuario ingrese un valor entre 1 y 100, sino vuelve a
pedir el valor.
• ComprobarValor(numeroUsuario, numeroCorrecto): Comprueba si el número ingresado es correcto,
este devuelve un número que puede ser:
d. 0: Si los dos números son iguales.
e. 1: El numeroUsuario es mayor que el numeroCorrecto
f. -1: El numeroUsuario es menor que el numeroCorrecto

Funcion LeerNumero(Entero n) entero


Repetir
Ingresar n
Si n < 1 O n > 100 entonces Mostrar “Ingrese nuevamente el número”
Hasta (n > 0 y n <=100)
LeerNumero= n
Fin función
Funcion ComprobarValor(Entero numeroUsuario, numeroCorrecto)Entero
Si numeroUsuario = numeroCorrecto entonces
Salida = 0
SinoSi numeroUsuario > numeroCorrecto entonces
Salida = 1
Sino
Salida = -1
Fin-si
ComprobarValor = Salida
Fin Funcion

Algoritmo Principal. La solución considera que B es el número número deseado


Inicio
A = LeerNumero ()
B = -47
Respuesta = ComprobarValor(A,B)
Si Respuesta = 0 entonces
Mostrar “Acertaste con el numero! felicidades”
Sinosi Respuesta = 1 entonces
Mostrar “El número que has introducido es Mayor que el número buscado”
Sino
Mostrar “El número que has introducido es Menor que el número buscado”
Fin-Si
Fin

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 8

Ejercicios Propuestos
1. Elabore el pseudocódigo de un procedimiento que permita invertir los elementos de un vector. Al llamar
al procedimiento Invertir_Vector(A) se obtiene lo siguiente:

Vector original
A 2 5 -3 7 9 0

Vector invertido
A 0 9 7 -3 5 2

2. Elabore un pseudocódigo para crear una función que devuelva el mayor elemento de un vector.

3. Elabore un algoritmo principal tipo pseudocódigo que permita indicar cuántos y cuáles son números
Fibonacci pares dada la cantidad de números Fibonacci de la serie. Tome en consideración que el ingreso
de la cantidad de números Fibonacci deberá ingresarse a través de una función y que el proceso de
mostrar la cantidad y a los números Fibonacci pares se deberá realizar a través de una subrutina.
Ejemplo:
Cantidad de Fibonacci: 9, los números son los siguientes:
1, 1, 2, 3, 5, 8, 13, 21, 34
Cantidad de Números Fibonacci Pares: 3
Números Fibonacci Pares:
2, 8, 34
4. Elabore un procedimiento en VBA que reciba como parámetros los 3 coeficientes de una ecuación
cuadrática y calcule y muestre las soluciones (raíces reales y complejas si fuera el caso).

Sub Ecuación_Cuadrática (a As Single, b As Single, c As Single)

End Sub

A continuación, escriba el programa que use dicho procedimiento.

5. Elabore un procedimiento en VBA que ordene los elementos de un vector. El procedimiento debe recibir
como parámetros: el vector con valores numéricos reales, así como la cantidad de elementos de éste, y
un texto indicando el tipo de ordenamiento (ascendente o descendente).

Sub Ordenar_Vector( V( ) As Single, N As Integer, Tipo As String )

End Sub

A continuación escriba el programa que use dicho procedimiento.

6. Elabore una función en pseudocódigo que permita evaluar una nota final y devuelva un comentario
según la siguiente tabla:

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 9

Nota Final Comentario


<7 Deficiente
[8, 12> Bajo
[12, 15> Regular
[15, 17> Bueno
[17, 20] Excelente

7. Elabore una función en diagrama de flujo que muestre el máximo común divisor de 3 números dados.

8. Elabore un pseudocódigo que permita ingresar el nombre de un alumno a través de una función
ValidarNombre y las 5 notas del curso de algoritmos a través de una función llamada ValidarNota.
Asimismo, deberá calcular el promedio final a través de una función PromedioFinal. No se sabe cuántos
alumnos se ingresarán, pero el proceso continuará hasta que el usuario responda “No” a la pregunta
“¿Desea continuar?”.
Finalmente, deberá mostrar el promedio de notas de todos los alumnos y el porcentaje de alumnos
aprobados de la sección.

9. Elabore una subrutina en NS que permita obtener la cantidad de divisores de un número positivo menor
a 500.

10. Se desea hacer una encuesta entre los turistas que acuden a visitar las ruinas del Señor de Sipán con el
fin de mejorar su atención al conocer mejor sus preferencias gastronómicas. Si a cada uno de los turistas
se les pide como datos:
• Sexo: El cual será “M” si es de género masculino, y “F” en caso sea femenino.
• Edad: Valor en años expresado como número entero.
• Preferencia: El cual registra cualquiera de las siguientes posibilidades en cuanto a sus preferencias
gastronómicas:
(1) Peruana
(2) Oriental
(3) Internacional

Elabore un programa en VBA que permita leer todos los datos y elabore un cuadro donde se muestre el
número de turistas que respondieron por cada una de las siguientes posibilidades:

Masculino Femenino Total


Preferencia < 18 años >= 18 años < 18 años >= 18 años
(1) Peruana
(2) Oriental
(3) Internacional
Total

11. La Gerencia de Recursos Humanos de la empresa “Buenos pero no tanto, ni tan poco” se encuentra
implementando un nuevo sistema que le permitirá agilizar el proceso de selección de personal. Este
nuevo sistema consiste en la toma de un examen para medir el Coeficiente de Inteligencia (IQ) de cada
uno de los postulantes a un puesto determinado y el envío de una invitación para entrevistar a las
personas cuyo IQ se encuentre en el intervalo: [Promedio, Promedio + Desviación Estándar].
Se pide construir un programa en VBA que, mediante el botón: Entrevistar, lea el Nombre e IQ (valor
entero mayor a cero) de un grupo de no más de 20 postulantes, luego de lo cual genere la lista de los
mismos con una anotación en la columna “Mensaje” en donde se indique la palabra “Seleccionado” en
aquellos postulantes cuyo IQ esté en el intervalo mencionado y “Rechazado” para todos los demás.
Elabore al menos un sub programa y una función dentro del botón Entrevistar.

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 10

Para el desarrollo de la pregunta, tome en cuenta que:

N N
 IQi  (Promedio - IQi )2
Promedio = = 1 i Desv iaciónEstándar = i = 1
N N-1
Utilice el siguiente formato de salida como interfaz gráfica:

Selección de postulantes
Nº de postulantes
Promedio
Desviación estándar

Reporte de postulantes
N° Postulante Nombre Completo IQ Mensaje

12. El juego de bowling consiste en la colocación de diez elementos, denominados pinos, en forma triangular
de tal modo que cada siguiente fila tiene un pino más que la previa. Este conjunto queda delante, a una
determinada distancia, del jugador con la fila de un pino más cerca de él. El jugador debe lanzar una bola
–con ciertas características– hasta en dos oportunidades por jugada. Para determinar el número de
puntos ganados en cada jugada, se procederá según ocurra alguno de los casos descritos a continuación:
• Si la cantidad total de pinos derribados –en dos tiros- es inferior a diez, el número de puntos ganados
en la jugada es igual al número de pinos caídos.
• Si la cantidad de pinos derribada en el primer tiro de una jugada es inferior a diez y en el segundo
tiro se derriban los restantes, el número de puntos ganados en la jugada es diez más la cantidad de
pinos derribados en el primer tiro de la siguiente jugada.
• Si se derriban todos los pinos en el primer tiro de una jugada, el número de puntos ganados en la
jugada es diez más la cantidad de pinos derribados en los dos siguientes tiros, los cuales podrían
pertenecer a dos jugadas distintas.
• Si en la última jugada se derriban todos los pinos, se realizan los tiros extra necesarios para
determinar el número de puntos logrados en la jugada.
• En una jugada se puede derribar a lo más 10 pinos.

En el siguiente ejemplo, se puede apreciar un juego de valores que se puede obtener:

Adicional
Nº de Jugada 1 2 3 4 5 6 7 8 9 10
(solo si es necesario)
# pinos derribados en el 1º tiro 7 6 8 5 10 3 10 10 9 6 10

# pinos derribados en el 2º tiro 1 0 2 3 6 1 4

Puntos de la jugada 8 6 15 8 19 9 29 20 16 20

Puntos acumulados 8 14 29 37 56 65 94 114 130 150

En base a lo anterior, se le pide que coloque en la hoja Bowling, del archivo plantilla, dos botones de
comando: Borrar y Puntos. El botón Borrar deberá permitir quitar todos los datos, cálculos y resultados de
la tabla para poder ingresar un nuevo juego; mientras que el botón Puntos deberá realizar la solicitud de los

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 11

datos, el llenado de la tabla, la determinación de los puntos de cada jugada y su acumulado y el total de
puntos conseguidos por el jugador, de acuerdo a las reglas del juego anteriormente descritas.
Se le pide escribir la programación en VBA a cada uno de los botones de la hoja descrita.

13. Elabore una función en pseudocódigo que permita validar el ingreso de un dato tipo texto no vacío.

14. Indique qué realiza la siguiente función:

Para ello, pruebe su respuesta con los siguientes valores: 3, 4, 5, 6, 9, 11

Función ABC (Entero: Numero) Lógico


Respuesta = Verdadero
Para C = 2 hasta Numero - 1
Si Numero Mod C = 0 Entonces Respuesta = Falso
Siguiente C
ABC = Respuesta
Fin Función

15. Se tiene el siguiente programa en VBA, que evoca al procedimiento Menor. Realizar el diagrama de flujo
correspondiente.

Private Sub Ejemplo1_click()


Dim n1 As Single, n2 As Single
n1 = Val(InputBox("Ingresa el primer número"))
n2 = Val(InputBox("Ingresa el segundo número"))
Call Menor(n1, n2)
End Sub

Sub Menor(a1 As Single, a2 As Single)


Dim NumMenor As Single
NumMenor = 0
If a1 > a2 Then NumMenor = a2 Else NumMenor = a1
MsgBox "el número menor es " & NumMenor
End Sub

16. Desarrolle una función en diagrama de flujo que permita calcular la media aritmética de los n
componentes de un vector.

17. Desarrolle una función en VBA que encripte un mensaje, modificando sus caracteres a través de la
numeración de los códigos ASCII. Cada carácter debe tener 10 números ASCII deseados, pudiendo ser
+10 ó -10 valores decimales.

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 12

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 13

Los ejercicios que a continuación se proponen fueron tomados en algún examen final.

18. Enunciado 1

19. Enunciado 2

20. Enunciado 3

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 14

21. Enunciado 4

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 15

22. Enunciado 5

23. Enunciado 6

24. Enunciado 7. Elabore un diagrama NS

UPC - Facultad de Ingeniería Industrial


Algoritmos – Guía de ejercicios Unidad 4 Página 16

25. Enunciado 8. Elabore un diagrama de flujo

26. Enunciado 9. Elabore un diagrama de flujo

27. Enunciado 10. Elabore la conversión del siguiente diagrama NS a VBA. Considere que los datos del vector
V deberá mostrarlos a partir de la celda A4. Además, indique de modo preciso qué realiza el algoritmo.

UPC - Facultad de Ingeniería Industrial

S-ar putea să vă placă și