Está en la página 1de 34

INICIACIN A LA PROGRAMACIN VISUAL BASIC

Departamento de Matemticas Juan Mara Rodrguez Aguilera I.E.S. Lpez de Arenas Marchena - Sevilla

1 - Conceptos bsicos

CAPTULO 1: CONCEPTOS BSICOS ELEMENTOS NECESARIOS PARA PROGRAMAR


Para poder programar en cualquier lenguaje, es necesario disponer de un programa o conjuntos de programas que son los que hacen que las rdenes que el programador realiza, sean entendidas por el ordenador. A este conjunto de programas se le llama entorno de programacin o lenguaje de programacin. El desarrollo de un programa suele tener varios pasos: Paso 1: Paso 2: Paso 3: Comprensin del problema y desarrollo de un esquema lgico del programa. Escritura del cdigo fuente y compilacin. Depuracin de errores y comprobacin del funcionamiento.

Cada uno de estos pasos se pueden dividir en diversas etapas dependiendo de la complejidad del programa que se desee realizar. Aunque todos los pasos anteriormente indicados podramos decir que tienen igual importancia, como en todas las cosas en la vida, la complejidad depender del tiempo que una persona lleve programando, es decir, muchos programadores no necesitan hacer un esquema escrito del programa que van a desarrollar, pues la prctica los a entrenado lo suficiente para realizarlo mentalmente. Otros por el contrario, le dan ms importancia al esquema del programa que a la escritura del cdigo fuente. Todo esto depender del tipo de programa que se desee desarrollar. Los elementos necesarios para poder escribir un programa son los siguientes: 1 2 3 4 Necesitamos un problema a resolver, es decir, saber que es lo que el programa debe realizar. Lpiz y papel para escribir el esquema lgico del programa. Editor de textos para escribir el cdigo fuente. Compilador de cdigo fuente que hemos escrito.

Normalmente los elementos 3 y 4 vienen dados por el entorno de programacin que utilicemos, aunque normalmente se puede utilizar cualquier editor de textos. Conceptos Cdigo fuente: Compilador: rdenes y comandos que el programador escribe para realizar un programa, normalmente se tratan de uno o varios archivos de texto. Programa que hace que el cdigo fuente escrito por el programador sea comprendido por el ordenador, de manera que el resultado de compilar el cdigo fuente es un archivo ejecutable que no necesita del cdigo fuente ni del entorno de programacin para poder ser ejecutado. Compilador Archivo ejecutable No necesita el cdigo fuente ni el entorno de programacin

Cdigo fuente Escrito por el programador

1 - Conceptos bsicos

FUNDAMENTOS DE CUALQUIER LENGUAJE DE PROGRAMACIN


Todos los lenguajes se basan en el manejo de datos, bien sean estos datos numricos o de textos, aunque generalmente en un programa se utilizan datos de los dos tipos. Esto no quiere decir que slo existan datos numricos y de texto, sino que son los ms utilizados, tambin existen datos de fecha, lgicos, etc.

Tipos de datos
Aunque los distintos tipos de datos dependen del lenguaje de programacin que utilicemos, prcticamente todos los lenguajes coinciden en los siguientes tipos: Datos de tipo texto: En los que podemos introducir cualquier secuencia de letras y smbolos, aunque tambin se pueden introducir nmeros que sern considerados como letras. Datos de tipo numrico: Enteros: Datos en los que podemos introducir nmeros enteros (3, 17, -765, 3209,...). Estos a su vez suelen dividirse en dos clases, una para nmeros enteros pequeos y otras para nmeros enteros grandes. Decimales: Datos en los que podemos introducir nmeros con cifras decimales (5.788, 0.41,...). Estos a su vez suelen dividirse en dos clases, una para nmeros con pocas cifras decimales y otra para nmeros con muchas cifras decimales.

Datos de fecha: Son datos en los que podemos introducir generalmente valores de tipo fecha y hora. Datos lgicos: Son datos en los que podemos introducir slo dos valores, verdadero o falso. En algunos lenguajes el falso equivale al cero y el verdadero a otro valor (-1 1 normalmente).

Variables
Los ordenadores manejan los datos introducindolos en la memoria y haciendo operaciones con ellos. En los lenguajes de programacin para poder acceder a los distintos datos tenemos darles nombre de manera que posteriormente podamos recurrir a dicho nombre para poder acceder al valor, a los nombres que almacenan valores de distintos datos, se les llama variables. Ejemplo: Supongamos que deseamos hacer un programa que sume dos nmeros introducidos por la persona que est manejando el programa. Paso 1: El programa debera pedir los dos nmeros que el usuario desee sumar. El primer nmero lo almacenaremos en la variable numero1 y el segundo nmero lo almacenaremos en la variable numero2. Paso 2: El programa debera mostrar el resultado de la suma que es numero1+ numero2. En este ejemplo estaramos utilizando dos variables: numero1 y numero2 que es donde almacenamos los valores introducidos por el usuario del programa.

1 - Conceptos bsicos

Ejemplo 1: Dim num1 As Integer, num2 As Integer (Declaracin de variables) En la orden anterior se han declarado dos variables llamadas num1 y num2, tambin se le ha indicado al ordenador que dichas variables sern utilizadas para almacenar valores de nmeros enteros1. En la mayora de los lenguajes de programacin es necesario decirle al ordenador el nombre de las variables y el tipo de datos que guardarn antes de se puedan utilizar, a este paso se le llama declaracin de variables. Una vez que hemos declarado las variables podemos comenzar a darle valores y realizar operaciones con ellas. num1=3 (Inicializacin o asignacin de la variable num1) En el paso anterior estamos utilizando el operador = (operador de asignacin) para indicarle al ordenador que la variable num1 debe tomar el valor 3. num2=2*num1+3 (Asignacin de la variable num2) En este caso hemos utilizado tres operadores =, * y +. Mediante la lnea anterior le estamos indicando que el valor de la variable num2 deber ser el doble del valor de la variable num1 ms tres unidades, es decir, la variable num2 tomara el valor 9 (2*3+3=9). Ejemplo 2: Dim Nombre As String, Apellidos As String, Persona As String En la lnea anterior se han declarado 3 variables de tipo texto o tambin llamado tipo cadena (String). Este tipo de variables sirve para almacenar datos compuestos por letras, nmeros y cualquier tipo de caracteres. Nombre=Miguelito Apellidos=Lpez Bernldez En las dos lneas anteriores se han inicializado las variables Nombre y Apellidos con los valores Miguelito y Lpez Bernldez respectivamente. Igualmente se pueden utilizar operadores para manipular las variables de cadena. En la siguiente lnea utilizaremos el operador de concatenacin2 para unir las cadenas. Persona=Nombre & & Apellidos (o tambin, Persona=Nombre + + Apellidos) Observar que entre las comillas se ha introducido un espacio con la intencin de separar el nombre de los apellidos, de lo contrario la variable Persona contendra el valor MiguelitoLpez Bernldez de la forma que se ha realizado la unin de las cadenas de texto, es decir, entre el nombre y los apellidos se ha introducido una cadena de texto que slo contiene un espacio3, obtenemos el resultado deseado.

Los enteros tienen una limitacin entre 32.768 y 32.767. Para utilizar valores mayores es necesario utilizar otro tipo de dato. 2 Existen dos operadores en Visual Basic que sirven para concatenar (unir) varias cadenas de texto, estos operadores son & y +. 3 Si queremos introducir cadenas de caracteres fijos, debemos hacerlo entre comillas. Si deseamos una cadena vaca podemos escribir , un espacio , una coma ,, etc.
1

1 - Conceptos bsicos

