lunes, 29 de septiembre de 2014

DISEÑO Y REALIZACIÓN DE SERVICIOS DE PRESENTACIÓN EN ENTORNOS GRÁFICOS UT2

INTRODUCCIÓN

Visual Basic 6.0 es uno de los lenguajes de programación que más entusiasmo despiertan entre los programadores de PCs, tanto expertos como novatos. En el caso de los programadores expertos por la facilidad con la que desarrollan aplicaciones complejas en poquísimo tiempo (comparado con lo que cuesta programar en Visual C++, por ejemplo). En el caso de los programadores novatos por el hecho de ver de lo que son capaces a los pocos minutos de empezar su aprendizaje. El precio que hay que pagar por utilizar Visual Basic 6.0 es una menor velocidad o eficiencia en las aplicaciones.

Visual Basic 6.0 es un lenguaje de programación visual, también llamado lenguaje de 4ª generación. Esto quiere decir que un gran número de tareas se realizan sin escribir código, simplemente con operaciones gráficas realizadas con el ratón sobre la pantalla.

Visual Basic 6.0 es también un programa basado en objetos, aunque no orientado a objetos como C++ o Java. La diferencia está en que Visual Basic 6.0 utiliza objetos con propiedades y métodos, pero carece de los mecanismos de herencia y polimorfismo propios de los verdaderos lenguajes orientados a objetos como Java y C++.

En este primer capítulo se presentarán las características generales de Visual Basic 6.0, junto con algunos ejemplos sencillos que den idea de la potencia del lenguaje y del modo en que se utiliza.

 PROGRAMAS SECUENCIALES, INTERACTIVOS Y ORIENTADOS A EVENTOS

Existen distintos tipos de programas. En los primeros tiempos de los ordenadores los programas eran de tipo secuencial (también llamados tipo batch) Un programa secuencial es un programa que se arranca, lee los datos que necesita, realiza los cálculos e imprime o guarda en el disco los resultados. De ordinario, mientras un programa secuencial está ejecutándose no necesita ninguna intervención del usuario. A este tipo de programas se les llama también programas basados u orientados a procedimientos o a algoritmos (procedural languages). Este tipo de programas siguen utilizándose ampliamente en la actualidad, pero la difusión de los PCs ha puesto de actualidad otros tipos de programación.
Los programas interactivos exigen la intervención del usuario en tiempo de ejecución, bien para suministrar datos, bien para indicar al programa lo que debe hacer por medio de menús. Los programas interactivos limitan y orientan la acción del usuario. Un ejemplo de programa interactivo podría ser Matlab.

Por su parte los programas orientados a eventos son los programas típicos de Windows, tales como Netscape, Word, Excel y PowerPoint. Cuando uno de estos programas ha arrancado, lo único que hace es quedarse a la espera de las acciones del usuario, que en este caso son llamadas eventos.

El usuario dice si quiere abrir y modificar un fichero existente, o bien comenzar a crear un fichero desde el principio. Estos programas pasan la mayor parte de su tiempo esperando las acciones del usuario (eventos) y respondiendo a ellas. Las acciones que el usuario puede realizar en un momento determinado son variadísimas, y exigen un tipo especial de programación: la programación orientada a eventos. Este tipo de programación es sensiblemente más complicada que la secuencial y la interactiva, pero Visual Basic 6.0 la hace especialmente sencilla y agradable.

PROGRAMAS PARA EL ENTORNO WINDOWS

Visual Basic 6.0 está orientado a la realización de programas para Windows, pudiendo incorporar todos los elementos de este entorno informático: ventanas, botones, cajas de diálogo y de texto, botones de opción y de selección, barras de desplazamiento, gráficos, menús, etc.

Prácticamente todos los elementos de interacción con el usuario de los que dispone  Windows 95/98/NT/XP/7  pueden ser programados en Visual Basic 6.0 de un modo muy sencillo. En ocasiones bastan unas pocas operaciones con el ratón y la introducción a través del teclado de algunas sentencias para disponer de aplicaciones con todas las características de Windows 95/98/NT/XP/7. En los siguientes apartados se introducirán algunos conceptos de este tipo de programación.

Modo de Diseño y Modo de Ejecución

La aplicación Visual Basic de Microsoft puede trabajar de dos modos distintos: en modo de diseño y en modo de ejecución. En modo de diseño el usuario construye nteractivamente la aplicación, colocando controles en el formulario, definiendo sus propiedades, y desarrollando funciones para gestionar los eventos.

