Sie sind auf Seite 1von 17

1

Maestría en Finanzas

Curso: Informática & Finanzas

Docente: Alexandra Málaga

Sesión N° 3: Programación estructurada

2019
2

Programación Estructurada

• Condicional If | ElseIf | Else | End If

• Bucle cerrado For | To | Step | Next


Foreach | In| Next

• Bucle abierto While | Wend | exitloop


Do | Loop | While | Until| Exit Do
PROGRAMACIÓN ESTRUCTURADA
4

Condicional: IF
Condiciona la ejecución de comandos
If condición Then
comandos Si condición es verdadera, ejecuta comandos
ElseIf condición2 Then
comandos2 Si condición es F y condición2 es V, ejecuta comandos2
Else
comandos3 Si condición y condición2 son falsas, ejecuta comandos 3
End If con espacio entre End e If

• Las partes ElseIf y Else son opcionales


• Se puede colocar más de un ElseIf y máximo un Else
5

Ejemplo 1: Condiciones
En diferentes subrutinas para cada método, pida al usuario que ingrese un
precio y calcule el precio final según los siguientes métodos de descuento:
A. Si el precio es mayor a 1000, pida al usuario que ingrese un valor de
descuento. El precio final es igual al precio menos el valor descontado.
B. Si el precio es mayor a 1000, asigne un descuento de 10%, de lo contrario
asigne un descuento de 5%.
C. Si el precio es mayor a 1000, asigne un descuento de 10%; de lo contrario
asigne un descuento de 5% solo si el precio es mayor a 500.
Guarde el porcentaje de descuento, el valor descontado y el precio final para
cada método. Cada subrutina debe limpiar las celdas que modifica.
6

Ejemplo 2: Calculadora
• Pida al usuario que ingrese dos valores y una operación entre:
+-x/
• Si el usuario ingresa una operación diferente a las operaciones
mencionadas, muestre el mensaje: “Operación no válida”
• Si el usuario ingresa la operación división y el segundo valor es
0, muestre el mensaje: “No se puede dividir entre 0” y la
respuesta a la operación será “Error”
• Asigne la macro a un botón
7

Bucle cerrado
Repite la ejecución de comandos un número conocido de veces
TIPO 1: Bucle cerrado sobre números
For nvar=#inicial To #final Step #step Step es opcional, por defecto #step=1
comandos en f(nvar) nvar es una variable
Next en cada repetición nvar es otro número
TIPO 2: Bucle cerrado sobre objetos de una colección
For Each nvobj In colección Ej. colección: Workbooks, Worsheets, Range
comandos en f(nvobj) nvobj es una variable objeto
Next cada repetición nvobj es otro objeto de colección
8

Ejemplo 3: Llenar matrices


En la hoja “Ejercicio1”, de forma relativa a una celda, complete lo
siguiente:
• Matriz identidad en función de la celda “Base1”
• Matriz llena de unos (sin usar bucles) en función de la celda
“Base2”
• Matriz triangular inferior llena de números aleatorios entre 0 y
1000 en función de la celda “Base3”
• Traza de cada matriz en función de la celda “Traza”
9

Ejemplo 4: Colección de objetos


A. Subrutina que guarde el nombre de los libros abiertos
– Abra varios libros antes de ejecutar la subrutina
B. Subrutina que liste el valor en A7 de cada hoja del libro activo
C. Realice una subrutina que:
– Guarde el rango G11:J17 en la variable objeto llamada ranguito
– Guarde el promedio de los valores en ranguito en la variable m
– En la celda D14, guarde el promedio del cuadrado de la diferencia entre el valor
de cada celda y la variable m
𝑛
1
෍ 𝑣𝑖 − 𝑚 2
𝑛
𝑖=1
Donde 𝑣𝑖 es el valor en una de las celdas de ranguito y 𝑛 es el número de celdas
10

Bucle abierto
Repite la ejecución de comandos un número desconocido de veces

mientras condición sea V hasta que condición sea V


(hasta que condición sea F) (mientras condición sea F)
Puede ejecutar While condición Do While condición Do Until condición
comandos cero comandos comandos comandos
veces Wend Loop Loop
Ejecuta Do Do
comandos al comandos comandos
menos una vez Loop While condición Loop Until condición

• Exit Do detiene repeticiones en estructura Do / Loop


11

Ejemplo 5: Movimiento de celdas


Genere números aleatorios de una distribución uniforme de 0 a 1
hasta que la suma acumulada de los números aleatorios generados
supere un número ingresado por el usuario. Guarde la suma
acumulada para cada número aleatorio generado y el número
aleatorio con el cual se excedió el número ingresado por el usuario.
Resuelva el ejercicio tres veces, cada vez con un método distinto para
cambiar de celdas:
1. Cells
2. Celda de referencia fija + contador + offset
3. Celda de referencia móvil
EJERCICIOS
13

Ejercicio 1: Ingresar registros


Programe las subrutinas asociadas a los botones “Ingrese registro” y
“Borrar registros”. Cuando el usuario acciona el botón, la subrutina
realiza lo siguiente:
– Pregunta los siguientes datos: apellidos, nombres, edad y fecha de Ingreso
– Guarda la información en la tabla. Si la tabla ya contiene registros, agrega
la información debajo del último registro.
– Pregunta al usuario si desea ingresar otro registro. Repite los procesos
previos hasta que el usuario indique que ya no desea ingresar otro
registro.
Resuelva el ejercicio cinco veces, cada vez con un modo distinto de
bucle abierto.
14

Ejercicio 2: Compilando Estados Financieros


Diseñe una subrutina que complete el cuadro a partir de la información en
EEFF_01_04.xls (Estados Financieros 2001-2004).
15

Ejercicio 3: Buscando Información I


Diseñe una subrutina que complete la información requerida en el cuadro a partir la
información requerida en “Indicadores.xls”
– El año y mes requerido no necesariamente son enero del 2004. Todo mes tiene 4 valores
– Para cualquier conversión de moneda, use el tipo de cambio contable del día
– La subrutina debe poder ser ejecutada indefinidas veces sin necesidad de borrar el cuadro
16

Ejercicio 4: Buscando Información II


Diseñe una subrutina que complete la información requerida en el cuadro a partir de la
información en “DataSeg.xls”
– El tipo de indicador y mes requerido no necesariamente son solvencia y enero
– La subrutina debe considerar que el número de indicadores por tipo es variable
– La subrutina debe poder ser ejecutada indefinidas veces sin necesidad de borrar el cuadro
17

Ejercicio 5: Ordenando Datos


Diseñe una subrutina que complete el número de afiliados por departamento para
cada mes en el cuadro a partir de la información en “AFPs.xls”
– La subrutina debe poder ser ejecutada indefinidas veces sin necesidad de borrar el cuadro
– Considere que la presentación de la información en “AFPs.xls” no es homogénea entre meses

Das könnte Ihnen auch gefallen