Operadores
En todos los lenguajes de programacin existen operadores para poder realizar clculos y operaciones con las variables. Los operadores no son los mismos en todos los lenguajes, aunque s hay muchos que coinciden. Ejemplos: numero1 + numero2 numero1 * numero2 numero1 = 3 * numero2 numero1 = 2 * numero2 5 Operador: + Operador: * Operadores: = y * Operadores: = , * y

Palabras reservadas
Es una de las partes en las que hay mayor diferencia entre los distintos lenguajes de programacin, aunque de un lenguaje a otro normalmente existen palabras equivalentes que realizan la misma funcin aunque tengan nombres distintos. Estas palabras reservadas junto con las variable y la sintaxis correcta es el fundamento para la realizacin de programas en cualquier lenguaje de programacin. Aunque existe gran diferencia entre los distintos lenguajes de programacin, los lenguajes ms usados coinciden en dos grandes bloques de palabras reservadas: sentencias y funciones. Sentencias: son palabras reservadas que sirven para realizar alguna tarea en concreto, pero no devuelven ningn valor. Funciones: son palabras reservadas que sirven para realizar alguna tarea en concreto devolviendo un valor. Ejemplos: Sentencia Dim, sirve para indicar al ordenador que se va a utilizar una variable. Dim NumeroUno As Integer (En casi todas las versiones del lenguaje BASIC) La lnea de cdigo anterior sirve para indicar al ordenador que vamos a utilizar una variable llamada NumeroUno y que en ella guardaremos un dato de tipo numrico y adems entero (Integer). Funcin Sqr, sirve para calcular la raz cuadrada de un nmero. a = Sqr(b) (En casi todas las versiones del lenguaje BASIC) La lnea de cdigo anterior calcula la raz cuadrada de la variable b y asigna el valor de dicha raz a la variable a. Como podemos observar en los dos ejemplos anteriores, es necesario conocer las palabras reservadas del lenguaje en el que vamos a programar, as como la tarea que cada una realiza.

1 - Conceptos bsicos

Estructuras de control
Prcticamente todos los lenguajes de programacin tienen unas palabras reservadas destinadas a controlar el desarrollo lgico de un programa. Las ms utilizadas se agrupan en dos bloques: condicionales y de repeticin. Condicionales Las estructuras condicionales primero evalan una expresin y en funcin del valor que tome la expresin evaluada, realizan una u otra tarea. If a>0 Then ........... ........... ........... Else ........... ........... ........... End If De repeticin Las estructuras de repeticin repiten una misma tarea un determinado nmero de veces, o bien, evalan una expresin y repiten una tarea mientras se cumpla dicha condicin. A las estructuras de repeticin se les llaman bucles. For i=1 to 10 ........... ........... ........... Next i (Realiza las instrucciones que hay entre la lnea del For y la lnea de Next i) (Si a es mayor que cero entonces realiza las instrucciones siguientes) (Realiza esta tarea cuando la condicin es cierta) (En caso contrario, que a no sea mayor de cero realiza las siguientes instrucciones) (Realiza esta tarea cuando la condicin es falsa) (Fin de la estructura condicional)

Do While i<=20 (Realiza las instrucciones que hay entre la lnea del Do y la del Loop mientras sea cierta la condicin, es decir, se cumpla que i es menor o igual que 20) .......... .......... .......... Loop While i > 15 .......... .......... .......... Wend Estas estructuras de control y otras que tambin existen, ya las veremos con mayor profundidad en el captulo 3 dedicado exclusivamente al control del flujo de un programa. (Realiza las instrucciones que hay entre la lnea del While y la del Wend mientras sea cierta la condicin, es decir, se cumpla que i es mayor que 15)

1 - Conceptos bsicos

Algunos ejemplos: Primer programa En casi todos los lenguajes de programacin existe un clsico que consiste en mostrar un mensaje, este mensaje es Hola mundo. Vamos a realizarlo en Visual Basic, aunque las instrucciones que vamos a escribir serviran prcticamente para cualquier variante del original Basic. Dim Mensaje As String Mensaje = Hola mundo. Print Mensaje En este primer programa hemos utilizado la funcin Print que sirve para escribir un mensaje o texto en cualquier dispositivo de salida (monitor, impresora, etc.). Este primer programa se puede realizar en una sola lnea. Print Hola mundo. La idea de hacerlo en varias lneas es por utilizar las instrucciones vistas y ver una estructura coherente en el lenguaje. Segundo programa Vamos a ver un pequeo programa en el que podemos escribir una tabla de multiplicar. Al igual que el ejemplo anterior, este tambin se puede escribir con menos lneas de cdigo, pero la intencin es que sea claro y est bien estructurado. Se podra escribir este programa repitiendo 10 veces la misma estructura: Print 1 * 7 = ; 1*7 Print 2 * 7 = ; 2*7 Print 3 * 7 = ; 3*7 ... Pero creo que parece bastante evidente que esta no es la mejor forma, no porque tengamos que repetir 10 veces prcticamente el mismo cdigo, ms bien, porque si hubiese que repetirlo 1.000 o 10.000 veces el trabajo sera interminable. La forma correcta de hacerlo es utilizando estructura de control: Dim Num As Integer, Indice As Integer Num = 7 For Indice = 1 To 10 Print Indice; * ; Num; = ; Indice*Num Next Indice Esta forma es mucho ms corta de programar y ms fcil de modificar. Si deseramos hacer una tabla de 100 resultados, sera suficiente con cambiar el 10 por un 100. Igualmente si deseamos escribir la tabla del 9 en lugar de la tabla del 7, bastara con cambiar en la lnea Num = 7, el nmero 7 por un 9.

2 - Tipos de datos y operadores

CAPTULO 2: TIPOS DE DATOS Y OPERADORES TIPOS DE DATOS


En todos los lenguajes de programacin existen diferentes tipos de datos de forma que las variables utilizadas en los programas almacenan informacin del tipo correspondiente. En Visual Basic existen los siguientes tipos: Tipo de datos Byte Integer (%) Long (&) Single (!) Descripcin del contenido Tipo de datos para almacenar nmeros en 1 byte (8 bits) Nmeros enteros Nmeros enteros (largos) Nmeros reales Rango de valores Desde 0 hasta 255 Desde 32.768 hasta 32.767 Desde - 2.147.483.648 hasta 2.147.483.647. Negativos: Desde 3,40282310 38 hasta 1,40129810-45 Positivos: Desde 1,40129810 -45 hasta 3,40282310 38 Negativos: Desde -1,7976931348623210 308 hasta -4,9406564584124710 -324 Positivos: Desde 4,9406564584124710 -324 hasta -1,7976931348623210 308 Desde -922.337.203.685.477,5808 hasta 922.337.203.685.477,5807 Cualquier conjunto de caracteres. Desde 1/1/100 hasta 31/12/9999 Verdadero (True) o Falso (False). Se puede asignar a cualquier objeto definido en el programa. La asignacin se realiza mediante el comando Set. Tipo de dato por omisin, ocupa mucha memoria.