La aplicación se prueba en modo de ejecución. En ese caso el usuario actúa sobre el programa (introduce eventos) y prueba cómo responde el programa. Hay algunas propiedades de los controles que deben establecerse en modo de diseño, pero muchas otras pueden cambiarse en tiempo de ejecución desde el programa escrito en Visual Basic 6.0, en la forma en que más adelante se verá. También hay propiedades que sólo pueden establecerse en modo de ejecución y que no son visibles en modo de diseño.
Todos estos conceptos –controles, propiedades, eventos, etc.- se explican en los apartados siguientes.

Formularios y Controles

Cada uno de los elementos gráficos que pueden formar parte de una aplicación típica de Windows 95/98/NT/XP/7  es un tipo de control: los botones, las cajas de diálogo y de texto, las cajas de selección desplegables, los botones de opción y de selección, las barras de desplazamiento horizontales y verticales, los gráficos, los menús, y muchos otros tipos de elementos son controles para Visual Basic 6.0. Cada control debe tener un nombre a través del cual se puede hacer referencia a él en el programa. Visual Basic 6.0 proporciona nombres por defecto que el usuario puede modificar.

En la terminología de Visual Basic 6.0 se llama formulario (form) a una ventana. Un formulario puede ser considerado como una especie de contenedor para los controles. Una aplicación puede tener varios formularios, pero un único formulario puede ser suficiente para las aplicaciones más sencillas. Los formularios deben también tener un nombre, que puede crearse siguiendo las mismas reglas que para los controles.

Objetos y Propiedades

Los formularios y los distintos tipos de controles son entidades genéricas de las que puede haber varios ejemplares concretos en cada programa. En programación orientada a objetos (más bien basada en objetos, habría que decir) se llama clase a estas entidades genéricas, mientras que se llama objeto a cada ejemplar de una clase determinada. Por ejemplo, en un programa puede haber varios botones, cada uno de los cuales es un objeto del tipo de control command button, que sería la clase.

Cada formulario y cada tipo de control tienen un conjunto de propiedades que definen su aspecto gráfico (tamaño, color, posición en la ventana, tipo y tamaño de letra, etc.) y su forma de responder a las acciones del usuario (si está activo o no, por ejemplo). Cada propiedad tiene un nombre que viene ya definido por el lenguaje.

Por lo general, las propiedades de un objeto son datos que tienen valores lógicos (True, False) o numéricos concretos, propios de ese objeto y distintos de las de otros objetos de su clase. Así pues, cada clase, tipo de objeto o control tiene su conjunto de propiedades, y cada objeto o control concreto tiene unos valores determinados para las propiedades de su clase.
Casi todas las propiedades de los objetos pueden establecerse en tiempo de diseño y también -casi siempre- en tiempo de ejecución. En este segundo caso se accede a sus valores por medio de las sentencias del programa, en forma análoga a como se accede a cualquier variable en un lenguaje de programación. Para ciertas propiedades ésta es la única forma de acceder a ellas. Por supuesto  Visual Basic 6.0 permite crear distintos tipos de variables, como más adelante se verá.

Se puede acceder a una propiedad de un objeto por medio del nombre del objeto a que pertenece, seguido de un punto y el nombre de la propiedad, como por ejemplo optColor.objName.

En el siguiente apartado se estudiarán las reglas para dar nombres a los objetos.

Nombres de objetos

En principio cada objeto de Visual Basic 6.0 debe tener un nombre, por medio del cual se hace referencia a dicho objeto. El nombre puede ser el que el usuario desee, e incluso Visual Basic 6.0 proporciona nombres por defecto para los diversos controles. Estos nombres por defecto hacen referencia al tipo de control y van seguidos de un número que se incrementa a medida que se van introduciendo más controles de ese tipo en el formulario (por ejemplo VScroll1, para una barra de desplazamiento -scroll bar- vertical, HScroll1, para una barra horizontal, etc.).

Los nombres por defecto no son adecuados porque hacen referencia al tipo de control, pero no al uso que de dicho control está haciendo el programador. Por ejemplo, si se utiliza una barra de desplazamiento para introducir una temperatura, conviene que su nombre haga referencia a la palabra temperatura, y así cuando haya que utilizar ese nombre se sabrá exactamente a qué control corresponde. Un nombre adecuado sería por ejemplo hsbTemp, donde las tres primeras letras indican que se trata de una horizontal scroll bar, y las restantes (empezando por una mayúscula) que servirá para definir una temperatura.
Existe una convención ampliamente aceptada que es la siguiente: se utilizan siempre tres letras minúsculas que indican el tipo de control, seguidas por otras letras (la primera mayúscula, a modo de separación) libremente escogidas por el usuario, que tienen que hacer referencia al uso que se va a dar a ese control.

Abreviatura Control Abreviatura Control





Eventos

Ya se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son eventos típicos el clicar sobre un botón, el hacer doble clic sobre el nombre de un fichero para abrirlo, el arrastrar un icono, el pulsar una tecla o combinación de teclas, el elegir una opción de un menú, el escribir en una caja de texto, o simplemente mover el ratón. Más adelante se verán los distintos tipos de eventos reconocidos por Windows 95/98/NT/XP y 7 y por Visual Basic 6.0.

