SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Temario 
INTRODUCCIÓN AL DISEÑO DE ALGORITMOS ........................................................................................................................................ 3 
PROCESO DE INFORMACIÓN EN LA COMPUTADORA ........................................................................................................................... 3 
ORGANIZACIÓN FÍSICA DE UNA COMPUTADORA ................................................................................................................................. 3 
CPU................................................................................................................................................................................................................... 3 
DEFINICIÓN DE LENGUAJE ............................................................................................................................................................................... 3 
LENGUAJES ALGORITMICOS ............................................................................................................................................................................. 4 
TIPOS DE LENGUAJES ALGORITMICOS ..................................................................................................................................................... 4 
DEFINICIÓN DEL PROBLEMA ............................................................................................................................................................................ 4 
ANÁLISIS DEL PROBLEMA................................................................................................................................................................................. 4 
DISEÑO DEL ALGORITMO................................................................................................................................................................................. 4 
CODIFICACIÓN ................................................................................................................................................................................................ 4 
PRUEBA Y DEPURACIÓN .................................................................................................................................................................................. 4 
DOCUMENTACIÓN .......................................................................................................................................................................................... 5 
MANTENIMIENTO ........................................................................................................................................................................................... 5 
ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS .................................................................................................... 5 
TIPOS DE DATOS.............................................................................................................................................................................................. 5 
NUMÉRICOS ................................................................................................................................................................................................... 5 
TIPOS DE DATOS SIMPLES................................................................................................................................................................................ 5 
OPERADORES Y OPERANDOS ..................................................................................................................................................................... 6 
ARITMÉTICOS ................................................................................................................................................................................................. 6 
OPERANDO (OPERADOR) OPERANDO...................................................................................................................................................... 6 
VALOR.............................................................................................................................................................................................................. 6 
OPERADORES ARITMÉTICOS....................................................................................................................................................................... 6 
PRIORIDAD DE LOS OPERADORES ARITMÉTICOS ................................................................................................................................................ 7 
OPERADORES RELACIÓNALES .................................................................................................................................................................... 7 
OPERADORES RELACIÓNALES .................................................................................................................................................................... 7 
OPERADORES LÓGICOS.................................................................................................................................................................................... 7 
OPERADORES LÓGICOS................................................................................................................................................................................ 7 
OPERADOR AND ............................................................................................................................................................................................ 7 
OPERADOR OR............................................................................................................................................................................................... 8 
OPERADOR NOT ............................................................................................................................................................................................ 8 
PRIORIDAD DE LOS OPERADORES LÓGICOS............................................................................................................................................ 8 
NOT .................................................................................................................................................................................................................. 8 
PRIORIDAD DE LOS OPERADORES EN GENERAL ..................................................................................................................................... 8 
EJEMPLOS: ...................................................................................................................................................................................................... 8 
IDENTIFICADORES ......................................................................................................................................................................................... 9 
EJEMPLO: NOMBRE............................................................................................................................................................................... 9 
REGLAS PARA FORMAR UN IDENTIFICADOR ....................................................................................................................................................... 9 
CONSTANTES Y VARIABLES ......................................................................................................................................................................... 9 
LAS VARIABLES SON : EL RADIO, EL ÁREA Y LA CONSTATE ES PI ........................................................................................................ 9 
CLASIFICACIÓN DE LAS VARIABLES ........................................................................................................................................................... 9 
NUMÉRICAS.................................................................................................................................................................................................... 9 
DE TRABAJO ................................................................................................................................................................................................... 9 
POR SU CONTENIDO........................................................................................................................................................................................ 9 
POR SU USO .................................................................................................................................................................................................10 
TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS........................................................................................................................10 
DIAGRAMA DE FLUJO ....................................................................................................................................................................................10 
RECOMENDACIONES PARA EL DISEÑO DE DIAGRAMAS DE FLUJO ..................................................................................................11 
PSEUDOCODIGO............................................................................................................................................................................................11 
VENTAJAS DE UTIL IZAR UN PSEUDOCODIGO A UN DIAGRAMA DE FLUJO ....................................................................................11 
ESTRUCTURAS ALGORITMICAS ................................................................................................................................................................11
ESTRUCTURAS SECUENCIALES ........................................................................................................................................................................12 
PROBLEMAS SECUENCIALES .....................................................................................................................................................................12 
ESTRUCTURAS DE CONDICIONALES ........................................................................................................................................................15 
SIMPLES .......................................................................................................................................................................................................15 
DOBLES ........................................................................................................................................................................................................15 
PROBLEMAS SELECTIVOS SIMPLES..................................................................................................................................................................16 
ESTRUCTURAS CÍCLICAS.............................................................................................................................................................................16 
PROBLEMAS ( HACER PARA )....................................................................................................................................................................17 
CICLOS CON UN NUMERO INDETERMINADO DE ITERACIONES ( HACER-MIENTRAS, REPETIR-HASTA)...................................18 
FORMULARIOS Y EVENTOS .......................................................................................................................................................................19 
INTRODUCCIÓN.............................................................................................................................................................................................19 
CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................19 
FORMULARIOS, CONTROLES Y EVENTOS...............................................................................................................................................19 
CICLO DE VIDA DE UN FORMULARIO......................................................................................................................................................21 
LA VENTANA DEBUG ..................................................................................................................................................................................21 
IDENTIFICACIÓN DE OBJETOS (CONTROLES) EN UN FORMULARIO .................................................................................................23 
INTRODUCCIÓN.............................................................................................................................................................................................23 
CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................23 
CÓMO UTILIZAR CONTROLES: EVENTOS Y PROPIEDADES .................................................................................................................23 
CONTROLES COMUNES: LABEL, TEXTBOX, COMMANDBUTTON, CHECKBOX................................................................................24 
IDENTIFICAR EL TIPO DE UN CONTROL...................................................................................................................................................24 
COLECCIÓN CONTROLS DE UN FORMULARIO .......................................................................................................................................26 
CLASES Y OBJETOS ......................................................................................................................................................................................27 
INTRODUCCIÓN.............................................................................................................................................................................................27 
CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................27 
LOS OBJETOS EN VISUAL BASIC................................................................................................................................................................27 
CONCEPTO DE ENCAPSULACIÓN (PUBLIC V.S. PRIVATE)....................................................................................................................28 
UTILIZACIÓN DE VARIABLES DE OBJETO ................................................................................................................................................28 
INSTRUCCIÓN PROPERTY ..........................................................................................................................................................................28 
VARIABLES ESTÁTICAS ...............................................................................................................................................................................29 
CLASES Y OBJETOS ......................................................................................................................................................................................33 
INTRODUCCIÓN.............................................................................................................................................................................................33 
CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................33 
CÓMO CREAR COLECCIONES DE OBJETOS: LA CLASE COLLECTION ..................................................................................................33 
PROPIEDADES Y MÉTODOS DEL OBJETO COLLECTION .......................................................................................................................................33 
CÓMO ACCEDER A LOS ELEMENTOS DE UNA COLECCIÓN: CLAVES E ÍNDICES ......................................................................................................34 
AGREGAR ELEMENTOS A UNA COLECCIÓN.......................................................................................................................................................34 
ELIMINACIÓN DE ELEMENTOS DE UNA COLECCIÓN...........................................................................................................................................35 
RECUPERACIÓN DE ELEMENTOS DE UNA COLECCIÓN........................................................................................................................................35 
CONTROL HSCROLLBAR ................................................................................................................................................................................36 
MÁS CONCEPTOS DE CLASES: EVENTOS INITIALIZE Y TERMINATE ......................................................................................................................37
Colegio José de Escandón La Salle Algoritmos y Programación 
Introducción al Diseño de Algoritmos 
La computadora no solamente es una maquina que puede realizar procesos para darnos resultados, sin que 
tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora además de lo 
anterior también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Mas aun, si 
estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de 
datos. 
El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología 
que nos enseñe de manera gradual, la forma de llegar a estas soluciones. 
A las soluciones creadas por computadora se les conoce como programas y no son mas que una serie de 
operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva 
al razonamiento de que un programa nos sirve para solucionar un problema especif ico. 
Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de 
manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos 
que hay en la misma. 
Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la 
información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una 
salida (output). 
3 
Proceso de información en la computadora 
Datos de Proceso Datos de 
entrada salida 
Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas secuencialmente 
resuelven un problema especifico. 
Organización física de una computadora 
CPU 
Unida de Unidad 
Dispositivos de Control Arit.-Log. Dispositivos de Entrada 
Salida 
Memoria 
Definición de Lenguaje 
Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A 
la transmisión de mensajes se le conoce comúnmente como comunicación. 
Lenguajes de Programación 
Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la 
computadora. 
Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de 
entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación. 
Definición de Algoritmo 
La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático 
y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
Colegio José de Escandón La Salle Algoritmos y Programación 
Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a 
un problema especifico. 
Lenguajes Algoritmicos 
Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. 
4 
Tipos de Lenguajes Algoritmicos 
 Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). 
 No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo). 
Metodología para la solución de problemas por medio de computadora 
Definición del Problema 
Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se 
conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar 
con la siguiente etapa. 
Análisis del Problema 
Una vez que se ha comprendido lo que se desea de la computadora, es necesario defi nir: 
Los datos de entrada. 
Cual es la información que se desea producir (salida) 
Los métodos y fórmulas que se necesitan para procesar los datos. 
Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo 
que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. 
Diseño del Algoritmo 
Las características de un buen algoritmo son: 
Debe tener un punto particular de inicio. 
Debe ser definido, no debe permitir dobles interpretaciones. 
Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del 
problema. 
Debe ser finito en tamaño y tiempo de ejecución. 
Codificación 
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o 
pseudocodigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de 
instrucciones detalladas se le conoce como código fuente, el cual se escribe en un l enguaje de programación o lenguaje de 
alto nivel. 
Prueba y Depuración 
Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con 
la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama 
depuración.
Colegio José de Escandón La Salle Algoritmos y Programación 
La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe 
considerar con el mismo interés y entusiasmo. 
Resulta conveniente observar los siguientes principios al realizar una depuración, ya que de este trabajo depende 
el éxito de nuestra solución. 
Documentación 
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o 
diagramas. 
A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a 
comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). 
Mantenimiento 
Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste 
o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere 
que el programa este correctamente documentado. 
Entidades primitivas para el desarrollo de algoritmos 
Tipos de datos 
Todos los datos tienen un tipo as ociado con ellos . Un dato puede s er un s imple carácter, tal como ‘b’, un valor 
entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. 
5 
Numéricos 
Simples Lógicos 
Alfanuméricos (string) 
Tipos de 
datos Arreglos (Vectores, Matrices) 
Estructurados Registros 
(Def. por el Archivos 
usuario) Apuntadores 
Tipos de Datos Simples 
 Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los 
reales. Este tipo de datos permiten realizar operaciones aritméticas comunes. 
 Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una 
comparación entre otros datos (numéricos o alfanuméricos). 
 Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores 
identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números 
como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este 
tipo de datos se representan encerrados entre comillas. 
Ejemplo:
Colegio José de Escandón La Salle Algoritmos y Programación 
6 
“Ins tituto Tecnológico de Tuxtepec” 
“1997” 
Expresiones 
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de 
funciones especiales. Por ejemplo: 
a+(b + 3)/c 
Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la 
ejecución de las operaciones indicadas. 
Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las 
expresiones en: 
- Aritméticas 
- Relaciónales 
- Lógicas 
Operadores y Operandos 
 Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es 
decir, los operadores nos permiten manipular valores. 
Aritméticos 
Tipos de Operadores Relaciónales 
Lógicos 
 Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los 
valores (variables y constantes) Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si 
ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. 
Operando (Operador) Operando 
Valor 
(constante o variable) 
Operadores Aritméticos 
+ Suma 
- Resta 
* Multiplicación 
/ División 
Mod Modulo (residuo de la división entera) 
Ejemplos: 
Expresión Resultado 
7 / 2 
12 mod 7 
4 + 2 * 5
Colegio José de Escandón La Salle Algoritmos y Programación 
Prioridad de los Operadores Aritméticos 
Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro 
a fuera, el paréntesis mas interno se evalúa primero. 
Dentro de una misma expresión los operadores se evalúan en el siguiente orden. 
1.- ^ Exponenciación 
2.- *, /, mod Multiplicación, división, modulo. 
3.- +, - Suma y resta. 
Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. 
Ejemplos: 
Operadores Relaciónales 
Se utilizan para establecer una relación entre dos valores. 
Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). 
Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas) 
Tienen el mismo nivel de prioridad en su evaluación. 
Los operadores relaciónales tiene menor prioridad que los aritméticos. 
Operadores Relaciónales 
7 
> Mayor que 
< Menor que 
> = Mayor o igual que 
< = Menor o igual que 
< > Diferente 
= Igual 
Ejemplos: 
Si a = 10 b = 20 c = 30 
a + b > c F 
a - b < c T 
a - b = c F 
b < > c T 
Ejemplos no lógicos: 4-8 
a < b > c 
10 < 20 < 30 
T < 30 (no es lógico porque tiene diferentes operandos) 
Operadores Lógicos 
Estos operadores se utilizan para establecer relaciones entre valores lógicos. 
Estos valores pueden ser resultado de una expresión relacional. 
Operadores Lógicos 
And Y 
Or O 
Not Negación 
Operador And 
Operando1 Operador Operando2 Resultado 
T AND T T
Colegio José de Escandón La Salle Algoritmos y Programación 
T F F 
F T F 
F F F 
Operador Or 
Operando1 Operador Operando2 Resultado 
T OR T T 
T F T 
F T T 
F F F 
Operador Not 
Operando Resultado 
T F 
F T 
Ejemplos: 
8 
(a < b) and (b < c) 
T T=T 
a=10 b=20 c=30 
Prioridad de los Operadores Lógicos 
Not 
And 
Or 
Prioridad de los Operadores en General 
1.- ( ) 
2.- ^ 
3.- *, /, Mod, Not 
4.- +, -, And 
5.- >, <, > =, < =, < >, =, Or 
Ejemplos: 
a = 10 b = 12 c = 13 d =10 
1) ((a > b) or (a < c)) and ((a = c) or (a >= b)) 
2) ((a > = b) or (a < d)) and (( a > = d) and (c > d)) 
3) not (a = c) and (c > b)
Colegio José de Escandón La Salle Algoritmos y Programación 
Identificadores 
Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador 
es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que nos permite 
accesar a su contenido. 
Ejemplo:Nombre 
9 
Num_hrs 
Calif2 
Reglas para formar un Identificador 
Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco. 
Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter. 
La longitud de identificadores puede ser de hasta 8 caracteres. 
Constantes y Variables 
 Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. 
Ejemplo: 
pi = 3.1416 
 Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la 
ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una 
variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un 
algoritmo. 
Ejemplo: 
area = pi * radio ^ 2 
Las variables son : el radio, el área y la constate es pi 
Clasificación de las Variables 
Numéricas 
Por su ContenidoLógicas 
Alfanuméricas (String) 
Variables 
De Trabajo 
Por su Uso Contadores 
Acumuladores 
Por su Contenido 
 Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir 
almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo: 
iva=0.15 pi=3.1416 costo=2500 
 Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de 
una comparación entre otros datos.
Colegio José de Escandón La Salle Algoritmos y Programación 
 Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales). 
Ejemplo: 
letra=’a’ apellido=’lopez’ direccion=’Av. Libertad #190’ 
Por su Uso 
 Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan 
normalmente dentro de un programa. Ejemplo: 
suma=a+b/c 
 Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una 
condición. Con los incrementos generalmente de uno en uno. 
 Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que 
se van leyendo o calculando progresivamente. 
Técnicas para la formulación de algoritmos 
Diagrama de Flujo 
Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la 
representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados. 
Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se 
relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. 
Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI). 
SÍMBOLO DESCRIPCIÓN 
10 
Indica el inicio y el final de nuestro diagrama de flujo. 
Indica la entrada y salida de datos. 
Símbolo de proceso y nos indica la asignación 
de un valor en la memoria y/o la ejecución de 
una operación aritmética. 
Símbolo de decisión indica la realización de una comparación de 
valores. 
Se utiliza para representar los subprogramas. 
Conector dentro de pagina. Representa la 
continuidad del diagrama dentro de la misma pagina. 
Conector fuera de pagina. Representa la 
continuidad del diagrama en otra pagina.
Colegio José de Escandón La Salle Algoritmos y Programación 
11 
Indica la salida de información por impresora. 
Indica la salida de información en la pantalla o 
monitor. 
Líneas de flujo o dirección. Indican la 
secuencia en que se realizan las operaciones. 
Recomendaciones para el diseño de Diagramas de Flujo 
Se deben se usar solamente líneas de flujo horizontales y/o verticales. 
Se debe evitar el cruce de líneas utilizando los conectores. 
Se deben usar conectores solo cuando sea necesario. 
No deben quedar líneas de flujo son conectar. 
Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. 
Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras. 
Pseudocodigo 
Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la 
programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocodigo se puede definir como un 
lenguaje de especificaciones de algoritmos. 
Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema 
determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar. 
Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo 
Ocupa menos espacio en una hoja de papel 
Permite representar en forma fácil operaciones repetitivas complejas 
Es muy fácil pasar de pseudocodigo a un programa en algún lenguaje de programación. 
Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación. 
Estructuras algoritmicas 
Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la 
manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas 
estructuras se clasifican de acuerdo con su complejidad en: 
- Asignación 
Secuenciales - Entrada 
- Salida 
- Simples 
Estructuras Condicionales 
Algoritmicas - Múltiples 
- Hacer para 
Cíclicas - Hacer mientras
Colegio José de Escandón La Salle Algoritmos y Programación 
12 
- Repetir hasta 
Estructuras Secuenciales 
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se 
suceden de tal modo que la salida de una es la entrada de la siguiente y así suces ivamente hasta el fin del proceso. Una 
estructura secuencial se representa de la siguiente forma: 
Inicio 
Accion1 
Accion2 
. 
. 
AccionN 
Fin 
- Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será 
reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: 
 Simples: Consiste en pasar un valor constate a una variable (a=15) 
 Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a=a+1) 
 Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b) 
 De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables 