Double (#)

Nmeros reales

Currency (@) String ($) Date Boolean Object Variant

Valores monetarios Cadena de texto Fecha y hora Valores lgicos Objeto Cualquier dato

Estos son los tipos de datos utilizados en Visual Basic, tambin el usuario puede definir tipos de datos propios segn sus necesidades. Dentro de las variables Variant, existen valores que determinan situaciones concretas que son bastante comunes. El valor Empty, es el valor que contiene una variable Variant cuando an no se le ha asignado ningn valor. El valor Null, es un valor desconocido o que falta el valor. Este valor es til en aplicaciones de bases de datos. El valor Error, es un valor que indica que se ha producido algn error en la aplicacin.

2 - Tipos de datos y operadores

CONVERSIN DE TIPOS DE DATOS


En todos los lenguajes de programacin es necesario realizar operaciones con distintos tipos de datos, es por ello que existen funciones que convierten datos de un tipo a otro. Para ello vamos a ver primero el concepto de funcin. En matemticas una funcin recibe un valor (x=9) y devuelve el valor de la funcin en dicho punto f(9)=3. Una funcin es un pequeo programa que puede recibir un valor y devolver otro. Ejemplo: Funcin Sqr(x) Dim valor As Double, num As Integer num = 5 valor = Sqr(num) Print La raz de ; num; es ; valor Si ejecutamos este cdigo obtendramos: La raz de 5 es 2.23606... Igual que existe la funcin Sqr para calcular la raz cuadrada de un nmero, existen muchsimas funciones para realizar operaciones y manipular informacin de todo tipo. Entre las funciones existe un grupo que son funciones de conversin de datos. CBool CByte CCur CDate CDbl CInt CLng CSng CStr CVar CVErr Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo Convierte una expresin en un tipo de dato lgico, True o False. de dato byte. de dato currency (monetario). de dato fecha/hora. de dato double. de dato entero. de dato entero largo. de dato single de dato string (cadena de texto). de dato variant. de dato que contiene un cdigo de error.

Ejemplo: Dim dni As Long, letra As String, nif As String dni = 45213234 letra = E nif = CStr(dni) & - & letra Ejemplo: Dim num As Integer, cad as String cad = 123 num = CInt(cad)

2 - Tipos de datos y operadores

OPERADORES
En cualquier lenguaje de programacin son muchas las operaciones que se necesitan realizar las variables y expresiones, por ejemplo: sumar, restar, dividir nmeros o variables, unir cadenas de texto, convertir una expresin booleana en la contraria, comparar variables, etc. Operadores matemticos Operador = + / * \ ^ Mod Operacin Asignacin Suma Resta Divisin Multiplicacin Divisin entera Potenciacin Mdulo Ejemplo Num=3 3+4 7-5 8/3 4*7 11\4 4^3 17 Mod 5

Hace que Num=3 7 2 2.66666 28 3 64 2

Operadores lgicos Operador And Or Not Xor Eqv Operacin Conjuncin lgica Disyuncin lgica Negacin lgica Exclusin lgica Equivalencia lgica Ejemplo True And True False Or True Not True True Xor True False Eqv False

True True False False True

Operadores de concatenacin Operador & + Operacin Concatenacin de cadenas Concatenacin de cadenas Ejemplo Visual & Basic Visual & Basic

Visual Basic Visual Basic

Operadores de comparacin Operador = < <= > >= <> Operacin Igual a Menor que Menor o igual que Mayor que Mayor o igual que Distinto de Ejemplo x=4 7<5 5<=8 3>6 12>=5 x<>3

True si x vale 4 False True False True True si x no vale 3

Existen algunos operadores ms que por el momento omitiremos ya que estos son los ms usados y habituales.

2 - Tipos de datos y operadores

Ejemplos de utilizacin de operadores Ejemplo 1: Dim num As Integer, div As Integer num = 234 div = 7 If (num Mod div)=0 Then Print El nmero ; num; es divisible por ; div Else Print El resto de dividir ;num; entre ; div; es ; num Mod div End If En el ejemplo anterior se han utilizado distintos operadores: El operador = se ha utilizado como operador de asignacin (lneas num=234 y div=7) y como operador de comparacin (lnea If (num Mod div)=0 Then). El operador Mod se ha utilizado dos veces para calcular el resto de dividir el valor de num entre el valor de div. Ejemplo 2: Dim i As Integer, Numeros As String Numeros = For i=0 To 9 Numeros = Numeros & CStr(i) Next i Print Numeros En este ejemplo se ha utilizado nuevamente el operador = realizando la asignacin a la variable Numeros. Hay que destacar la lnea Numeros = Numeros & CStr(i), pues puede no parecer lgica si se mira desde un punto de vista estrictamente matemtico, pero hay que tener en cuenta que el operador = no est describiendo una igualdad, la lnea debera entenderse como: asigna a la variable Numeros el contenido que tiene la variable Numeros y aade el valor de la variable i convertida a cadena de texto, esta ltima operacin se lleva a cabo mediante el operador concatenacin de cadenas de texto (&). Ejemplo 3: Dim A As Single, B As Single, C As Single Dim X1 As Double, X2 As Double A = 3: B = 7: C = 4 X1 = (-B+Sqr(B^2-4*A*C))/(2*A) X2 = (-B-Sqr(B^2-4*A*C))/(2*A) Print Solucin 1 = ; X1, Solucin 2 = ; X2 En este tercer ejemplo se puede comprobar la utilizacin de varios operadores matemticos y la funcin Sqr para calcular las soluciones de una ecuacin de 2 grado. En la lnea 3 podemos comprobar como se pueden asignar mltiples variables en una misma lnea separndolas con dos puntos.

3 Primeros pasos con Visual Basic

CAPTULO 3: PRIMEROS PASOS CON VISUAL BASIC EL ENTORNO


Visual Basic es un entorno de programacin en el que el aspecto visual del programa (Interface o Interfaz) se puede disear casi al 100% con el nico uso del ratn. Un programa en VB se suele desarrollar de la siguiente forma: Diseo de la Interfaz: El aspecto visual de un programa se realiza mediante la utilizacin de formularios en los cuales se sitan controles dependiendo de las funciones que deseemos hacer. Un formulario es el equivalente a una ventana. Los controles son: botones, cuadros desplegables, listas seleccionables, etiquetas de texto, etc. Escritura del cdigo: Una vez diseada la interfaz que utilizar el usuario del programa, es necesario programar las acciones a las cuales responder el programa. Este es el paso realmente importante y el que se debe llamar programacin.

Barra de herramientas y de mens

Ventana de proyecto Formulario

Paleta de objetos Pgina de propiedades

En Visual Basic existen dos modos: diseo y ejecucin. El modo diseo es cuando estamos realizando el programa y el de ejecucin es cuando estamos probando el programa para ver si funciona correctamente. Botn para Ejecutar. Botn para Terminar la ejecucin. Botn para Interrumpir la ejecucin.

3 Primeros pasos con Visual Basic

DISEANDO UNA INTERFAZ


La interfaz de un programa est formada por un formulario que contiene mltiples objetos, cada uno de los cuales tiene sus propiedades particulares. La principal propiedad de un objeto es su Nombre (Name). La mayora de las propiedades de un objeto se pueden modificar en tiempo de diseo.

En la imagen de la izquierda se ha introducido un objeto botn (Command) al cual se le han modificado las propiedades Caption y Font. La modificacin de estas propiedades se realiza directamente sobre las paleta de propiedades y se visualiza inmediatamente en el formulario. En un formulario se pueden introducir tantos objetos como se consideren necesarios.

Selector de objetos Label Frame CheckBox ComboBox HScrollBar Timer DirListBox Shape Image OLE

PictureBox TextBox CommandButton OptionButton ListBox VScrollBar DriveListBox FileListBox Line Data

En las imgenes anteriores poedmos ver los objetos ms generales de Visual Basic as como la paleta de propiedades. Debemos recordar que la paleta de propiedades mostrar las propiedades del objeto seleccionado en el formulario. En este caso est mostrando las del Command1 (objeto CommandButton), seleccionado en el Form1 (objeto Formulario).

3 Primeros pasos con Visual Basic

A continuacin empezaremos a explicar la utilidad de los objetos ms bsicos y ms adelante iremos viendo los dems. Objeto o control Label (Etiqueta) TextBox (Caja de texto) CommandButton (Botn de comando) Frame (Marco) CheckBox (Caja de chequeo) OptionButton (Botn de opcin) ListBox (Lista de seleccin) ComboBox (Caja desplegable) Line (Lnea) Shape (Figura) Image (Imagen) PictureBox (Caja de dibujo) Utilizacin principal Mostrar un texto en cualquier ubicacin. Principales propiedades Caption, BackColor, BackStyle, Font, ForeColor. Introducir al programa textos o nmeros. Text, MaxLength, MultiLine, ScrollBars, PasswordChar. Ejecutar una accin al recibir la pulsacin del Caption, Default, Style. usuario. Sirve para agrupar a otros objetos. Es un Caption. contenedor de controles. Se utiliza para indicar si alguna opcin est Caption, Value. seleccionada. No es excluyente. Se utiliza para indicar una eleccin entre Caption, Value. varias posibilidades. Si es excluyente. Muestra varias opciones que se pueden List, MultiSelect, Sorted, Style, seleccionar. ListIndex, ListCount, Text. Tiene dos posibles usos: Como cuadro de List, MultiSelect, Sorted, Style, texto y cono lista de seleccin. ListIndex, ListCount, Text. Con este control se puede dibujar lneas. BorderColor, BorderStyle, BorderWidth. Sirve para dibujar cuadrados, rectngulos, Shape, FillStyle, FillColor, crculos y elipses. BackColor, BackStyle. Mostrar un archivo grfico gif, jpg, bmp, Picture, Strech. wmf, ico, cur, etc. Mostrar un archivo grfico. Es ms potente Picture, AutoSize. que el control Image pero consume ms recursos del ordenador.

El resto de controles bsicos de Visual Basic los dejaremos para ms adelante cuando estos nos resulten ms familiares y tengamos un poco de ms prctica con ellos. Ejercicio: Crear un formulario que contenga 2 Etiquetas, 2 cuadros de texto, 1 Caja desplegable, 1 Frame con 3 Botones de opcin, 1 Frame con 3 Cajas de chequeo, 2 Botones de comando y 1 Control Image.

3 Primeros pasos con Visual Basic

COMENZANDO A ESCRIBIR CDIGO


Antes de comenzar a escribir cdigo es necesario dejar claro un concepto, el de evento. La programacin en Visual Basic como hemos dicho consta de la creacin de la interfaz del usuario y de la escritura del cdigo. La escritura del cdigo debemos hacerla de forma que el programa sepa cuando tiene que ejecutarla, por ejemplo al hacer click con el ratn sobre un botn, al seleccionar una opcin de un men, al seleccionar un elemento de un ListBox, etc. En otras palabras el programa reacciona a las acciones que el usuario realiza, a estas acciones se las denomina eventos. As los objetos tienen unos eventos que nosotros podemos programar de forma que se realicen las operaciones que deseemos. Ejemplo: El objeto Command1 (CommandButton) tiene un evento que se llama Click, de esta forma si introducimos cdigo entre las intrucciones: Sub Command1_Click ... ... End Sub Este cdigo escrito entre estas dos lneas ser ejecutado por el programa cuando el usuario efecte una pulsacin (Click) sobre el botn de comando Command1. Para escribir el cdigo anterior hacemos doble click sobre el objeto Command1 y de esta forma pasaremos a la ventana de cdigo con el evento por defecto de este objeto.

Haciendo doble click en el objeto Command1 pasamos a la ventana de escritura de cdigo.

Tambin se puede pasar de la ventana de objetos a la ventana de cdigo mediante estos dos botones.

En esta lista desplegable podemos seleccionar el objeto deseado.

En esta segunda lista desplegable se puede seleccionar el evento asociado al objeto, el cual programaremos mediante cdigo para que realice la tarea deseada.

3 Primeros pasos con Visual Basic

PROPIEDADES, EVENTOS Y MTODOS


Visual Basic es un lenguaje de programacin orientado a objetos1, con lo cual la programacin y la escritura de cdigo tendr que hacer uso de los elementos incluidos en los objetos, que principalmente son: propiedades, eventos y mtodos. Propiedades: Son caractersticas de los objetos que hacen que cambie su aspecto externo, interno o forma de comportarse. Ejemplo: en una etiqueta se puede modificar su propiedad Caption para indicar el texto que se visualizar en la etiqueta. Eventos: Son acciones que el usuario realiza sobre los objetos. Los eventos de un objeto son programables de forma que se realice alguna tarea cuando se produzca dicho evento. Ejemplo: cuando se hace Click sobre un botn de comando se produce este evento y se ejecuta el cdigo que se encuentre escrito en el (Sub Command1_Click .... .... .... End Sub). Mtodos: Son tareas que los objetos pueden llevar a cabo por si mismos con slo una llamada del cdigo a dicho mtodo. Ejemplo: en un objeto de lista de seleccin existe el mtodo Add que sirve para aadir un elemento a los elementos que hasta ese momento estn contenidos en la lista de seleccin. Igualmente existe otro mtodo Clear que sirve para borrar todos los elementos contenidos en la lista de seleccin. Los eventos generalmente son los que hay que programar y es el entorno de Visual Basic el que se encarga de escribirlos. Para poder acceder a los valores de las propiedades de un objeto es necesario: indicar primero el nombre del objeto, escribir un punto (.) y seguidamente la propiedad. Ejemplo: Si una etiqueta se llama Label1, se puede modificar su propiedad Caption mediante la lnea de cdigo siguiente: Label1.Caption = Esto es una lnea de texto. De igual forma se procede con los mtodos, es decir, para hacer una llamada al mtodo (Clear) que borra los elementos contenidos en una lista desplegable (ListBox1) tendramos que escribir la siguiente lnea de texto: ListBox1.Clear Es muy difcil saberse todos los mtodos, propiedades y eventos de todos los objetos de VB, pero para programar en VB es necesario conocer los ms habituales de los objetos ms comunes. Para ello VB no ofrece una gran ayuda que consiste en que cuando estamos escribiendo cdigo, al escribir el nombre de un objeto seguido del punto, se nos mostrar un alista desplegable con todas las propiedades y todos lo mtodos del objeto.

No es un lenguaje orientado a objetos si no basamos en la definicin formal de Programacin Orientada a Objetos (POO), pero estos conceptos se salen de los objetivos de nuestro curso. VB prcticamente cumple todos los requisitos de la POO.
1

4 Variables y control del flujo

CAPTULO 4: VARIABLES Y CONTROL DEL FLUJO VARIABLES


El uso de variables es imprescindible para la realizacin de cualquier proyecto de programacin de envergadura, es por ello que su manejo es bsico para cualquier programador. Los ordenadores cuando estn ejecutando algn programa manejan informacin que a su vez almacenan en su memoria, para utilizar esta informacin deberamos saber en qu posicin de memoria est almacenada. Esta tarea es difcil de llevar a cabo y complicada de controlar ya que tendramos que saber que una palabra est almacenada entre las posiciones de memoria 12034456 y 1203468, algo que desde luego es difcil de recordar. El objetivo de las variables es ponerle nombre a estas posiciones de memoria de forma que su utilizacin sea ms sencilla y fcil de recordar. Ejemplo: Supongamos que en un programa se le solicita al usuario que introduzca su D.N.I. para calcular la letra asociada y formar el N.I.F. El valor del D.N.I. podemos guardarlo dentro de una variable llamada dni, la cual hacer referencia a las posiciones de memoria donde se encuentra almacenado el valor realmente. El primer paso sera la declaracin de la variable: Dim dni As Long Si hacemos la asignacin del valor a la variable, ms tarde podemos recuperar su valor con solo hacer referencia a la variable. dni=52255477 resto=dni Mod 23 A partir de este momento podemos utilizar las variables dni o resto para obtener sus correspondientes valores. Variable: Nombre que se le asigna a una posicin de memoria con la intencin de almacenar en ella informacin y ms tarde recuperarla de forma fcil, tan solo es necesario hacer referencia al nombre de la variable. El nombre de una variable debe cumplir lo siguiente:

Debe comenzar por una letra y no puede contener espacios ni caracteres especiales como: &, /, #, @, \, +, {, etc. No pueden ser el nombre de palabras reservadas como: If, Then, While, For, Next, Dim, etc. El nombre no puede tener ms de 256 caracteres. Se pueden mezclar letras y nmeros.

Ejemplo: Dim a1 As Single, a2 As Double, b111 As Boolean

4 Variables y control del flujo

MATRICES (Tablas, vectores o array)


Cuando se estn utilizando hay ocasiones en las que el nmero de variables necesario a utilizar es muy grande, lo que hace que tanto al declarar las variables como al utilizarla sea engorroso y poco efectivo. Para solucionar este problema es para lo que se utilizan las matrices. Podramos decir que las matrices son un conjunto de variables que tienen el mismo nombre y slo se diferencian por un ndice. Ejemplo: Si queremos declarar 40 variables Integer podemos hacer: Dim a1 As Integer, a2 As Integer, ..., a40 As Integer (Los puntos suspensivos no valen, habra que escribir las 40 variables) Dim a(40) As Integer De esta forma se declaran las 40 variables a y podemos utilizarlas usando el ndice correspondiente a cada una de ellas. Los ndices varan desde 0 hasta 39. a(0)=4 a(1)=8 Pero la ventaja es an mayor al utilizar las variables dentro de bucles For. Por ejemplo, con el siguiente cdigo generaramos 40 nmeros aleatorios enteros entre 0 y 9. Dim a(40) As Integer, i As Integer For i=0 To 39 a(i)=Int(Rnd*10) Next i Se pueden declarar matrices de varias dimensiones, es decir, con varios ndices. Dim a(10,5) As Integer En este caso se han declarado 50 variables de tipo Integer que seran a(0,0), a(0,1), a(0,2), a(0,3), a (0,4), a(1,0), a(1,1) hasta a(9,4). Estos valores tambin se podran recorrer con dos bucles anidados. For i=0 To 9 For j=0 To 4 a(i)=Int(Rnd*10) Next j Next i Si queremos declarar una matriz con lmites distintos es posible hacer de la siguiente forma: Dim a(6 To 12) As Long De esta forma el primer elemento sera a(6) y el ltimo a(12).

4 Variables y control del flujo

MBITO DE LAS VARIABLES


Como ya hemos visto en lo que llevamos sobre programacin, el uso de las variables es muy importante, as como el concepto de matrices. Para terminar los conceptos fundamentales sobre variables veremos el concepto de mbito de una variable. El mbito de una variable corresponde con las partes de un programa en los que el valor de la variable es utilizable de forma correcta y coherente. Muchas veces se le da el nombre de vida de una variable. Ejemplo: Supongamos que tenemos un formulario con dos botones de comando (Command1 y Command2) en los que hemos escrito el siguiente cdigo: Private Sub Command1_Click() Dim A As Single Randomize A=Rnd*10 Msgbox A End Sub Private Sub Command2_Click() A=A+20 Msgbox A End Sub Podemos comprobar como en el primer botn se genera un valor aleatorio entre 0 y 10, sin embargo, si despus de pulsar el botn 1 pulsamos el botn 2 debera salir el mismo nmero pero aumentado en 20 unidades, pero no es as y siempre se muestra el valor 20. La explicacin de este funcionamiento es la siguiente: la variable A ha sido declarada en el evento Command1_Click , lo que conlleva que slo mantiene su valor dentro de este procedimiento, al utilizar la variable A dentro del evento Command2_Click , no se est utilizando la misma variable, son variables distintas que tienen el mismo nombre pero que funcionan en mbitos distintos. En el segundo botn aunque no se haya declarado, Visual Basic la ha creado automticamente y la ha inicializado a cero. Si queremos declarar una variable de para que se pueda utilizar dentro de todos los procedimientos de un mismo formulario, tendramos que hacer la declaracin fuera de cualquier evento. Ejemplo: Dim A As Single Private Sub Command1_Click() Randomize A=Rnd*10 Msgbox A End Sub Private Sub Command2_Click() A=A+20 Msgbox A End Sub Para hacer variables accesibles desde varios formularios se utilizan las instrucciones Public y Private conjuntamente con Dim. Sobre este tema profundizaremos ms adelante.

4 Variables y control del flujo

CONTROL DEL FLUJO


Dentro de la programacin, la parte ms importante es la relacionada con el control del flujo del programa, que adems es necesario conjugarla con la lgica interna que estemos intentando dar a las tareas que tengamos que realizar. Para llevar a cabo estas tareas existen principalmente dos grupos de estructuras: estructuras de bucles y estructuras condicionales o de bifurcacin. Generalmente todas estas estructuras estarn mezcladas en todos los programas.

ESTRUCTURAS DE REPETICIN
En este apartado veremos las siguientes estructuras para realizar una misma operacin un determinado nmero de veces: For ... Next, Do ... Loop, While ... Wend. Existen algunas ms que por el momento no tendremos en cuenta pues su utilizacin es ms avanzada. For ... Next Un bucle For ... Next tiene la siguiente sintaxis: For Indice=Inicio To Fin Step Paso ... ... (Bloque de instrucciones que se repetirn) ... Next Indice El bucle For ... Next es una estructura en la que un bloque de instrucciones se repite para los distintos valores del la variable Indice. La primera vez que se ejecuta el bucle, la variable Indice toma el valor indicado como Inicio, la segunda vez la variable Indice toma el valor anterior (Inicio) ms el valor indicado en Paso (Inicio + Paso), y as sucesivamente. En cada ejecucin del bucle la variable Indice se incrementa el valor indicado en Paso, hasta que llegue el momento en el cual Indice sea mayor que Fin, en cuyo caso finalizar el bucle. Ejemplo: For i=0 To 100 Step 5 Print i Next i Con este ejemplo obtenemos todos los mltiplos de 5 comprendidos entre 0 y 100, ambos inclusive. Do ... Loop Un bucle Do ... Loop sirve para realizar repetidas veces un bloque de instrucciones mientras se cumpla una determinada condicin. En muchas ocasiones tendremos que realizar bucles que a priori no sabemos el nmero de veces que tendrn que ejecutarse, en estos casos utilizaremos este tipo de bucles. La condicin que indica la ejecucin del bucle se puede situar al comienzo o al final del bucle y siempre precedida de While (Mientras) o Until (Hasta que). La sintaxis es: Do While condicion (o Until condicion) ... ... Loop Do ... ... Loop While condicion (o Until condicion)

4 Variables y control del flujo

Ejemplo: Para probar este tipo de bucles vamos a realizar un pequeo programa que se estar ejecutando hasta que tecleemos la palabra salir, y en caso contrario nos contar el nmero de letras que tiene la palabra introducida. Dim Mensaje As String, Palabra As String Mensaje = Introduce una palabra y te contar & Chr(13) & _ el nmero de letras que tiene la palabra escrita. & Chr(13) & Chr(13) & _ (Si quieres terminar escribe salir) Do While Palabra <> salir Palabra = InputBox(Mensaje) MsgBox La palabra introducida tiene & CStr(Len(Palabra)) & letras. Loop El bucle Do ... Loop se estar ejecutando mientras que la palabra introducida sea distinta de salir, igualmente en lugar de Do While Palabra <> salir podamos haber escrito Do Until Palabra = salir. Vamos a aclarar algunas de cosas nuevas que han aparecido en este cdigo: 1. Si estamos escribiendo una lnea de cdigo que es demasiado larga, podemos dividirla en dos poniendo al final el carcter de subrayado ( _ ). 2. La funcin InputBox sirve para introducir una cadena de texto y que sea recogida en una variable. Esta funcin admite varios parmetros como en este caso la variable Mensaje que har que se visualice un texto. 3. La funcin Chr sirve para escribir caracteres (caracteres ASCII), en este caso se ha utilizado para escribir el carcter 13 que es el equivalente a un salto de lnea. 4. La funcin Len se utiliza para calcular la longitud de una cadena de caracteres, en este caso se ha utilizado para ver la longitud del texto escrito en la variable palabra. While ... Wend Este tipo de bucles est ya en desuso debido a que es menos flexible que el anterior (Do ... Loop) y no aporta nada nuevo. Es equivalente a usar Do While ... Loop. Su sintaxis sera: While condicion ... ... Wend Este bucle se repetir siempre que la condicin sea cierta.

4 Variables y control del flujo

ESTRUCTURAS CONDICIONALES O DE BIFURCACIN


Las estructuras encargadas de evaluar condiciones y actuar de una u otra forma en funcin del resultado obtenido al evaluar una expresin, reciben el nombre de estructuras condicionales o de bifurcacin y tienen una gran importancia a la hora de escribir el cdigo de un programa. En este apartado veremos las siguientes estructuras y funciones: If ... Then ... Else, Select Case, Choose y Switch. If ... Then ... Else Esta estructura, ya vista anteriormente, evala una expresin cuyo resultado ser interpretado cono Verdadero (True) o Falso (False). En el caso de que la expresin evaluada resulte Verdadero se ejecutarn un grupo de instrucciones, y en el caso de que resulte Falso se ejecutar otro grupo distinto de instrucciones. La sintaxis completa es: If condicion Then ... (Instrucciones que se ejecutan si Verdadero) Else ... (Instrucciones que se ejecutan si Falso) End If Como hemos indicado anteriormente la sintaxis anterior es la completa, aunque tambin puede escribirse de las siguientes formas: If condicion Then ... End If Ejemplos: 1) Ejemplo de una estructura completa: If Letra = p Then Print El valor de la variable Letra es p Else Print La variable Letra tiene un contenido distinto de p End if 2) Ejemplo de una estrucura incompleta: If a<>0 And (b^2-4*a*c)>=0 Then X1 = (-b+sqr(b^2-4*a*c))/(2*a) X2 = (-b-sqr(b^2-4*a*c))/(2*a) End If 3) Ejemplo en una sola lnea: If Nombre <> Then Print El nombre es & Nombre If condicin Then instruccin

