TEMA 5: INT. A LA PROGRAMACION VISUAL BASIC 6.0 Asignatura: Introducción a la Informática 2º CC Ambientales Universidad Rey Juan Carlos ¿Porqué Visual Basic? n Entorno gráfico WINDOWS n Lenguaje de programación visual (no LOO) n Herramienta sencilla n Rápido desarrollo de aplicaciones n Fácil manejo de bases de datos n Permite la construcción de librerías (DLL’s) n Depurador (debugger) para fácil detección y corrección de errores. 1 ANTECEDENTES HISTÓRICOS (I) n BASIC (Beginner's All purpose Symbolic Instruction n n n n Code) Desarrollado en 1964 por John G. Kemeny y Thomas E. Kurtz del Dartmouth College Pensado para principiantes Cubría casi todas las necesidades para la ejecución de programas Evolución escasa en los 70, debido al auge de FORTRAN y el COBOL ANTECEDENTES HISTÓRICOS (II) n En 1978 se definió una norma para unificar los Basics existentes: normativa BASIC STANDARD n Con la aparición de los primeros ordenadores personales, a principios de los ochenta, el BASIC resurgió. Muchos lo usaban como único sistema operativo (Sinclair, Spectrum, Amstrad) 2 ANTECEDENTES HISTÓRICOS (III) n Con el PC, salieron varias versiones (BASICA, GW- BASIC) poco exitosas ya que: - No era un lenguaje estructurado - No existían herramientas de compilación fiables - No disponía de herramientas de intercambio de información - No tenía librerías - No se podía acceder al interior de la máquina - Es interpretado. ANTECEDENTES HISTÓRICOS (IV) n Aparición del Quick-BASIC de Microsoft, versión mejorada del BASIC n El sist. operativo MS-DOS incluía una versión reducida: Q-Basic n Pasa a ser un lenguaje estructurado. Permite programas modulares n Poco éxito debido a la expansión del entorno gráfico WINDOWS 3 ANTECEDENTES HISTÓRICOS (V) n Decidieron unir: â Sencillez de manejo del BASIC â Las características de WINDOWS: - Intercambio de información - Librerías - Drivers y controladores - Manejo de bases de datos ANTECEDENTES HISTÓRICOS (VI) n Y surgió: VISUAL BASIC 4 ANTECEDENTES HISTÓRICOS (VII) n Conserva del BASIC de los años 80 únicamente su nombre y su sencillez n Gran aceptación a nivel profesional n Se ha convertido en la primera herramienta de desarrollo de aplicaciones en entorno Windows. n Permite realizar programas complejos fácilmente. ANTECEDENTES HISTÓRICOS (IX) n Pero sigue siendo un lenguaje INTERPRETADO n No se pueden comparar sus prestaciones con otros lenguajes cuando deseamos llegar al fondo de la máquina y controlar uno a uno sus registros (C++, Delphi). 5 CONCEPTOS BÁSICOS (I) n Programa: Es la representación de un algoritmo, escrito en algún lenguaje de programación. n Lenguaje de programación: Es una notación para escribir programas. Permite comunicarnos con el hardware y dar así las órdenes adecuadas para la realización de un determinado proceso. Viene definido por una gramática o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de símbolos utilizados. CONCEPTOS BÁSICOS (II) n Estilo de programación: Forma de organizar programas sobre la base de algún modelo conceptual de programación y un lenguaje apropiado n Principales estilos de programación: ♦ Orientado a imperativos ............. Relaciones Orientada a procedimientos ....... Algoritmos. Orientada a la lógica................... Predicados. Orientado a funciones ................. Funciones. ♦ Orientada a objetos ........... Clases y objetos. ♦ ♦ ♦ 6 CONCEPTOS BÁSICOS (III) n Programación imperativa: Se caracteriza por usar comandos para actualizar las variables. La programación imperativa es aún la que domina. Ej: BASIC , PASCAL... CONCEPTOS BÁSICOS (IV) n Programación estructurada: Su objetivo es hacer más legible y lógico la estructura del programa utilizando solamente tres tipos de estructuras: secuenciales, selectivas, y repetitivas. Divide el programa en partes llamadas módulos, e implementa cada uno de esos módulos por separado. Ej: PASCAL, C, ADA... 7 CONCEPTOS BÁSICOS (V) n Programación estructurada: Estructura secuencial Las instrucciones de un programa se ejecutan una después de la otra, en el mismo orden en el cual aparecen en el programa. CONCEPTOS BÁSICOS (VI) n Programación estructurada: Estructura selectiva Plantea la selección entre dos alternativas con base en el resultado de la evaluación de una condición o predicado; equivale a la instrucción IF de todos los lenguajes de programación 8 CONCEPTOS BÁSICOS (VII) n Programación estructurada: Estructura repetitiva Corresponde a la ejecución repetida de una instrucción mientras que se cumple una determinada condición CONCEPTOS BÁSICOS (VIII) n Programación Funcional (I): En los sistemas de programación funcional (SPF) un programa se considera una función matemática, la cual describe una relación entre una entrada y una salida, el concepto de estado o variable se elimina completamente. 9 CONCEPTOS BÁSICOS (IX) n Programación Funcional (II): Está basado en el uso de un conjunto fijo de formas funcionales. Esas formas se utilizan básicamente para construir nuevas funciones, que no usan variables ni existe la asignación, sólo convierten objetos en objetos. Ej: Lisp es el ancestro de los lenguajes de programación funcional; ML y Miranda son modernos lenguajes de programación funcional CONCEPTOS BÁSICOS (X) n Programación Lógica: La idea inicial del diseño se basó en una teoría del lenguaje y la Lógica Matemática. Prolog es un ejemplo de la programación lógica. El objetivo fue integrar el principio de resolución de Robinson en un lenguaje de programación. Este principio brinda una regla de inferencia para la prueba mecánica de teoremas en lugar de las múltiples reglas que los lógicos proponían. 10 CONCEPTOS BÁSICOS (XI) n Programación Orientada a Objetos (I): Paradigma de programación en el cual los agentes actuantes son entidades independientes cada uno con su propia estructura interna, que se comunican mutuamente respondiendo o haciendo demandas (mensajes). CONCEPTOS BÁSICOS (XII) n Programación Orientada a Objetos (II): Estas entidades, llamadas objetos, están constituidas de propiedades (los datos privados que definen su estado) y métodos (las operaciones aplicadas sobre los datos). La estructura interna de un objeto no es accesible por otro objeto o programa 11 CONCEPTOS BÁSICOS (XIII) n Clasificación de los lenguajes de programación orientados a objetos: 2 Lenguajes basados en objetos (LBO): Es un lenguaje que soporta los objetos como elementos del lenguaje. Este es el caso de Ada, Modula, Actor, Visual Basic. Soportan la funcionalidad de los objetos, pero el manejo de estos debe hacerse con mecanismos externos CONCEPTOS BÁSICOS (XIV) 2 Lenguajes basados en clases (LBC): Es un LBO en el cual todo objeto tiene que pertenecer a una clase. Este es el caso de CLU. 2 L. orientados a objeto (LOO): Es un LBC en el cual se define un mecanismo de herencia para crear una jerarquía de clases. Este es el caso de SmallTalk, SIMULA, C++. Permiten manipular las clases. 12 CONCEPTOS BÁSICOS (XV) n OBJETO (I): Representa una abstracción que se caracteriza por un conjunto de servicios que los clientes pueden solicitar. Es como una cápsula que contiene datos, y que además provee una serie de servicios que son utilizados por otros objetos para cumplir algún objetivo CONCEPTOS BÁSICOS (XVI) n OBJETO (II): Los datos o variables que constituyen un objeto se conocen como atributos o componentes (los cuales podría ser a su vez objetos) tambien llamados PROPIEDADES. El ESTADO de un objeto está determinado por el contenido de cada una de las variables que se asocian al objeto. 13 CONCEPTOS BÁSICOS (XVII) n OBJETO (III): Cada uno de los servicios también se conoce como MÉTODO u operación, y el conjunto de los métodos a los que puede responder el objeto se conoce como protocolo o interface del objeto. CONCEPTOS BÁSICOS (XVIII) n CLASES (I): Una clase es un conjunto de objetos que comparten una estructura y comportamiento comunes. La clase representa una abstracción, la esencia que comparten los objetos. - Un objeto es un ejemplar concreto de una clase. 14 CONCEPTOS BÁSICOS (XIX) n CLASES (II): La clase muestra: 1. Visión externa de comportamiento (interface), que enfatiza la abstracción escondiendo su estructura y secretos de comportamiento. 2. Visión interna (implementación), que abarca el código que se ofrece en la interface de la clase. VARIABLES Una variable contiene un valor que puede modificarse a lo largo de la ejecución de la aplicación. Cada variable tiene atributos propios como: n Identificador: es el nombre que utilizamos al referirnos a la variable en la aplicación n Tipo: determina la clase de valores que puede almacenar la variable n Ámbito: determina en qué parte de la aplicación se puede utilizar esa variable 15 CONSTANTES n Constantes: Son similares a las variables pero su valor no cambia en la ejecución. También tienen propiedades como el identificador, la clase y el ámbito. IDENTIFICADORES (I) n Identificadores: Es un nombre simbólico que esta asociado a una dirección de memoria y que hace referencia a un dato, a un procedimiento, a una función o a un programa determinado. 16 IDENTIFICADORES (II) n Reglas: n Deben comenzar por una letra n No pueden contener puntos, espacios en blanco o paréntesis. Sí se permite el carácter de subrayado y los caracteres de declaración de tipo (%, &, #, !, @, y $) n No pueden superar los 255 caracteres. Los nombres de controles, formularios, clases y módulos no deben exceder los 40 caracteres IDENTIFICADORES (III) n Reglas: n No pueden ser iguales que las palabras clave restringidas, p. ej. for, if, loop, next, val hide, caption, and, etc. n No se distingue entre mayúsculas y minúsculas, p. ej.: LongitudTotal y longitudtotal son la misma variable. 17 VARIABLES (I) n Declaración de variables: Sirve para comunicarle al programa: *que variables vamos a usar y *de que tipo son. Para declarar una variable se usa: l Dim nombre_variable [As tipo] VARIABLES (II) n Declaración implícita de variables: No hay por qué declarar una variable antes de utilizarla. Cuando se usa una variable no declarada VB directamente crea esa variable. Esto induce a errores. Por lo tanto: *Declarar las variables explícitamente *Basta incluir al principio de la sección de Declaraciones: Option Explicit 18 VARIABLES (III) n Ambito de una variable (I) Es la parte del código donde existe y es accesible (visible), y por lo tanto, puede ser utilizada. Depende de: èel lugar donde hagamos la declaración èlos modificadores que le pongamos (Private o Public) VARIABLES (IV) n Ambito de una variable (II) Una variable se puede usar en: 4 un módulo: cuando se declara en la parte de declaraciones de la sección general de ese módulo así: Dim nombre_variable [As tipo] Private nombre_variable [As tipo] Son variables privadas. Están disponibles para todos los procedimientos y funciones de ese módulo. 19 VARIABLES (V) n Ambito de una variable (III) Una variable se puede usar en: 4 un procedimiento o función (I): cuando se declara dentro de ese procedimiento o función o en el módulo al que pertenecen. Si son declaradas dentro de un procedimiento o función se denominan variables locales. Dim nombre_variable [As tipo] Existen solo cuando se ejecuta el procedimiento o función. VARIABLES (VI) n Ambito de una variable (IV) un procedimiento o función (II): Son inicializadas a cero. Si queremos que existan durante toda la ejecución y conserven su valor entre llamadas hay que declararlas de la siguiente manera: Static nombre_variable [As tipo] Son las variables estáticas. Si un procedimiento se declara Static todas sus variables son estáticas. 20 AMBITO DE LAS VARIABLES n Una variable se puede usar en: 4 todos los módulos (I): cuando se declara en la parte de declaraciones de la sección general de un módulo así: Public nombre_variable [As tipo] Global nombre_variable [As tipo] Se denominan variables públicas o globales. AMBITO DE LAS VARIABLES 4 todos los módulos (II): Si la variable pública ha sido declarada en un formulario, para usarla en otros módulos hay que anteponerle el nombre del formulario. Ej: frmPractica.VarGlobal1 Si ha sido declarada en un modulo estándar, para usarla en otros módulos solo hay que anteponerle el nombre del modulo si coincide con el nombre otra variable local. 21 CONSTANTES (I) n Tipos: n Intrínsecas o definidas por el sistema. n Simbólicas o definidas por el usuario. n Declaración de constantes: [Public|Private] Const nombre [As tipo] = expresión nombre es un identificador válido CONSTANTES (II) n Declaración de constantes (II): expresión está compuesta por constantes y operadores de cadena o numéricos; sin embargo, no se puede utilizar llamadas a funciones. n Ambito: Una constante tiene igual alcance que una declaración de variable y se le aplican las mismas reglas 22 TIPOS DE DATOS TIPOS DE DATOS (I) n El tipo de dato de una variable determina cómo se almacenan los bits que representan su valor en la memoria. n Si declaramos una variable sin especificar su tipo, por defecto será del tipo Variant. 23 TIPOS DE DATOS (II) n Tipos de datos numéricos (I): V Integer: Para almacenar enteros. (2 bytes) Rango: De -32768 a 32767. Carácter de declaración : % Ej: Dim Entero1 As Integer Entero2% Se suelen utilizar como variables de contador en bucles. TIPOS DE DATOS (III) n Tipos de datos numéricos (II): V Long: Para almacenar enteros largos. (4 bytes). Rango: -2147483648 a 2147483647. Carácter de declaración: & Ej: Dim EnteroLargo1 As Long EnteroLargo& 24 TIPOS DE DATOS (IV) n Tipos de datos numéricos (III): V Single: Para almacenar valores reales de simple precisión (4 bytes). Rango: -3.40E+38 a 3.40E+38. Carácter de declaración: ! Ej: Dim Real1 As Single Real! TIPOS DE DATOS (V) n Tipos de datos numéricos (IV): V Double: Para almacenar valores reales de doble precisión (8 bytes). Rango: -1.79D+308 a 1.79D+308. Carácter de declaración: # Ej: Dim Real3 As Double Real4# 25 TIPOS DE DATOS (VI) n Tipos de datos numéricos (V): V Currency: Para almacenar valores con un punto decimal fijo, máximo 4 decimales (8 b.). Rango: +/-922337203685477,5807 Carácter de declaración: @ Ej: Dim Euros1 As Currency Euros@ Evita errores de redondeo. TIPOS DE DATOS (VII) n Tipos de datos Byte: Almacena números enteros pequeños o un carácter (1 byte) Rango: 0 a 255 Ej: Dim NAlumnos As Byte n Se suele usar para almacenar datos binarios (mediante arrays) en archivos. 26 TIPOS DE DATOS (VIII) n Tipos de datos Boolean: Almacena datos que pueden tomar dos valores (verdadero o falso, 0 o 1...) (2 bytes) Rango: True o False, 0 o 1 Ej: Dim Funciona As Boolean Private Activado As Boolean TIPOS DE DATOS (IX) n Tipos de datos String: Guarda cadenas de caracteres. (10 bytes + 1 byte/carácter)) Rango: entre 0 y 2 31 caracteres Carácter de declaración: $ Ej: Dim Texto As String Se pueden declarar cadenas de una longitud fija: Ej: Dim Nombre As String*Tamaño 27 TIPOS DE DATOS (X) n Tipos de datos Date: Almacena valores de fecha y hora. (8 bytes) Rango: 1/1/100 a 31/12/9999 y desde 0:00:00 a 23:59:59 Ej: Dim Fecha As Date TIPOS DE DATOS (XI) n Tipos de datos Object: Almacena referencias a objetos. (4 bytes) Rango: Cualquier referencia a tipo Object Ej: Dim Objeto As Object Set Objeto=OpenDatabase(“libro.mdb”) 28 TIPOS DE DATOS (XII) n Tipos de datos Variant (I): Es capaz de almacenar todos los tipos de datos definidos en el sistema. Con números 16 bytes. Rango : Cualquier numero hasta el intervalo de un tipo Double. Con cadenas de caracteres 22 bytes + 1 byte/carácter. Ej: Dim Variable TIPOS DE DATOS (XIII) n Tipos de datos Variant (II): Al asignar un valor a una variable Variant VB realiza automáticamente cualquier conversión. Ej: Dim UnValor ' De forma predeterminada es un tipo Variant. UnValor = "17" ’ UnValor contiene "17" (cadena de 2caracteres) UnValor = UnValor - 15 ' UnValor ahora contiene ’ el valor numérico 2. UnValor = "U" & UnValor ' UnValor ahora contiene ' "U2" (una cadena de dos caracteres) 29 TIPOS DE DATOS (XIV) n Tipos de datos Variant (III): n Advertencias: Si realiza operaciones aritméticas o funciones sobre un Variant, el Variant debe contener un número. Si está concatenando cadenas, utilice el operador & en vez del operador + TIPOS DE DATOS (XV) n Tipos de datos Variant (IV): n Empty: Es el valor que toma una variable Variant antes de asignarle algún valor. Es 0 si se usa en una expresión numérica y una cadena de longitud cero (“”) si se usa con Strings. n La función IsEmpty(Variable) nos devuelve True si el valor de Variable es Empty y False en el caso contrario. n Podemos hacer: Variable=Empty 30 TIPOS DE DATOS (XVI) n Tipos de datos Variant (V): n Null: Se usa para especificar un valor desconocido o nulo. n Un expresión con un dato Null da Null. n Una función con un argumento Null devuelve Null. n La función IsNull(Variable) nos devuelve True si el valor de Variable es Null y False en el caso contrario. n Podemos hacer: Variable=Null TIPOS DE DATOS (XVII) n Tipos de datos Variant (VI): n Error: es un valor especial que se utiliza para indicar que se ha producido una condición de error en un procedimiento. n Nos permite elegir alternativas basadas en el valor del error. Los valores de error se crean convirtiendo números reales en valores de error mediante la función CVErr. 31 TIPOS DE DATOS (XVIII) n Conversión entre tipos de datos n Funciones Convierten una conversión Cbool Cbyte Ccur Cdate CDbl expresión en Boolean Byte Currency Date Double de TIPOS DE DATOS (XIX) n Conversión entre tipos de datos n Funciones Convierten una conversión Cint CLng CSng CStr Cvar CVErr expresión en Integer Long Single String Variant Error de 32 OPERADORES (I) n Aritméticos: Exponenciación ^ Cambio de signo (operador unario) Multiplicación,división *, / División entera \ Resto de una división entera Mod Suma y resta +, n Concatenación: Concatenar o enlazar &,+ OPERADORES (II) n Relacionales: Igual a = Distinto <> Menor que / menor o igual que < <= Mayor que / mayor o igual que > >= n Otros Comparar dos expresiones de caracteres Like Comparar dos referencias a objetos Is 33 OPERADORES (III) n Lógicos: Negación Not And And Or inclusivo Or Or exclusivo Xor Equivalencia (opuesto a Xor) Eqv Implicación (False si el primer operando es True y el segundo Imp operando es False) SENTENCIAS n Sentencia: Es una línea de texto que indica que operaciones se han de realizar. n Sentencia de Asignación: Forma general: Variable = Expresión El valor que resulte de evaluar la Expresión es almacenado en la Variable especificada. 34 SENTENCIAS DE CONTROL n Sentencias de control: Permiten cambiar el flujo de ejecución de un programa. Tipos: l Estructuras de decisión (condicionales) l Estructuras de repetición (iterativas) SENTENCIAS DE CONTROL n Estructuras de decisión (I): n If... Then ¬ If condición Then instrucción - If condición Then instrucciones End If Condición puede ser cualquier expresión que dé como resultado un valor numérico. Cero es False y True cualquier valor distinto de cero. 35 SENTENCIAS DE CONTROL n Estructuras de decisión (II): n If... Then n Explicación: Si condición es True, se ejecutan todas las instrucciones que siguen a la palabra clave Then. Si la condición es False (=0) entonces el programa continua con la siguiente instrucción después de End If. SENTENCIAS DE CONTROL n Estructuras de decisión (III): n If... Then...Else ¬ If condición Then instrucc1 [Else instrucc2] - If condición Then instrucción(es) [Else instrucción(es)] End If 36 SENTENCIAS DE CONTROL n Estructuras de decisión (IV): n If... Then... Else n Explicación: Si condición es True, se ejecutan todas las instrucciones que siguen a la palabra clave Then. Si la condición es False (=0) entonces se ejecutan las instrucciones que siguen a la palabra clave Else. SENTENCIAS DE CONTROL n Estructuras de decisión (V): n If... Then... ElseIf If condición1 Then [bloque de instrucciones 1] [ElseIf condición2 Then [bloque de instrucciones 2]] ... [Else [bloque de instrucciones n]] End If 37 SENTENCIAS DE CONTROL n Estructuras de decisión (VI): n If... Then... ElseIf n Explicación: Evalúa primero condición1. Si es False, evalua condición2 y así sucesivamente, hasta que encuentre una condición True. Entonces ejecuta el bloque de instrucciones del número correspondiente. Si ninguna condición es True se ejecuta el bloque de instrucciones de Else (si existiera). SENTENCIAS DE CONTROL n Estructuras de decisión (VII): n Select Case: n Select Case expresión_test [Case lista1 [bloque de instrucciones 1]] [Case lista2 [bloque de instrucciones 2]] ... [Case Else [bloque de instrucciones n]] End Select 38 SENTENCIAS DE CONTROL n Estructuras de decisión (VIII): n Select Case: *expresión_test es una expresión numérica o alfanumérica. *lista1, lista2, ... pueden ser: 1. expresión 2. expresión To expresión 3. Is operador-de-relación expresión 4. combinación de las anteriores separadas por comas. SENTENCIAS DE CONTROL n Estructuras de decisión (IX): n Select Case: Explicación: Se evalúa la expresion_prueba y va comparando el resultado con los valores de cada Case de la estructura. Si coincide con alguno, ejecuta el bloque de instrucciones asociado y salta a la siguiente instrucción después del End Select. Si no coincide con ninguno ejecuta el bloque de instrucciones n (del Else). 39 SENTENCIAS DE CONTROL n Estructuras de decisión (X): n Select Case: Ejemplo: Select Case Numero ’ Se evalúa 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 Is = 9, Is >= 10 ‘ Numero es mayor que 9 Resultado = "El valor es 9 o más grande” Case Else ‘ Resto de valores. Resultado = "El número es 0 o negativo” End Select SENTENCIAS DE CONTROL n Estructuras de repetición (I): n 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. n Existen dos tipos de bucle: * Bucle por contador. * Bucle por condición. 40 SENTENCIAS DE CONTROL n Estructuras de repetición (II): n Do... Loop: Es un bucle por condición. Posee dos formatos: ¬ Do [{While/Until} condicion] [bloque de instrucciones] Loop - Do [bloque de instrucciones] Loop [{While/Until} condicion] SENTENCIAS DE CONTROL n Estructuras de repetición (III): n Do... Loop: Explicación: Do While condición : Evalúa la condición. Mientras la condición sea True (cierta) se ejecuta el bloque de instrucciones. El bucle termina cuando la condición se hace False. Do Until condición : Evalúa la condición. Hasta que la condición sea True (cierta) se ejecuta el bloque de instrucciones. El bucle termina cuando la condición se hace True 41 SENTENCIAS DE CONTROL n Estructuras de repetición (IV): n Do... Loop: Explicación: Loop While condición: Ejecuta el bloque de instrucciones. Evalúa la condición. Mientras la condición sea True (cierta) se ejecuta el bloque de instrucciones. El bucle termina cuando la condición se hace False. Loop Until condición: Ejecuta el bloque de instrucciones. Evalúa la condición. Hasta que la condición sea True (cierta) se ejecuta el bloque de instrucciones. El bucle termina cuando la condición se hace True SENTENCIAS DE CONTROL n Estructuras de repetición (V): n While... Wend: n Formato: While condicion [bloque de instrucciones] Wend Explicación: Funciona igual que la instrucción Do While... Loop. 42 SENTENCIAS DE CONTROL n Estructuras de repetición (VI): n For...Next: Es un bucle por contador. Se usa si sabemos el número de veces que se tiene que ejecutar el bloque de instrucciones. Formato: For Contador = exp1 To exp2 [Step exp3] [bloque de instrucciones] Next [Contador] SENTENCIAS DE CONTROL n Estructuras de repetición (VII): n For...Next: Explicación: 1- Contador = exp1. 2- Comprueba si Contador es mayor que exp2. Si lo es sale del bucle. (Si exp3 es negativo, comprueba si Contador es menor que exp2. Si lo es sale del bucle) 3- Ejecuta bloque de instrucciones. 4- Incrementa Contador en 1 o en exp3, si se especificó. 5- Repite los pasos 2 a 4. 43 SENTENCIAS DE CONTROL n Estructuras de repetición (VIII): n For Each...Next: n Formato: For Each Elemento In Grupo [ bloque de instrucciones] Next Elemento n Explicación: Ejecuta el bloque de instrucciones para cada Elemento perteneciente al Grupo (puede ser un array o una colección). SENTENCIAS DE CONTROL n Estructuras de repetición (IX): n For Each...Next: Es útil cuando no se sabe el número de elementos que tiene el array o la colección de objetos. Restricciones: *Grupo es un array. Elemento tiene que ser una variable Variant. *Grupo es una colección de objetos. Elemento es una variable Variant o una variable Object. 44