(a=c+b*2/4). 
- Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se 
representa en un pseudocodigo como sigue: 
Leer a, b 
Donde “a” y “b” s on las variables que recibirán los valores 
Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso 
se representa en un pseudocodigo como sigue: 
Es cribe “El res ultado es :”, R 
Donde “El res ultado es :” es un mens aje que s e des ea aparezca y R es una variable qu e contiene un valor. 
Problemas Secuenciales 
Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara después 
de un mes si el banco paga a razón de 2% mensual. 
Inicio 
Leer 
Imprimir 
Fin
Colegio José de Escandón La Salle Algoritmos y Programación 
Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas, el vendedor desea saber 
cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que 
recibirá en el mes tomando en cuenta su sueldo base y comisiones. 
Inicio 
Leer 
Imprimir 
Fin 
Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto 
deberá pagar finalmente por su compra. 
Inicio 
13 
Leer 
Imprimir 
Fin 
Un alumno desea saber cual será su calificación final en la materia de Algoritmos. Dicha calificación se 
compone de los siguientes porcentajes: 
55% del promedio de sus tres calificaciones parciales. 
30% de la calificación del examen final. 
15% de la calificación de un trabajo final. 
Inicio 
Leer
Colegio José de Escandón La Salle Algoritmos y Programación 
Imprimir 
Fin 
14
Colegio José de Escandón La Salle Algoritmos y Programación 
Estructuras de Condicionales 
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta 
comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer 
contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos, las simples y las 
múltiples. 
Simples: Las estructuras condicionales s imples s e les conoce como “Tomas de decis ión”. Es tas tomas de 
decisión tienen la siguiente forma: 
Si <condición> entonces 
15 
Acción(es) 
Fin-si 
Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativa s posibles en 
función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: 
Si <condición> entonces 
Acción(es) 
si no 
Acción(es) 
Fin-si 
Donde: 
Si ………………… Indica el comando de comparación 
Condición………… Indica la condición a evaluar 
entonces……..…… Precede a las acciones a realizar cuando se cumple la condición 
acción(es)………… Son las acciones a realizar cuando se cumple o no la condición 
s i no……………… Precede a las acciones a realizar cuando no se cumple la condición 
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones. 
Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar 
una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. 
La forma común es la siguiente: 
Si <condición> entonces 
Acción(es) 
si no 
Si <condición> entonces 
Acción(es) 
si no 
. 
. Varias condiciones 
. 
Forma General 
Casos Variable 
Op1: Acción(es) 
Op2: Acción(es) 
. 
. 
OpN: acción 
Fin-casos
Colegio José de Escandón La Salle Algoritmos y Programación 
Problemas Selectivos Simples 
Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en 
inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso 
desea saber cuanto dinero tendrá finalmente en su cuenta. 
Inicio 
Leer p_int, cap 
int = cap * p_int 
si int > 7000 entonces 
16 
capf = cap + int 
fin-si 
Imprimir capf 
fin 
Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones 
es mayor o igual a 70; reprueba en caso contrario. 
Inicio 
Leer calif1, calif2, calif3 
prom = (calif1 + calif2 + calif3)/3 
Si prom >= 70 entonces 
Imprimir “alumno aprobado” 
si no 
Imprimir “alumno reprobado” 
Fin-si 
Fin 
En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad 
que pagara una persona por su compra? 
Inicio 
Leer compra 
Si compra > 1000 entonces 
desc = compra * 0.20 
si no 
desc = 0 
fin-si 
tot_pag = compra - desc 
imprimir tot_pag 
fin. 
Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera: 
Si trabaja 40 horas o menos se le paga $16 por hora 
Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. 
Inicio 
Leer ht 
Si ht > 40 entonces 
he = ht - 40 
ss = he * 20 + 40 * 16 
si no 
ss = ht * 16 
Fin-si 
Imprimir ss 
Fin 
Estructuras Cíclicas
Colegio José de Escandón La Salle Algoritmos y Programación 
Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de 
acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada 
por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en: 
Ciclos con un Numero Determinado de Iteraciones (Hacer-Para) 
Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura 
es la siguiente: 
Hacer para V.C = L.I a L.S VC=LI 
17 
Accion1 Vc = LS V 
Accion2 vc=vc+1 
. 
. F 
. 
AccionN Cuerpo del ciclo 
Fin-para 
Donde: 
V.C Variable de control del ciclo 
L.I Limite inferir 
L.S Limite superior 
En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al 
limite superior. 
Problemas ( Hacer para ) 
Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseño Estructurado de Algoritmos 
Inicio 
Sum=0 
Leer Nom 
Hacer para c = 1 a 7 
Leer calif 
Sum = sum + calif 
Fin-para 
prom = sum /7 
Imprimir prom 
Fin. 
Leer 10 números y obtener su cubo y su cuarta. 
Inicio 
Hacer para n = 1 a 10 
Leer num 
cubo = num * num * num 
cuarta = cubo * num 
Imprimir cubo, cuarta 
Fin-para 
Fin.
Colegio José de Escandón La Salle Algoritmos y Programación 
Ciclos con un Numero Indeterminado de Iteraciones ( Hacer -Mientras, 
18 
Repetir-Hasta) 
Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que esta dado en función de un dato 
dentro del programa. 
Hacer-Mientras : Es ta es una es tructura que repetira un proces o durante “N” veces , donde “N” puede s er fijo o variable. Para 
esto, la instrucción se vale de una condición que es la que debe cumplirse para que se siga ejecutando. Cuando la condición 
ya no se cumple, entonces ya no se ejecuta el proceso. La forma de esta estructura es la siguiente: 
Hacer mientras <condición> 
Accion1 NO 
Accion2 
CONDICION 
. 
. SI 
AccionN 
Fin-mientras 
Problemas (Hacer Mientras) 
CUERPO 
DEL 
CICLO 
Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos 
es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compañía desea 
saber cuanto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y 
cuanto tomando en cuenta su sueldo base y sus comisiones. 
En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se 
obtiene de la sig. forma: 
Si el obrero trabaja 40 horas o menos se le paga $20 por hora 
Si trabaja mas de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por cada hora extra.
Colegio José de Escandón La Salle Algoritmos y Programación 
Formularios y eventos 
Introducción 
El primer paso para crear una aplicación con Visual Basic es crear la interfaz, la parte visual de la aplicación con la que va a 
interactuar el usuario. Los formularios y controles son los elementos de desarrollo básicos que se usan para crear la interfaz; 
son los objetos con los que se trabaja para desarrollar la aplicación. 
Los formularios son objetos que exponen las propiedades que definen su apariencia, los métodos que definen su 
comportamiento y los eventos que definen la forma en que interactúan con el usuario. Mediante el establecimiento de las 
propiedades del formulario y la escritura de código de Visual Basic para responder a sus eventos se personaliza el objeto 
para cubrir las necesidades de la aplicación. 
Todos los lenguajes de programación para Windows comparten la misma característica: la orientación a eventos. Las 
aplicaciones creadas para Windows no siguen una estructura de ejecución lineal. Esto implica que un programa no va a 
seguir una secuencia fija de instrucciones, ejecutándose línea a línea, sino que debe responder a las acciones que el 
usuario, el sistema operativo u otras aplicaciones realizan sobre él; estas acciones se conocen en Visual Basic como 
eventos. 
Todos los elementos que podemos utilizar en la construcción de una aplicación en Visual Basic (formularios, controles 
ActiveX, etc) reciben unos eventos predeterminados como GetFocus, LostFocus o Activate. Podemos controlar estos 
eventos introduciendo el código que deseemos en la correspondiente subrutina de atención al evento. 
El objetivo de este capítulo es recordar los conocimientos básicos, pero imprescindibles, para el manejo de formularios en 
Visual Basic. Haremos incapié en el concepto de formulario como objeto, con sus propiedades, métodos y eventos. Se 
comprobará que un formulario sólo se elimina de memoria cuando se eliminan todas las referencias al mismo, exáctamente 
igual que cualquier objeto. Comentaremos especialmente los eventos que puede recibir un formulario, tanto en el proceso 
de carga como en la ejecución de la aplicación y en el proceso de descarga del mismo. 
Conocimientos teóricos 
Formularios, controles y eventos 
Los formularios y controles de Visual Basic son objetos que exponen sus propios métodos, propiedades y eventos. Las 
propiedades se pueden considerar como atributos de un objeto, los métodos como sus acciones y los eventos como sus 
respuestas. 
Un objeto de uso diario como el globo de un niño tiene también propiedades, métodos y eventos. Entre las propiedades de 
un globo se incluyen atributos visibles como el peso, el diámetro y el color. Otras propiedades describen su estado (inflado o 
desinflado) o atributos que no son visibles, como su edad. Por definición, todos los globos tienen estas propiedades; lo que 
varía de un globo a otros son los valores de estas propiedades. 
Un globo tiene también métodos o acciones inherentes que puede efectuar. Tiene un método inflar (la acción de llenarlo de 
helio) o un método desinflar (expeler su contenido) y un método elevarse (si se deja escapar). De nuevo, todos los globos 
pueden efectuar estos métodos. 
Los globos tienen además respuestas predefinidas a ciertos eventos externos. Por ejemplo, un globo respondería al evento 
de pincharlo desinflándose o al evento de soltarlo elevándose en el aire. 
Como objetos que son, los formularios pueden ejecutar métodos y responder a eventos. 
El evento Resize de un formulario se desencadena siempre que se cambia el tamaño de un formulario, ya sea por una 
acción del usuario o a través del código. Esto permite realizar acciones como mover o cambiar el tamaño de los controles de 
un formulario cuando han cambiado sus dimensiones. 
El evento Activate se produce siempre que un formulario se convierte en el formulario activo; el evento Deactivate se 
produce cuando otro formulario u otra aplicación se convierte en activo. Estos eventos son adecuados para iniciar o finalizar 
acciones del formulario. Por ejemplo, en el evento Activate podríamos escribir código para resaltar el texto de un 
determinado cuadro de texto; con el evento Deactivate podríamos guardar los cambios efectuados en un archivo o en una 
base de datos. 
19
Colegio José de Escandón La Salle Algoritmos y Programación 
20
Colegio José de Escandón La Salle Algoritmos y Programación 
Para hacer visible un formulario se invoca el método Show. Por ejemplo, la sentencia 
Form1.Show 
mostraría el formulario Form1. Invocar el método Show tiene el mismo efecto que establecer a True la propiedad Visible del 
formulario. 
Ciclo de vida de un formulario 
Comprender el ciclo de vida de un formulario es básico para el programador de Visual Basic, puesto que son estos 
elementos los que permitirán al usuario interactuar con la aplicación. Sólo comprendiendo qué acciones podrán realizarse 
sobre los formularios y en qué momentos podremos controlar adecuadamente la ejecución de nuestros programas. 
En la vida de un formulario puede pasar por cinco estados diferentes. En orden cronológico son: 
 Creado: el formulario existe como objeto, pero todavía no es visible. Cuando un formulario está si endo creado, se 
genera el evento Initialize. En esta fase del proceso de carga de un formulario no podemos actuar sobre los objetos 
que lo componen. 
 Cargado: ya podemos acceder a los controles del formulario, pero éste no es visible. Un formulario se encu entra en 
este estado en el proceso de carga, cuando se oculta o cuando se establece a False su propiedad Visible. Cuando se 
inicia el proceso de carga de un formulario, se genera el evento Load. 
 Mostrado: el estado normal de un formulario. Podemos acceder a todos los elementos que lo componen y podemos 
actuar sobre ellos, pues el formulario es visible. Durante este estado, cada vez que hay que repintar el formulario (por 
ejemplo, cuando una ventana que se ha situado sobre éste desaparece) se genera el even to Paint. Además, si el 
formulario recupera el foco después de haberlo perdido (por ejemplo, al cambiar a otra aplicación con Alt+Tab y volver 
después al formulario), se genera el evento Activate. 
 Descargado: una vez terminado este proceso el formulario no es visible, y sus componentes no son accesibles. El 
proceso de descarga se produce cuando se cierra el formulario (pulsando el botón , ejecutando el método Unload del 
formulario, etc). El proceso de descarga de un formulario, a su vez, generará dos eventos: QueryUnload y 
Unload (en este orden). En los dos eventos podemos detener el proceso de descarga estableciendo el valor del 
parámetro Cancel a cualquier número distinto de 0. En general, aprovecharemos estos eventos para liberar la memoria 
ocupada por los elementos que pertenecen al formulario antes de que este se cierre, salvar el trabajo que esté 
pendiente de guardado, etc. 
 Eliminado: aunque un formulario esté descargado, mientras existe cualquier referencia al mismo no será eliminado 
totalmente de memoria. Cuando se produce esta circunstancia (el formulario está descargado y nadie hace referencia a 
él) se genera el evento Terminate, y el formulario desaparece de memoria. 
La ventana Debug 
Si bien este elemento del entorno de desarrollo de Visual Basic no tiene una relación directa con el tema que se trata en 
este capítulo, queremos recordar su funcionalidad, puesto que para el programador es una herramienta importante en el 
proceso de desarrollo de una aplicación. 
21
Colegio José de Escandón La Salle Algoritmos y Programación 
En dicho proceso es necesario disponer de un elemento donde poder mostrar mensajes, valores de variables, etc. que nos 
ayuden en la depuración de los programas. El objeto Debug de Visual Basic nos permite escribir en la pantalla Inmediato 
(Debug Inmediate Window) utilizando el método Print. 
También podemos comprobar el valor de una variable si utilizamos la sentencia 
?nombre_variable 
en la ventana Inmediato, o establecer dicho valor con la sentencia 
nombre_variable=valor 
Ejemplo propuesto 
Con este ejemplo veremos los estados por los que pasa un formulario durante su ciclo de vida. Además, comprobaremos 
cómo un formulario no se elimina de memoria hasta que no se liberan todas las referencias al mismo en el programa. 
1. Crearemos los siguientes formularios 
2. En el formulario 1, insertaremos código en las subrutinas Initialize, Load, Activate, Paint, QueryUnload, Unload y 
Terminate, para que cada vez que se lance el evento correspondiente mostremos en la ventana Debug el formulario 
sobre el que se ha generado el evento y el nombre del evento. 
3. Añadiremos código en el Click del botón para mostrar el formulario 2. También mantendremos una referencia al 
formulario 2 (para evitar que se lance su evento Terminate al cerrarse). 
4. Insertaremos código en las subrutinas Load, Unload y Terminate del formulario 2, para mostrar en la pantalla Debug el 
formulario y el evento que se produce en cada caso. 
Ejemplo resuelto 
Formulario 1 
'_______________________________________________________________________ 
' Ejemplo 1 del Curso de Visual Basic Av anzado 
' 
' El objetiv o de este ejemplo es reconocer los ev entos que un 
' f ormulario puede recibir, así como el orden en el que se 
' reciben 
'_______________________________________________________________________ 
Option Explicit 
Priv ate Sub Command1_Click() 
Dim FrmNuev oFormulario As Form 
' Guardamos un enlace al f ormulario 2, para que no 
' salte su Terminate cuando lo cerremos (saltará 
' el Terminate del f ormulario 2 cuando salte el 
' Terminate del f ormulario 1 y se pierda la ref erencia 
' al segundo f ormulario) 
Set FrmNuev oFormulario = Formulario2 
FrmNuev oFormulario.Show 
End Sub 
Priv ate Sub Form_Activ ate() 
Debug.Print "Formulario1: Ev ento Activ ate" 
22
Colegio José de Escandón La Salle Algoritmos y Programación 
End Sub 
Priv ate Sub Form_Initialize() 
Debug.Print "Formulario1: Ev ento Initialize" 
End Sub 
Sub Form_Load() 
Debug.Print "Formulario1: Ev ento Load" 
End Sub 
Priv ate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 
Debug.Print "Formulario1: Ev ento QueryUnload" 
End Sub 
Priv ate Sub Form_Paint() 
Debug.Print "Formulario1: Ev ento Paint" 
End Sub 
Priv ate Sub Form_Terminate() 
Debug.Print "Formulario1: Ev ento Terminate" 
End Sub 
Priv ate Sub Form_Unload(Cancel As Integer) 
Debug.Print "Formulario1: Ev ento Unload" 
End Sub 
Formulario 2 
'_______________________________________________________________________ 
' Ejemplo 1 del Curso de Visual Basic Av anzado 
' 
' El objetiv o de este ejemplo es reconocer los ev entos que un 
' f ormulario puede recibir, así como el orden en el que se 
' reciben 
'_______________________________________________________________________ 
Option Explicit 
Priv ate Sub Form_Load() 
Debug.Print "Formulario2: Ev ento Load" 
End Sub 
Priv ate Sub Form_Terminate() 
Debug.Print "Formulario2: Ev ento Terminate" 
End Sub 
Priv ate Sub Form_Unload(Cancel As Integer) 
Debug.Print "Formulario2: Ev ento Unload" 
End Sub 
Identificación de objetos (controles) en un formulario 
Introducción 
Los controles son objetos que están contenidos en los objetos de formularios. Cada tipo de control tiene su propio conjunto 
de propiedades, métodos y eventos, que lo hacen adecuado para una finalidad determinada. Algunos de los controles que 
puede usar en las aplicaciones son más adecuados para escribir o mostrar texto, mientras que otros controles permiten 
tener acceso a otras aplicaciones y procesan los datos como si la aplicación remota formara parte del código. 
Este capítulo presenta los conceptos básicos del trabajo con formularios y controles, y las propiedades, métodos y eventos 
que tienen asociados. Se explican también algunos de los controles estándar, y cómo es posible diferenciar en tiempo de 
ejecución los tipos de controles utilizados en nuestros formularios. 
Conocimientos teóricos 
Cómo utilizar controles: eventos y propiedades 
Un evento es una acción reconocida por un formulario o un control, es decir, un suceso que ha sido provocado por el 
usuario, el sistema operativo u otros programas en ejecución y que repercute en un elemento de nuestra aplicación. Por 
ejemplo, son eventos la pulsación de una tecla o el paso del puntero de ratón sobre un objeto. A través de los eventos 
podemos determinar el comportamiento del objeto con su entorno.). Las aplicaciones controladas por eventos ejecutan 
23
Colegio José de Escandón La Salle Algoritmos y Programación 
código Basic como respuesta a un evento. Cada formulario y control de Visual Basic tiene un conjunto de eventos 
predefinidos. Si se produce uno de dichos eventos y el procedimiento de evento asociado tiene código, Visual Basic llama a 
ese código. 
Aunque los objetos de Visual Basic reconocen automáticamente un conjunto predefinido de eventos, nostros decidimos 
cuándo y cómo se responderá a un evento determinado. A cada evento le corresponde una sección de código (un 
procedimiento de evento). Cuando deseamos que un control responda a un evento, escribimos códi go en el procedimiento 
de ese evento. 
Los tipos de eventos reconocidos por un objeto varían, pero muchos tipos son comunes a la mayoría de los controles. Por 
ejemplo, la mayoría de los objetos reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el código 
del procedimiento de evento Click del formulario; si un usuario hace clic en un botón de comando, se ejecuta el código del 
procedimiento de evento Click del botón. El código en cada caso será diferente. 
Las propiedades de los controles determinan su aspecto, cómo se mostrará al usuario. Estas propiedades definen sus 
atributos: color, tamaño, forma, etc. Al igual que en el caso de los eventos, los objetos de Visual Basic comparten una serie 
de propiedades comunes, como Name o Visible, y otras específicas de su tipo. 
Controles comunes: Label, TextBox, CommandButton, CheckBox 
En Visual Basic hay un conjunto de controles comunes que son usados en la gran mayoría de aplicaciones. En la siguiente 
tabla se muestra el uso normal de estos controles: 
Control Uso típico y descripción breve 
Label (Etiqueta) Mostrar un texto descriptivo que el usuario no 
24 
puede modificar. El texto se especifica en la 
propiedad Caption. 
TextBox (Cuadro de texto) Mostrar un texto que puede ser editado. La principal 
propiedad es Text, que determina el texto que 
se.muestra en dicho control. 
CommandButton (Botón) Comenzar o terminar un proceso. Cuando el 
usuario pulsa este botón, se produce el evento 
Click. 
CheckBox (Casilla de activación) Seleccionar una opción (no excluyente) de entre un 
conjunto de opciones. Su principal propiedad es 
Value, que indica si está seleccionada (1) o no (0). 
ListBox (Cuadro de lista) Seleccionar una valor dentro una lista. La propiedad 
Text determina el elemento seleccionado por el 
usuario. 
Identificar el tipo de un control 
Existen dos funciones que nos permiten identificar el tipo de control que estamos tratando: TypeName y TypeOf 
La función TypeName nos permite conocer el nombre de la clase a la que pertenece un objeto, lo que nos posibilita adecuar 
el código que escribimos al tipo de objeto que estemos tratando, así como crear funciones generales para diversos tipos de 
controles. 
Si tenemos un botón (CommandButton1) en nuestro formulario, utilizando la sentencia 
TypeName (CommandButton1) 
Obtendríamos la cadena "CommandButton", es decir, la clase a la que pertenece el botón. 
La función TypeOf es algo más restrictiva. Debe ir en una sentencia de condición (una sentencia del tipo if ... then ....). Esta 
función nos permite identificar la clase a la que perteneceel objeto, para poder operar en consecuencia. 
Un ejemplo de uso sería:
Colegio José de Escandón La Salle Algoritmos y Programación 
If TypeOf MiControl Is CommandButton Then 
25 
... 
else 
... 
endif
Colegio José de Escandón La Salle Algoritmos y Programación 
Colección Controls de un formulario 
Un formulario no es más que un lienzo donde se pintan controles. Es decir, podemos entender un formulario como un objeto 
que posee una colección de controles. Esta colección se llama Controls. 
Podemos acceder a cada uno de los controles de un formulario a través de esta colección. Sin necesidad de conocer a priori 
su nombre, bastaría recorrer toda la colección y hacer una rutina para lanzar el código a ejecutar para cada tipo de controles 
del formulario. 
Ejemplo propuesto 
En este ejemplo distinguiremos los tipos de objetos que tiene un formulario, accediendo a las propiedades del objeto en el 
que nos encontremos durante el recorrido de la colección de objetos. 
1. Crearemos el siguiente formulario: 
2. En el Load del formulario, insertaremos código para que una vez cargado el formulario tengamos en la ventana de 
Debug el nombre y el tipo de todos los objetos que se han cargado. 
3. En función del tipo de objeto, cambiaremos su color de fondo:1 
 Label: rojo 
 CheckBox: verde 
 TextBox: azul 
 CommandButton: amarillo 