4 Variables y control del flujo

Select Case Existen situaciones en las que el programa necesita realizar distintas opciones en funcin de los valores que tomen determinadas variables y adems el nmero de tareas distintas a realizar es numeroso. Con la estructura If ... Then slo hay posibilidad de crear dos posibles acciones una si la condicin es cierta y otra si la condicin es falsa. Con la estructura Select Case podemos hacer una respuesta mltiple acorde a diferentes situaciones. La sintaxis es: Select Case expresin Case valor1 ... (Grupo de instrucciones 1) Case valor2 ... (Grupo de instrucciones 2) Case valor3 ... (Grupo de instrucciones 3) Case Else ... (Grupo de instrucciones alternativo) End Select La estructura Select Case funciona ejecutando slo uno de los siguientes grupos de instrucciones dependiendo del valor de la expresin evaluada. nicamente se realizarn las instrucciones del bloque en el que expresin sea igual a valorn. En el caso de que expresin no coincida con ninguno de los valores listados, se ejecutara el grupo de instrucciones incluido despus de Case Else. La estructura Select Case permite que en cada una de las opciones Case se introduzca una lista de valores, en lugar de un nico resultado. Estos distintos valores deben estar separados por comas. Ejemplo: Dim a As Integer, Valor As String Randomize a = Int(Rnd*10) Select Case a Case 0, 1, 2, 3, 4, 5 Valor = 1 Case 5, 7, 8 Valor = X Case 9 Valor = 2 End Select En este cdigo podemos ver como se genera un nmero entero aleatorio que va desde 0 hasta 9, y en funcin del valor obtenido, a la variable de cadena Valor de le asigna 1, X o 2. Nota: La lnea Randomize sirve para inicializar la generacin de nmeros aleatorios, de lo contrario siempre saldra la misma secuencia de nmeros aleatorios. La funcin Rnd genera un nmero aleatorio entre 0 y 1, que al multiplicarlo por 10, el nmero oscilara entre 0 y 9.999999. Con la funcin Int hacemos que el resultado final sea un nmero aleatorio entero entre 0 y 9.

