Servicio Nacional de Aprendizaje – SENA
Programa de formación: Técnico en Sistemas Versión 1 Nivel: Técnico
Fecha: Febrero 2 de 2011 Versión 1.0
Sistema de Gestión
GUIA DE ACTIVIDADES DE PROGRAMACIÓN OREINTADA A EVENTOS
de la Calidad
Nombre del Proyecto: ADMINISTRACIÓN DEL SOPORTE TÉCNICO EN SISTEMAS A INSTITUCIONES EDUCATIVAS.
Página 1 de 8
Duración en meses: 18 meses
Fase del Proyecto: Proyecto : CONCEPTUALIZACIÓN
Actividad de Proyecto Recopilar información relacionada con el proyecto
Duración en meses de la actividad 4 meses
Actividades de Aprendizaje Guía de conocimiento. conocimiento.
Duración en horas de la actividad
Competencia: 220501046
–
Resultados de Aprendizaje: Aprendizaje: Duración en horas APLICAR 22050104604 APLICAR resultado: OFIMÁTICAS, CONTROLES Y ESTRUCTURAS 90
HERRAMIENTAS REDES SOCIALES Y COLABORATIVAS DE ACUERDO CON LE PROYECTO A DESARROLLAR.
BÁSICAS DE PROGRAMACIÓN DE UN LENGUAJE ORIENTADO A EVENTOS DE ACUERDO CON EL PROBLEMA A SOLUCIONAR.
Visual Basic - Guía del Estudiante Estudiante Cap. 2 Lenguaje Basic del Visual Basic. No ha sido un juego de palabras. VB emplea unas instrucciones casi iguales a las que emplea Quick Basic. Sin embargo ha añadido otras nuevas instrucciones, inherentes con la programación visual. Vamos a estudiar aquí las instrucciones y definiciones mas sencillas, comunes a QB y VB. Sentencias condicionales. Llamamos sentencias condicionales a aquellas que se realizan si se cumple una determinada condición. Son las sentencias por las que empieza cualquier texto de Basic, y este no va ser menos. La sentencia condicional más usada es: Si se cumple una condición Entonces Realiza estas instruccione i nstruccioness Si no se cumple Realiza estas otras instrucciones Visual Basic - Guía del Aprendiz Sena
Capítulo2
Página 1
del
Fin de la sentencia. Así de fácil es programar en Basic. Lo que ocurre es que esta herramienta habla inglés, y lo descrito anteriormente anteriormente toma la l a forma: If condición Then Instrucciones Else Otras instruccione i nstruccioness End If En este ejemplo, o se cumple una condición y ejecuta unas determinadas instrucciones, o no se cumple, y ejecuta otras instrucciones distintas. Puede ocurrir que, caso de no cumplirse la condicion primera, se abra un abanico de dos o tres posibilidades. La sentencia condicional tendría entonces la forma: If condición 1 Then Instrucciones ElseIf Condición 2 Otras instruccione i nstruccioness ElseIf Condición 3 Otro juego de instruccione i nstruccioness Else Instrucciones que debe realizar caso de no cumplir las condiciones 1, 2 y 3. End If Como decíamos anteriormente, este es el tipo de sentencia condicional mas usada. Existe otra sentencia sentencia condicional muy m uy usada: Select Case Su nombre casi nos define lo que es: Selecciona, dependiendo del caso, un determinado juego de instrucciones: Select Case variable de 1 a 4
' variable es una variable que puede tomar los valores (p.e.)
Case 1 Instrucciones a ejecutar en caso de que variable = 1 Case 2 Instrucciones a ejecutar en caso de que variable = 2 Case 3 Instrucciones a ejecutar en caso de que variable = 3 Case 4 Instrucciones a ejecutar en caso de que variable = 4 Case Else Instrucciones a ejecutar en caso de que variable sea distinta a los valores anteriores End Select Este procedimiento resulta mucho mas sencillo y rápido que las sentencias If Then Else vistas anteriormente, cuando el margen de elección es mayor que 2. Puede agrupar agrupar varios v arios valores en una misma línea. lí nea. Por ejemplo, si tiene 100 valores posibles, y el tratamiento es igual para varios v arios de ellos, puede agruparlos así: Visual Basic – Guía del aprendiz Sena
Capítulo 2
Página 2
Select Case Valor Case Is < 20 Instrucciones Case Is = 20 Instrucciones Case Is = 21, 22, 23, 24, 25, 26 Instrucciones Case Is > 26 Instrucciones End Select Cuando lo que queremos es elegir un valor, no ejecutar instrucciones como hacíamos anteriormente, disponemos de otras dos funciones: Choose y Switch. Switch. Switch toma una serie de parámetros, todos por parejas. El primer término de cada pareja es la expresión a evaluar. El segundo es el valor que tiene que devolver. En realidad Switch es una función (las funciones las veremos v eremos muy pronto) A = Switch (B=1, 5, B=2, 7, B=3, 11) Esta instrucción obtiene un v alor para A que dependerá dependerá del valor que tome B entre los v alores posibles (1, 2 ó 3) La sentencia Choose es casi igual, cambia solamente la forma. La misma intrucción anterior puede realizarse con Choose de la siguiente forma: A = Choose ( B, 5, 7, 11 ) En estas sentencias, Switch y Choose, Choose, si el valor de B no coincide coincide con ninguno de los valores que se le habían establecido (1, 2 ó 3 en nuestro caso), la sentencia devuelve el valor Nulo ( Null ). Esto puede producir algún error si no se contempla contempl a esa posibilidad. posibili dad. Las sentencias Switch y Choose no se usan mucho en programación. programaci ón. Parece que los programadores o no las conocen o se lían (y es comprensible) compr ensible) al utilizarlas. utiliz arlas. Le garantizo que puede llegar a ser un gran programador sin necesidad de utilizarlas. Use preferentemente If End If y Select Case. Case. Otra sentencia condicional: IIF Devuelve uno de entre dos valores, dependiendo dependiendo de la evaluación de una expresión. expresión. Sintaxis
Iif (Expresión, SiEsCierto, SiEsFalso)
Expresión es la expresión a evaluar. SiEsCierto SiEsFalso
Valor o expresión devuelta si Expresión es True. Valor o expresión devuelta si Expresión es False.
Observaciones IIf siempre evalúa SiEsCierto y SiEsFalso, aunque sólo vaya a devolver una de ellas. Por esta razón, deberá vigilar que no se produzcan efectos no deseados. Por ejemplo, si al evaluar SiEsFalso se produce un error de división entre cero, se generará un error aunque Expresión Visual Basic – Guía del aprendiz Sena
Capítulo 2
Página 3
dé como resultado True. Como ejemplo, en el formulario de nuestro primer programa introduzca un nuevo botón de comando. Introduzca también un TextBox. Vea que poco a poco vamos metiendo cosas aunque no las conocemos todavía. Mas tarde las conocerá. El TextBox tendrá por nombre Text1. Haga doble click sobre el botón de comando e introduzca el siguiente código : Private Sub Command2_Click() Dim MiVariable As String MiVariable = IIf(Clng(Text1.Text) > 100, "Es mayor", "Es menor") Label1 = MiVariable End Sub Al ejecutar el programa, debe introducir un valor numérico en Text1. Si ese valor numérico es menor que 100, MiVariable tomará el valor “Es menor” (No se cumple la condición expresada
en el primer parámetro Text1.Text > 1000). Si introduce una cantidad mayor, se cumple esa condición, por lo que MiVariable tomará el valor “Es mayor”. El valor que toma la variable
puede verlo en Label1. Fíjese que hemos declarado MiVariable como String, ya que va a contener un dato tipo cadena de caracteres. Con estas sentencias condicionales es posible realizar bifurcaciones del programa, cambiar las propiedades de un objeto, obtener resultados de operaciones, ....
Sentencias de bucle. Es muy común utilizar bucles a lo largo de un programa. Un bucle es una sucesión repetitiva de instrucciones, que se estarán realizando mientras se cumpla una condición o mientras no se cumpla otra condición. condición. Es tan sencillo sencillo como esto: Mientras condición Instrucciones Fin del bucle Existen dos formas de bucle: Una, que realiza un número determinado de recorridos por el bucle. Es el denominado bucle por contador. Otra, realiza el bucle hasta que se cumpla (o deje de cumplirse) una condición. Es el llamado ll amado bucle por condición. Bucle por contador Realiza el bucle tantas veces como le indiquemos i ndiquemos.. Por ejemplo, en este bucle nos va a presentar las 26 letras mayúsculas del alfabeto inglés For N=65 To 90 Label1.caption = Chr ( N ) Next N Este "programa" nos presentará en una caja (Label) los caracteres cuyo número ASCII ASCI I vaya desde el 65 (A) al 90 (Z) Comenzará presentando el correspondiente al número 65, e irá presentando sucesivamente el 66, el 67, etc., hasta llegar al 90, donde se parará. Bucles por condición Visual Basic – Guía del aprendiz Sena
Capítulo 2
Página 4
Ejecuta las instrucciones del bucle mientras se cumple una condición X=0 Do While X < 1000 X=X+1 Loop El programa toma una variable ( X ) que previamente tuvimos la curiosidad de ponerla a cero, e incrementa su valor una unidad. Analiza si el valor de X es menor que 1000, y si es cierto, vuelve a realizar el bucle. Así hasta que X ya no sea menor que 1000. Al dejar de cumplirse que X sea menor que 1000, sale del bucle. Acabamos de realizar un temporizador, tempori zador, y también de exponer las sentencias condicionales condicionales y los bucles, inicio de cualquier curso de Basic. Como final de lección, se propone propone un problema. problema. Con el primer bucle, donde donde visualizábamos los caracteres A a la Z, posiblemente no nos diese tiempo de ver cada una de las letras que iban apareciendo en la pantalla, en la etiqueta Label1, dado que cambiaría con mucha velocidad, y solamente veríamos la Z, que es donde se detuvo el programa. Podemos poner un temporizador cada vez que presente una letra, y así nos dará tiempo a verla. Con los dos bucles vistos anteriormente ya podemos hacerlo. hacerlo. Si lo que queremos es que el programa se ejecute mientras no se cumpla una determinada condición, la sentencia será: X=0 Do Until X > 1000 X=X+1 Loop Observe que la diferencia entre una y otra es la condición, While para indicar Mientras se cumpla que ... y Until para indicar Mientras no se cumpla que .... Para terminar bien el programa anterior utilizaremos la condición de While (Mientras se cumpla la condición) For N=65 To 90 Label1.caption = Chr ( N ) Label1.RefreshN X=0 Do While X < 1000 X=X+1 Loop Next N
' Refresca la etiqueta
Este es nuestro nuestro primer programa programa en BASIC. En VISUAL BASIC es idéntico, pero nos falta la interface gráfica. Para realizarla basta con abrir el VB y sobre el formulario que aparece al abrirlo, introducir una etiqueta, (Label) que llevará el nombre por defecto de Label1. Solo nos queda pensar donde introducimos el código anterior. Podemos introducir un botón de comando (Command Button) que saldrá con el nombre por defecto de Command1. Haga doble click sobre el botón. Aparecerá el procedimiento Click. Este procedimiento es el que se realiza cuando hacemos click sobre ese botón. Escriba en ese procedimiento este código. Private Sub Command1_Click() ' Esta línea sale automáticamente For N=65 To 90 Label1.caption = Chr ( N ) Label1.RefreshN ' Refresca la etiqueta Visual Basic – Guía del aprendiz Sena
Capítulo 2
Página 5
X=0 Do While X < 1000 X=X+1 Loop Next N End Sub
' Bucle de temporización (*) ' Termina el bucle de temporización ' Esta línea sale automáticamente
Hemos puesto nuestra nuestra primera piedra en Visual Basic. Este ejemplo es muy m uy sencillo. Visual Basic es tan sencillo como este ejemplo. (*) Las temporizaciones tempori zaciones no se hacen realmente realment e así. El ejemplo ejempl o anterior no deja de ser una forma sencilla de detener el programa, para que en los comienzos de su carrera como programador pueda ver el contenido de una etiqueta. Si lo hiciera de esta forma, su ordenador estaría detenido realizando una función bastante triste, contar hasta 1000 para luego continuar el programa. Y lo que es peor, peor, en un ordenador a 300 MHz. Tardaría menos tiempo tiem po que en uno a 66. Esta misma función puede hacerla con Sleep que la verá mas adelante, que es la forma limpia lim pia y elegante de hacer una una temporización
Formas de salir de un bucle Para salir de un bucle, podemos esperar a que se complete, bien porque se ha cumplido la condición (Bucles por condición) o a que se haya llegado al final de la cuenta (Bucles por contador). Pero puede ocurrir que interese salir del bucle sin haber terminado termi nado la ejecución total del mismo, por ejemplo, porque ya hemos encontrado lo que estabamos buscando, y sería una pérdida de tiempo seguir ejecutando el bucle cuando ya hemos obtenido lo que buscamos. Para ello, basta con ejecutar la sentencia Exit Do (Cuando hemos comenzado el bucle con Do Until o Do While, o con Exit For cuando lo hemos comenzado comenzado con For ... To Ejemplos En el siguiente ejemplo pretendemos parar el programa cierto tiempo, a la espera que otro equipo se conecte a través del puerto serie. (Cuando se conecte, el control MSComm1 detectará la señal DSR que le envía enví a el otro equipo y deberemos salir inmediatamente del bucle para, por ejemplo, atender a ese puerto serie) Contador = 0 Do While Whil e Contador < 1000 Contador = Contador + 1 DoEvents If MSComm1.DSRHolding MSComm 1.DSRHolding = True Then Exit Do Sleep (1000) Loop „Aquí comenzamos a atender al puerto serie
En el siguiente ejemplo, deseamos transmitir por el puerto serie una serie de números, del 1 al 1000, pero siempre y cuando que el equipo que está al otro lado de la línea serie esté a la escucha (Condición MSComm1.DSRHolding = True) Si se desconecta ese equipo, y la condición pasa de True a False, deseamos salir del bucle: For I = 1 To 1000 If MSComm1.DSRHolding = False Then Exit Do MSComm1.Output = Str(I) Next I Visual Basic – Guía del aprendiz Sena
Capítulo 2
Página 6
No se preocupe que no entienda entienda esto del MSComm. Lo entenderá entenderá perfectamente perfectament e unos capítulos mas adelante. Lo importante es que entienda la idea de salir de un bucle por la vía rápida.
Función DoEvents Si hablameos de bucles, necesariamente debemos hablar de la función DoEvents. Y es así por la misma razón que cada vez que ponemos un bucle, deberíamos poner dentro de ese bucle la palabra mágica DoEvents. Imagínese que Visual Basic está ejecutando este código: Do While Valor < 100 Valor = valor + 1 If Valor = 90 then Valor =1 Loop Observará que la variable Valor nunca podrá llegar a tener el valor 100, puesto que cada vez que llega a 90 le ponemos de nuevo el v alor 0. El programa no va a salir nunca del bucle, pero además no podrá atender a otros eventos que se produzcan en el ordenador (por ejemplo la pulsación de una tecla) ya que el microprocesador está atendiendo solamente a ese bucle. Si lo está ejecutando desde el propio entorno de Visual Basic, deberá parar la ejecución mediante las teclas Ctrl – Pausa. No podrá pararlo mediante el botón Terminar de la barra de herramientas de VB. En un programa compilado posiblemente tenga que reiniciar el equipo mediante Alt – Ctrl – Sup, Sup, llevándose por delante el resto de los programas que se estén ejecutando en ese momento en su PC. No es difícil cometer este error involuntariamente. Esto es lo que se llama un bucle infinito. Para que no suceda, o al menos, que si nuestro programa entra en un bucle infinito se pueda salir de una forma no tan agresiva, agresiva, hay que que introducir dentro dentro del del bucle la instrucción DoEvents. Cuando VB encuentra esta función el control del microprocesador al sistema operativo, y si hay alguna operación en espera (la pulsación de una tecla, por ejemplo) la ejecuta y posteriormente vuelve a ejecutar el bucle. De esta forma, podemos salvar al menos los datos de las otras aplicaciones que se están ejecutando al mismo tiempo. El bucle tomaría esta forma: Do While Valor < 100 Valor = valor + 1 If Valor = 90 then Valor =1 DoEvents Loop
Salir de un procedimiento antes de terminar su ejecución Y ya que explicamos como se sale de un bucle por la vía rápida, v eamos como salir de un usando también esa “v ía rápida”. procedimiento usando Para salir salir de un procedimiento procedimi ento basta con ejecutar la sentencia Exit Sub. En el ejemplo siguiente, usamos el botón BotonLeerNombre para introducir el dato Nombre en una base de datos. Pero ese campo puede tener como máximo, 20 caracteres. Si el usuario ha introducido mas de 20 caracteres, debemos salir del procedimiento donde se introduce ese dato sin ejecutarlo de forma íntegra: Visual Basic – Guía del aprendiz Sena
Capítulo 2
Página 7
Private Sub BotonLeerNonbre_Click() BotonLeerNonbre_Click() Mivariable = Text1.Text If Len(Mivariable) Len(Miv ariable) > 20 Then MsgBox "El Campo Nombre debe tener como máximo máx imo 20 caracteres" Text1.Text = "" „Con esta instrucción saldrí amos de este procedimiento Exit Sub Else 'Aqui vendrían las lineas de instrucciones donde trataríamos 'el contenido de Text1, si tuviese menos de 20 caracteres End If End Sub
NOTA. Los ejemplos anteriores sirven solamente de ilustración para explicar el código que estamos estudiando. No pretenda ver una forma mejor de realizar la misma función, que seguro que existe.
Visual Basic – Guía del aprendiz Sena
Capítulo 2
Página 8