Ejemplo resuelto 
'_______________________________________________________________________ 
' Ejemplo 2 del Curso de Visual Basic Av anzado 
'' El objetiv o de este ejemplo es identif icar los objetos contenidos' en un f ormulario y operar con ellos en f unción de su tipo. 
'_______________________________________________________________________ 
Option Explicit 
Priv ate Sub Form_Load() 
Dim ObjControl As Object 
' Recorremos todos los controles del f ormulario 
For Each ObjControl In Me.Controls 
' En f unción del tipo de control, cambiaremos su color de 
' f ondo 
Select Case Ty peName(ObjControl) 
Case "Label" 
ObjControl.BackColor = v bRed 
Case "TextBox" 
ObjControl.BackColor = v bBlue 
Case "CheckBox" 
ObjControl.BackColor = v bGreen 
Case "CommandButton" 
ObjControl.BackColor = v bYellow 
End Select 
1 Nota: para poder cambiar el color de fondo de un CommandButton, es necesario establecer a 1 (Graphical) su 
propiedad Style. 
26
Colegio José de Escandón La Salle Algoritmos y Programación 
' Sacaremos su nombre y tipo de objeto a la pantalla 
' Debug 
Debug.Print Ty peName(ObjControl) & ": " & ObjControl.Name 
Next ObjControl 
End Sub 
Clases y objetos 
Introducción 
Hasta ahora hemos visto los objetos que proporciona Visual Basic, pero nosotros también podemos crear objetos. En este 
capítulo se darán los conocimientos básicos necesarios para entender cómo podemos utilizar objetos en Visual Basic. 
Cada objeto de Visual Basic se define mediante una clase. Podemos entender las clases como un "modelo conceptual" 
de los objetos. Para comprender la relación entre un objeto y su clase, podemos pensar en un cubo de playa y un castillo 
de arena. El cubo es la clase. Define las características de cada castillo de arena, como su tamaño y forma. Se utiliza la 
clase para crear (instanciar) objetos. Los objetos son los castillos de arena y como era de esperar todos tienen las 
mismas propiedades y eventos. 
En el capítulo anterior hemos hablado de las propiedades y los eventos de un objeto. Pero además de estas características 
los objetos proporcionan un conjunto de métodos, que determinan las acciones que el objeto puede realizar. 
La programación orientada a objetos proporciona un enfoque totalmente distinto al utilizado en la programación clásica 
(estructuras, tipos de datos, programación secuencial...). Bien aplicada, la programación orientada a objetos minimiza el 
tiempo dedicado a la depuración de los programas, y facilita la reutilización del código. 
Así mismo este modelo de programación nos permite controlar qué características de nuestros objetos son visibles para las 
aplicaciones que los utilizan, lo que se denomina encapsulación. 
Conocimientos teóricos 
Los objetos en Visual Basic 
Los objetos están encapsulados; es decir, contienen su propio código y sus propios datos, lo cual facilita su mantenimiento 
más que los métodos de escritura de código tradicionales. 
Los objetos de Visual Basic tienen propiedades, métodos y eventos. Las propiedades son los datos que describen un objeto. 
Los métodos son lo que puede hacer con el objeto. Los eventos son tareas que realiza el objeto; podemos escribir código 
para ejecutarlo cuando se produzcan eventos. 
Los objetos de Visual Basic se crean a partir de clases; así, un objeto se dice que es una instancia de una clase. La clase 
define las interfaces de un objeto, si el objeto es público y en qué circunstancias se puede crear. 
Para utilizar un objeto tiene que mantener una referencia a él en una variable de objeto. El tipo de enlace determina la 
velocidad con la que se tiene acceso a los métodos de un objeto mediante la variable de objeto. Una variable de objeto 
puede ser un enlace en tiempo de compilación (el más lento) o un enlace en tiempo de diseño. 
Al conjunto de propiedades y métodos se le llama interfaz. La interfaz predeterminada de un objeto de Visual Basic es una 
interfaz dual que admite las formas de enlace anteriormente mencionadas. Si una variable de objeto está correctamente 
definida (es decir, Dim … As nombre_clase), utilizará la forma más rápida de enlace. 
Además de su interfaz predeterminada, los objetos de Visual Basic pueden implementar interfaces adicionales para 
proporcionar polimorfismo. El polimorfismo le permite manipular muchos tipos deferentes de objetos sin preocuparse de su 
tipo. Las interfaces múltiples son una característica del Modelo de objetos componentes (COM); permiten que los programas 
evolucionen con el tiempo, agregando nueva funcionalidad sin afectar al código existente. 
27
Colegio José de Escandón La Salle Algoritmos y Programación 
Concepto de encapsulación (Public v.s. Private) 
Una de las características más importantes de la programación orientada a objetos es el concepto de encapsulación: un 
objeto bien desarrollado es aquel que puede ser utilizado por otros elementos de forma eficiente, pero sin que éstos 
conozcan cómo funciona internamente. Esto nos permite cambiar la forma en que un objeto funciona sin que los elementos 
que utilizan el objeto noten dicho cambio. 
En Visual Basic, las propiedades y métodos de una clase pueden ser de dos tipos: 
 Public: accesibles por cualquier elemento del proyecto. 
 Private: accesibles sólo por los elementos de la clase donde están definidos. 
Utilización de variables de objeto 
Utilizar una variable de objeto es similar a utilizar una variable convencional, pero con un paso adicional: asignar un 
objeto a la variable. 
Primero, declararemos la variable con una sentencia 
Dim variable As clase 
Luego, asignaremos un objeto a esa variable, utilizando la instrucción Set: 
Set variable = objeto 
Pero atención: el objeto ha de existir para poder ser asignado a una variable de objeto. Es decir, previamente hemos 
tenido que utilizar la instrucción New, bien en la misma sentencia en la que declaramos la variable de objeto: 
Dim variable As New Clase 
O bien en otro lugar del código: 
Set variable = New Clase 
La sentencia New crea una instancia de la clase especificada (es decir, crea un objeto nuevo a partir del modelo que es la 
clase). 
Cuando ya no sean de utilidad necesitamos liberar la memoria y los recursos que los objetos consumen. En la mayoría de 
los casos el sistema operativo se encargará de esta tarea si se nos olvida a nosotros, pero no hay que conf iarse (podéis 
imaginar el rendimiento de una máquina en la que tengamos, por ejemplo, 5 instancias de Word al mismo tiempo...). Para 
liberar la memoria y los recursos que consume un objeto utilizaremos la sentencia: 
Set variable = Nothing 
Instrucción Property 
Como se mencionó anteriormente, es deseable que un elemento externo a un objeto no pueda acceder de forma 
incontrolada a sus propiedades. Podemos controlar esto creando todas las propiedades de tipo Private, pero... ¿y si 
queremos que sean accesibles por los elementos que utilicen el objeto, pero sin arriesgarnos a que éstos realicen acciones 
no permitidas?. Por ejemplo, podemos necesitar que el TPV (Terminal Punto de Venta) de una tienda pueda modificar el 
saldo de una tarjeta (lo que se correspondería con la compra de un cliente); sin embargo, no tiene sentido que dicho TPV 
permita al vendedor comprobar el saldo de la cuenta del cliente, o hacer una transferencia a su propia cuenta. 
Visual Basic permite acceder y modificar el valor de una propiedad privada a través de los procedimientos de propiedad o 
Property. 
Se proporcionan tres tipos de procedimientos: 
Procedimiento Propósito 
Property Get Devuelve el valor de una propiedad 
Property Let Establece el valor de una propiedad 
Property Set Establece el valor de una propiedad de objeto (es 
28 
decir, una propiedad que contiene una referencia a 
un objeto)
Colegio José de Escandón La Salle Algoritmos y Programación 
Normalmente se define una pareja Property Get/Property Let por cada propiedad privada de una clase. Property Get nos 
permite acceder al valor almacenado en dicha propiedad, mientras que Property Let nos posibilita asignarle un valor. 
Property Set también permite establecer el valor de una propiedad privada. La diferencia entre este procedimiento y 
Property Let es el modo en el que se asigna valor a la propiedad. Visual Basic llama a Property Set si se utiliza la 
instrucción Set y a Property Let en caso contrario. 
Esta propiedad se utiliza para matener el estándar de los objetos, ya que para asignarles un val or se usa la palabra 
reservada Set. 
Variables estáticas 
Aunque este tema no está directamente relacionado con el tema del capítulo, queremos recordar este concepto para 
poder aplicarlo en el ejemplo propuesto. 
La vida de una variable está directamente relacionada con la forma y el lugar donde se declara. El valor de las variables 
declaradas a nivel de módulo y públicas se preserva durante todo el tiempo de ejecución. Sin embargo, las variables 
locales declaradas con Dim sólo existen mientras se ejecuta el procedimiento en el cual se han declarado. La próxima 
vez que se ejecute el procedimiento se reinicializarán todas sus variables locales. 
Sin embargo es posible preservar el valor de una variable local si se declara como estática, utilizando la palabra clave 
Static: 
Static nombre_variable as tipo_dato 
Ejemplo propuesto 
El objetivo de este ejemplo es conocer el proceso de creación e instanciación de una clase en Visual Basic. También se 
pretende que el lector se familiarice con el ciclo de vida de un objeto y la necesidad de liberar la memoria asociada con cada 
uno de los objetos creados. 
Para practicar estos conceptos crearemos una agenda telefónica básica. 
1. Diseñaremos el siguiente formulario: 
2. Definiremos una clase Ficha con cinco propiedades: nombre, apellidos, dirección, teléfono y número. Para cada una de 
las propiedades crearemos sus correspondientes métodos de propiedad Property Get y Property Let. 
3. Implementaremos también un método Muestra() que muestre mediante un msgbox el valor de las propiedades de un 
objeto Ficha creado previamente. 
29
Colegio José de Escandón La Salle Algoritmos y Programación 
4. En el formulario, una vez establecidas las propiedades de la ficha (nombre, apellidos...) se pulsará el botón para crear 
una nueva ficha. Será necesario crear un nuevo objeto de la clase Ficha y establecer sus propiedades. 
5. Para establecer la propiedad número de la ficha, crearemos una variable estática que incrementaremos en una unidad 
cada vez que se pulse el botón, de forma que nunca creemos dos fichas con el mismo número. 
6. Una vez creada la nueva ficha, llamaremos a su método Muestra(), para que nos enseñe el valor de sus propiedades. 
7. Por último, no podemos olvidarnos de destruir el objeto creado igualándolo a Nothing. 
30
Colegio José de Escandón La Salle Algoritmos y Programación 
Ejemplo resuelto 
Formulario 
'_______________________________________________________________________ 
' Ejemplo 3 del Curso de Visual Basic Av anzado 
' 
' El objetiv o de este ejemplo es familliarizarnos con el uso de objetos. 
'_______________________________________________________________________ 
Option Explicit 
Priv ate Sub ButCrearFicha_Click() 
Dim ObjFicha As ClaFicha 
Static IntNumFicha As Integer 
' Creamos un nuev o objeto de la clase f icha 
Set ObjFicha = New ClaFicha 
' Incrementamos el número de f ichas creadas 
IntNumFicha = IntNumFicha + 1 
' Establecemos las propiedades de la nuev a f icha 
ObjFicha.StrNombre = TxtNombre 
ObjFicha.StrApellidos = TxtApellidos 
ObjFicha.StrDireccion = TxtDireccion 
ObjFicha.StrTelef ono = TxtTelef ono 
ObjFicha.IntNumero = IntNumFicha 
' Llamamos al método MetMostrar del objeto para 
' que muestre los datos de la f icha 
ObjFicha.MetMostrar 
' Eliminamos el objeto creado 
Set ObjFicha = Nothing 
End Sub 
Clase Ficha 
'_______________________________________________________________________ 
' Ejemplo 3 del Curso de Visual Basic Av anzado 
' 
' Def inición de la clase FICHA, todos los objetos f ichas tendrán esta interf ace. 
'_______________________________________________________________________ 
Option Explicit 
' Propiedades de la clase ClaFicha 
Priv ate VarIntNumero As Integer 
Priv ate VarStrNombre As String 
Priv ate VarStrApellidos As String 
Priv ate VarStrDireccion As String 
Priv ate VarStrTelef ono As String 
' Métodos para acceder a la propiedad VarIntNumero 
Public Property Get IntNumero() As String 
IntNumero = VarIntNumero 
End Property 
Public Property Let IntNumero(ParIntNumero As String) 
VarIntNumero = ParIntNumero 
End Property 
' Métodos para acceder a la propiedad VarStrNombre 
Public Property Get StrNombre() As String 
StrNombre = VarStrNombre 
End Property 
Public Property Let StrNombre(ParStrNombre As String) 
VarStrNombre = ParStrNombre 
End Property 
' Métodos para acceder a la propiedad VarStrApellidos 
Public Property Get StrApellidos() As String 
StrApellidos = VarStrApellidos 
End Property 
31
Colegio José de Escandón La Salle Algoritmos y Programación 
Public Property Let StrApellidos(ParStrApellidos As String) 
VarStrApellidos = ParStrApellidos 
End Property 
' Métodos para acceder a la propiedad VarStrDireccion 
Public Property Get StrDireccion() As String 
StrDireccion = VarStrDireccion 
End Property 
Public Property Let StrDireccion(StrDireccion As String) 
VarStrDireccion = StrDireccion 
End Property 
' Métodos para acceder a la propiedad VarStrTelef ono 
Public Property Get StrTelef ono() As String 
StrTelef ono = VarStrTelef ono 
End Property 
Public Property Let StrTelef ono(ParStrTelef ono As String) 
VarStrTelef ono = ParStrTelef ono 
End Property 
' Método para mostrar los datos de una f icha 
Public Sub MetMostrar() 
MsgBox "Número: " & VarIntNumero & v bCrLf & _ 
"Nombre: " & VarStrNombre & v bCrLf & _ 
"Apellidos: " & VarStrApellidos & v bCrLf & _ 
"Dirección: " & VarStrDireccion & v bCrLf & _ 
"Teléf ono: " & VarStrTelef ono, , "Ficha" 
End Sub 
32
Colegio José de Escandón La Salle Algoritmos y Programación 
Clases y objetos 
Introducción 
Hasta ahora hemos aprendido cómo se crea e instancia una clase sencilla, y los conceptos más importa ntes de la 
programación orientada a objetos en Visual Basic. 
En este capítulo aprenderemos a desarrollar clases mas complejas utilizando colecciones de clases mas sencillas. Para ello 
aprenderemos a usar colecciones de clases, y haremos hincapié en la optimización en tiempo y recursos del sistema al 
hacer búsquedas, inserciones y/o borrados mediante indices o claves de una colección. 
También se pretende que el lector se familiarice con el uso de controles menos utilizados como la barra de desplazamiento 
horizontal (HScrollBar). 
Conocimientos teóricos 
Cómo crear colecciones de objetos: la clase Collection 
Una colección es una forma de agrupar elementos relacionados. Visual Basic proporciona una gran cantidad de 
colecciones predefinidas (Forms, Controls, etc), pero además permite la creación de colecciones personalizadas 
utilizando la clase genérica Collection. 
Los objetos Collection almacenan cada elemento en una variable Variant. De esta forma, la lista de cosas que se 
pueden agregar a un objeto Collection es igual que la lista de cosas que se pueden almacenar en una variable Variant. 
Entre ellas se incluyen los tipos de datos, los objetos y las matrices estándar, pero no los tipos definidos por el usuario. 
Las variables Variant siempre ocupan 16 bytes, independientemente de lo que contienen , por lo que el uso de objetos 
Collection no es tan eficiente como el uso de matrices. Sin embargo, no es necesario aplicar ReDim a un objeto 
Collection, lo que produce un código más limpio y más fácil de mantener. Además, los objetos Collection ofrecen un 
acceso por clave extremadamente rápido, que no ofrecen las matrices. 
A pesar del tamaño de las variables Variant, habrá muchas ocasiones en las que tenga más sentido utilizar un objeto 
Collection para almacenar todos los tipos de datos enumerados anteriormente. Sin embargo, siempre tenemos que tener 
presente que si bien los objetos Collection nos permitirán escribir un código limpio y fácil de mantener, estamos pagando el 
precio de almacenar los elementos en variables Variant. 
Propiedades y métodos del objeto Collection 
Los objetos Collection disponen de propiedades y métodos que se puede utilizar para insertar, eliminar y recuperar los 
elementos de la colección. 
Propiedad o método Descripción 
Método Add Agrega elementos a la colección. 
 Más exactamente, una variable Variant ocupa siempre 16 bytes incluso si los datos se encuentran 
almacenados en cualquier otra parte. Por ejemplo, si asignamos una cadena o una matriz a una variable de tipo 
Variant, ésta contiene un puntero a una copia de la cadena o de los datos de la matriz. En los sistemas de 32 
bits sólo se utilizan como puntero 4 bytes de la variable Variant y realmente no hay ningún dato en ella. Si 
almacenamos un objeto, la variable de tipo Variant contiene la referencia de objeto, como si fuera una variable 
de objeto. Igual que ocurre con las cadenas y las matrices, solamente se utilizan 4 bytes. Los tipos de datos 
numéricos se almacenan ocupando siempre los 16 bytes. 
33
Colegio José de Escandón La Salle Algoritmos y Programación 
Propiedad Count Devuelve el número de elementos de la colección. Sólo 
34 
lectura. 
Método Item Devuelve un elemento, por índice o por clave. 
Método Remove Elimina un elemento de la colección, por índice o por 
clave. 
Estas propiedades y métodos sólo proporcionan los servicios más básicos de las colecciones. Por ejemplo, el método Add 
no puede comprobar el tipo de objeto que se agrega a la colección para asegurar que la colección contenga un único tipo de 
objeto. Podemos proporcionar una funcionalidad más robusta, y propiedades, métodos y eventos adicionales, si creamos 
nuestra propia clase de colección, como haremos en el ejemplo correspondiente a este capítulo. 
Cómo acceder a los elementos de una colección: claves e índices 
Los servicios básicos de agregar, eliminar y recuperar elementos de una colección dependen de claves e índices. Una clave 
es un valor String. Puede ser un nombre, un número de documento de identidad, un número de la seguridad social o 
simplemente un dato de tipo Integer convertido en tipo String. El método Add nos permite asociar una clave con un 
elemento, como se describe más adelante. 
Un índice es un dato de tipo Long entre uno (1) y el número de elementos de la colección . Podemos controlar el valor 
inicial del índice de un elemento mediante los parámetros before y after, pero su valor puede cambiar si agregamos o 
eliminamos otros elementos. 
Podemos utilizar el índice para recorrer los elementos de una colección. Por ejemplo, si insertamos el código siguiente en el 
Load de un formulario aparecería en la pantalla Debug el nombre de los controles que están pegados en él: 
Dim IntContador as Integer 
For IntContador = 0 To Controls.Count - 1 
Debug.Print Controls(IntContador).Name & vbCrLf 
Next 
Existe otra forma de acceder a los elementos de una colección que proporciona un mayor rendimiento: utilizar la sentencia 
For Each. Esta opción es notablemente más rápida que la iteración mediante índice, aunque esto no es cierto en todas las 
implementaciones de colecciones: depende de cómo almacena la colección los datos internamente. Podemos codificar de 
nuevo el ejemplo anterior utilizando esta sentencia: 
Dim VarDato as Variant 
For Each VarDato In Controls 
Debug.Print VarDato.Name & vbCrLf 
Next VarDato 
Agregar elementos a una colección 
Para agregar un elemento a una colección utilizaremos el método Add. La sintaxis es la siguiente: 
 Una colección puede tener base cero o base uno, dependiendo de su índice inicial (lo primero quiere decir 
que el índice del primer elemento de la colección es cero y lo segundo quiere decir que es uno). Ejemplos de 
colecciones con base cero son las colecciones Forms y Controls. El objeto Collection es un ejemplo de 
colección con base uno. 
Las colecciones más antiguas de Visual Basic suelen tener base cero, mientras que las más recientes suelen 
tener base uno. Es más intuitivo utilizar las colecciones con base uno, ya que su índice va desde uno a Count, 
donde Count es la propiedad que devuelve el número de elementos de una colección. 
Por otra parte, el índice de una colección con base cero va desde cero al valor de la propiedad Count menos 
uno.
Colegio José de Escandón La Salle Algoritmos y Programación 
colección.Add (elemento As Variant [, clave As Variant] [, before As Variant] 
[, after As Variant] ) 
Por ejemplo, imaginemos un objeto Persona que tiene una propiedad DNI que lo identifica de forma única, y una colección 
de personas denominada ColPersonas. Para agregar un objeto nuevo a la colección utilizaríamos la sentencia: 
ColPersonas.Add Persona, Persona.DNI 
Se supone que la propiedad DNI es un tipo String. Si esta propiedad es un número (por ejemplo, un tipo Long), 
utilizaríamos la función CStr para convertirlo al valor String requerido por las claves: 
ColPersonas.Add Persona, CStr(Persona.DNI) 
El método Add acepta argumentos con nombre. Para agregar una persona nueva como tercer elemento de la colección, 
podemos escribir: 
ColPersonas.Add Persona, Persona.DNI, after:=2 
Podemos utilizar los argumentos con nombre before y after para mantener ordenada una colección de objetos. Por ejemplo, 
before:=1 inserta un elemento al principio de la colección, ya que los objetos Collection están basados en uno. 
Eliminación de elementos de una colección 
Para eliminar un elemento de una colección, utilizaremos el método Remove. La sintaxis es la siguiente: 
colección.Remove índice 
El argumento índice puede ser la posición del elemento que desea eliminar o su clave. Si la clave del tercer elemento de la 
colección de personas es "1234567W", podemos utilizar cualquiera de estas dos instrucciones para eliminarlo: 
ColPersonas.Remove 3 
o bien 
ColPersonas.Remove "1234567W" 
Recuperación de elementos de una colección 
Para recuperar un elemento de una colección, utilizaremos el método Item. La sintaxis es la siguiente: 
[Set] variable = colección.Item(índice) 
Como ocurre con el método Remove, el índice puede ser la posición dentro de la colección o la clave del elemento. En el 
mismo ejemplo que para el método Remove, cualquiera de estas dos instrucciones recuperará el tercer elemento de la 
colección: 
Set Persona = ColPersonas.Item(3) 
o bien 
Set Persona = ColPersonas.Item( "1234567W") 
35
Colegio José de Escandón La Salle Algoritmos y Programación 
Si utilizamos números enteros como claves, debemos emplear la función CStr para convertirlos a cadenas antes de 
pasarlos a los métodos Item o Remove. Los objetos Collection siempre asumen que un número entero es un índice . 
El método Item es el método predeterminado de los objetos Collection, por lo que podemos omitirlo cuando queramos 
acceder a un elemento de una colección. De esta forma, el ejemplo de código anterior también se puede escribir de la 
siguiente manera: 
Set Persona = ColPersonas(3) 
o bien 
Set Persona = ColPersonas( "1234567W") 
Los objetos Collection mantienen sus números de índice automáticamente al agregar y eliminar elementos. El índice 
numérico de un elemento dado puede variar a lo largo del tiempo. No es conveniente, por tanto, guardar un valor numérico 
de índice y esperar recuperar el mismo elemento más tarde. Lo mejor es utilizar claves para este propósito. 
Control HScrollBar 
Las barras de desplazamiento proporcionan un medio sencillo de recorrer largas listas de elementos o grandes cantidades 
de información al desplazarse horizontal o verticalmente dentro de una aplicación o de un control. 
Las barras de desplazamiento son un elemento común de la interfaz de Windows 95 y de Windows NT. 
Barra de desplazamiento horizontal (HScrollBar) 
Barra de desplazamiento vertical (VScrollBar) 
Los controles HScrollBar y VScrollBar no son igual que las barras de desplazamiento incorporadas que se pueden 
encontrar en Windows o que las adjuntas a los cuadros de texto, los cuadros de lista, los cuadros combinados o los 
formularios MDI de Visual Basic. Dichas barras de desplazamiento aparecen automáticamente cuando la aplicación o el 
control contiene más información de la que se puede presentar con el tamaño actual de la ven tana (o bien, en el caso de los 
cuadros de texto y los formularios MDI, cuando la propiedad ScrollBars está establecida a True). 
En las versiones anteriores de Visual Basic, las barras de desplazamiento se solían utilizar como dispositivos de entrada. 
Sin embargo, las recomendaciones de la interfaz de Windows sugieren ahora que se utilicen como dispositivos de entrada 
los controles Slider en lugar de los controles ScrollBar. El control Slider de Windows 95 se incluye en la Edición 
Profesional y la Edición Empresarial de Visual Basic. 
Los controles ScrollBar siguen siendo útiles en Visual Basic porque proporcionan capacidad de desplazamiento a las 
aplicaciones o a los controles que no la proporcionan de forma automática. 
Los controles ScrollBar utilizan los eventos Scroll y Change para supervisar el movimiento del cuadro de desplazamiento a 
lo largo de la barra de desplazamiento. 
Evento Descripción 
Change Ocurre después de mover el cuadro de desplazamiento. 
 No es conveniente permitir que los objetos Collection decidan si el valor que están recibiendo es un índice o 