4 Variables y control del flujo

Funciones IIf, Choose y Switch Aparte de las estructuras que hemos visto, tambin existen funciones que nos devuelven un valor determinado en respuesta a alguno de los parmetros indicados a la funcin en particular. IIf(Condicin, ParteSiCierta, ParteSiFalsa) La funcin IIf evala una condicin lgica (de resultado True o False) y en el caso de que la condicin resulte verdadera devuelve el siguiente parmetro, en el caso de que la condicin resulte falsa, devuelve el ltimo parmetro. Ejemplo: Vamos a utilizar esta funcin para seleccionar el mximo de dos valores cualesquiera: Dim Valor1 As Long, Valor2 As Long, Maximo As Long Dim Cadena As String Valor1 = Int(Rnd*100) Valor2 = Int(Rnd*100) Maximo = IIF(Valor1>Valor2, Valor1, Valor2) Cadena = Los nmeros obtenidos aleatoriamente han sido: & Chr(13) Cadena = Cadena & CStr(Valor1) & y & CStr(Valor2) & Chr(13) Cadena = Cadena & El mximo es: & CStr(Maximo) MsgBox Cadena Switch(Condicin1, Valor1, Condicin2, Valor2, ...) Esta funcin recibe pares de parmetros formados por una condicin y un valor a devolver en el caso de que la condicin asociada sea verdadera. Esta funcin evala todas las condiciones y devuelve el valor asociado a la primera condicin cierta, con esto hay que resaltar que si en alguna condicin se realiza una operacin no permitida (divisin por cero, raz de un nmero negativo, etc.) la funcin generar un error en tiempo de ejecucin. Ejemplo: Dim Valor As Integer, Cadena As String Randomize Valor = Int(Rnd*100) Cadena = Switch( (Valor Mod 2)=0, Nmero Par, (Valor Mod 2)=1, Nmero Impar) Cadena = El nmero generado ha sido & CStr(Valor) & Cadena MsgBox Cadena, vbInformation, Ejemplo Choose(Indice, Opcin1, Opcin2, Opcin3, ...) La funcin Choose devuelve uno de los parmetros indicados como opcin, en funcin del valor recibido como ndice, es decir, si Indice=1 devuelve Opcin1, si Indice=2 devuelve Opcin2 y as sucesivamente. Ejemplo: Dim Asignatura As String, Numero as Integer Randomize Numero = Int(Rnd*3) + 1 Asignatura = Choose(Numero, Informtica, Francs, Dibujo) MsgBox Asignatura: & Asignatura