Cada vez que se produce un evento sobre un determinado tipo de control, Visual Basic 6.0 arranca una determinada función o procedimiento que realiza la acción programada por el usuario para ese evento concreto. Estos procedimientos se llaman con un nombre que se forma a partir del nombre del objeto y el nombre del evento, separados por el carácter (_), como por ejemplo txtBox_click, que es el nombre del procedimiento que se ocupará de responder al evento click en el objeto txtBox.

Métodos

Los métodos son funciones que también son llamadas desde programa, pero a diferencia de los procedimientos no son programadas por el usuario, sino que vienen ya pre-programadas con el lenguaje. Los métodos realizan tareas típicas, previsibles y comunes para todas las aplicaciones. De ahí que vengan con el lenguaje y que se libere al usuario de la tarea de programarlos. Cada tipo de objeto o de control tiene sus propios métodos.

Por ejemplo, los controles gráficos tienen un método llamado Line que se encarga de dibujar líneas rectas. De la misma forma existe un método llamado Circle que dibuja circunferencias y arcos de circunferencia Es obvio que el dibujar líneas rectas o circunferencias es una tarea común para todos los programadores y que Visual Basic 6.0 da ya resuelta.

Proyectos y ficheros

Cada aplicación que se empieza a desarrollar en Visual Basic 6.0 es un nuevo proyecto. Un proyecto comprende otras componentes más sencillas, como por ejemplo los formularios (que son las ventanas de la interface de usuario de la nueva aplicación) y los módulos (que son conjuntos de funciones y procedimientos sin interface gráfica de usuario).
¿Cómo se guarda un proyecto en el disco? Un proyecto se compone siempre de varios ficheros (al menos de dos) y hay que preocuparse de guardar cada uno de ellos en el directorio adecuado y con el nombre adecuado. Existe siempre un fichero con extensión *.vbp (Visual Basic Project) que se crea con el comando File/Save Project As. El fichero del proyecto contiene toda la información de conjunto. Además hay que crear un fichero por cada formulario y por cada módulo que tenga el proyecto. Los ficheros de los formularios se crean con File/Save Filename As teniendo como extensión *.frm. Los ficheros de código o módulos se guardan también con el comando File/Save Filename As y tienen como extensión *.bas si se trata de un módulo estándar o *.cls si se trata de un módulo de clase (class module).



Clicando en el botón Save en la barra de herramientas se actualizan todos los ficheros del proyecto. Si no se habían guardado todavía en el disco, Visual Basic 6.0 abre cajas de diálogo Save As por cada uno de los ficheros que hay que guardar.




VARIABLES CON VISUAL BASIC
Si has estudiado pseudocódigo y tipos de variables con pseudocódigo previamente los conocimientos adquiridos serán válidos y útiles con Visual Basic, pero con matices. Vamos a tratar los aspectos más básicos de la declaración de variables con Visual Basic y a dar algunas orientaciones a través de las que profundizar en el manejo de variables.



NOMBRES Y TIPOS DE VARIABLES. DECLARACIÓN. Option Explicit.

Para establecer nombres de variables puedes ver las indicaciones que se dan en el curso “Bases de la programación Nivel I” de aprenderaprogramarcom, apartado “Nombres de variables”. Visual Basic permite no declarar una variable antes de ser usada. Por tanto, en cualquier punto de un programa podríamos escribir algo similar a “Mostrar velocidad01”, sin necesidad de haber declarado la variable velocidad01. ¿Qué nos mostrará si no hemos asignado contenido a la variable velocidad01? Visual Basic es de los lenguajes que asignan automáticamente contenido cero, vacío o falso a una variable, dependiendo de qué tipo sea. Por tanto, se nos mostraría cero, “ ”, o falso. Conocido que no es estrictamente obligatorio, nosotros vamos a trabajar con Visual Basic realizando declaración de variables siempre. Los motivos para ello ya han sido expuestos, pero podemos resumirlos en:

· Generar buenos programas.
· Evitar errores y confusiones.

El propio Visual Basic dispone de una instrucción que obliga a tener que declarar todas las variables, denominada Option Explicit. La obligación de declaración de variables puede establecerse de dos maneras.
a) En la ventana de código escribir Option Explicit (en las versiones más modernas debe escribirse Option Explicit On).
b) En el menú Herramientas, selecciona Opciones... y en la pestaña Editor (en otras versiones Herramientas, Opciones, Proyectos y Soluciones, Valores predeterminados de VB) establece (o comprueba que está establecida) la opción Requerir declaración de variables como activa ó Option Explicit On.