una clave. Si deseamos que un valor se interprete como clave y la variable que contiene el valor no es de tipo 
String, debemos utilizar CStr para convertirla. Si deseamos que un valor se interprete como índice y la variable 
que contiene el valor no es de un tipo de datos numéricos, debemos utilizar CLng para convertirla. 
36
Colegio José de Escandón La Salle Algoritmos y Programación 
Scroll Ocurre al mover el cuadro de desplazamiento. No ocurre si 
37 
se hace clic en las flechas o en la barra de desplazamiento. 
El evento Scroll proporciona acceso al valor de la barra de desplazamiento cuando ésta se arrastra. El evento Change se 
produce después de liberar el cuadro de desplazamiento o cuando se hace clic en la barra o en las flechas de 
desplazamiento. 
La propiedad Value (que de forma predeterminada es 0) es un valor entero que se corresponde con la posición del cuadro 
de desplazamiento dentro de la barra de desplazamiento. Cuando la posición del cuadro de desplazamiento tiene el valor 
mínimo, éste se mueve a la posición situada más a la izquierda (en las barras de desplazamiento horizontal) o a la posición 
más alta (en las barras de desplazamiento vertical). Cuando el cuadro de desplazamiento tiene el valor máximo, se mueve a 
la posición situada más a la derecha o a la más baja. De forma similar, un valo r a medio camino entre los límites del 
intervalo coloca el cuadro de desplazamiento en la mitad de la barra de desplazamiento. 
Además de utilizar los clics del ratón para cambiar el valor de la barra de desplazamiento, el usua rio también puede arrastrar 
el cuadro de desplazamiento a cualquier posición de la barra. El valor resultante depende de la posición del cuadro de 
desplazamiento, pero siempre se encuentra dentro del intervalo definido por las propiedades Min y Max establecidas por el 
usuario. 
Más conceptos de clases: eventos Initialize y Terminate 
Todas las clases proporcionan dos eventos predefinidos: Initialize y Terminate. 
Normalmente el procedimiento de evento Initialize contiene el código que se ejecuta en el momento de la creación del 
objeto. 
El evento Terminate suele contiene el código necesario para liberar el objeto cuando éste se destruye. Supone una 
buena norma de programación asegurarnos, utilizando este método, que toda la memoria utilizada por un objeto se libera 
en el momento de su destrucción. 
Ejemplo propuesto 
Objetivo 
El objetivo es crear una agenda de teléfonos en la que podamos consultar fácilmente las fichas, así como insertar nuevas 
fichas o borrar fichas existentes. 
Para ello, crearemos una nueva clase ClaAgenda: 
 Propiedades: 
 ColFichas: colección de las fichas almacenadas en la agenda 
 Métodos: 
 Property IntNumFichas: devuelve el número de fichas almacenadas en la agenda 
 Function CrearFicha(StrNombre, StrApellidos, StrDireccion, StrTelefono) as Integer: crea una nueva ficha 
y la inserta en la colección ColFichas. Devuelve el número de la ficha. 
 Function BorrarFicha(IntNumFicha): borra la ficha cuyo número se pasa como argumento. 
 Function Ficha(IntIndice) As ClaFicha: devuelve la ficha correspondiente a la posición IntIndice en la 
colección de fichas ColFichas 
 Sub Class_Terminate(): eliminaremos todas las fichas de la colección ColFichas, así como la propia colección, 
antes de que el objeto se elimine de memoria 
En el formulario podremos realizar tres acciones: 
 Crear una nueva ficha: primero pulsaremos el botón Nueva ficha, con lo que se borrarán los cuadros de texto y se 
incrementará el límite superior de la barra de scroll. Una vez introducidos los da tos de la nueva ficha, pulsaremos el 
botón Crear ficha, donde se llamará al método CrearFicha de la clase ClaAgenda, obteniendo el número de ficha 
resultante, que nos servirá para poder borrarla en caso necesario. 
 Consultar una ficha existente: utilizando la barra de scroll podremos consultar todas las fichas de la agenda. Cada vez 
que cambie el valor de la barra de scroll, actualizaremos el formulario para mostrar los datos de la ficha correspondiente
Colegio José de Escandón La Salle Algoritmos y Programación 
(por ejemplo, si el valor de la barra de scroll es 3, mostraremos la cuarta ficha de la colección; hay que recordar que el 
límite inferior de la barra de scroll es 0, mientras que una colección empieza en 1). Cada vez que cambiemos de ficha, 
actualizaremos el número de la ficha actual. 
 Borrar la ficha actual: utilizaremos el número de ficha actual para llamar al método BorrarFicha de la clase 
ClaAgenda. Decrementaremos el límite máximo de la barra de scroll, y actualizaremos el formulario para que muestra 
los datos de la ficha siguiente o anterior a la borrada. 
38
Colegio José de Escandón La Salle Algoritmos y Programación 
Desarrollo del ejemplo 
1. Crearemos el siguiente formulario: 
2. Crearemos una clase Agenda con una propiedad privada ColFichas de tipo Collection, que no tendrá métodos 
Property asociados. Crearemos un método Property Get llamado IntNumFichas que nos devuelva el número de 
fichas de la colección ColFichas. 
3. Implementaremos un método público CrearFicha que recibe como argumentos el nombre, apellido, dirección y teléfono 
y crea una ficha nueva (utilizaremos la clase Ficha definida en el ejemplo 3), asignándole un número (este número será 
una es pecie de “campo autonumérico”, que generaremos incrementalmente). Además de crear la nueva ficha, la 
introduce en la colección ColFichas, poniendo como clave el número de la ficha (como la clave tiene que se r una 
cadena, hay que hacer la conversión a string de dicho número). 
4. Implementaremos también un método público BorrarFicha, que recibe como argumento la clave de la ficha que 
queremos eliminar. Este método elimina la ficha de memoria y también de la colección. 
5. También crearemos un método público Ficha, que recibe como argumento el índice de la ficha dentro de la colección 
ColFichas y devuelve la ficha correspondiente. 
6. Como último elemento de la clase, en el evento Terminate liberaremos todo el espacio de memoria que podamos tener 
reservado para las fichas y la colección. 
7. En el formulario crearemos un objeto de la clase Agenda, y una variable IntNumFichaActual que indicará el número de 
la ficha cuyos datos aparecen en el formulario. Como estas variables van a ser utilizadas en todas las funciones del 
formulario, las crearemos como variables globales del formulario. 
8. Al puls ar el botón “Nueva ficha”, debemos aumentar la propiedad Max de la barra de scroll, posicionarnos en el último 
elemento y limpiar los datos (nombre, apellidos, dirección y teléfono), preparando el formulario para insertar una nueva 
ficha. (¡Ojo!: para la primera ficha, no es necesario incrementar el límite máximo de la barra de scroll, ni limpiar el 
formulario). 
9. Una vez ins ertados los datos de la nueva ficha, puls aremos el botón “Crear ficha”, donde llamaremos al método 
CrearFicha del objeto Agenda y actualizaremos el título del frame, donde pondrá “Ficha N” (s iend o N el número de la 
nueva ficha, que obtendremos como valor de retorno del método CrearFicha). 
10. Cada vez que cambie la barra de scroll (evento Change) debemos actualizar los datos del formulario, mostrando la 
información de la ficha correspondiente en la colección ColFichas del objeto Agenda. Crearemos una función 
ActualizarBarraScroll que se encargará de ello (¡Ojo!: la función debe comprobar si hay fichas en la colección, y 
también si estamos insertando una ficha nueva, en cuyo caso en lugar de actualizar los datos del formulario, los 
limpiará.). También tenemos que obtener el número de la ficha actual. 
39
Colegio José de Escandón La Salle Algoritmos y Programación 
11. Cuando puls emos el botón “Borrar ficha” llamaremos al método BorrarFicha del objeto Agenda pas ándole el número de 
la ficha actual. Una vez borrada, decrementaremos el valor máximo de la barra de scroll (¡Ojo!: cuidado cuando 
borramos la última ficha) y actualizaremos los datos del formulario llamando a la función ActualizarBarraScroll. 
12. Para terminar, sólo nos falta controlar cuando están habilitados los cuadros de texto, los botones y demás elementos 
para que quede lo más coherente posible. 
Ejemplo Resuelto 
Formulario 
'_______________________________________________________________________ 
' Ejemplo 4 del Curso de Visual Basic Av anzado 
' 
' Def inición del f ormulario, este será el interf az del usuario. 
'_______________________________________________________________________ 
Option Explicit 
Dim ObjAgenda As New ClaAgenda 
Dim IntNumFichaActual As Integer 
Priv ate Sub ButBorrarFicha_Click() 
' Conf irmamos el borrado 
If MsgBox("¿Desea eliminar la f icha actual?", v bYesNo, "Borrado de f icha") = v bNo Then 
Exit Sub 
End If 
' Borramos la f icha actual 
ObjAgenda.BorrarFicha IntNumFichaActual 
' Actualizamos el número de elementos de la barra de scroll 
If ObjAgenda.IntNumFichas > 0 Then 
HScroll1.Max = ObjAgenda.IntNumFichas - 1 
40 
Else 
HScroll1.Max = 0 
End If 
' Actualizamos la barra de scroll 
ActualizarBarraScroll 
End Sub 
Priv ate Sub ButCrearFicha_Click() 
' Creamos una nuev a f icha con los datos introducidos por el 
' usuario, y obtenemos el código de la f icha creada 
IntNumFichaActual = ObjAgenda.CrearFicha(TxtNombre, TxtApellidos, TxtDireccion, _ 
TxtTelef ono) 
' Actualizamos el título del f rame 
Frame1.Caption = "Ficha " & IntNumFichaActual 
' Deshabilitamos el botón de crear f icha y el f rame 
ButCrearFicha.Enabled = False 
Frame1.Enabled = False 
' Habilitamos los botones de nuev a f icha y borrar 
' f icha, así como la barra de scroll 
ButNuev aFicha.Enabled = True 
ButBorrarFicha.Enabled = True 
HScroll1.Enabled = True 
End Sub 
Priv ate Sub ButNuev aFicha_Click() 
' Actualizamos la barra de scroll 
If ObjAgenda.IntNumFichas = 0 Then 
' Con la primera f icha creada, habilitamos 
' la barra de scroll 
HScroll1.Enabled = True 
Frame1.Enabled = True 
Else 
' Incrementamos el número de elementos de
Colegio José de Escandón La Salle Algoritmos y Programación 
' la barra de scroll 
HScroll1.Max = HScroll1.Max + 1 
HScroll1.Value = HScroll1.Max 
End If 
' Habilitamos el botón de crear f icha y el f rame 
ButCrearFicha.Enabled = True 
Frame1.Enabled = True 
' Deshabilitamos los botones de nuev a f icha y borrar 
' f icha, así como la barra de scroll 
ButNuev aFicha.Enabled = False 
ButBorrarFicha.Enabled = False 
HScroll1.Enabled = False 
End Sub 
Priv ate Sub Form_Load() 
' Deshabilitamos el f rame, la barra de scroll, 
' el botón de crear f icha y el botón de borrar f icha 
Frame1.Enabled = False 
HScroll1.Enabled = False 
ButCrearFicha.Enabled = False 
ButBorrarFicha.Enabled = False 
' Establecemos los límites de la barra de scroll 
HScroll1.Max = 0 
End Sub 
Priv ate Sub Form_Unload(Cancel As Integer) 
' Eliminamos la agenda 
Set ObjAgenda = Nothing 
End Sub 
Priv ate Sub HScroll1_Change() 
' Actualizamos la barra de scroll 
ActualizarBarraScroll 
End Sub 
Priv ate Function ActualizarBarraScroll() 
Dim ObjFicha As ClaFicha 
' Comprobamos si no hay f ichas o estamos creando una f icha nuev a 
If HScroll1.Max = ObjAgenda.IntNumFichas Then 
' Limpiamos los datos del f rame 
TxtNombre = v bNullString 
TxtApellidos = v bNullString 
TxtDireccion = v bNullString 
TxtTelef ono = v bNullString 
' Actualizamos el título del f rame 
Frame1.Caption = v bNullString 
' Deshabilitamos el botón de borrado 
ButBorrarFicha.Enabled = False 
41 
Else 
' Obtenemos la f icha correspondiente de la agenda 
' (buscamos por índice, no por código de f icha) 
Set ObjFicha = ObjAgenda.Ficha(HScroll1.Value + 1) 
' Sacamos los datos de la f icha 
TxtNombre = ObjFicha.StrNombre 
TxtApellidos = ObjFicha.StrApellidos 
TxtDireccion = ObjFicha.StrDireccion 
TxtTelef ono = ObjFicha.StrTelef ono 
' Actualizamos el código de la f icha actual 
IntNumFichaActual = ObjFicha.IntNumFicha 
' Actualizamos el f rame 
Frame1.Caption = "Ficha " & IntNumFichaActual 
End If 
End Function 
Clase Agenda 
'_______________________________________________________________________ 
' Ejemplo 4 del Curso de Visual Basic Av anzado 
' 
' Def inición de la clase AGENDA, aquí estarán los datos de cada agenda y los métodos
TEMARIO

Weitere ähnliche Inhalte

Was ist angesagt?

Ft 2800 m-spanish
Ft 2800 m-spanishFt 2800 m-spanish
Ft 2800 m-spanishpu2nbf
 
PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...
PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...
PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...SANTIAGO PABLO ALBERTO
 
Manual de usuario joomla
Manual de usuario joomlaManual de usuario joomla
Manual de usuario joomlaMerovingios
 
Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1Oscar Plá
 
Arquitectura hardware y software (1)
Arquitectura hardware y software (1)Arquitectura hardware y software (1)
Arquitectura hardware y software (1)AlejandroAlonsoPrez1
 
Manual lg optimus black
Manual lg optimus blackManual lg optimus black
Manual lg optimus blackAndres Tapia
 
Black berry curve_9380_smartphone-1319567078354_00028-7.1-es
Black berry curve_9380_smartphone-1319567078354_00028-7.1-esBlack berry curve_9380_smartphone-1319567078354_00028-7.1-es
Black berry curve_9380_smartphone-1319567078354_00028-7.1-esAshley Stronghold Witwicky
 
Top school guia_paso_a_paso_v1.0
Top school guia_paso_a_paso_v1.0Top school guia_paso_a_paso_v1.0
Top school guia_paso_a_paso_v1.0Gabriel Rodríguez
 
Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...
Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...
Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...camivalen
 
Black berry curve 8520
Black berry curve 8520Black berry curve 8520
Black berry curve 8520catalan21
 
Manual usuario ECR SAMPOS ER-009
Manual usuario ECR SAMPOS ER-009Manual usuario ECR SAMPOS ER-009
Manual usuario ECR SAMPOS ER-009PCMIRA - ECR&POS
 
Manual usuario ECR SAMPOS ER-159
Manual usuario ECR SAMPOS ER-159Manual usuario ECR SAMPOS ER-159
Manual usuario ECR SAMPOS ER-159PCMIRA - ECR&POS
 

Was ist angesagt? (17)

FUNCIONES DEL TECLADO
FUNCIONES DEL TECLADOFUNCIONES DEL TECLADO
FUNCIONES DEL TECLADO
 
Ft 2800 m-spanish
Ft 2800 m-spanishFt 2800 m-spanish
Ft 2800 m-spanish
 
Manual yaesu ft 1802
Manual yaesu ft 1802Manual yaesu ft 1802
Manual yaesu ft 1802
 
PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...
PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...
PLC: Diseño e implementación de un modulo de entrenamiento de automatización ...
 
Manual de usuario joomla
Manual de usuario joomlaManual de usuario joomla
Manual de usuario joomla
 
Pic gama-media
Pic gama-mediaPic gama-media
Pic gama-media
 
Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1Qc2235plus um e_1.1.1
Qc2235plus um e_1.1.1
 
Arquitectura hardware y software (1)
Arquitectura hardware y software (1)Arquitectura hardware y software (1)
Arquitectura hardware y software (1)
 
Manual lg optimus black
Manual lg optimus blackManual lg optimus black
Manual lg optimus black
 
Black berry curve_9380_smartphone-1319567078354_00028-7.1-es
Black berry curve_9380_smartphone-1319567078354_00028-7.1-esBlack berry curve_9380_smartphone-1319567078354_00028-7.1-es
Black berry curve_9380_smartphone-1319567078354_00028-7.1-es
 
V19 bphdesp tcm3-101762
V19 bphdesp tcm3-101762V19 bphdesp tcm3-101762
V19 bphdesp tcm3-101762
 
Tutorial alfresco
Tutorial alfrescoTutorial alfresco
Tutorial alfresco
 
Top school guia_paso_a_paso_v1.0
Top school guia_paso_a_paso_v1.0Top school guia_paso_a_paso_v1.0
Top school guia_paso_a_paso_v1.0
 
Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...
Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...
Trabajo del profe_de_comkputadpras_lmsauth_239ee32080e2c5c731afbf4bb266542f3b...
 
Black berry curve 8520
Black berry curve 8520Black berry curve 8520
Black berry curve 8520
 
Manual usuario ECR SAMPOS ER-009
Manual usuario ECR SAMPOS ER-009Manual usuario ECR SAMPOS ER-009
Manual usuario ECR SAMPOS ER-009
 