5 Funciones y subrutinas

CAPTULO 5: FUNCIONES Y SUBRUTINAS


En programacin es muy importante que el cdigo est bien estructurado y organizado, esto es beneficioso tanto para su entendimiento como para su posterior mantenimiento, en este sentido las funciones y subrutinas tienen una gran importancia. La diferencia entre funcin y subrutina es pequea, es ms, en algunos lenguajes de programacin no existen subrutinas como elementos del lenguaje, slo existen funciones. Tanto las funciones, como las subrutinas son fragmentos de cdigos que generalmente es necesario utilizarlo varias veces dentro un mismo programa. La diferencia est en que las funciones devuelven valores y las subrutinas no devuelven nada, por este motivo en algunos lenguajes de programacin las subrutinas no existen como tal, son funciones que no devuelven ningn valor. Ejemplos: Subrutina: Supongamos que en un formulario necesitamos poner algunos cuadros de texto en blanco, la parte del cdigo que realiza esta tarea no necesita devolver ningn valor para que el programa contine, slo tendra que realizarlo y nada ms. Sub CuadrosEnBlanco Text1.Text = Text2.Text = Text3.Text = Text4.Text = Text5.Text = End Sub Funcin: Supongamos que en nuestro programa necesitamos calcular muchas veces el valor mximo entre dos valores dados, en este caso el programa debera indicar cual es el mayor de los valores pasados como parmetros. Function Maximo( valor1 As Double, valor2 As Double) As Double If valor1> valor2 Then Maximo = valor1 Else Maximo = valor2 End If End Function Como hemos visto en los ejemplos, a la funcin le hemos pasado dos valores como parmetros, tambin a las subrutinas se le puede pasar parmetros, pero slo las funciones devuelven valores, en nuestro ejemplo el ltimo As Double indica el tipo de dato que la funcin devuelve a la lnea del programa que lo ha llamado. Para ejecutar una subrutina (se dice hacer una llamada) slo es necesario incluir una lnea con el nombre la subrutina: ... CuadrosEnBlanco ... Existen ms formas de llamar a una subrutina, pero como primer contacto con funciones y subrutinas, no es necesario profundizar ms en este sentido.

