Académique Documents
Professionnel Documents
Culture Documents
INTRODUCCIN A LA COMPUTACIN
QUINTO LABORATORIO
DESARROLLO DE PROGRAMAS III
2012 - 2
TABLA DE CONTENIDO
1. ESTRUCTURAS ALGORTMICAS SELECTIVAS .............................................................................. 3
1.1. CONTROL DE SECUENCIA DE PROGRAMA ............................................................................................ 3
1.2. SENTENCIAS COMPUESTAS .................................................................................................................. 3
1.3. SENTENCIAS CONDICIONALES ............................................................................................................. 3
1.3.1. Estructura Selectiva Simple: If ... Then ...................................................................................... 3
1.3.2. Estructura Selectiva Doble: If ... Then Else .......................................................................... 5
1.3.3. Estructura Selectiva Anidada ..................................................................................................... 6
1.3.4. Sentencias de Seleccin Mltiple: Select Case .......................................................................... 8
2. EJERCICIOS ............................................................................................................................................. 10
2.1. DETERMINAR DA DE LA SEMANA ...................................................................................................... 10
2.1.1. Definicin ................................................................................................................................. 11
2.1.2. Implementacin (Codificacin) ................................................................................................ 11
2.2. SUELDOS EN UNA EMPRESA** ........................................................................................................... 12
2.2.1. Definicin ................................................................................................................................. 12
2.2.2. Implementacin (Codificacin) ................................................................................................ 13
3. EJERCICIOS PROPUESTOS: ................................................................................................................ 14
4. BIBLIOGRAFA ....................................................................................................................................... 15
5. FECHA DE ACTUALIZACIN: ............................................................................................................ 15
sentencia-x
If expresin booleana Then
sentencia (simple o compuesta)
End If
sentencia-y
Caso prctico 1:
Calcular el rea de un tringulo de lados a, b y c. El programa leer el valor de cada lado y verificar que formen
un tringulo.
Anlisis:
Datos de entrada:
a, b, c
Solicitar los datos.
Calcular el semipermetro.
Verificar con el semipermetro que los 3 lados s formen un tringulo, es decir, probar que: (sp>a) y
(sp>b) y (sp>c)
Si se cumple lo anterior: Calcular el rea usando la frmula del semipermetro.
Imprimir resultado.
Solucin:
Sub leer_lados(ByRef a As single, ByRef b As Single, ByRef c As Single)
a = Range("c1")
b = Range("c2")
c = Range("c3")
End Sub
Function semiperimetro(ByVal a As Single, ByVal b As Single, ByVal c As Single) As Single
semiperimetro = (a + b + c) / 2
End Function
Function area_triangulo(ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal sp As Single)
As Single
Modificar el programa del Caso prctico 2, para calcular el rea de un tringulo, de modo que indique al usuario
cuando los datos ingresados no forman un tringulo.
Const mensaje = los lados no forman un triangulo
sp = semiperimetro(a, b, c)
If sp > a And sp > b And sp > c Then
Sentencia compuesta
area = area_triangulo(a, b, c, sp)
imprimirarea (area)
Else
Range("c4") = mensaje
End If
Explicacin:
Evala primero expresin booleana 1. Si es False, evala expresin booleana 2 y as sucesivamente, hasta que
encuentre una condicin True. Entonces ejecuta el bloque de instrucciones del nmero correspondiente.
Si ninguna condicin es True se ejecuta el bloque de instrucciones de Else (si existiera).
Recuerde: El bloque de sentencias que est entre [ ] es opcional.
Caso prctico 3:
Escriba un programa en VBA que muestre en pantalla si un valor de voltaje que se ingresa por teclado, se
encuentra en escala ALTA, NORMAL, o est fuera del lmite superior o inferior, de acuerdo a:
Solucin:
Sub verificarEscala()
Dim volt As Single
'leer datos
volt = Range("C3")
Caso prctico 4:
Escriba un subprograma en VBA que muestre el nmero mayor de 3 nmeros ingresados en las celdas de la hoja
de Excel.
Solucin
'programa principal
Sub mayor()
Dim num1 As Single, num2 As Single, num3 As Single
Dim mayor As Single
Call leerDatos(num1, num2, num3)
mayor = calcular_mayor(num1, num2, num3)
imprimir_resultado (mayor)
End Sub
Explicacin:
Cuando se ejecuta este tipo de estructura de control, se procesa la sentencia indicada por la lista que contiene
el dato que evala la expresin; y, se termina, no evalundose otra lista (otro case).
Cada lista contiene un dato constante, o varios separados por comas, pudiendo ser cada una de ellas:
o Un valor.
o Un rango de la forma: valor1 to valor2.
o Una condicin de la forma: Is operador-de-relacin valor
El tipo de dato de la expresin puede ser: entero, carcter, cadena, lgico y real.
Cabe mencionarse que el final de un case lo define el siguiente case, pudiendo dar lugar a sentencias
compuestas.
Nota: Se debe tener cuidado de poner valores reales (de punto flotante) en la lista del case.
Por ejemplo:
Select Case Numero ' Se evala la variable Numero.
Case 1 To 5: ' Numero est entre 1 y 5.
resultado = "Se encuentra entre 1 y 5"
Case 6, 7, 8: ' Numero es uno de los tres valores.
resultado = "Se encuentra entre 6 y 8"
Case 9 to 10: ' Numero es mayor que 9
resultado = "El valor es 9 o ms grande"
Case Else: ' Resto de valores.
resultado = "El nmero es 0 o negativo"
End Select
Caso prctico 5:
Escribir un subprograma en VBA que lea un entero positivo N y determine el mes del ano que corresponda al
nmero ingresado.
Solucin:
Sub Imprimir_nombremes()
Dim num As Integer, Mensaje as string
'leer datos
num = Range("B3")
'seleccionar el nombre del mes
Select Case num
Case 1: Mensaje= "El mes es " & "Enero"
Case 2: Mensaje= "El mes es " & "Febrero"
Case 3: Mensaje= "El mes es " & "Marzo"
Case 4: Mensaje= "El mes es " & "Abril"
Case 5: Mensaje= "El mes es " & "Mayo"
Case 6: Mensaje= "El mes es " & "Junio"
Case 7: Mensaje= "El mes es " & "Julio"
Case 8: Mensaje= "El mes es " & "Agosto"
Case 9: Mensaje= "El mes es " & "Setiembre"
Case 10: Mensaje= "El mes es " & "Octubre"
Case 11: Mensaje= "El mes es " & "Noviembre"
Case 12: Mensaje= "El mes es " & "Diciembre"
End Select
Range("D3")=Mensaje
End Sub
Caso prctico 6:
Escribir un programa en VBA que lea un entero positivo N y segn termine en el dgito 0,1 3 se cambie por el
doble del nmero; si termina en 4 5 se cambie por su dcima parte y en otro caso se deje tal cual.
Solucin:
Sub conviertenumero()
Dim n As Integer, digito As Integer
'leer datos
n = Range("C3")
'validar si es positivo
If n > 0 Then
'obtener el ltimo dgito
digito = n Mod 10
'seleccion mltiple
Select Case dgito
Case 1, 0, 3:
n=n*2
Range("E3")= "nuevo valor " & n
Case 4, 5:
n = n \ 10 'division entera
Range("E3")= "nuevo valor " & n
Case 2, 6, 7, 8, 9: 'case else
End Select
Else
Range("E3")= "debe ingresar numero mayor que cero"
End If
End Sub
2. Ejercicios
2.1. Determinar da de la semana
Un mtodo para determinar qu da de la semana correspondiente a un da, mes y ao determinado es el siguiente:
1.- Tome los dos ltimos dgitos del ao y divdalo entre 4, quedndose con la parte entera como resultado.
2.- Aada el da ingresado.
3.- Luego, aada uno de los siguientes valores, de acuerdo al mes ingresado:
- Abril, julio:
0
- Enero, octubre:
1
- Mayo:
2
- Agosto:
3
- Febrero, marzo, noviembre:
4
- Junio:
5
- Septiembre, diciembre: 6
4.- Reste 1 si el mes ingresado es enero o febrero y el ao ingresado es bisiesto.
5.- De acuerdo al ao ingresado (asuma que el ao ingresado se encuentra en alguno de los rangos anteriores),
aada:
- Para los 1700 - 1799
4
- Para los 1800 - 1899
2
- Para los 1900 - 1999
0
- Para los 2000 - 2999
6
6.- Aada al resultado los ltimos dos dgitos del ao.
7.- Por ltimo, divida entre 7 y tome el resto.
El resultado ser un nmero entre 0 y 6, que corresponder a un da de la semana: 0 sbado, 1 domingo, 2 lunes, 3
martes, 4 mircoles, 5 jueves, 6 viernes.
NOTA:
Un ao es bisiesto si ocurre que:
1.- es divisible por 4 y no por 100
da
21
mes
5
ao
2007
da de la semana
lunes
10
2.1.1. Definicin
Calcular el da de la semana que corresponda a una fecha ingresada en las celdas de la hoja de Excel, los datos son
el da, mes y ao (cada uno en una celda).
Sub leer_datos(ByRef dia As Byte, ByRef mes As Byte, ByRef anho As Integer)
dia = Range("a3")
mes = Range("b3")
anho = Range("c3")
End Sub
Function calcular_coeficiente(ByVal dia As Byte, ByVal mes As Byte, ByVal anho As Integer) As
Byte
Dim resultado As Integer
resultado = (anho Mod 100) \ 4
resultado = resultado + dia
Select Case mes
Case 7, 4: resultado = resultado + 0
Case 1, 10: resultado = resultado + 1
Case 5: resultado = resultado + 2
Case 8: resultado = resultado + 3
Case 2, 3, 11: resultado = resultado + 4
Case 6: resultado = resultado + 5
Case 9, 12: resultado = resultado + 6
End Select
If (mes = 1 Or mes = 2) And (((anho Mod 4 = 0) And (anho Mod 100 <> 0)) Or (anho Mod 400 = 0)) Then
'es bisiesto si es divisible por 4 y no por 100, si es divisible por 400
resultado = resultado - 1
End If
Select Case anho
Case 1700 To 1900:
Case 1800 To 1899:
Case 1900 To 1999:
Case 2000 To 2999:
End Select
resultado = resultado + 4
resultado = resultado + 2
resultado = resultado + 0
resultado = resultado + 6
11
Se tiene la siguiente tabla de sueldos para cada uno de los cargos de la empresa MiEmpresita S.A.
Cargo
Sueldo
Soporte
1100
Anlisis
2800
Desarrollo
2400
Prctica
750
Se sabe que si el trabajador posee grado de ingeniero, su sueldo se incrementa en un 4%, grado de
Magster le corresponde un incremento de 7%, y grado de Doctor se incrementa en 11%. Se cuenta con la
siguiente informacin:
Se pide calcular el sueldo con aumento correspondiente a los tres empleados mostrados en la figura
anterior.
Para ello se pide implementar en VBA lo siguiente:
a)
Un subprograma CalculaAumento que teniendo como parmetros el grado del empleado devuelva el
porcentaje de aumento correspondiente, si es un grado no vlido el porcentaje a devolver debe ser cero.
b) Un subprograma Valido que verifique si el cargo del empleado es correcto. Los nicos cargos vlidos
son: Soporte, Anlisis, Desarrollo y Prctica.
c) Un subprograma CalcularSueldo que teniendo como parmetros el cargo y el grado, calcule y devuelva
el sueldo con aumento del empleado. Utilice los subprogramas anteriores.
d) Un subprograma principal PP que lea los datos de los empleados, calcule y muestre los sueldos con
aumentos tal como se muestra en la Hoja en Excel.
2.2.1. Definicin
Calcular el monto del sueldo con aumento correspondiente a los tres empleados.
12
13
3. Ejercicios propuestos:
1.
.Q(x1,y1)
.P (x2,y2)
2.
Un subprograma leer que permita leer el punto P, cuyas coordenadas son X, Y, y el radio del crculo, de
las celdas A1, A2 y A3, respectivamente.
Un subprograma Encuentra que permita determinar si el punto X,Y se encuentra o no se encuentra
dentro del crculo, teniendo como parmetros X ,Y y el radio del crculo.
Un subprograma principal que haciendo uso de los subprogramas anteriores, segn sea el caso haga:
Lea los datos.
Determine si el punto X, Y se encuentra dentro del crculo.
Si el punto se encuentra dentro del crculo, enve el mensaje: El punto P se encuentra dentro del
circulo de radio r. Y si el punto no se encuentra dentro del crculo enve el mensaje: El punto P no
se encuentra dentro del circulo de radio r. El mensaje se muestra en la celda D1.
Asigne este subprograma principal a un botn: Verifique punto.
3 x + 36
x 2 10
y = f ( x) =
x + 6
si x 11
si 11 < x 33
si 33 < x 64
para los dems valores de x
3.
Se tiene una diana (bull) para el juego de dardos, formada por 5 zonas delimitadas por circunferencias
concntricas de radio 2, como se observa en la figura. Cada punto Px, est conformado por (x, y).
Adems se cuenta con la siguiente informacin en una hoja en Excel, tal como se muestra a continuacin:
14
ra
d
io
P4
P1
2 4 6 8 10
P2
P3
Un subprograma CalculePuntaje que reciba como parmetro el punto dado y devuelva el puntaje obtenido
de acuerdo a la tabla anterior.
4. Bibliografa
- Marcela Genero Bocco. Excel con Visual Basic Para Aplicaciones (VBA).Noviembre 2002.
- CAIR, Osvaldo. Metodologa de la programacin. 2a edicin. Mxico: Alfaomega, 2003.
- Excel VBA Programming for Dummies. John Walkenbach Wiley Publishing, Inc. (2004).
- Sitio web de Microsoft Office Online: http://office.microsoft.com (2010)
5. Fecha de Actualizacin:
05/11/2012
15