Manual usuario ECR SAMPOS ER-159
Manual usuario ECR SAMPOS ER-159Manual usuario ECR SAMPOS ER-159
Manual usuario ECR SAMPOS ER-159
 

Andere mochten auch

De el tiempo a el tiempo
De el tiempo a el tiempoDe el tiempo a el tiempo
De el tiempo a el tiempoEnrique Delgado
 
Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...
Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...
Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...NAXOS Deutschland GmbH
 
Introducción a la célula
Introducción a la célulaIntroducción a la célula
Introducción a la célulamerchealari
 
Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...
Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...
Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...INACAP
 
Kanban Board in Redmine mit Wiki Lists Plugin
Kanban Board in Redmine mit Wiki Lists PluginKanban Board in Redmine mit Wiki Lists Plugin
Kanban Board in Redmine mit Wiki Lists PluginAlphaNodes GmbH
 
NAXOS Deutschland CD Neuheiten Juni 2011
NAXOS Deutschland CD Neuheiten Juni 2011NAXOS Deutschland CD Neuheiten Juni 2011
NAXOS Deutschland CD Neuheiten Juni 2011NAXOS Deutschland GmbH
 
Violación
ViolaciónViolación
ViolaciónH-idy12
 
Historische tatsachen nr. 08 hans kehrl zum untergang des dritten reiches
Historische tatsachen nr. 08 hans kehrl zum untergang des dritten reichesHistorische tatsachen nr. 08 hans kehrl zum untergang des dritten reiches
Historische tatsachen nr. 08 hans kehrl zum untergang des dritten reichesRareBooksnRecords
 
Aviso convocatoria subasta licencias sistemas
Aviso convocatoria subasta licencias sistemasAviso convocatoria subasta licencias sistemas
Aviso convocatoria subasta licencias sistemasmcriverah
 
Unidad deportiva belén
Unidad deportiva belénUnidad deportiva belén
Unidad deportiva belénablandon7
 

Andere mochten auch (20)