5 Funciones y subrutinas

Para hacer una llamada a una funcin, es necesario que esta tenga sentido debido a que la funcin devuelve un valor, la llamada hay que hacerla en un lugar donde el programa est esperando el valor devuelto por la funcin. Normalmente son variables las que recogen el valor devuelto por la funcin, aunque tambin se pueden utilizar en cualquier instruccin en la que se espere un valor coherente. ... num = Maximo ( num1, num2) ... ... If Maximo( num1, num2)>10 Then ...

Las funciones y subrutinas al igual que las variables tienen un mbito en el cual pueden ser utilizadas, de esta forma es posible que slo se puedan utilizar dentro del formulario que las contiene, en cualquier formulario del proyecto que estemos construyendo, incluso pueden ser utilizadas por otros programas ajenos al que estamos desarrollando. Las palabras claves que se utilizan para estos cometidos son: Public, Private, Friend y Static, estas palabras se anteponen a la palabra Sub o Function en la definicin de la funcin o subrutina. Slo destacaremos que cuando queremos que una funcin o subrutina sea utilizada en cualquier formulario del programa que estamos realizando debemos declararla como Public, si por el contrario queremos que slo se pueda utilizar dentro del formulario donde se ha escrito debemos utilizar la palabra Private. Por el momento no entraremos en ms profundidad al respecto. Otra caracterstica importante dentro de las funciones es el paso de los parmetros puesto que existen dos formas de pasarlos a una funcin o subrutina: por valor o por referencia. Cuando se pasa un parmetro por referencia, se est pasando la direccin de memoria donde est almacena la variable. Esto significa que si la funcin o subrutina modifica el valor de este parmetro, se modificar a partir del lugar del programa donde se realiz la llamada. Cuando se pasa un parmetro por valor, se est pasando slo el contenido de la variable y si el programa o subrutina modifica el parmetro, esto no influye en el programa principal que hizo la llamada a la funcin. Visual Basic de forma predeterminada realiza el paso de parmetros por referencia, es decir, si no indicamos nada en la declaracin de la funcin o subrutina, el paso de parmetros ser por referencia. Para indicar por referencia se utiliza (ByRef esta palabra no es necesaria) y para indicar por valor (ByVal), esto hay que indicarlo en la lnea en la que comenzamos la funcin antes del nombre del parmetro. Ejemplo: Paso de parmetros por valor. Function Maximo( ByVal valor1 As Double, ByVal valor2 As Double) Paso de parmetros por referencia. Function Maximo( valor1 As Double, valor2 As Double)

6 Acceso a ficheros

CAPTULO 6: ACCESO A FICHEROS


Hasta este momento en todos los programas que hemos realizado, cada vez que ejecutamos un programa determinado, las condiciones de partida siempre son las mismas, an no hemos visto la forma de almacenar la informacin con un programa, con la intencin de que cuando ejecutemos de nuevo el programa recuerde los datos que tena. En este captulo veremos como se puede hacer estas cosas y muchas ms. Podramos decir que existen dos formas de acceder (leer o escribir) al contenido un fichero, de manera secuencial y aleatoria. Secuencial: Es cuando se accede a un archivo comenzando por su principio y se contina leyendo la informacin ordenadamente hasta llegar al final del fichero (End Of File). Aleatoria: Es cuando se accede a la informacin de forma desordenada, es decir, leemos informacin, saltamos hacia delante y volvemos a leer informacin, retrocedemos, etc. En el caso de que deseemos un acceso aleatorio, es necesario que todos los datos tengan la misma estructura (Por ejemplo los registros de una base de datos). En ambos casos, la forma de acceder a los ficheros es semejante, es decir, hay que dar los siguientes pasos: Primer paso: Abrir el fichero que vamos a utilizar.

Pasos intermedios: Realizar las operaciones de lectura y escritura, mediante las rdenes oportunas segn la forma en la que hemos accedido. ltimo paso: Cerrar el archivo.

Abrir y cerrar el fichero Para escribir o leer en un archivo el primer paso es abrirlo y para ello se utiliza la instruccin Open que tiene la siguiente sintaxis: Open RutaNombre For Modo Access Acceso As #NumeroFichero Len=LongitudRegistro Veamos cada una de estas partes: RutaNombre es el nombre del archivo incluida la ruta (Path). Debe ser una cadena de texto. Modo indica la forma en la que se acceder al archivo. Palabra clave con uno de estos valores: Append, Binary, Input, Output, Acceso, indica las operaciones permitidas en el archivo. Palabra clave con uno de estos valores: Read, Write y Read Write. NumeroFichero debe ser un nmero entero entre 1 y 511. Indica el canal de escritura o lectura que utilizar el ordenador para manejar la informacin. LongitudRegistro es la longitud del registro en caso de que el acceso al archivo sea aleatorio, si el acceso es secuencial se ignorar. Ejemplo: Open C:\CursoVB\Cap6\Datos.dat For Output As #1

6 Acceso a ficheros