Ten en cuenta que la opción a) es manual, y tendríamos que escribir Option Explicit cada vez que fuéramos a programar, mientras que la opción b) es automática y va a hacer que cada vez que arranquemos Visual Basic nos obligue a declarar variables sin tener que estar escribiendo código. Por tanto, activa la opción automática (o comprueba que esté activada) y así evitaremos olvidos. No vamos a volver a incidir en esto, pero siempre vamos a considerar que trabajamos con Option Explicit activado. ¿Qué ocurrirá si utilizamos en el código una variable que no ha sido declarada? En este caso Visual Basic impedirá la ejecución del programa mostrando el mensaje de error: “Error de compilación. Variable no definida / no declarada” así como la línea de programa donde ha aparecido la variable no declarada. Siempre que exista al menos una variable no declarada ocurrirá esto, lo cual nos obliga a declarar todas y cada una de las variables.
En cuanto a los tipos de variables, Visual Basic las clasifica en función del tipo de dato que contienen. Veamos las más usuales.
TIPO DE DATOS
ABREVIATURA
MEMORIA REQUERIDA
RANGO DE VALORES
EQUIVALENCIA CON USADAS EN PSEUDOCÓDIGO
OBSERVACIONES
Integer
(Entero)
%
2 bytes ó 4 bytes según versión
- 32768  a 32767 ó -2.147.483.648 a 2.147.483.647 según versión
Entero
Uso en contadores, control de bucles etc.
Long
(Entero largo)
&
4 bytes ó 8 bytes según versión
- 2147483648   a 2147483647 ó -9,2E+18 a 9,2E+18 según versión
Entero
Igual que integer pero admite un rango más amplio
Single
(Decimal simple)
!
4 bytes
- 3,4·1038
a
3,4·1038
Real
Hasta 6 decimales o más según versión. También admite enteros
Double
(Decimal doble)
#
8 bytes
- 1,79·10308
a
1,79·10308
Real
Hasta 14 decimales o más según versión. También admite enteros
Boolean
(Booleano)
No tiene
2 bytes
True
o
False
Booleano
False es el valor predeterminado y va asociado a cero
String
$
10 bytes + 1 byte por cada carácter
0
a
2·109 caracteres
Alfanumérica
Texto de longitud variable
Variant (Object en otras versiones)
No tiene
Variable
Los del tipo double para números o los del tipo string para texto
No tiene
Admite números enteros, decimales o texto



Conociendo ya el significado de Option Explicit, los tipos de variables y cómo nombrarlas, veamos ahora cómo declararlas. Hay distintas formas y sitios para declarar variables con Visual Basic. Veremos ahora una forma básica que nos permita empezar a trabajar y, de paso, crear nuestro primer programa.
Usaremos para ello la instrucción Dim. Su sintaxis será:
Dim [Nombre de variable] As [Tipo de variable]


El lugar donde realizaremos la declaración de variables será la cabecera del código asociado al formulario. Así pues, crea un nuevo proyecto (Menú archivo --> Nuevo Proyecto --> Exe estándar ó Menú Archivo --> Nuevo proyecto --> Aplicación de Windows Forms). Vete a la ventana de código (Ver ---> Código) donde quizás te aparezca una línea que ponga Option Explicit ó Public Class Form1 End Class. Escribe una nueva línea de código (debajo de Option Explicit o debajo de Public Class Form1) con este contenido:
Dim Numerodeplantas As Integer


Has declarado la variable Numerodeplantas como tipo entero. También puedes usar la abreviatura correspondiente al tipo Integer de esta forma:
Dim Numerodeplantas%


Usar el símbolo % unido al nombre de la variable declarada equivale a escribir “As Integer”, lo cual nos supone ahorrar unas cuantas pulsaciones de teclas.
En algunas versiones se permite declarar una variable para la que no se especifica tipo de forma extendida o abreviada. Si esto se hiciera y fuera permitido, la variable es automáticamente asignada por Visual Basic al tipo Variant. Así si escribimos:
Dim Numerodeplantas

Hay dos opciones: bien obtenemos un error de compilación (si la versión de Visual Basic que estemos usando no admite esta declaración), bien la variable Numerodeplantas es considerada por Visual Basic como tipo Variant. Todavía no está definido si es de tipo numérico (números) o alfanumérico (texto). En este caso la definición se producirá a posteriori cuando asignemos contenido a la variable. Otra forma de declarar la variable como tipo genérico (Variant u Object, según la versión) es usar la expresión:
Dim Numerodeplantas As Variant (ó Dim Numerodeplantas As Object)