De el tiempo a el tiempo
De el tiempo a el tiempoDe el tiempo a el tiempo
De el tiempo a el tiempo
 
Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...
Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...
Blu-ray, DVD- und CD-Neuheiten Februar 2014 Nr. 2 (Im Vertrieb der NAXOS Deut...
 
Reglamento jc f
Reglamento jc fReglamento jc f
Reglamento jc f
 
Introducción a la célula
Introducción a la célulaIntroducción a la célula
Introducción a la célula
 
Tierische Neujahrswünsche
Tierische NeujahrswünscheTierische Neujahrswünsche
Tierische Neujahrswünsche
 
NAXOS-Neuheiten im Dezember 2012
NAXOS-Neuheiten im Dezember 2012NAXOS-Neuheiten im Dezember 2012
NAXOS-Neuheiten im Dezember 2012
 
Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...
Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...
Sr. Marcelo Román, "Crecimiento en un contexto de ecasez de Capital Humano en...
 
Grados técnicos comfacauca
Grados técnicos comfacaucaGrados técnicos comfacauca
Grados técnicos comfacauca
 
Kanban Board in Redmine mit Wiki Lists Plugin
Kanban Board in Redmine mit Wiki Lists PluginKanban Board in Redmine mit Wiki Lists Plugin
Kanban Board in Redmine mit Wiki Lists Plugin
 
Base de datos
Base de datosBase de datos
Base de datos
 
Präsi owncloud
Präsi owncloudPräsi owncloud
Präsi owncloud
 
Weerth: Das neue Ausfuhrverfahren, 1. Auflage 2005, Leseprobe
Weerth: Das neue Ausfuhrverfahren, 1. Auflage 2005, LeseprobeWeerth: Das neue Ausfuhrverfahren, 1. Auflage 2005, Leseprobe
Weerth: Das neue Ausfuhrverfahren, 1. Auflage 2005, Leseprobe
 
NAXOS Deutschland CD Neuheiten Juni 2011
NAXOS Deutschland CD Neuheiten Juni 2011NAXOS Deutschland CD Neuheiten Juni 2011
NAXOS Deutschland CD Neuheiten Juni 2011
 
Beispiel EIB 2
Beispiel EIB 2Beispiel EIB 2
Beispiel EIB 2
 
Violación
ViolaciónViolación
Violación
 
Historische tatsachen nr. 08 hans kehrl zum untergang des dritten reiches
Historische tatsachen nr. 08 hans kehrl zum untergang des dritten reichesHistorische tatsachen nr. 08 hans kehrl zum untergang des dritten reiches
Historische tatsachen nr. 08 hans kehrl zum untergang des dritten reiches
 
Explorar para investigar
Explorar para investigarExplorar para investigar
Explorar para investigar
 
Aviso convocatoria subasta licencias sistemas
Aviso convocatoria subasta licencias sistemasAviso convocatoria subasta licencias sistemas
Aviso convocatoria subasta licencias sistemas
 
Unidad deportiva belén
Unidad deportiva belénUnidad deportiva belén
Unidad deportiva belén
 
Periodico de mi vida
Periodico de mi vidaPeriodico de mi vida
Periodico de mi vida
 

Ähnlich wie TEMARIO

Archivos para subir a slideshare
Archivos para subir a slideshareArchivos para subir a slideshare
Archivos para subir a slidesharemelvamontelongoc
 
Implementacion red con mikrotik
Implementacion red con mikrotikImplementacion red con mikrotik
Implementacion red con mikrotikMarco Arias
 
Manual de Tecnicas Para Auditoria Informatica
Manual de Tecnicas Para Auditoria InformaticaManual de Tecnicas Para Auditoria Informatica
Manual de Tecnicas Para Auditoria InformaticaDiego Pacheco
 
Control digital: Control digital MATLAB.pdf
Control digital: Control digital MATLAB.pdfControl digital: Control digital MATLAB.pdf
Control digital: Control digital MATLAB.pdfSANTIAGO PABLO ALBERTO
 
15225891 Manual De Integracion V10
15225891 Manual De Integracion V1015225891 Manual De Integracion V10
15225891 Manual De Integracion V10guest1b9f18d3
 
Seccion 13340 sistema de control distribuido
Seccion 13340 sistema de control distribuidoSeccion 13340 sistema de control distribuido
Seccion 13340 sistema de control distribuidoMICITT
 
Teamviewer manual es[1]
Teamviewer manual es[1]Teamviewer manual es[1]
Teamviewer manual es[1]Raul Mendoza
 
Teamviewer manual en Español
Teamviewer manual en EspañolTeamviewer manual en Español
Teamviewer manual en EspañolCarlos Ceballos
 
Informe2 reto3 grupo_castellano
Informe2 reto3 grupo_castellanoInforme2 reto3 grupo_castellano
Informe2 reto3 grupo_castellanoandramari_teleko
 
Avanzado excel
Avanzado excelAvanzado excel
Avanzado excelrfms07
 
Creacion mapasconceptuales
Creacion mapasconceptualesCreacion mapasconceptuales
Creacion mapasconceptualeslalitamarin
 
Fedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-esFedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-esdionisio
 
Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...
Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...
Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...Agustín Hv
 

Ähnlich wie TEMARIO (20)

Archivos para subir a slideshare
Archivos para subir a slideshareArchivos para subir a slideshare
Archivos para subir a slideshare
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Control digital con matlab
Control digital con matlabControl digital con matlab
Control digital con matlab
 
Admo0553
Admo0553Admo0553
Admo0553
 
Implementacion red con mikrotik
Implementacion red con mikrotikImplementacion red con mikrotik
Implementacion red con mikrotik
 
Manual del usuario bizagi
Manual del usuario bizagiManual del usuario bizagi
Manual del usuario bizagi
 
Manual de Tecnicas Para Auditoria Informatica
Manual de Tecnicas Para Auditoria InformaticaManual de Tecnicas Para Auditoria Informatica
Manual de Tecnicas Para Auditoria Informatica
 
Contenido
Contenido Contenido
Contenido
 
Control digital: Control digital MATLAB.pdf
Control digital: Control digital MATLAB.pdfControl digital: Control digital MATLAB.pdf
Control digital: Control digital MATLAB.pdf
 
Antologia de IA
Antologia de IAAntologia de IA
Antologia de IA
 
15225891 Manual De Integracion V10
15225891 Manual De Integracion V1015225891 Manual De Integracion V10
15225891 Manual De Integracion V10
 
Seccion 13340 sistema de control distribuido
Seccion 13340 sistema de control distribuidoSeccion 13340 sistema de control distribuido
Seccion 13340 sistema de control distribuido
 
Teamviewer manual es[1]
Teamviewer manual es[1]Teamviewer manual es[1]
Teamviewer manual es[1]
 
Teamviewer manual en Español
Teamviewer manual en EspañolTeamviewer manual en Español
Teamviewer manual en Español
 
Informe2 reto3 grupo_castellano
Informe2 reto3 grupo_castellanoInforme2 reto3 grupo_castellano
Informe2 reto3 grupo_castellano
 
Avanzado excel
Avanzado excelAvanzado excel
Avanzado excel
 
Cruzsoft Project Manager
Cruzsoft Project ManagerCruzsoft Project Manager
Cruzsoft Project Manager
 
Creacion mapasconceptuales
Creacion mapasconceptualesCreacion mapasconceptuales
Creacion mapasconceptuales
 
Fedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-esFedora 14-software management-guide-es-es
Fedora 14-software management-guide-es-es
 
Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...
Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...
Herramientas ARToolKit Implementadas en el Proyecto de Realidad Aumentada TAp...
 

Kürzlich hochgeladen

Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaElizabethLpezSoto
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024anasofiarodriguezcru
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskbydaniela5
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalEmanuelCastro64
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfJoseAlejandroPerezBa
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdflauralizcano0319
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 

Kürzlich hochgeladen (20)

Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestría
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Trabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamentalTrabajo de tecnología liceo departamental
Trabajo de tecnología liceo departamental
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 

TEMARIO

  • 1. Temario INTRODUCCIÓN AL DISEÑO DE ALGORITMOS ........................................................................................................................................ 3 PROCESO DE INFORMACIÓN EN LA COMPUTADORA ........................................................................................................................... 3 ORGANIZACIÓN FÍSICA DE UNA COMPUTADORA ................................................................................................................................. 3 CPU................................................................................................................................................................................................................... 3 DEFINICIÓN DE LENGUAJE ............................................................................................................................................................................... 3 LENGUAJES ALGORITMICOS ............................................................................................................................................................................. 4 TIPOS DE LENGUAJES ALGORITMICOS ..................................................................................................................................................... 4 DEFINICIÓN DEL PROBLEMA ............................................................................................................................................................................ 4 ANÁLISIS DEL PROBLEMA................................................................................................................................................................................. 4 DISEÑO DEL ALGORITMO................................................................................................................................................................................. 4 CODIFICACIÓN ................................................................................................................................................................................................ 4 PRUEBA Y DEPURACIÓN .................................................................................................................................................................................. 4 DOCUMENTACIÓN .......................................................................................................................................................................................... 5 MANTENIMIENTO ........................................................................................................................................................................................... 5 ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS .................................................................................................... 5 TIPOS DE DATOS.............................................................................................................................................................................................. 5 NUMÉRICOS ................................................................................................................................................................................................... 5 TIPOS DE DATOS SIMPLES................................................................................................................................................................................ 5 OPERADORES Y OPERANDOS ..................................................................................................................................................................... 6 ARITMÉTICOS ................................................................................................................................................................................................. 6 OPERANDO (OPERADOR) OPERANDO...................................................................................................................................................... 6 VALOR.............................................................................................................................................................................................................. 6 OPERADORES ARITMÉTICOS....................................................................................................................................................................... 6 PRIORIDAD DE LOS OPERADORES ARITMÉTICOS ................................................................................................................................................ 7 OPERADORES RELACIÓNALES .................................................................................................................................................................... 7 OPERADORES RELACIÓNALES .................................................................................................................................................................... 7 OPERADORES LÓGICOS.................................................................................................................................................................................... 7 OPERADORES LÓGICOS................................................................................................................................................................................ 7 OPERADOR AND ............................................................................................................................................................................................ 7 OPERADOR OR............................................................................................................................................................................................... 8 OPERADOR NOT ............................................................................................................................................................................................ 8 PRIORIDAD DE LOS OPERADORES LÓGICOS............................................................................................................................................ 8 NOT .................................................................................................................................................................................................................. 8 PRIORIDAD DE LOS OPERADORES EN GENERAL ..................................................................................................................................... 8 EJEMPLOS: ...................................................................................................................................................................................................... 8 IDENTIFICADORES ......................................................................................................................................................................................... 9 EJEMPLO: NOMBRE............................................................................................................................................................................... 9 REGLAS PARA FORMAR UN IDENTIFICADOR ....................................................................................................................................................... 9 CONSTANTES Y VARIABLES ......................................................................................................................................................................... 9 LAS VARIABLES SON : EL RADIO, EL ÁREA Y LA CONSTATE ES PI ........................................................................................................ 9 CLASIFICACIÓN DE LAS VARIABLES ........................................................................................................................................................... 9 NUMÉRICAS.................................................................................................................................................................................................... 9 DE TRABAJO ................................................................................................................................................................................................... 9 POR SU CONTENIDO........................................................................................................................................................................................ 9 POR SU USO .................................................................................................................................................................................................10 TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS........................................................................................................................10 DIAGRAMA DE FLUJO ....................................................................................................................................................................................10 RECOMENDACIONES PARA EL DISEÑO DE DIAGRAMAS DE FLUJO ..................................................................................................11 PSEUDOCODIGO............................................................................................................................................................................................11 VENTAJAS DE UTIL IZAR UN PSEUDOCODIGO A UN DIAGRAMA DE FLUJO ....................................................................................11 ESTRUCTURAS ALGORITMICAS ................................................................................................................................................................11
  • 2. ESTRUCTURAS SECUENCIALES ........................................................................................................................................................................12 PROBLEMAS SECUENCIALES .....................................................................................................................................................................12 ESTRUCTURAS DE CONDICIONALES ........................................................................................................................................................15 SIMPLES .......................................................................................................................................................................................................15 DOBLES ........................................................................................................................................................................................................15 PROBLEMAS SELECTIVOS SIMPLES..................................................................................................................................................................16 ESTRUCTURAS CÍCLICAS.............................................................................................................................................................................16 PROBLEMAS ( HACER PARA )....................................................................................................................................................................17 CICLOS CON UN NUMERO INDETERMINADO DE ITERACIONES ( HACER-MIENTRAS, REPETIR-HASTA)...................................18 FORMULARIOS Y EVENTOS .......................................................................................................................................................................19 INTRODUCCIÓN.............................................................................................................................................................................................19 CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................19 FORMULARIOS, CONTROLES Y EVENTOS...............................................................................................................................................19 CICLO DE VIDA DE UN FORMULARIO......................................................................................................................................................21 LA VENTANA DEBUG ..................................................................................................................................................................................21 IDENTIFICACIÓN DE OBJETOS (CONTROLES) EN UN FORMULARIO .................................................................................................23 INTRODUCCIÓN.............................................................................................................................................................................................23 CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................23 CÓMO UTILIZAR CONTROLES: EVENTOS Y PROPIEDADES .................................................................................................................23 CONTROLES COMUNES: LABEL, TEXTBOX, COMMANDBUTTON, CHECKBOX................................................................................24 IDENTIFICAR EL TIPO DE UN CONTROL...................................................................................................................................................24 COLECCIÓN CONTROLS DE UN FORMULARIO .......................................................................................................................................26 CLASES Y OBJETOS ......................................................................................................................................................................................27 INTRODUCCIÓN.............................................................................................................................................................................................27 CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................27 LOS OBJETOS EN VISUAL BASIC................................................................................................................................................................27 CONCEPTO DE ENCAPSULACIÓN (PUBLIC V.S. PRIVATE)....................................................................................................................28 UTILIZACIÓN DE VARIABLES DE OBJETO ................................................................................................................................................28 INSTRUCCIÓN PROPERTY ..........................................................................................................................................................................28 VARIABLES ESTÁTICAS ...............................................................................................................................................................................29 CLASES Y OBJETOS ......................................................................................................................................................................................33 INTRODUCCIÓN.............................................................................................................................................................................................33 CONOCIMIENTOS TEÓRICOS...........................................................................................................................................................................33 CÓMO CREAR COLECCIONES DE OBJETOS: LA CLASE COLLECTION ..................................................................................................33 PROPIEDADES Y MÉTODOS DEL OBJETO COLLECTION .......................................................................................................................................33 CÓMO ACCEDER A LOS ELEMENTOS DE UNA COLECCIÓN: CLAVES E ÍNDICES ......................................................................................................34 AGREGAR ELEMENTOS A UNA COLECCIÓN.......................................................................................................................................................34 ELIMINACIÓN DE ELEMENTOS DE UNA COLECCIÓN...........................................................................................................................................35 RECUPERACIÓN DE ELEMENTOS DE UNA COLECCIÓN........................................................................................................................................35 CONTROL HSCROLLBAR ................................................................................................................................................................................36 MÁS CONCEPTOS DE CLASES: EVENTOS INITIALIZE Y TERMINATE ......................................................................................................................37
  • 3. Colegio José de Escandón La Salle Algoritmos y Programación Introducción al Diseño de Algoritmos La computadora no solamente es una maquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora además de lo anterior también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Mas aun, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos. El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones. A las soluciones creadas por computadora se les conoce como programas y no son mas que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema especif ico. Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de manera especifica las funciones que puede realizar la computadora y las formas en que se pueden manejar los elementos que hay en la misma. Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una salida (output). 3 Proceso de información en la computadora Datos de Proceso Datos de entrada salida Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas secuencialmente resuelven un problema especifico. Organización física de una computadora CPU Unida de Unidad Dispositivos de Control Arit.-Log. Dispositivos de Entrada Salida Memoria Definición de Lenguaje Lenguaje: Es una serie de símbolos que sirven para transmitir uno o mas mensajes (ideas) entre dos entidades diferentes. A la transmisión de mensajes se le conoce comúnmente como comunicación. Lenguajes de Programación Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación. Definición de Algoritmo La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
  • 4. Colegio José de Escandón La Salle Algoritmos y Programación Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema especifico. Lenguajes Algoritmicos Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. 4 Tipos de Lenguajes Algoritmicos  Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).  No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocodigo). Metodología para la solución de problemas por medio de computadora Definición del Problema Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Análisis del Problema Una vez que se ha comprendido lo que se desea de la computadora, es necesario defi nir: Los datos de entrada. Cual es la información que se desea producir (salida) Los métodos y fórmulas que se necesitan para procesar los datos. Una recomendación muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. Diseño del Algoritmo Las características de un buen algoritmo son: Debe tener un punto particular de inicio. Debe ser definido, no debe permitir dobles interpretaciones. Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición del problema. Debe ser finito en tamaño y tiempo de ejecución. Codificación La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocodigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un l enguaje de programación o lenguaje de alto nivel. Prueba y Depuración Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.
  • 5. Colegio José de Escandón La Salle Algoritmos y Programación La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuración, ya que de este trabajo depende el éxito de nuestra solución. Documentación Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). Mantenimiento Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado. Entidades primitivas para el desarrollo de algoritmos Tipos de datos Todos los datos tienen un tipo as ociado con ellos . Un dato puede s er un s imple carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una variable. 5 Numéricos Simples Lógicos Alfanuméricos (string) Tipos de datos Arreglos (Vectores, Matrices) Estructurados Registros (Def. por el Archivos usuario) Apuntadores Tipos de Datos Simples  Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los números enteros y los reales. Este tipo de datos permiten realizar operaciones aritméticas comunes.  Datos Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos).  Datos Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas. Ejemplo:
  • 6. Colegio José de Escandón La Salle Algoritmos y Programación 6 “Ins tituto Tecnológico de Tuxtepec” “1997” Expresiones Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: a+(b + 3)/c Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las expresiones en: - Aritméticas - Relaciónales - Lógicas Operadores y Operandos  Operadores: Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores. Aritméticos Tipos de Operadores Relaciónales Lógicos  Operadores Aritméticos: Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes) Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Operando (Operador) Operando Valor (constante o variable) Operadores Aritméticos + Suma - Resta * Multiplicación / División Mod Modulo (residuo de la división entera) Ejemplos: Expresión Resultado 7 / 2 12 mod 7 4 + 2 * 5
  • 7. Colegio José de Escandón La Salle Algoritmos y Programación Prioridad de los Operadores Aritméticos Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se evalúa primero. Dentro de una misma expresión los operadores se evalúan en el siguiente orden. 1.- ^ Exponenciación 2.- *, /, mod Multiplicación, división, modulo. 3.- +, - Suma y resta. Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. Ejemplos: Operadores Relaciónales Se utilizan para establecer una relación entre dos valores. Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas) Tienen el mismo nivel de prioridad en su evaluación. Los operadores relaciónales tiene menor prioridad que los aritméticos. Operadores Relaciónales 7 > Mayor que < Menor que > = Mayor o igual que < = Menor o igual que < > Diferente = Igual Ejemplos: Si a = 10 b = 20 c = 30 a + b > c F a - b < c T a - b = c F b < > c T Ejemplos no lógicos: 4-8 a < b > c 10 < 20 < 30 T < 30 (no es lógico porque tiene diferentes operandos) Operadores Lógicos Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores pueden ser resultado de una expresión relacional. Operadores Lógicos And Y Or O Not Negación Operador And Operando1 Operador Operando2 Resultado T AND T T
  • 8. Colegio José de Escandón La Salle Algoritmos y Programación T F F F T F F F F Operador Or Operando1 Operador Operando2 Resultado T OR T T T F T F T T F F F Operador Not Operando Resultado T F F T Ejemplos: 8 (a < b) and (b < c) T T=T a=10 b=20 c=30 Prioridad de los Operadores Lógicos Not And Or Prioridad de los Operadores en General 1.- ( ) 2.- ^ 3.- *, /, Mod, Not 4.- +, -, And 5.- >, <, > =, < =, < >, =, Or Ejemplos: a = 10 b = 12 c = 13 d =10 1) ((a > b) or (a < c)) and ((a = c) or (a >= b)) 2) ((a > = b) or (a < d)) and (( a > = d) and (c > d)) 3) not (a = c) and (c > b)
  • 9. Colegio José de Escandón La Salle Algoritmos y Programación Identificadores Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que nos permite accesar a su contenido. Ejemplo:Nombre 9 Num_hrs Calif2 Reglas para formar un Identificador Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco. Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter. La longitud de identificadores puede ser de hasta 8 caracteres. Constantes y Variables  Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. Ejemplo: pi = 3.1416  Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. Ejemplo: area = pi * radio ^ 2 Las variables son : el radio, el área y la constate es pi Clasificación de las Variables Numéricas Por su ContenidoLógicas Alfanuméricas (String) Variables De Trabajo Por su Uso Contadores Acumuladores Por su Contenido  Variable Numéricas: Son aquellas en las cuales se almacenan valores numéricos, positivos o negativos, es decir almacenan números del 0 al 9, signos (+ y -) y el punto decimal. Ejemplo: iva=0.15 pi=3.1416 costo=2500  Variables Lógicas: Son aquellas que solo pueden tener dos valores (cierto o falso) estos representan el resultado de una comparación entre otros datos.
  • 10. Colegio José de Escandón La Salle Algoritmos y Programación  Variables Alfanuméricas: Esta formada por caracteres alfanuméricos (letras, números y caracteres especiales). Ejemplo: letra=’a’ apellido=’lopez’ direccion=’Av. Libertad #190’ Por su Uso  Variables de Trabajo: Variables que reciben el resultado de una operación matemática completa y que se usan normalmente dentro de un programa. Ejemplo: suma=a+b/c  Contadores: Se utilizan para llevar el control del numero de ocasiones en que se realiza una operación o se cumple una condición. Con los incrementos generalmente de uno en uno.  Acumuladores: Forma que toma una variable y que sirve para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. Técnicas para la formulación de algoritmos Diagrama de Flujo Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los pasos en la computadora para producir resultados. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI). SÍMBOLO DESCRIPCIÓN 10 Indica el inicio y el final de nuestro diagrama de flujo. Indica la entrada y salida de datos. Símbolo de proceso y nos indica la asignación de un valor en la memoria y/o la ejecución de una operación aritmética. Símbolo de decisión indica la realización de una comparación de valores. Se utiliza para representar los subprogramas. Conector dentro de pagina. Representa la continuidad del diagrama dentro de la misma pagina. Conector fuera de pagina. Representa la continuidad del diagrama en otra pagina.
  • 11. Colegio José de Escandón La Salle Algoritmos y Programación 11 Indica la salida de información por impresora. Indica la salida de información en la pantalla o monitor. Líneas de flujo o dirección. Indican la secuencia en que se realizan las operaciones. Recomendaciones para el diseño de Diagramas de Flujo Se deben se usar solamente líneas de flujo horizontales y/o verticales. Se debe evitar el cruce de líneas utilizando los conectores. Se deben usar conectores solo cuando sea necesario. No deben quedar líneas de flujo son conectar. Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha. Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras. Pseudocodigo Mezcla de lenguaje de programación y español (o ingles o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocodigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocodigo utiliza palabras que indican el proceso a realizar. Ventajas de utilizar un Pseudocodigo a un Diagrama de Flujo Ocupa menos espacio en una hoja de papel Permite representar en forma fácil operaciones repetitivas complejas Es muy fácil pasar de pseudocodigo a un programa en algún lenguaje de programación. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación. Estructuras algoritmicas Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en: - Asignación Secuenciales - Entrada - Salida - Simples Estructuras Condicionales Algoritmicas - Múltiples - Hacer para Cíclicas - Hacer mientras
  • 12. Colegio José de Escandón La Salle Algoritmos y Programación 12 - Repetir hasta Estructuras Secuenciales La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así suces ivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: Inicio Accion1 Accion2 . . AccionN Fin - Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:  Simples: Consiste en pasar un valor constate a una variable (a=15)  Contador: Consiste en usarla como un verificador del numero de veces que se realiza un proceso (a=a+1)  Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b)  De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a=c+b*2/4). - Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudocodigo como sigue: Leer a, b Donde “a” y “b” s on las variables que recibirán los valores Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue: Es cribe “El res ultado es :”, R Donde “El res ultado es :” es un mens aje que s e des ea aparezca y R es una variable qu e contiene un valor. Problemas Secuenciales Suponga que un individuo desea invertir su capital en un banco y desea saber cuanto dinero ganara después de un mes si el banco paga a razón de 2% mensual. Inicio Leer Imprimir Fin
  • 13. Colegio José de Escandón La Salle Algoritmos y Programación Un vendedor recibe un sueldo base mas un 10% extra por comisión de sus ventas, el vendedor desea saber cuanto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones. Inicio Leer Imprimir Fin Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar finalmente por su compra. Inicio 13 Leer Imprimir Fin Un alumno desea saber cual será su calificación final en la materia de Algoritmos. Dicha calificación se compone de los siguientes porcentajes: 55% del promedio de sus tres calificaciones parciales. 30% de la calificación del examen final. 15% de la calificación de un trabajo final. Inicio Leer
  • 14. Colegio José de Escandón La Salle Algoritmos y Programación Imprimir Fin 14
  • 15. Colegio José de Escandón La Salle Algoritmos y Programación Estructuras de Condicionales Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resultado de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos, las simples y las múltiples. Simples: Las estructuras condicionales s imples s e les conoce como “Tomas de decis ión”. Es tas tomas de decisión tienen la siguiente forma: Si <condición> entonces 15 Acción(es) Fin-si Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativa s posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: Si <condición> entonces Acción(es) si no Acción(es) Fin-si Donde: Si ………………… Indica el comando de comparación Condición………… Indica la condición a evaluar entonces……..…… Precede a las acciones a realizar cuando se cumple la condición acción(es)………… Son las acciones a realizar cuando se cumple o no la condición s i no……………… Precede a las acciones a realizar cuando no se cumple la condición Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones. Múltiples: Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten comparar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instrucciones especificas. La forma común es la siguiente: Si <condición> entonces Acción(es) si no Si <condición> entonces Acción(es) si no . . Varias condiciones . Forma General Casos Variable Op1: Acción(es) Op2: Acción(es) . . OpN: acción Fin-casos
  • 16. Colegio José de Escandón La Salle Algoritmos y Programación Problemas Selectivos Simples Un hombre desea saber cuanto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuanto dinero tendrá finalmente en su cuenta. Inicio Leer p_int, cap int = cap * p_int si int > 7000 entonces 16 capf = cap + int fin-si Imprimir capf fin Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario. Inicio Leer calif1, calif2, calif3 prom = (calif1 + calif2 + calif3)/3 Si prom >= 70 entonces Imprimir “alumno aprobado” si no Imprimir “alumno reprobado” Fin-si Fin En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿ Cual será la cantidad que pagara una persona por su compra? Inicio Leer compra Si compra > 1000 entonces desc = compra * 0.20 si no desc = 0 fin-si tot_pag = compra - desc imprimir tot_pag fin. Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera: Si trabaja 40 horas o menos se le paga $16 por hora Si trabaja mas de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. Inicio Leer ht Si ht > 40 entonces he = ht - 40 ss = he * 20 + 40 * 16 si no ss = ht * 16 Fin-si Imprimir ss Fin Estructuras Cíclicas
  • 17. Colegio José de Escandón La Salle Algoritmos y Programación Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad especifica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en: Ciclos con un Numero Determinado de Iteraciones (Hacer-Para) Son aquellos en que el numero de iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura es la siguiente: Hacer para V.C = L.I a L.S VC=LI 17 Accion1 Vc = LS V Accion2 vc=vc+1 . . F . AccionN Cuerpo del ciclo Fin-para Donde: V.C Variable de control del ciclo L.I Limite inferir L.S Limite superior En este ciclo la variable de control toma el valor inicial del ciclo y el ciclo se repite hasta que la variable de control llegue al limite superior. Problemas ( Hacer para ) Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de Diseño Estructurado de Algoritmos Inicio Sum=0 Leer Nom Hacer para c = 1 a 7 Leer calif Sum = sum + calif Fin-para prom = sum /7 Imprimir prom Fin. Leer 10 números y obtener su cubo y su cuarta. Inicio Hacer para n = 1 a 10 Leer num cubo = num * num * num cuarta = cubo * num Imprimir cubo, cuarta Fin-para Fin.
  • 18. Colegio José de Escandón La Salle Algoritmos y Programación Ciclos con un Numero Indeterminado de Iteraciones ( Hacer -Mientras, 18 Repetir-Hasta) Son aquellos en que el numero de iteraciones no se conoce con exactitud, ya que esta dado en función de un dato dentro del programa. Hacer-Mientras : Es ta es una es tructura que repetira un proces o durante “N” veces , donde “N” puede s er fijo o variable. Para esto, la instrucción se vale de una condición que es la que debe cumplirse para que se siga ejecutando. Cuando la condición ya no se cumple, entonces ya no se ejecuta el proceso. La forma de esta estructura es la siguiente: Hacer mientras <condición> Accion1 NO Accion2 CONDICION . . SI AccionN Fin-mientras Problemas (Hacer Mientras) CUERPO DEL CICLO Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base, y un 10% extra por comisiones de sus ventas. El gerente de su compañía desea saber cuanto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto tomando en cuenta su sueldo base y sus comisiones. En una empresa se requiere calcular el salario semanal de cada uno de los n obreros que laboran en ella. El salario se obtiene de la sig. forma: Si el obrero trabaja 40 horas o menos se le paga $20 por hora Si trabaja mas de 40 horas se le paga $20 por cada una de las primeras 40 horas y $25 por cada hora extra.
  • 19. Colegio José de Escandón La Salle Algoritmos y Programación Formularios y eventos Introducción El primer paso para crear una aplicación con Visual Basic es crear la interfaz, la parte visual de la aplicación con la que va a interactuar el usuario. Los formularios y controles son los elementos de desarrollo básicos que se usan para crear la interfaz; son los objetos con los que se trabaja para desarrollar la aplicación. Los formularios son objetos que exponen las propiedades que definen su apariencia, los métodos que definen su comportamiento y los eventos que definen la forma en que interactúan con el usuario. Mediante el establecimiento de las propiedades del formulario y la escritura de código de Visual Basic para responder a sus eventos se personaliza el objeto para cubrir las necesidades de la aplicación. Todos los lenguajes de programación para Windows comparten la misma característica: la orientación a eventos. Las aplicaciones creadas para Windows no siguen una estructura de ejecución lineal. Esto implica que un programa no va a seguir una secuencia fija de instrucciones, ejecutándose línea a línea, sino que debe responder a las acciones que el usuario, el sistema operativo u otras aplicaciones realizan sobre él; estas acciones se conocen en Visual Basic como eventos. Todos los elementos que podemos utilizar en la construcción de una aplicación en Visual Basic (formularios, controles ActiveX, etc) reciben unos eventos predeterminados como GetFocus, LostFocus o Activate. Podemos controlar estos eventos introduciendo el código que deseemos en la correspondiente subrutina de atención al evento. El objetivo de este capítulo es recordar los conocimientos básicos, pero imprescindibles, para el manejo de formularios en Visual Basic. Haremos incapié en el concepto de formulario como objeto, con sus propiedades, métodos y eventos. Se comprobará que un formulario sólo se elimina de memoria cuando se eliminan todas las referencias al mismo, exáctamente igual que cualquier objeto. Comentaremos especialmente los eventos que puede recibir un formulario, tanto en el proceso de carga como en la ejecución de la aplicación y en el proceso de descarga del mismo. Conocimientos teóricos Formularios, controles y eventos Los formularios y controles de Visual Basic son objetos que exponen sus propios métodos, propiedades y eventos. Las propiedades se pueden considerar como atributos de un objeto, los métodos como sus acciones y los eventos como sus respuestas. Un objeto de uso diario como el globo de un niño tiene también propiedades, métodos y eventos. Entre las propiedades de un globo se incluyen atributos visibles como el peso, el diámetro y el color. Otras propiedades describen su estado (inflado o desinflado) o atributos que no son visibles, como su edad. Por definición, todos los globos tienen estas propiedades; lo que varía de un globo a otros son los valores de estas propiedades. Un globo tiene también métodos o acciones inherentes que puede efectuar. Tiene un método inflar (la acción de llenarlo de helio) o un método desinflar (expeler su contenido) y un método elevarse (si se deja escapar). De nuevo, todos los globos pueden efectuar estos métodos. Los globos tienen además respuestas predefinidas a ciertos eventos externos. Por ejemplo, un globo respondería al evento de pincharlo desinflándose o al evento de soltarlo elevándose en el aire. Como objetos que son, los formularios pueden ejecutar métodos y responder a eventos. El evento Resize de un formulario se desencadena siempre que se cambia el tamaño de un formulario, ya sea por una acción del usuario o a través del código. Esto permite realizar acciones como mover o cambiar el tamaño de los controles de un formulario cuando han cambiado sus dimensiones. El evento Activate se produce siempre que un formulario se convierte en el formulario activo; el evento Deactivate se produce cuando otro formulario u otra aplicación se convierte en activo. Estos eventos son adecuados para iniciar o finalizar acciones del formulario. Por ejemplo, en el evento Activate podríamos escribir código para resaltar el texto de un determinado cuadro de texto; con el evento Deactivate podríamos guardar los cambios efectuados en un archivo o en una base de datos. 19
  • 20. Colegio José de Escandón La Salle Algoritmos y Programación 20
  • 21. Colegio José de Escandón La Salle Algoritmos y Programación Para hacer visible un formulario se invoca el método Show. Por ejemplo, la sentencia Form1.Show mostraría el formulario Form1. Invocar el método Show tiene el mismo efecto que establecer a True la propiedad Visible del formulario. Ciclo de vida de un formulario Comprender el ciclo de vida de un formulario es básico para el programador de Visual Basic, puesto que son estos elementos los que permitirán al usuario interactuar con la aplicación. Sólo comprendiendo qué acciones podrán realizarse sobre los formularios y en qué momentos podremos controlar adecuadamente la ejecución de nuestros programas. En la vida de un formulario puede pasar por cinco estados diferentes. En orden cronológico son:  Creado: el formulario existe como objeto, pero todavía no es visible. Cuando un formulario está si endo creado, se genera el evento Initialize. En esta fase del proceso de carga de un formulario no podemos actuar sobre los objetos que lo componen.  Cargado: ya podemos acceder a los controles del formulario, pero éste no es visible. Un formulario se encu entra en este estado en el proceso de carga, cuando se oculta o cuando se establece a False su propiedad Visible. Cuando se inicia el proceso de carga de un formulario, se genera el evento Load.  Mostrado: el estado normal de un formulario. Podemos acceder a todos los elementos que lo componen y podemos actuar sobre ellos, pues el formulario es visible. Durante este estado, cada vez que hay que repintar el formulario (por ejemplo, cuando una ventana que se ha situado sobre éste desaparece) se genera el even to Paint. Además, si el formulario recupera el foco después de haberlo perdido (por ejemplo, al cambiar a otra aplicación con Alt+Tab y volver después al formulario), se genera el evento Activate.  Descargado: una vez terminado este proceso el formulario no es visible, y sus componentes no son accesibles. El proceso de descarga se produce cuando se cierra el formulario (pulsando el botón , ejecutando el método Unload del formulario, etc). El proceso de descarga de un formulario, a su vez, generará dos eventos: QueryUnload y Unload (en este orden). En los dos eventos podemos detener el proceso de descarga estableciendo el valor del parámetro Cancel a cualquier número distinto de 0. En general, aprovecharemos estos eventos para liberar la memoria ocupada por los elementos que pertenecen al formulario antes de que este se cierre, salvar el trabajo que esté pendiente de guardado, etc.  Eliminado: aunque un formulario esté descargado, mientras existe cualquier referencia al mismo no será eliminado totalmente de memoria. Cuando se produce esta circunstancia (el formulario está descargado y nadie hace referencia a él) se genera el evento Terminate, y el formulario desaparece de memoria. La ventana Debug Si bien este elemento del entorno de desarrollo de Visual Basic no tiene una relación directa con el tema que se trata en este capítulo, queremos recordar su funcionalidad, puesto que para el programador es una herramienta importante en el proceso de desarrollo de una aplicación. 21
  • 22. Colegio José de Escandón La Salle Algoritmos y Programación En dicho proceso es necesario disponer de un elemento donde poder mostrar mensajes, valores de variables, etc. que nos ayuden en la depuración de los programas. El objeto Debug de Visual Basic nos permite escribir en la pantalla Inmediato (Debug Inmediate Window) utilizando el método Print. También podemos comprobar el valor de una variable si utilizamos la sentencia ?nombre_variable en la ventana Inmediato, o establecer dicho valor con la sentencia nombre_variable=valor Ejemplo propuesto Con este ejemplo veremos los estados por los que pasa un formulario durante su ciclo de vida. Además, comprobaremos cómo un formulario no se elimina de memoria hasta que no se liberan todas las referencias al mismo en el programa. 1. Crearemos los siguientes formularios 2. En el formulario 1, insertaremos código en las subrutinas Initialize, Load, Activate, Paint, QueryUnload, Unload y Terminate, para que cada vez que se lance el evento correspondiente mostremos en la ventana Debug el formulario sobre el que se ha generado el evento y el nombre del evento. 3. Añadiremos código en el Click del botón para mostrar el formulario 2. También mantendremos una referencia al formulario 2 (para evitar que se lance su evento Terminate al cerrarse). 4. Insertaremos código en las subrutinas Load, Unload y Terminate del formulario 2, para mostrar en la pantalla Debug el formulario y el evento que se produce en cada caso. Ejemplo resuelto Formulario 1 '_______________________________________________________________________ ' Ejemplo 1 del Curso de Visual Basic Av anzado ' ' El objetiv o de este ejemplo es reconocer los ev entos que un ' f ormulario puede recibir, así como el orden en el que se ' reciben '_______________________________________________________________________ Option Explicit Priv ate Sub Command1_Click() Dim FrmNuev oFormulario As Form ' Guardamos un enlace al f ormulario 2, para que no ' salte su Terminate cuando lo cerremos (saltará ' el Terminate del f ormulario 2 cuando salte el ' Terminate del f ormulario 1 y se pierda la ref erencia ' al segundo f ormulario) Set FrmNuev oFormulario = Formulario2 FrmNuev oFormulario.Show End Sub Priv ate Sub Form_Activ ate() Debug.Print "Formulario1: Ev ento Activ ate" 22
  • 23. Colegio José de Escandón La Salle Algoritmos y Programación End Sub Priv ate Sub Form_Initialize() Debug.Print "Formulario1: Ev ento Initialize" End Sub Sub Form_Load() Debug.Print "Formulario1: Ev ento Load" End Sub Priv ate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Debug.Print "Formulario1: Ev ento QueryUnload" End Sub Priv ate Sub Form_Paint() Debug.Print "Formulario1: Ev ento Paint" End Sub Priv ate Sub Form_Terminate() Debug.Print "Formulario1: Ev ento Terminate" End Sub Priv ate Sub Form_Unload(Cancel As Integer) Debug.Print "Formulario1: Ev ento Unload" End Sub Formulario 2 '_______________________________________________________________________ ' Ejemplo 1 del Curso de Visual Basic Av anzado ' ' El objetiv o de este ejemplo es reconocer los ev entos que un ' f ormulario puede recibir, así como el orden en el que se ' reciben '_______________________________________________________________________ Option Explicit Priv ate Sub Form_Load() Debug.Print "Formulario2: Ev ento Load" End Sub Priv ate Sub Form_Terminate() Debug.Print "Formulario2: Ev ento Terminate" End Sub Priv ate Sub Form_Unload(Cancel As Integer) Debug.Print "Formulario2: Ev ento Unload" End Sub Identificación de objetos (controles) en un formulario Introducción Los controles son objetos que están contenidos en los objetos de formularios. Cada tipo de control tiene su propio conjunto de propiedades, métodos y eventos, que lo hacen adecuado para una finalidad determinada. Algunos de los controles que puede usar en las aplicaciones son más adecuados para escribir o mostrar texto, mientras que otros controles permiten tener acceso a otras aplicaciones y procesan los datos como si la aplicación remota formara parte del código. Este capítulo presenta los conceptos básicos del trabajo con formularios y controles, y las propiedades, métodos y eventos que tienen asociados. Se explican también algunos de los controles estándar, y cómo es posible diferenciar en tiempo de ejecución los tipos de controles utilizados en nuestros formularios. Conocimientos teóricos Cómo utilizar controles: eventos y propiedades Un evento es una acción reconocida por un formulario o un control, es decir, un suceso que ha sido provocado por el usuario, el sistema operativo u otros programas en ejecución y que repercute en un elemento de nuestra aplicación. Por ejemplo, son eventos la pulsación de una tecla o el paso del puntero de ratón sobre un objeto. A través de los eventos podemos determinar el comportamiento del objeto con su entorno.). Las aplicaciones controladas por eventos ejecutan 23
  • 24. Colegio José de Escandón La Salle Algoritmos y Programación código Basic como respuesta a un evento. Cada formulario y control de Visual Basic tiene un conjunto de eventos predefinidos. Si se produce uno de dichos eventos y el procedimiento de evento asociado tiene código, Visual Basic llama a ese código. Aunque los objetos de Visual Basic reconocen automáticamente un conjunto predefinido de eventos, nostros decidimos cuándo y cómo se responderá a un evento determinado. A cada evento le corresponde una sección de código (un procedimiento de evento). Cuando deseamos que un control responda a un evento, escribimos códi go en el procedimiento de ese evento. Los tipos de eventos reconocidos por un objeto varían, pero muchos tipos son comunes a la mayoría de los controles. Por ejemplo, la mayoría de los objetos reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el código del procedimiento de evento Click del formulario; si un usuario hace clic en un botón de comando, se ejecuta el código del procedimiento de evento Click del botón. El código en cada caso será diferente. Las propiedades de los controles determinan su aspecto, cómo se mostrará al usuario. Estas propiedades definen sus atributos: color, tamaño, forma, etc. Al igual que en el caso de los eventos, los objetos de Visual Basic comparten una serie de propiedades comunes, como Name o Visible, y otras específicas de su tipo. Controles comunes: Label, TextBox, CommandButton, CheckBox En Visual Basic hay un conjunto de controles comunes que son usados en la gran mayoría de aplicaciones. En la siguiente tabla se muestra el uso normal de estos controles: Control Uso típico y descripción breve Label (Etiqueta) Mostrar un texto descriptivo que el usuario no 24 puede modificar. El texto se especifica en la propiedad Caption. TextBox (Cuadro de texto) Mostrar un texto que puede ser editado. La principal propiedad es Text, que determina el texto que se.muestra en dicho control. CommandButton (Botón) Comenzar o terminar un proceso. Cuando el usuario pulsa este botón, se produce el evento Click. CheckBox (Casilla de activación) Seleccionar una opción (no excluyente) de entre un conjunto de opciones. Su principal propiedad es Value, que indica si está seleccionada (1) o no (0). ListBox (Cuadro de lista) Seleccionar una valor dentro una lista. La propiedad Text determina el elemento seleccionado por el usuario. Identificar el tipo de un control Existen dos funciones que nos permiten identificar el tipo de control que estamos tratando: TypeName y TypeOf La función TypeName nos permite conocer el nombre de la clase a la que pertenece un objeto, lo que nos posibilita adecuar el código que escribimos al tipo de objeto que estemos tratando, así como crear funciones generales para diversos tipos de controles. Si tenemos un botón (CommandButton1) en nuestro formulario, utilizando la sentencia TypeName (CommandButton1) Obtendríamos la cadena "CommandButton", es decir, la clase a la que pertenece el botón. La función TypeOf es algo más restrictiva. Debe ir en una sentencia de condición (una sentencia del tipo if ... then ....). Esta función nos permite identificar la clase a la que perteneceel objeto, para poder operar en consecuencia. Un ejemplo de uso sería:
  • 25. Colegio José de Escandón La Salle Algoritmos y Programación If TypeOf MiControl Is CommandButton Then 25 ... else ... endif
  • 26. Colegio José de Escandón La Salle Algoritmos y Programación Colección Controls de un formulario Un formulario no es más que un lienzo donde se pintan controles. Es decir, podemos entender un formulario como un objeto que posee una colección de controles. Esta colección se llama Controls. Podemos acceder a cada uno de los controles de un formulario a través de esta colección. Sin necesidad de conocer a priori su nombre, bastaría recorrer toda la colección y hacer una rutina para lanzar el código a ejecutar para cada tipo de controles del formulario. Ejemplo propuesto En este ejemplo distinguiremos los tipos de objetos que tiene un formulario, accediendo a las propiedades del objeto en el que nos encontremos durante el recorrido de la colección de objetos. 1. Crearemos el siguiente formulario: 2. En el Load del formulario, insertaremos código para que una vez cargado el formulario tengamos en la ventana de Debug el nombre y el tipo de todos los objetos que se han cargado. 3. En función del tipo de objeto, cambiaremos su color de fondo:1  Label: rojo  CheckBox: verde  TextBox: azul  CommandButton: amarillo Ejemplo resuelto '_______________________________________________________________________ ' Ejemplo 2 del Curso de Visual Basic Av anzado '' El objetiv o de este ejemplo es identif icar los objetos contenidos' en un f ormulario y operar con ellos en f unción de su tipo. '_______________________________________________________________________ Option Explicit Priv ate Sub Form_Load() Dim ObjControl As Object ' Recorremos todos los controles del f ormulario For Each ObjControl In Me.Controls ' En f unción del tipo de control, cambiaremos su color de ' f ondo Select Case Ty peName(ObjControl) Case "Label" ObjControl.BackColor = v bRed Case "TextBox" ObjControl.BackColor = v bBlue Case "CheckBox" ObjControl.BackColor = v bGreen Case "CommandButton" ObjControl.BackColor = v bYellow End Select 1 Nota: para poder cambiar el color de fondo de un CommandButton, es necesario establecer a 1 (Graphical) su propiedad Style. 26
  • 27. Colegio José de Escandón La Salle Algoritmos y Programación ' Sacaremos su nombre y tipo de objeto a la pantalla ' Debug Debug.Print Ty peName(ObjControl) & ": " & ObjControl.Name Next ObjControl End Sub Clases y objetos Introducción Hasta ahora hemos visto los objetos que proporciona Visual Basic, pero nosotros también podemos crear objetos. En este capítulo se darán los conocimientos básicos necesarios para entender cómo podemos utilizar objetos en Visual Basic. Cada objeto de Visual Basic se define mediante una clase. Podemos entender las clases como un "modelo conceptual" de los objetos. Para comprender la relación entre un objeto y su clase, podemos pensar en un cubo de playa y un castillo de arena. El cubo es la clase. Define las características de cada castillo de arena, como su tamaño y forma. Se utiliza la clase para crear (instanciar) objetos. Los objetos son los castillos de arena y como era de esperar todos tienen las mismas propiedades y eventos. En el capítulo anterior hemos hablado de las propiedades y los eventos de un objeto. Pero además de estas características los objetos proporcionan un conjunto de métodos, que determinan las acciones que el objeto puede realizar. La programación orientada a objetos proporciona un enfoque totalmente distinto al utilizado en la programación clásica (estructuras, tipos de datos, programación secuencial...). Bien aplicada, la programación orientada a objetos minimiza el tiempo dedicado a la depuración de los programas, y facilita la reutilización del código. Así mismo este modelo de programación nos permite controlar qué características de nuestros objetos son visibles para las aplicaciones que los utilizan, lo que se denomina encapsulación. Conocimientos teóricos Los objetos en Visual Basic Los objetos están encapsulados; es decir, contienen su propio código y sus propios datos, lo cual facilita su mantenimiento más que los métodos de escritura de código tradicionales. Los objetos de Visual Basic tienen propiedades, métodos y eventos. Las propiedades son los datos que describen un objeto. Los métodos son lo que puede hacer con el objeto. Los eventos son tareas que realiza el objeto; podemos escribir código para ejecutarlo cuando se produzcan eventos. Los objetos de Visual Basic se crean a partir de clases; así, un objeto se dice que es una instancia de una clase. La clase define las interfaces de un objeto, si el objeto es público y en qué circunstancias se puede crear. Para utilizar un objeto tiene que mantener una referencia a él en una variable de objeto. El tipo de enlace determina la velocidad con la que se tiene acceso a los métodos de un objeto mediante la variable de objeto. Una variable de objeto puede ser un enlace en tiempo de compilación (el más lento) o un enlace en tiempo de diseño. Al conjunto de propiedades y métodos se le llama interfaz. La interfaz predeterminada de un objeto de Visual Basic es una interfaz dual que admite las formas de enlace anteriormente mencionadas. Si una variable de objeto está correctamente definida (es decir, Dim … As nombre_clase), utilizará la forma más rápida de enlace. Además de su interfaz predeterminada, los objetos de Visual Basic pueden implementar interfaces adicionales para proporcionar polimorfismo. El polimorfismo le permite manipular muchos tipos deferentes de objetos sin preocuparse de su tipo. Las interfaces múltiples son una característica del Modelo de objetos componentes (COM); permiten que los programas evolucionen con el tiempo, agregando nueva funcionalidad sin afectar al código existente. 27
  • 28. Colegio José de Escandón La Salle Algoritmos y Programación Concepto de encapsulación (Public v.s. Private) Una de las características más importantes de la programación orientada a objetos es el concepto de encapsulación: un objeto bien desarrollado es aquel que puede ser utilizado por otros elementos de forma eficiente, pero sin que éstos conozcan cómo funciona internamente. Esto nos permite cambiar la forma en que un objeto funciona sin que los elementos que utilizan el objeto noten dicho cambio. En Visual Basic, las propiedades y métodos de una clase pueden ser de dos tipos:  Public: accesibles por cualquier elemento del proyecto.  Private: accesibles sólo por los elementos de la clase donde están definidos. Utilización de variables de objeto Utilizar una variable de objeto es similar a utilizar una variable convencional, pero con un paso adicional: asignar un objeto a la variable. Primero, declararemos la variable con una sentencia Dim variable As clase Luego, asignaremos un objeto a esa variable, utilizando la instrucción Set: Set variable = objeto Pero atención: el objeto ha de existir para poder ser asignado a una variable de objeto. Es decir, previamente hemos tenido que utilizar la instrucción New, bien en la misma sentencia en la que declaramos la variable de objeto: Dim variable As New Clase O bien en otro lugar del código: Set variable = New Clase La sentencia New crea una instancia de la clase especificada (es decir, crea un objeto nuevo a partir del modelo que es la clase). Cuando ya no sean de utilidad necesitamos liberar la memoria y los recursos que los objetos consumen. En la mayoría de los casos el sistema operativo se encargará de esta tarea si se nos olvida a nosotros, pero no hay que conf iarse (podéis imaginar el rendimiento de una máquina en la que tengamos, por ejemplo, 5 instancias de Word al mismo tiempo...). Para liberar la memoria y los recursos que consume un objeto utilizaremos la sentencia: Set variable = Nothing Instrucción Property Como se mencionó anteriormente, es deseable que un elemento externo a un objeto no pueda acceder de forma incontrolada a sus propiedades. Podemos controlar esto creando todas las propiedades de tipo Private, pero... ¿y si queremos que sean accesibles por los elementos que utilicen el objeto, pero sin arriesgarnos a que éstos realicen acciones no permitidas?. Por ejemplo, podemos necesitar que el TPV (Terminal Punto de Venta) de una tienda pueda modificar el saldo de una tarjeta (lo que se correspondería con la compra de un cliente); sin embargo, no tiene sentido que dicho TPV permita al vendedor comprobar el saldo de la cuenta del cliente, o hacer una transferencia a su propia cuenta. Visual Basic permite acceder y modificar el valor de una propiedad privada a través de los procedimientos de propiedad o Property. Se proporcionan tres tipos de procedimientos: Procedimiento Propósito Property Get Devuelve el valor de una propiedad Property Let Establece el valor de una propiedad Property Set Establece el valor de una propiedad de objeto (es 28 decir, una propiedad que contiene una referencia a un objeto)
  • 29. Colegio José de Escandón La Salle Algoritmos y Programación Normalmente se define una pareja Property Get/Property Let por cada propiedad privada de una clase. Property Get nos permite acceder al valor almacenado en dicha propiedad, mientras que Property Let nos posibilita asignarle un valor. Property Set también permite establecer el valor de una propiedad privada. La diferencia entre este procedimiento y Property Let es el modo en el que se asigna valor a la propiedad. Visual Basic llama a Property Set si se utiliza la instrucción Set y a Property Let en caso contrario. Esta propiedad se utiliza para matener el estándar de los objetos, ya que para asignarles un val or se usa la palabra reservada Set. Variables estáticas Aunque este tema no está directamente relacionado con el tema del capítulo, queremos recordar este concepto para poder aplicarlo en el ejemplo propuesto. La vida de una variable está directamente relacionada con la forma y el lugar donde se declara. El valor de las variables declaradas a nivel de módulo y públicas se preserva durante todo el tiempo de ejecución. Sin embargo, las variables locales declaradas con Dim sólo existen mientras se ejecuta el procedimiento en el cual se han declarado. La próxima vez que se ejecute el procedimiento se reinicializarán todas sus variables locales. Sin embargo es posible preservar el valor de una variable local si se declara como estática, utilizando la palabra clave Static: Static nombre_variable as tipo_dato Ejemplo propuesto El objetivo de este ejemplo es conocer el proceso de creación e instanciación de una clase en Visual Basic. También se pretende que el lector se familiarice con el ciclo de vida de un objeto y la necesidad de liberar la memoria asociada con cada uno de los objetos creados. Para practicar estos conceptos crearemos una agenda telefónica básica. 1. Diseñaremos el siguiente formulario: 2. Definiremos una clase Ficha con cinco propiedades: nombre, apellidos, dirección, teléfono y número. Para cada una de las propiedades crearemos sus correspondientes métodos de propiedad Property Get y Property Let. 3. Implementaremos también un método Muestra() que muestre mediante un msgbox el valor de las propiedades de un objeto Ficha creado previamente. 29
  • 30. Colegio José de Escandón La Salle Algoritmos y Programación 4. En el formulario, una vez establecidas las propiedades de la ficha (nombre, apellidos...) se pulsará el botón para crear una nueva ficha. Será necesario crear un nuevo objeto de la clase Ficha y establecer sus propiedades. 5. Para establecer la propiedad número de la ficha, crearemos una variable estática que incrementaremos en una unidad cada vez que se pulse el botón, de forma que nunca creemos dos fichas con el mismo número. 6. Una vez creada la nueva ficha, llamaremos a su método Muestra(), para que nos enseñe el valor de sus propiedades. 7. Por último, no podemos olvidarnos de destruir el objeto creado igualándolo a Nothing. 30
  • 31. Colegio José de Escandón La Salle Algoritmos y Programación Ejemplo resuelto Formulario '_______________________________________________________________________ ' Ejemplo 3 del Curso de Visual Basic Av anzado ' ' El objetiv o de este ejemplo es familliarizarnos con el uso de objetos. '_______________________________________________________________________ Option Explicit Priv ate Sub ButCrearFicha_Click() Dim ObjFicha As ClaFicha Static IntNumFicha As Integer ' Creamos un nuev o objeto de la clase f icha Set ObjFicha = New ClaFicha ' Incrementamos el número de f ichas creadas IntNumFicha = IntNumFicha + 1 ' Establecemos las propiedades de la nuev a f icha ObjFicha.StrNombre = TxtNombre ObjFicha.StrApellidos = TxtApellidos ObjFicha.StrDireccion = TxtDireccion ObjFicha.StrTelef ono = TxtTelef ono ObjFicha.IntNumero = IntNumFicha ' Llamamos al método MetMostrar del objeto para ' que muestre los datos de la f icha ObjFicha.MetMostrar ' Eliminamos el objeto creado Set ObjFicha = Nothing End Sub Clase Ficha '_______________________________________________________________________ ' Ejemplo 3 del Curso de Visual Basic Av anzado ' ' Def inición de la clase FICHA, todos los objetos f ichas tendrán esta interf ace. '_______________________________________________________________________ Option Explicit ' Propiedades de la clase ClaFicha Priv ate VarIntNumero As Integer Priv ate VarStrNombre As String Priv ate VarStrApellidos As String Priv ate VarStrDireccion As String Priv ate VarStrTelef ono As String ' Métodos para acceder a la propiedad VarIntNumero Public Property Get IntNumero() As String IntNumero = VarIntNumero End Property Public Property Let IntNumero(ParIntNumero As String) VarIntNumero = ParIntNumero End Property ' Métodos para acceder a la propiedad VarStrNombre Public Property Get StrNombre() As String StrNombre = VarStrNombre End Property Public Property Let StrNombre(ParStrNombre As String) VarStrNombre = ParStrNombre End Property ' Métodos para acceder a la propiedad VarStrApellidos Public Property Get StrApellidos() As String StrApellidos = VarStrApellidos End Property 31
  • 32. Colegio José de Escandón La Salle Algoritmos y Programación Public Property Let StrApellidos(ParStrApellidos As String) VarStrApellidos = ParStrApellidos End Property ' Métodos para acceder a la propiedad VarStrDireccion Public Property Get StrDireccion() As String StrDireccion = VarStrDireccion End Property Public Property Let StrDireccion(StrDireccion As String) VarStrDireccion = StrDireccion End Property ' Métodos para acceder a la propiedad VarStrTelef ono Public Property Get StrTelef ono() As String StrTelef ono = VarStrTelef ono End Property Public Property Let StrTelef ono(ParStrTelef ono As String) VarStrTelef ono = ParStrTelef ono End Property ' Método para mostrar los datos de una f icha Public Sub MetMostrar() MsgBox "Número: " & VarIntNumero & v bCrLf & _ "Nombre: " & VarStrNombre & v bCrLf & _ "Apellidos: " & VarStrApellidos & v bCrLf & _ "Dirección: " & VarStrDireccion & v bCrLf & _ "Teléf ono: " & VarStrTelef ono, , "Ficha" End Sub 32
  • 33. Colegio José de Escandón La Salle Algoritmos y Programación Clases y objetos Introducción Hasta ahora hemos aprendido cómo se crea e instancia una clase sencilla, y los conceptos más importa ntes de la programación orientada a objetos en Visual Basic. En este capítulo aprenderemos a desarrollar clases mas complejas utilizando colecciones de clases mas sencillas. Para ello aprenderemos a usar colecciones de clases, y haremos hincapié en la optimización en tiempo y recursos del sistema al hacer búsquedas, inserciones y/o borrados mediante indices o claves de una colección. También se pretende que el lector se familiarice con el uso de controles menos utilizados como la barra de desplazamiento horizontal (HScrollBar). Conocimientos teóricos Cómo crear colecciones de objetos: la clase Collection Una colección es una forma de agrupar elementos relacionados. Visual Basic proporciona una gran cantidad de colecciones predefinidas (Forms, Controls, etc), pero además permite la creación de colecciones personalizadas utilizando la clase genérica Collection. Los objetos Collection almacenan cada elemento en una variable Variant. De esta forma, la lista de cosas que se pueden agregar a un objeto Collection es igual que la lista de cosas que se pueden almacenar en una variable Variant. Entre ellas se incluyen los tipos de datos, los objetos y las matrices estándar, pero no los tipos definidos por el usuario. Las variables Variant siempre ocupan 16 bytes, independientemente de lo que contienen , por lo que el uso de objetos Collection no es tan eficiente como el uso de matrices. Sin embargo, no es necesario aplicar ReDim a un objeto Collection, lo que produce un código más limpio y más fácil de mantener. Además, los objetos Collection ofrecen un acceso por clave extremadamente rápido, que no ofrecen las matrices. A pesar del tamaño de las variables Variant, habrá muchas ocasiones en las que tenga más sentido utilizar un objeto Collection para almacenar todos los tipos de datos enumerados anteriormente. Sin embargo, siempre tenemos que tener presente que si bien los objetos Collection nos permitirán escribir un código limpio y fácil de mantener, estamos pagando el precio de almacenar los elementos en variables Variant. Propiedades y métodos del objeto Collection Los objetos Collection disponen de propiedades y métodos que se puede utilizar para insertar, eliminar y recuperar los elementos de la colección. Propiedad o método Descripción Método Add Agrega elementos a la colección.  Más exactamente, una variable Variant ocupa siempre 16 bytes incluso si los datos se encuentran almacenados en cualquier otra parte. Por ejemplo, si asignamos una cadena o una matriz a una variable de tipo Variant, ésta contiene un puntero a una copia de la cadena o de los datos de la matriz. En los sistemas de 32 bits sólo se utilizan como puntero 4 bytes de la variable Variant y realmente no hay ningún dato en ella. Si almacenamos un objeto, la variable de tipo Variant contiene la referencia de objeto, como si fuera una variable de objeto. Igual que ocurre con las cadenas y las matrices, solamente se utilizan 4 bytes. Los tipos de datos numéricos se almacenan ocupando siempre los 16 bytes. 33
  • 34. Colegio José de Escandón La Salle Algoritmos y Programación Propiedad Count Devuelve el número de elementos de la colección. Sólo 34 lectura. Método Item Devuelve un elemento, por índice o por clave. Método Remove Elimina un elemento de la colección, por índice o por clave. Estas propiedades y métodos sólo proporcionan los servicios más básicos de las colecciones. Por ejemplo, el método Add no puede comprobar el tipo de objeto que se agrega a la colección para asegurar que la colección contenga un único tipo de objeto. Podemos proporcionar una funcionalidad más robusta, y propiedades, métodos y eventos adicionales, si creamos nuestra propia clase de colección, como haremos en el ejemplo correspondiente a este capítulo. Cómo acceder a los elementos de una colección: claves e índices Los servicios básicos de agregar, eliminar y recuperar elementos de una colección dependen de claves e índices. Una clave es un valor String. Puede ser un nombre, un número de documento de identidad, un número de la seguridad social o simplemente un dato de tipo Integer convertido en tipo String. El método Add nos permite asociar una clave con un elemento, como se describe más adelante. Un índice es un dato de tipo Long entre uno (1) y el número de elementos de la colección . Podemos controlar el valor inicial del índice de un elemento mediante los parámetros before y after, pero su valor puede cambiar si agregamos o eliminamos otros elementos. Podemos utilizar el índice para recorrer los elementos de una colección. Por ejemplo, si insertamos el código siguiente en el Load de un formulario aparecería en la pantalla Debug el nombre de los controles que están pegados en él: Dim IntContador as Integer For IntContador = 0 To Controls.Count - 1 Debug.Print Controls(IntContador).Name & vbCrLf Next Existe otra forma de acceder a los elementos de una colección que proporciona un mayor rendimiento: utilizar la sentencia For Each. Esta opción es notablemente más rápida que la iteración mediante índice, aunque esto no es cierto en todas las implementaciones de colecciones: depende de cómo almacena la colección los datos internamente. Podemos codificar de nuevo el ejemplo anterior utilizando esta sentencia: Dim VarDato as Variant For Each VarDato In Controls Debug.Print VarDato.Name & vbCrLf Next VarDato Agregar elementos a una colección Para agregar un elemento a una colección utilizaremos el método Add. La sintaxis es la siguiente:  Una colección puede tener base cero o base uno, dependiendo de su índice inicial (lo primero quiere decir que el índice del primer elemento de la colección es cero y lo segundo quiere decir que es uno). Ejemplos de colecciones con base cero son las colecciones Forms y Controls. El objeto Collection es un ejemplo de colección con base uno. Las colecciones más antiguas de Visual Basic suelen tener base cero, mientras que las más recientes suelen tener base uno. Es más intuitivo utilizar las colecciones con base uno, ya que su índice va desde uno a Count, donde Count es la propiedad que devuelve el número de elementos de una colección. Por otra parte, el índice de una colección con base cero va desde cero al valor de la propiedad Count menos uno.
  • 35. Colegio José de Escandón La Salle Algoritmos y Programación colección.Add (elemento As Variant [, clave As Variant] [, before As Variant] [, after As Variant] ) Por ejemplo, imaginemos un objeto Persona que tiene una propiedad DNI que lo identifica de forma única, y una colección de personas denominada ColPersonas. Para agregar un objeto nuevo a la colección utilizaríamos la sentencia: ColPersonas.Add Persona, Persona.DNI Se supone que la propiedad DNI es un tipo String. Si esta propiedad es un número (por ejemplo, un tipo Long), utilizaríamos la función CStr para convertirlo al valor String requerido por las claves: ColPersonas.Add Persona, CStr(Persona.DNI) El método Add acepta argumentos con nombre. Para agregar una persona nueva como tercer elemento de la colección, podemos escribir: ColPersonas.Add Persona, Persona.DNI, after:=2 Podemos utilizar los argumentos con nombre before y after para mantener ordenada una colección de objetos. Por ejemplo, before:=1 inserta un elemento al principio de la colección, ya que los objetos Collection están basados en uno. Eliminación de elementos de una colección Para eliminar un elemento de una colección, utilizaremos el método Remove. La sintaxis es la siguiente: colección.Remove índice El argumento índice puede ser la posición del elemento que desea eliminar o su clave. Si la clave del tercer elemento de la colección de personas es "1234567W", podemos utilizar cualquiera de estas dos instrucciones para eliminarlo: ColPersonas.Remove 3 o bien ColPersonas.Remove "1234567W" Recuperación de elementos de una colección Para recuperar un elemento de una colección, utilizaremos el método Item. La sintaxis es la siguiente: [Set] variable = colección.Item(índice) Como ocurre con el método Remove, el índice puede ser la posición dentro de la colección o la clave del elemento. En el mismo ejemplo que para el método Remove, cualquiera de estas dos instrucciones recuperará el tercer elemento de la colección: Set Persona = ColPersonas.Item(3) o bien Set Persona = ColPersonas.Item( "1234567W") 35
  • 36. Colegio José de Escandón La Salle Algoritmos y Programación Si utilizamos números enteros como claves, debemos emplear la función CStr para convertirlos a cadenas antes de pasarlos a los métodos Item o Remove. Los objetos Collection siempre asumen que un número entero es un índice . El método Item es el método predeterminado de los objetos Collection, por lo que podemos omitirlo cuando queramos acceder a un elemento de una colección. De esta forma, el ejemplo de código anterior también se puede escribir de la siguiente manera: Set Persona = ColPersonas(3) o bien Set Persona = ColPersonas( "1234567W") Los objetos Collection mantienen sus números de índice automáticamente al agregar y eliminar elementos. El índice numérico de un elemento dado puede variar a lo largo del tiempo. No es conveniente, por tanto, guardar un valor numérico de índice y esperar recuperar el mismo elemento más tarde. Lo mejor es utilizar claves para este propósito. Control HScrollBar Las barras de desplazamiento proporcionan un medio sencillo de recorrer largas listas de elementos o grandes cantidades de información al desplazarse horizontal o verticalmente dentro de una aplicación o de un control. Las barras de desplazamiento son un elemento común de la interfaz de Windows 95 y de Windows NT. Barra de desplazamiento horizontal (HScrollBar) Barra de desplazamiento vertical (VScrollBar) Los controles HScrollBar y VScrollBar no son igual que las barras de desplazamiento incorporadas que se pueden encontrar en Windows o que las adjuntas a los cuadros de texto, los cuadros de lista, los cuadros combinados o los formularios MDI de Visual Basic. Dichas barras de desplazamiento aparecen automáticamente cuando la aplicación o el control contiene más información de la que se puede presentar con el tamaño actual de la ven tana (o bien, en el caso de los cuadros de texto y los formularios MDI, cuando la propiedad ScrollBars está establecida a True). En las versiones anteriores de Visual Basic, las barras de desplazamiento se solían utilizar como dispositivos de entrada. Sin embargo, las recomendaciones de la interfaz de Windows sugieren ahora que se utilicen como dispositivos de entrada los controles Slider en lugar de los controles ScrollBar. El control Slider de Windows 95 se incluye en la Edición Profesional y la Edición Empresarial de Visual Basic. Los controles ScrollBar siguen siendo útiles en Visual Basic porque proporcionan capacidad de desplazamiento a las aplicaciones o a los controles que no la proporcionan de forma automática. Los controles ScrollBar utilizan los eventos Scroll y Change para supervisar el movimiento del cuadro de desplazamiento a lo largo de la barra de desplazamiento. Evento Descripción Change Ocurre después de mover el cuadro de desplazamiento.  No es conveniente permitir que los objetos Collection decidan si el valor que están recibiendo es un índice o una clave. Si deseamos que un valor se interprete como clave y la variable que contiene el valor no es de tipo String, debemos utilizar CStr para convertirla. Si deseamos que un valor se interprete como índice y la variable que contiene el valor no es de un tipo de datos numéricos, debemos utilizar CLng para convertirla. 36
  • 37. Colegio José de Escandón La Salle Algoritmos y Programación Scroll Ocurre al mover el cuadro de desplazamiento. No ocurre si 37 se hace clic en las flechas o en la barra de desplazamiento. El evento Scroll proporciona acceso al valor de la barra de desplazamiento cuando ésta se arrastra. El evento Change se produce después de liberar el cuadro de desplazamiento o cuando se hace clic en la barra o en las flechas de desplazamiento. La propiedad Value (que de forma predeterminada es 0) es un valor entero que se corresponde con la posición del cuadro de desplazamiento dentro de la barra de desplazamiento. Cuando la posición del cuadro de desplazamiento tiene el valor mínimo, éste se mueve a la posición situada más a la izquierda (en las barras de desplazamiento horizontal) o a la posición más alta (en las barras de desplazamiento vertical). Cuando el cuadro de desplazamiento tiene el valor máximo, se mueve a la posición situada más a la derecha o a la más baja. De forma similar, un valo r a medio camino entre los límites del intervalo coloca el cuadro de desplazamiento en la mitad de la barra de desplazamiento. Además de utilizar los clics del ratón para cambiar el valor de la barra de desplazamiento, el usua rio también puede arrastrar el cuadro de desplazamiento a cualquier posición de la barra. El valor resultante depende de la posición del cuadro de desplazamiento, pero siempre se encuentra dentro del intervalo definido por las propiedades Min y Max establecidas por el usuario. Más conceptos de clases: eventos Initialize y Terminate Todas las clases proporcionan dos eventos predefinidos: Initialize y Terminate. Normalmente el procedimiento de evento Initialize contiene el código que se ejecuta en el momento de la creación del objeto. El evento Terminate suele contiene el código necesario para liberar el objeto cuando éste se destruye. Supone una buena norma de programación asegurarnos, utilizando este método, que toda la memoria utilizada por un objeto se libera en el momento de su destrucción. Ejemplo propuesto Objetivo El objetivo es crear una agenda de teléfonos en la que podamos consultar fácilmente las fichas, así como insertar nuevas fichas o borrar fichas existentes. Para ello, crearemos una nueva clase ClaAgenda:  Propiedades:  ColFichas: colección de las fichas almacenadas en la agenda  Métodos:  Property IntNumFichas: devuelve el número de fichas almacenadas en la agenda  Function CrearFicha(StrNombre, StrApellidos, StrDireccion, StrTelefono) as Integer: crea una nueva ficha y la inserta en la colección ColFichas. Devuelve el número de la ficha.  Function BorrarFicha(IntNumFicha): borra la ficha cuyo número se pasa como argumento.  Function Ficha(IntIndice) As ClaFicha: devuelve la ficha correspondiente a la posición IntIndice en la colección de fichas ColFichas  Sub Class_Terminate(): eliminaremos todas las fichas de la colección ColFichas, así como la propia colección, antes de que el objeto se elimine de memoria En el formulario podremos realizar tres acciones:  Crear una nueva ficha: primero pulsaremos el botón Nueva ficha, con lo que se borrarán los cuadros de texto y se incrementará el límite superior de la barra de scroll. Una vez introducidos los da tos de la nueva ficha, pulsaremos el botón Crear ficha, donde se llamará al método CrearFicha de la clase ClaAgenda, obteniendo el número de ficha resultante, que nos servirá para poder borrarla en caso necesario.  Consultar una ficha existente: utilizando la barra de scroll podremos consultar todas las fichas de la agenda. Cada vez que cambie el valor de la barra de scroll, actualizaremos el formulario para mostrar los datos de la ficha correspondiente
  • 38. Colegio José de Escandón La Salle Algoritmos y Programación (por ejemplo, si el valor de la barra de scroll es 3, mostraremos la cuarta ficha de la colección; hay que recordar que el límite inferior de la barra de scroll es 0, mientras que una colección empieza en 1). Cada vez que cambiemos de ficha, actualizaremos el número de la ficha actual.  Borrar la ficha actual: utilizaremos el número de ficha actual para llamar al método BorrarFicha de la clase ClaAgenda. Decrementaremos el límite máximo de la barra de scroll, y actualizaremos el formulario para que muestra los datos de la ficha siguiente o anterior a la borrada. 38
  • 39. Colegio José de Escandón La Salle Algoritmos y Programación Desarrollo del ejemplo 1. Crearemos el siguiente formulario: 2. Crearemos una clase Agenda con una propiedad privada ColFichas de tipo Collection, que no tendrá métodos Property asociados. Crearemos un método Property Get llamado IntNumFichas que nos devuelva el número de fichas de la colección ColFichas. 3. Implementaremos un método público CrearFicha que recibe como argumentos el nombre, apellido, dirección y teléfono y crea una ficha nueva (utilizaremos la clase Ficha definida en el ejemplo 3), asignándole un número (este número será una es pecie de “campo autonumérico”, que generaremos incrementalmente). Además de crear la nueva ficha, la introduce en la colección ColFichas, poniendo como clave el número de la ficha (como la clave tiene que se r una cadena, hay que hacer la conversión a string de dicho número). 4. Implementaremos también un método público BorrarFicha, que recibe como argumento la clave de la ficha que queremos eliminar. Este método elimina la ficha de memoria y también de la colección. 5. También crearemos un método público Ficha, que recibe como argumento el índice de la ficha dentro de la colección ColFichas y devuelve la ficha correspondiente. 6. Como último elemento de la clase, en el evento Terminate liberaremos todo el espacio de memoria que podamos tener reservado para las fichas y la colección. 7. En el formulario crearemos un objeto de la clase Agenda, y una variable IntNumFichaActual que indicará el número de la ficha cuyos datos aparecen en el formulario. Como estas variables van a ser utilizadas en todas las funciones del formulario, las crearemos como variables globales del formulario. 8. Al puls ar el botón “Nueva ficha”, debemos aumentar la propiedad Max de la barra de scroll, posicionarnos en el último elemento y limpiar los datos (nombre, apellidos, dirección y teléfono), preparando el formulario para insertar una nueva ficha. (¡Ojo!: para la primera ficha, no es necesario incrementar el límite máximo de la barra de scroll, ni limpiar el formulario). 9. Una vez ins ertados los datos de la nueva ficha, puls aremos el botón “Crear ficha”, donde llamaremos al método CrearFicha del objeto Agenda y actualizaremos el título del frame, donde pondrá “Ficha N” (s iend o N el número de la nueva ficha, que obtendremos como valor de retorno del método CrearFicha). 10. Cada vez que cambie la barra de scroll (evento Change) debemos actualizar los datos del formulario, mostrando la información de la ficha correspondiente en la colección ColFichas del objeto Agenda. Crearemos una función ActualizarBarraScroll que se encargará de ello (¡Ojo!: la función debe comprobar si hay fichas en la colección, y también si estamos insertando una ficha nueva, en cuyo caso en lugar de actualizar los datos del formulario, los limpiará.). También tenemos que obtener el número de la ficha actual. 39
  • 40. Colegio José de Escandón La Salle Algoritmos y Programación 11. Cuando puls emos el botón “Borrar ficha” llamaremos al método BorrarFicha del objeto Agenda pas ándole el número de la ficha actual. Una vez borrada, decrementaremos el valor máximo de la barra de scroll (¡Ojo!: cuidado cuando borramos la última ficha) y actualizaremos los datos del formulario llamando a la función ActualizarBarraScroll. 12. Para terminar, sólo nos falta controlar cuando están habilitados los cuadros de texto, los botones y demás elementos para que quede lo más coherente posible. Ejemplo Resuelto Formulario '_______________________________________________________________________ ' Ejemplo 4 del Curso de Visual Basic Av anzado ' ' Def inición del f ormulario, este será el interf az del usuario. '_______________________________________________________________________ Option Explicit Dim ObjAgenda As New ClaAgenda Dim IntNumFichaActual As Integer Priv ate Sub ButBorrarFicha_Click() ' Conf irmamos el borrado If MsgBox("¿Desea eliminar la f icha actual?", v bYesNo, "Borrado de f icha") = v bNo Then Exit Sub End If ' Borramos la f icha actual ObjAgenda.BorrarFicha IntNumFichaActual ' Actualizamos el número de elementos de la barra de scroll If ObjAgenda.IntNumFichas > 0 Then HScroll1.Max = ObjAgenda.IntNumFichas - 1 40 Else HScroll1.Max = 0 End If ' Actualizamos la barra de scroll ActualizarBarraScroll End Sub Priv ate Sub ButCrearFicha_Click() ' Creamos una nuev a f icha con los datos introducidos por el ' usuario, y obtenemos el código de la f icha creada IntNumFichaActual = ObjAgenda.CrearFicha(TxtNombre, TxtApellidos, TxtDireccion, _ TxtTelef ono) ' Actualizamos el título del f rame Frame1.Caption = "Ficha " & IntNumFichaActual ' Deshabilitamos el botón de crear f icha y el f rame ButCrearFicha.Enabled = False Frame1.Enabled = False ' Habilitamos los botones de nuev a f icha y borrar ' f icha, así como la barra de scroll ButNuev aFicha.Enabled = True ButBorrarFicha.Enabled = True HScroll1.Enabled = True End Sub Priv ate Sub ButNuev aFicha_Click() ' Actualizamos la barra de scroll If ObjAgenda.IntNumFichas = 0 Then ' Con la primera f icha creada, habilitamos ' la barra de scroll HScroll1.Enabled = True Frame1.Enabled = True Else ' Incrementamos el número de elementos de
  • 41. Colegio José de Escandón La Salle Algoritmos y Programación ' la barra de scroll HScroll1.Max = HScroll1.Max + 1 HScroll1.Value = HScroll1.Max End If ' Habilitamos el botón de crear f icha y el f rame ButCrearFicha.Enabled = True Frame1.Enabled = True ' Deshabilitamos los botones de nuev a f icha y borrar ' f icha, así como la barra de scroll ButNuev aFicha.Enabled = False ButBorrarFicha.Enabled = False HScroll1.Enabled = False End Sub Priv ate Sub Form_Load() ' Deshabilitamos el f rame, la barra de scroll, ' el botón de crear f icha y el botón de borrar f icha Frame1.Enabled = False HScroll1.Enabled = False ButCrearFicha.Enabled = False ButBorrarFicha.Enabled = False ' Establecemos los límites de la barra de scroll HScroll1.Max = 0 End Sub Priv ate Sub Form_Unload(Cancel As Integer) ' Eliminamos la agenda Set ObjAgenda = Nothing End Sub Priv ate Sub HScroll1_Change() ' Actualizamos la barra de scroll ActualizarBarraScroll End Sub Priv ate Function ActualizarBarraScroll() Dim ObjFicha As ClaFicha ' Comprobamos si no hay f ichas o estamos creando una f icha nuev a If HScroll1.Max = ObjAgenda.IntNumFichas Then ' Limpiamos los datos del f rame TxtNombre = v bNullString TxtApellidos = v bNullString TxtDireccion = v bNullString TxtTelef ono = v bNullString ' Actualizamos el título del f rame Frame1.Caption = v bNullString ' Deshabilitamos el botón de borrado ButBorrarFicha.Enabled = False 41 Else ' Obtenemos la f icha correspondiente de la agenda ' (buscamos por índice, no por código de f icha) Set ObjFicha = ObjAgenda.Ficha(HScroll1.Value + 1) ' Sacamos los datos de la f icha TxtNombre = ObjFicha.StrNombre TxtApellidos = ObjFicha.StrApellidos TxtDireccion = ObjFicha.StrDireccion TxtTelef ono = ObjFicha.StrTelef ono ' Actualizamos el código de la f icha actual IntNumFichaActual = ObjFicha.IntNumFicha ' Actualizamos el f rame Frame1.Caption = "Ficha " & IntNumFichaActual End If End Function Clase Agenda '_______________________________________________________________________ ' Ejemplo 4 del Curso de Visual Basic Av anzado ' ' Def inición de la clase AGENDA, aquí estarán los datos de cada agenda y los métodos