La orden anterior abre un archivo llamado Datos.dat para escribir (salida Output) en l, en caso de no existir creara uno nuevo. Tambin podemos observar como se le asigna el canal de escritura 1. Nota: 1) Hay muchas ocasiones en las que el programador no sabe el directorio concreto en el que se encuentra la aplicacin y se desea escribir en un archivo de dicha carpeta. En estos casos se utiliza el objeto App (Aplicacin), que tiene una propiedad llamada Path en la que se encuentra la ruta del programa que se est ejecutando. Ej.: Open App.Path & \Datos.dat For Output As #1 2) No es recomendable asignar el nmero de canal directamente, es mejor utilizar una variable entera y buscar el canal libre con la funcin FreeFile. Dim NumFich As Integer, Nombre As String NumFich = FreeFile Nombre = App.Path & \Datos.dat Open Nombre For Output As #NumFich Igual que la instruccin Open sirve para abrir un archivo y luego poder escribir o leer en l, la instruccin Close se utiliza para cerrar el archivo una vez ha sido utilizado. La sintaxis de la orden Close es mucho ms sencilla que la sintaxis de la orden Open, es suficiente con indicar el nmeros del archivo Close #numerodearchivo Escritura y lectura en un fichero Existen varias formas de escribir en un archivo, vamos a comenzar viendo las formas ms sencillas y despus cada uno puede profundizar segn sus necesidades. Comenzaremos escribiendo en un archivo de forma secuencial y ms tarde veremos como escribir de forma aleatoria. Forma secuencial Los archivos secuenciales se escriben y leen de forma ordenada, es decir, si despus de abrir un archivo realizamos la operacin de lectura, estamos leyendo el primer dato que se escribi. Al escribir los datos se van almacenando unos detrs de otros en el orden en el que lo hayamos programado. Una vez abierto el archivo, vamos a comenzar escribiendo en l. Para ello vamos a utilizar la instruccin Write, cuya sintaxis es: Write #numerodearchivo, lista de variables Ejemplo: Dim Num As Integer, Cad as String, NumFich As Integer Num = 456 Cad = Hola NumFich = FreeFile Open App.Path & \Datos.dat For Output As #NumFich (Abre el archivo) Write #NumFich, Num, Cad (Esta es la instruccin que escribe en el archivo) Close #NumFich (Cierra el archivo)

6 Acceso a ficheros

Como se puede comprobar en el ejemplo, despus de escribir los datos en el archivo hay que cerrar el archivo, en el caso de que no lo vayamos a utilizar. Para leer el archivo que hemos escrito debemos utilizar la orden Input que tiene la siguiente sintaxis: Input #numerodearchivo, lista de variables En la utilizacin de Write y de Input hay que tener cuidado en el orden en el cual se especifica la lista de variables, pues debe ser el mismo. El archivo escrito en el ejemplo anterior lo podemos leer as: Ejemplo: Dim Num As Integer, Cad as String, NumFich As Integer NumFich = FreeFile Open App.Path & \Datos.dat For Output As #NumFich (Abre el archivo) Input #NumFich, Num, Cad (Esta es la instruccin que lee del archivo) Close #NumFich (Cierra el archivo) Podemos comprobar en el ejemplo anterior como se sigue la misma estructura explicada anteriormente, es decir, buscamos un canal libre para el archivo que vamos a leer, seguidamente abrimos el archivo en modo Input (obtener datos de l), leemos la informacin y cerramos el archivo. Ejercicio: Crea un formulario con un TextBox y un botn Command de manera que al pulsar el botn se guarde en un archivo llamado prueba.dat el contenido del TextBox. A continuacin crea un segundo formulario con un botn Command y un control Label de forma que al pulsar sobre el botn se lea el contenido del archivo prueba.dat y lo muestre en el control Label. Forma aleatoria Un archivo aleatorio tiene la posibilidad de leer o escribir un dato en cualquier momento, sin necesidad de leer o escribir los intermedios. A esta ventaja de los archivos aleatorios, hay que aadir algunos inconvenientes (ms bien un poco de organizacin). Los archivos aleatorios se utilizan cuando se desea almacenar informacin que tiene una estructura y longitud determinada (registros de una base de datos). Se debe conocer la longitud de los registros antes de abrir el archivo, para este cometido se suele utilizar la funcin Len(variable). Para comenzar a ver los archivos de acceso aleatorio vamos a comenzar viendo cmo podemos crear un tipo de registro para guardar un tipo determinado de informacin. Se utiliza la estructura Type ... End Type. Ejemplo: Public Type Registro Campo1 As String Campo2 As Integer Campo3 As Single End Type Este cdigo debemos escribirlo en el apartado General (Declaraciones), es decir, fuera de cualquier evento.

6 Acceso a ficheros

Con este cdigo conseguimos crear un nuevo tipo de dato que ya podemos utilizar, por ejemplo podemos declarar una variable llamada Reg del tipo Registro, es decir, el siguiente cdigo es vlido: Dim Reg As Registro Reg.Campo1 = Miguel Reg.Campo2 = 20 Reg.Campo3 = 6.75 Si necesitamos saber qu longitud tiene un registro, podemos obtenerla mediante la funcin Len, es decir, Len(Reg) no devolvera la cantidad de memoria necesaria para almacenar la variable Reg. Vista la forma de crear un tipo de registro, podemos abrir un archivo de acceso aleatorio con el siguiente cdigo: Dim Reg As Registro, Nombre As String, NumFich As Integer NumFich = FreeFile Nombre = App.Path & \Datos.dat Open Nombre For Random As #NumFich Len = Len(Reg) Para escribir en un archivo de acceso aleatorio se utiliza la instruccin Put que tiene la siguiente sintaxis: Put #numerodearchivo, numeroderegistro, registro Siguiendo con el ejemplo anterior podramos escribir: Put #NumFich, 1, Reg De esta forma escribiramos el primer registro. Para leer un registro se utiliza la instruccin Get que tiene la siguiente sintaxis: Get #numerodearchivo, numeroderegistro, registro En el ejemplo anterior escribiramos: Get #NumFich, 1, Reg Una vez realizadas las operaciones de lectura o escritura, al igual que en el caso de acceso secuencial, deberamos continuar con el cierre del archivo que estamos utilizando: Close #NumFich

6 Acceso a ficheros

Ejemplo (Completo): Vamos a crear un programa que realizar tareas de escritura y de lectura. Escritura: Vamos a escribir tantos registros como el usuario indique en la primera caja de texto. Para cada registro escribir un String de tamao mximo 10 formado por N + nmero de registro, es decir, N & CStr(i), donde i es el nmero de registro. Escribiremos un nmero entero aleatorio comprendido entre 0 y 999, es decir, Cint(Rnd * 1000) y como tercer campo escribiremos un nmero Single aleatorio comprendido entre 0 y 10, es decir, Rnd * 10. Lectura: Cuando se pulse el botn Leer, slo se leer un registro el registro que el usuario haya indicado en la segunda caja de texto. El contenido de este registro se mostrar en 3 etiquetas (en este caso las etiquetas se han llamado Campo1, Campo2 y Campo3 (No son las que muestran Campo1, Campo2 y Campo3, son las que estn debajo).

En la pgina siguiente se encuentra el cdigo completo que realiza estas operaciones.

6 Acceso a ficheros

Private Type Registro Campo1 As String * 10 Campo2 As Integer Campo3 As Single End Type Private Sub BtEscribir_Click() Dim Reg As Registro Dim NumFich As Integer, i As Integer, Nombre As String Nombre = App.Path & "\Datos.dat" NumFich = FreeFile Open Nombre For Random As #NumFich Len = Len(Reg) Randomize For i = 1 To CInt(Text1.Text) Reg.Campo1 = "N " & CStr(i) Reg.Campo2 = CInt(Rnd * 1000) Reg.Campo3 = Rnd * 10 Put #NumFich, i, Reg Next i Close #NumFich End Sub Private Sub BtLeer_Click() Dim Reg As Registro Dim NumFich As Integer, i As Integer, Nombre As String Nombre = App.Path & "\Datos.dat" NumFich = FreeFile Open Nombre For Random As #NumFich Len = Len(Reg) i = CInt(Text2.Text) Get #NumFich, i, Reg Campo1.Caption = Reg.Campo1 Campo2.Caption = Reg.Campo2 Campo3.Caption = Reg.Campo3 Close #NumFich End Sub Private Sub Command3_Click() End End Sub

También podría gustarte