Esta expresión no tiene abreviatura. Siempre será preferible especificar “As Variant” o “As Object” antes que declarar la variable sin especificación alguna. ¿Por qué? Simplemente porque al especificar As Variant ó As Object dejamos constancia de que nosotros, como programadores, hemos decidido crear esa variable como tipo Variant u Object. Si no se especifica puede dar la impresión de que se nos ha olvidado indicar el tipo de variable.
Las variables Variant u Object son un “caso especial”. Las podríamos calificar de potentes y peligrosas. Potentes porque a diferencia de otro tipo de variables, pueden contener distinto tipo de información como texto, números enteros o decimales, etc. y con pocas limitaciones. Peligrosas porque es fácil incurrir en un mal uso de ellas dando lugar a programas difíciles de leer o depurar y más ineficientes.
Supón que declaras: Dim edad As Variant ó Dim edad As Object, como variable destinada a contener la edad de una persona. Sabemos que la edad de una persona puede oscilar entre cero y 150 años (siendo groseros), y que sus valores no son decimales. Por tanto puede declararse como tipo Integer sin ningún problema. ¿Qué supone el declararla sin especificación de tipo (tipo Variant)?
a) Vamos a ocupar mayor cantidad de memoria al sistema cuando podríamos haber ocupado una menor cantidad. Es una falta de eficiencia y economía.
b) A la hora de liberar de errores al programa (depurarlo) no sabremos a ciencia cierta qué tipo de datos contiene la variable edad, ya que puede contener tanto el valor numérico 56 como el valor alfanumérico “cincuenta y seis”. Hacemos al programa más difícil de entender.

A la hora de declarar variables conviene seguir las pautas indicadas en el curso "Bases de la programación nivel I" de aprenderaprogramar.com y, resumidamente:
· Elegir siempre el tipo de variable más sencillo posible. Consideraremos que el grado de sencillez viene definido por la memoria requerida (a menor memoria requerida mayor es la sencillez). Esto redunda en un menor consumo de recursos del sistema y en una mayor rapidez de las operaciones que realiza el ordenador.
· Realizar declaraciones ordenadas y claras.
· Evitar el uso del tipo Variant u Object en la medida de lo posible, es decir, sólo usar estos tipos cuando realmente sean necesarios.


Hasta ahora estamos viendo las bases que nos van a permitir construir programas. A medida que vayamos avanzando, empezaremos a construir pequeños programas para aprender practicando.


DECLARACIÓN DE VARIABLES EN VISUAL BASIC
A la hora de declarar variables conviene seguir las pautas indicadas en el curso “Bases de la programación nivel I” de aprenderaprogramar.com y, resumidamente:
· Elegir siempre el tipo de variable más sencillo posible. Consideraremos que el grado de sencillez viene definido por la memoria requerida (a menor memoria requerida mayor es la sencillez). Esto redunda en un menor consumo de recursos del sistema y en una mayor rapidez de las operaciones que realiza el ordenador.
  
· Realizar declaraciones ordenadas y claras.

· Evitar el uso del tipo Variant u Object en la medida de lo posible.

Visual Basic permite declarar variables en múltiples líneas una por línea pero también varias variables en una línea. Veamos ejemplos:

Expresión abreviada
Equivalente
a)  Dim i%, j%, k%
a´)   Dim i As Integer, j As Integer, k As Integer
b)   Dim i% : Dim j% : Dim k%
b´)   Dim i As Integer : Dim j As Integer : Dim k As Integer
c)   Dim i%, j%, k As Integer
c´)   Dim i As Integer, j As Integer, k As Integer
d) Dim i%
    Dim j%
    Dim k%
d´)   Dim i As Integer
        Dim j As Integer
        Dim k As Integer
e) Dim i As Integer
    Dim j%, k%
e´)   Dim i As Integer
        Dim j As Integer, k As Integer

Las opciones a), b), c), d), e) dan lugar a un mismo resultado. Se declaran tres variables tipo Integer denominadas i, j, k. Las opciones a´- e´), escritas de forma extendida, también son válidas y con el mismo resultado. Nosotros nos decantamos por usar opciones como la c), donde en una misma línea aparezcan variables de un tipo de forma abreviada, excepto la última que se pone extendida de forma aclaratoria, y en las que las variables de una misma línea tienen algún tipo de relación. Por ejemplo tratarse de contadores para bucles.
Ten en cuenta que la declaración Dim i, j, k As Integer no declara tres variables de tipo entero de forma correcta. Esta sintaxis es imprecisa y por tanto no debemos utilizarla. Según la versión de Visual Basic que estemos usando esto puede generar errores o problemas. Conviene tener cuidado a la hora de realizar declaraciones de variables para evitar prácticas de este tipo.
Una expresión como Dim i!, j%, k& equivale a Dim i As Single, j As Integer, k As Long. Esta expresión es válida, aunque como hemos dicho preferimos no declarar distintos tipos de variables en una misma línea.


EJERCICIO

