Issuu on Google+

UNIVERSIDAD NACIONAL DE COLOMBIA

Fundamentos de Programación

SEDE DE MEDELLÍN ______________________________ FACULTAD NACIONAL DE MINAS Escuela de Sistemas

PRÁCTICA # 6

  OBJETIVOS:  •

General:  Elaborar  diversas  aplicaciones  en  VBA,  con  sus  interfaces  y  programación  respectivas,  para  resolver  problemas  que  requieren  de  un  proceso  repetitivo  del  cual  no  se  conoce  de  antemano cuantas veces debe hacerse.  Específicos: Aplicar el concepto de la estructura de iteración indefinida. 

•   EJERCICIO 1:    Mostrar los términos de la siguiente serie 1, 1/2, 1/3, 1/4, … hasta que su sumatoria supere 3.     DISEÑO DE UN ALGORITMO:    El problema consiste entonces en determinar cual es la fórmula general para cada término de la serie e  irlos mostrando a medida que se suman. El proceso termina cuando su sumatoria supere 3.    En este caso que variables de entrada hay? Ninguna    INTERFAZ:    Una posible interfaz para este problema se muestra a continuación:   

Página 1 de 6   

«Fundamentos de Programación» ‐‐ Práctica #6 


Recordar poner la propiedad Multiline de la caja de texto mas grande en trae para que permita escribir  hacia abajo. También poner la propiedad Scrollbars en 2‐Scrollbars Vertical para que aparezcan las barras  de desplazamiento verticales en caso de que el texto no quepa en la caja.      PROGRAMACIÓN:     

    EJERCICIO 2:    Página 2 de 6   

 

«Fundamentos de Programación» ‐‐ Práctica #6 


Desarrollar un proyecto en VBA para simular un programa que requiera clave de acceso (por ejemplo para  un  banco).  Debe  aparecer  una  interfaz  donde  se  pida  una  contraseña  y  que  el  usuario  tenga  hasta  3  intentos para ingresar.    DISEÑO DE UN ALGORITMO:    Este problema requiere que se lea una clave y verificar si es correcta (comparada contra una inventada  por  nosotros)  si  es  correcta  se  debe  mostrar  un  mensaje  de  bienvenida  y  si  no  se  debe  informar  la  situación, y permitir volver a ingresar la clave (pero solo permitiendo 3 intentos)    INTERFAZ:    Como  este  problema  es  tan  sencillo,  tiene  una  interfaz  muy  simple  como  la  que  se  muestra  a  continuación.  

  PROGRAMACIÓN:   

 

    La clave correcta en este caso es 1234, pero se puede probar con cualquiera.    Nótese que es necesario poner un condicional al terminar el proceso iterativo para determinar si el acceso  fue correcto o no, ya que este puede terminar por una de dos razones: porque se ingrese la clave correcta,  o porque se alcance el máximo de 3 intentos (para eso sirve el contador c).  «Fundamentos de Programación» ‐‐ Práctica #6  Página 3 de 6   


En este proyecto se utilizan dos controles de VBA diferentes a los que se agregan a los formularios para el  ingreso y presentación de información: el InputBox y el Msgbox. El primero sirve para llamar un cuadro de  dialogo en el que se pide ingresar un dato (lo llamamos dentro del proceso iterativo), y el segundo para  mostrar  una  ventana  de  información  donde  además  podemos  agregar  un  icono  informativo:  vbInformation  o  vbCritical  en  este  caso.  Otro  íconos  como  cvExclamation,  vbQuestion,  etc.  También  pueden ser usados.    EJECUCIÓN    Ejecutar el proyecto y ensayar varios casos.  1. Que pasa si se ingresa la clave correcta al primer intento?  2. Que pasa si se ingresa la clave correcta al segundo intento?  3. Que pasa si se ingresa la clave correcta al tercer intento?  4. Que pasa si en 3 intentos no se ingresa la clave correcta?      EJERCICIO 3:    Desarrollar  un  proyecto  en  VBA  para  leer  un  número  entero  de  4  cifras,  descomponerlo  en  sus  dígitos,  formar un nuevo número sumando los cuadrados de sus dígitos, escribir y descomponer el nuevo número,  repetir el proceso hasta que el número encontrado sea uno o veinte.    DISEÑO DE UN ALGORITMO:    Una manera de resolver este problema se muestra en el siguiente pseudocódigo.    INICIO    Leer W  Mientras (W ≠ 1 Y W ≠ 20)      d1 = W \ 1000      d2 = (W – d1*1000) \ 100      d3 = (W – d1*1000 – d2*100) \ 10      d4 = (W – d1*1000 – d2*100 – d3*10)      W = d12 + d22 + d32 + d42      Mostrar W      Dejar renglón      Repetir  FIN    Nótese  que  a  la  hora  de  hacer  las  divisiones  se  utiliza  “\”  en  vez  de  “/”  para  denotar  que  se  trata  de  división entera y no real.  Este problema también se podría resolver utilizando la operación residuo (o módulo).     INTERFAZ:    Una posible interfaz para este problema se muestra a continuación:    Página 4 de 6   

«Fundamentos de Programación» ‐‐ Práctica #6 


PROGRAMACIÓN:    Recordar utilizar \ en vez de /   

 

 

  Página 5 de 6   

«Fundamentos de Programación» ‐‐ Práctica #6 


EJECUCIÓN:    Corre  el  proyecto  varias  veces  ensayando  con  diferentes  números.  Un  primer  ensayo  puede  ser  con  el  número 2004 pues 22 + 02 + 02 + 42 = 20.      EXTRA    Desarrollar un proyecto en VBA para escribir todos los términos de la siguiente serie:   

1 X +1

,

2 X +1

2

,

3 X +1

3

,

4 X +1

4

,...

    Hasta que el i‐esimo término sea menor que 0.0001    Así por ejemplo en caso que X valga 2 el programa debería mostrar:    1/|2+1|^1 = 0.333333  2/|2+1|^2 = 0.222222  3/|2+1|^3 = 0.111111  4/|2+1|^4 = 0.0493827  ...  10/|2+1|^10 = 0.000169351             

Página 6 de 6   

«Fundamentos de Programación» ‐‐ Práctica #6 


Practica 06