Realizar una declaración de variables para las siguientes propuestas de programas.

a)  Un programa que muestra un mensaje de bienvenida.

b)  Un programa que nos pide nuestra edad y nos muestra el año en que nacimos.

c)  Un programa que nos muestra el valor medio de tres magnitudes.

d) Un programa que trabaja con: tres contadores para bucles, tres valores de tensión en una viga (de magnitud no conocida), valores de longitud de la viga, canto y ancho y un valor interruptor que permite o impide que se muestren resultados.


SOLUCIÓN
a)   Dim mensaje As String. También es válida la expresión abreviada Dim mensaje$.

b)   Dim edad As Integer. También podemos usar la expresión abreviada Dim edad%.

Se podría definir otra variable llamada añonacimiento según el programador lo estime oportuno o no.

c)   Dim magnitud1!, magnitud2!, magnitud3 As Single
      Dim media As Single


Hemos utilizado el tipo Single para cubrirnos las espaldas. No sabemos con qué tipo de valores vamos a trabajar y por ello cogemos un tipo de variables bastante amplio como es el Single. Preferimos no coger Double si no es estrictamente necesario.
Hemos utilizado dos líneas pero sólo un tipo de variable ¿Por qué? El programador ordena la declaración de variables como estime más conveniente. En este caso ordenamos “valores para el cálculo” en una línea y “resultados” en otra. Resulta más fácil de leer y analizar que estando todo en una sola línea.

d)   Dim i%, j%, k As Integer
      Dim tension1!, tension2!, tension3 As Single
      Dim largo!, canto!, ancho As Single
      Dim Muestraresultados As Boolean.

Siempre será preferible usar las expresiones tension1, tension2 y tension3 antes que t1, t2 y t3 que resultan más confusas. Sin embargo, este tipo de decisiones siempre quedan a criterio del programador.





CONTENIDO Y ASIGNACIÓN DE CONTENIDO A VARIABLES
Las normas para asignar contenido a variables serán las indicadas en el curso “Bases de la programación nivel I” de aprenderaprogramar.com, teniendo en cuenta que de forma general usaremos estas equivalencias.
Nota: las variables "todo en uno" se denominan Variant en algunas versiones mientras que en otras el tipo Variant no existe y su equivalente sería el tipo Object.

Ejemplos de asignación de contenidos son estos:

Declaración
Ejemplo asignación contenidos

Dim A As Integer

A = 123

Dim A As Single

A = - 3323.57

Dim A As String

A = “Hay que mejorar”

Dim A As String

A = “123 coches”

Dim A As String

A = “Son 35,37 euros”

Dim Salario As Integer

A = 30500

Dim Salario As Single

A = 30500

Dim Salario As String

A = “Se asignarán 30500 euros”
Dim A%, B%, Suma%
A = 5 + 2
B = 32
Suma = A + B     [Suma valdrá 39]
Dim A%, B%, C%, D%, E%
A = 5
B = 32
C = A * B    [C toma el valor 160]
D = A + C   [D toma el valor 165]
E = D          [E toma el valor 165]

Dim Agotamiento As Boolean

Agotamiento = True


Nota: la separación decimal normalmente es un punto, pero tendrás que comprobarlo en tu computador porque puede variar en función de las configuraciones aplicadas. Es decir, normalmente se escribirá un decimal como 3.33 en lugar de cómo 3,33.
Un programa que conste de:
     Dim A As Integer
     A = 7 * B

dará lugar a un error debido a que B no está declarada.


En cambio:
     Dim A%, B%
     A = 7 * B


Supone que A valga cero, ya que si no se asigna un valor a B ésta tiene por contenido el valor por defecto, es decir, cero. 7 * B equivale en este caso a 7 * 0, que vale cero.



IF … THEN (SI … ENTONCES) E IF … THEN … ELSE (SI … ENTONCES … SINO)
La sintaxis a emplear con Visual Basic es muy similar a la que se estudia en los cursos de algoritmia y pseudocódigo, con la sustitución del Si por If, del Entonces por Then, del SiNo por Else y del Finsi por End If. La única salvedad a tener en cuenta es que Visual Basic permite además de la escritura en bloques la escritura en una sola línea.
 Sintaxis en bloque:
If [condición] Then
Instrucción 1
Instrucción 2
·
·
·
Instrucción n
Else
Instrucción A
Instrucción B
·
·
·
Instrucción Z
End If


Sintaxis en una sola línea:
If [condición] Then Instrucción 1 Else Instrucción A


También es posible encadenar varias acciones derivadas de un Then o de un Else en una sola línea. Sin embargo, recomendamos usar la opción de sintaxis en una sola línea exclusivamente para desarrollos sencillos como puede ser una instrucción en caso de que se cumpla la condición y otra en caso de que no se cumpla. Si intervienen varias instrucciones, siempre resultará más legible usar el formato de bloque.
La instrucción If ... Then es anidable dentro de sí misma, siendo siempre preferible el formato de bloque cuando se vayan a generar anidamientos.

Ejemplo:
If A > 7 And B < 5 Then
    MsgBox ("A es mayor que 7 y B menor que 5")
End If


También válido es:
If A > 7 And B < 5 Then MsgBox ("A es mayor que 7 y B menor que 5")


Si introducimos una cláusula Else el modelo es:
If A > 7 And B < 5 Then
    MsgBox ("A es mayor que 7 y B menor que 5")
Else
    MsgBox ("A no es mayor que 7 ó B no es menor que 5")
End If


También válido:
If A > 7 And B < 5 Then MsgBox ("A es mayor que 7 y B menor que 5") _
Else MsgBox ("A no es mayor que 7 ó B no es menor que 5")


Una cuestión a tener en cuenta es que cuando la condición indicada por un If en bloque no se cumple, se produce el salto a la siguiente instrucción inmediatamente posterior a la palabra End If. En cambio, cuando la condición indicada por un If en una línea no se cumple, se produce el salto a la siguiente línea ignorando todas las instrucciones que pudieran encontrarse en la misma línea del If. Veámoslo con un ejemplo. Ejecuta estos dos pequeños programas:

Programa 1
Rem Curso Visual Basic aprenderaprogramar.com

Option Explicit              
Dim a%
                                                                                                                         
Private Sub Form_Load()
a = 3
If a = 5 Then
    MsgBox("Se cumple que a vale 5")
End If
a = 25
MsgBox("El valor actual de a es " & a)
End Sub

Programa 2
Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim a%
                                                                      
Private Sub Form_Load()
a = 3
If a = 5 Then MsgBox ("Se cumple que a vale 5"): a = 25
MsgBox ("El valor actual de a es " & a)
End Sub


En el programa 1 el resultado es que se muestra en pantalla "El valor actual de a es 25", mientras que en el programa 2 se muestra "El valor actual de a es 3". La razón para que en la versión 2 no se ejecute la orden a = 25 es que al no cumplirse la condición del If se produce un salto a la siguiente línea, ignorándose todas las instrucciones que se encuentren en la misma línea del If. En general consideramos recomendable habituarse a usar la sintaxis de bloque siempre pues resulta más fácil de interpretar y evita posibles confusiones como ésta, donde muchas personas podrían pensar que si no se cumple el if se ejecutará la instrucción que aparece en la misma línea a continuación.


INSTRUCCIÓN SEGÚN (CASO) HACER (SELECT CASE)
La sintaxis a emplear con Visual Basic es la que indicamos a continuación. Como se podrá comprobar, mediante esta instrucción establecemos una serie de casos que se podrían cumplir para el valor de una expresión o variable, y en función del valor de la variable se ejecutarán una serie de instrucciones asociadas u otra.




Select Case [expresión]
Case [valor expresión 1]
    Instrucción 1
    Instrucción 2
Case [valor expresión 2]
    Instrucción 3
    Instrucción 4
.
.
.
Case [valor expresión n]
    Instrucción k
Case Else
    Instrucción m
End Select


Select Case en Visual Basic equivale a la instrucción switch de otros lenguajes.
La expresión a evaluar puede ser un valor numérico o una cadena de texto. Sólo se puede evaluar una expresión y no múltiples expresiones. La evaluación de expresiones puede ser:
a)   De coincidencia: por ejemplo, Case 12 indicaría que si la expresión evaluada vale 12 se ejecutarán las instrucciones anexas.
b)   De intervalo: usando la palabra clave To. Por ejemplo, Case 12 To 14 indicaría que si la expresión evaluada tiene un valor comprendido entre 12 y 14 (incluidos los extremos de los intervalos), se ejecutarán las instrucciones anexas.
c)   De comparación: usando la palabra clave Is. Por ejemplo, Case Is <= 14 indicaría que si la expresión evaluada tiene un valor menor o igual a 14 se ejecutarán las instrucciones anexas.

Cuando varios casos son válidos, sólo se ejecutan las instrucciones asociadas al primer caso verificado, siguiendo el flujo del programa por la siguiente instrucción después de End Select. Esto debemos tenerlo muy en cuenta, ya que si pretendemos que cuando se cumplan dos condiciones se ejecuten sendos bloques de instrucciones, convendrá hacerlo a través de la instrucción If en vez de a través de Select Case.
Las instrucciones Select Case se pueden anidar. Cada instrucción Select Case debe tener su correspondiente terminación End Select.
La instrucción Select Case presenta similitudes marcadas con la instrucción If - Then. Por ello, en general podremos conseguir resultados similares con ambas instrucciones y elegir usar una u otra dependerá de nuestro gusto y de cuál se adapte mejor a nuestros intereses, que en general serán ahorrar código y conseguir claridad para cumplir el objetivo. Otras veces será interesante anidar ambas instrucciones.
Prueba el siguiente código:

Código 

Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit
Dim A As Integer

Private Sub Form_Load()
A = 12
Select Case A
    Case 12
    MsgBox ("A vale 12")
    Case Is < 14
    MsgBox ("A es menor que 14")
    Case 160 To 200
    MsgBox ("A está comprendida entre 160 y 200")
    Case Else
        MsgBox ("No se ha verificado ninguna de las condiciones previstas")
End Select
End Sub



El resultado es que se muestra en pantalla "A vale 12". Sin embargo, a pesar de que la hipótesis  A < 14 se cumple, no llega a evaluarse y por tanto las instrucciones asociadas a este caso no se ejecutan.


ESTRUCTURAS DE REPETICIÓN (BUCLES) CON VISUAL BASIC
Vamos a ver cómo materializar con Visual Basic estructuras de repetición que permitirán que en nuestros programas se realice un proceso n veces. En concreto veremos las instrucciones Desde … Siguiente (For … Next) con su cláusula Paso (Step), la instrucción Mientras … Hacer (Do While … Loop) y la instrucción Hacer … Repetir Mientras (Do … Loop While).

 Muchas veces podremos optar indistintamente por usar una instrucción u otra. En otros casos, es recomendable decantarse por una de ellas por hacer el programa más legible o sencillo que usando otras opciones.

INSTRUCCIÓN DESDE ... SIGUIENTE (FOR ... NEXT) Y CLÁUSULA PASO (STEP)
La sintaxis a emplear con Visual Basic es la siguiente:
For VAR = Vi  To Vf
                Instrucción 1
                Instrucción 2
·
·
·
      Instrucción n
Next VAR


El incremento que sufre el contador es, por defecto, unitario. Es decir, el primer valor que toma VAR en el bucle será Vi, el segundo Vi + 1, el tercero (Vi + 1) + 1, etc. La modificación de dicho valor de incremento la realizaremos a través de la cláusula Step después del valor Vf. Step 2 implicará que en cada repetición del bucle el contador se incremente en dos unidades, Step 5 implicará que en cada repetición del bucle el contador se incremente en cinco unidades. Un paso negativo del tipo Step -1 supone que el contador decrece en vez de incrementarse. Si el paso es negativo, Vi necesariamente habrá de ser mayor que Vf, ya que en caso contrario no se producirá la entrada en el bucle.
Con este código se nos muestra en pantalla 3 veces hola (se ha invertido el sentido del bucle):

Código

Rem Curso Visual Basic aprenderaprogramar.com
Option Explicit

Dim VAR As Integer
Dim Vi As Integer
Dim Vf As Integer
                                              
Private Sub Form_Load()
Vi = 1
Vf = 3
For VAR = Vf To Vi Step –1
    '[También supondría tres repeticiones For VAR = Vi to Vf]
    MsgBox ("hola")
Next VAR
End Sub
  
Con Visual Basic resulta admisible usar Next sin indicar la variable que está sirviendo de guía del bucle, pues todo bucle ha de tener un cierre. Sin embargo, no lo creemos recomendable pues puede dificultar la lectura y depuración de los programas.

La instrucción For ... Next es anidable dentro de sí misma o dentro de otros tipos de bucles o estructuras, debiendo seguir las pautas que ya hemos comentado.


INSTRUCCIÓN MIENTRAS ... HACER (DO WHILE ... LOOP)
La sintaxis que hemos de seguir es la siguiente:
Do While [condición]
Instrucción 1
Instrucción 2
.
.
.
Instrucción n
    Loop


Las instrucciones tipo Do While son anidables dentro de sí mismas o dentro de otras estructuras. Es importante verificar que los bucles diseñados con esta instrucción dispongan de una condición de salida válida.
Ejemplo: k = 0: Do while k < 5. Dentro del bucle tendremos que incrementar el valor de k, k = k +1.


INSTRUCCIÓN HACER ... REPETIR MIENTRAS (DO ... LOOP WHILE)
La sintaxis a utilizar es:
Do
Instrucción 1
Instrucción 2
.
.
.
Instrucción n
    Loop While [condición]


Un Do ... Loop While es anidable dentro de sí mismo o dentro de otras estructuras. Es importante verificar que los bucles diseñados con esta instrucción dispongan de una condición de salida válida.
Ejemplo:
        Do
            LabelTabla.Text = LabelTabla.Text & "Iteración " & k & vbCrLf
            k = k + 1

        Loop While k <= 5

No hay comentarios:

Publicar un comentario