Sunteți pe pagina 1din 114

Instituto Universitario Politcnico

Santiago Mario Unidad I: Entorno de Programacin


Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
1. Conceptos Bsicos de Programacin
Lenguajes de Programacin
Al igual que los idiomas sirven de vehculo de comunicacin entre seres humanos, existen
lenguajes que realizan la comunicacin entre ellos y las computadoras. Estos lenguajes permiten
expresar las instrucciones que el programador desea que la computadora ejecute.
Los principales tipos de lenguajes utilizados en la actualidad son tres:
Lenguaje maquina
Lenguaje de bajo nivel (ensamblador)
Lenguajes de alto nivel

Lenguajes mquina
Se llama lenguaje mquina a las instrucciones que se dan directamente a la computadora,
utilizando una serie de dgitos binarios o bits, representados por los nmeros 0 y 1 que especifican
una operacin. Aunque este lenguaje es el que entiende la computadora, es muy difcil de manejar
en la comunicacin humana. Las instrucciones en lenguaje maquina dependen del hardware de la
computadora y, por lo tanto, diferirn de una computadora a otra.

Lenguajes de bajo nivel (ensamblador)


Los lenguajes de bajo nivel son ms fciles de utilizar que los lenguajes mquina, pero, al igual
que ellos, dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es el
ensamblador (assembler lenguaje). Las instrucciones en lenguaje ensamblador son conocidas
como mnemotcnicos.
Por ejemplo, mnemotcnicos tpicos de operaciones aritmticas son:
En ingles, ADD, SUB, DIV, etc.
En espaol, SUM,RES,DIV, etc.
Una instruccin tpica de suma seria:
ADD M, N, P
Esta instruccin podra significar "sumar el nmero contenido en la posicin de memoria M al
nmero almacenado en la posicin de memoria N y situar el resultado en la posicin de memoria
P". Evidentemente es mucho ms sencillo recordar la instruccin anterior con un mnemotcnico
que su equivalente en cdigo mquina.
0110 1001 1010 1011
Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la
computadora (en esto se diferencia esencialmente del lenguaje mquina) sino que requiere una
fase de traduccin al lenguaje mquina.
El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa
traducido en lenguaje maquina se conoce como programa objeto, ya directamente entendible por
la computadora.
El traductor de programas fuente a objeto es un programa llamado ensamblador (assembler),
existente en casi todas las computadoras.

NOTA: No se debe confundir el programa ensamblador, encargado de efectuar la traduccin del


programa fuente escrito a lenguaje mquina, con el lenguaje ensamblador (assembly language),
lenguaje de programacin con una estructura y gramtica definidas.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Los lenguajes ensambladores presentan la ventaja frente a los lenguajes mquina de su mayor
facilidad de codificacin y, en general, su velocidad de clculo.
Los inconvenientes ms notables de los lenguajes ensambladores son:
Dependencia total de la maquina lo que impide la transportabilidad de los programas
(posibilidad de ejecutar un programa en diferentes maquinas).
La formacin de los programadores es ms compleja que la correspondiente a los
programadores de alto nivel, ya que exige no slo las tcnicas de programacin, sino
tambin el conocimiento del interior de la mquina.
Hoy da los lenguajes ensambladores tienen sus aplicaciones muy reducidas en la
programacin de aplicaciones y se centran en aplicaciones de tiempo real, control de
procesos y de dispositivos electrnicos, etc.

Lenguajes de alto nivel


Los lenguajes de alto nivel son los ms utilizados por los programadores. Estn diseados para
que las personas escriban y entiendan los programas de un modo mucho ms fcil que los
lenguajes mquina y ensambladores. Otra razn es que un programa escrito en un lenguaje de
alto nivel es independiente de la mquina; esto es, las instrucciones del programa de la
computadora no dependen del diseo del hardware o de una computadora en particular. En
consecuencia, los programas escritos en lenguajes de alto nivel son portables o transportables, lo
que significa la posibilidad de poder ser ejecutados con poca o ninguna modificacin en diferentes
tipos de computadoras; al contrario que los programas en lenguaje mquina o ensamblador que
slo se pueden ejecutar en un determinado tipo de computadora.

Los lenguajes de alto nivel presentan las siguientes ventajas:


El tiempo de formacin de los programadores es relativamente corto comparado con otros
lenguajes.
La escritura de programas se basa en reglas sintcticas similares a los lenguajes humanos.
Nombres de las instrucciones tales como READ, WRITE, PRINT, OPEN, etc.
Las modificaciones y puestas a punto de los programas son ms fciles.
Reduccin del coste de los programas.
Transportabilidad.
Los inconvenientes se concretan en:
Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del
programa fuente para conseguir el programa definitivo.
No se aprovechan los recursos internos de la mquina que se explotan mucho mejor en
lenguajes mquina y ensambladores.
Aumento de la ocupacin de memoria.
El tiempo de ejecucin de los programas es mucho mayor.

Al igual que pasa con los lenguajes ensambladores, los programas fuente tienen que ser
traducidos por programas traductores, llamados compiladores e intrpretes.
Los lenguajes de programacin de alto nivel existentes en la actualidad son muy numerosos,
aunque la prctica demuestra que su uso mayoritario se reduce a BASIC, COBOL, PASCAL, C,
C++,... y en el campo de la primera enseanza a LOGO, PILOT...
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Traductores de lenguaje
Los traductores de lenguajes son programas que traducen a su vez los programas fuente escritos
en lenguajes de alto nivel a cdigo mquina.
Los traductores se dividen en:
Interpretes
Compiladores

Intrpretes
Un intrprete es un traductor que toma un programa fuente, lo traduce y a continuacin lo ejecuta
(dicho programa por medio de la computadora desarrolla una tarea especfica).
Un lenguaje que soporte un traductor de tipo intrprete se denomina lenguaje interpretado.
BASIC es el modelo por excelencia interpretado.
Los programas fuente en BASIC se escriben con ayuda de un programa denominado editor que
suele venir incorporado al programa intrprete.
Programa Fuente

Intrprete

Traduccin y Ejecucin
lnea a lnea

Intrprete
Compiladores
Un compilador es un programa que traduce los programas fuente escritos en lenguajes de alto
nivel a lenguaje mquina.
Los programas escritos en lenguajes de alto nivel (en el editor del lenguaje) se llaman programas
fuente y el programa traducido programa objeto o cdigo objeto. El compilador traduce (sentencia
a sentencia) el programa fuente.
Lenguajes compiladores tpicos son: PASCAL, COBOL, C..

Fases de la compilacin
La compilacin es el proceso de la traduccin de programas fuente a programas objeto.
El programa objeto obtenido de la compilacin no ha sido traducido normalmente a cdigo
mquina sino a ensamblador. Para conseguir el programa mquina real se debe utilizar un
programa llamado montador o enlazador (linker). El proceso de montaje conduce a un programa
en lenguaje mquina directamente ejecutable:
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Programa

Compilador

Programa

Montador

Programa ejecutable
en lenguaje mquina
Fases de la compilacin
Por ejemplo:
El proceso de ejecucin de un Programa en C++ tiene los siguientes pasos:
1. Escritura del programa fuente con un editor (programa que permite a una computadora
actuar de modo similar a una mquina de escribir electrnica) y guardarlo en un dispositivo
de almacenamiento (un disco).
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador C++.
4. Verificar y corregir errores de compilacin (listado de errores).
5. Obtencin del programa objeto.
6. El montador obtiene el programa ejecutable.
7. Se ejecuta el programa y si no existen errores, se tendr la salida del mismo.
Modificacin Programa Fuente
programa fuente

Compilador

Existe errores en
la Compilacin?
si

no

Programa Objeto

Montador Programa ejecutable

Ejecucin
Fases de la ejecucin de un programa
Datos
Un dato es la representacin de un hecho, evento o elemento del mundo real. Por ejemplo, un
empleado de una empresa puede ser representado por varios datos: nombre, cdula de identidad,
cargo, edad, sexo, etc.
Puede decirse que los datos son todos aquellos objetos que la computadora puede procesar.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Tipos de datos
Los tipos de datos bsicos utilizados en computacin son los siguientes:
Entero
Real
Carcter
Cadena de caracteres
Lgico

Datos de tipo entero: son nmeros que no tienen componentes fraccionarios o decimales.
Pueden ser negativos o positivos.
Ejemplos de datos tipo entero son:
-2 25000
30 -1250
Datos de tipo real: son nmeros que tienen punto decimal y pueden ser positivos o negativos.
Ejemplos:
801.3 3550.5
-3.5 -100.1
Datos de tipo carcter: son smbolos que el computador reconoce. Un carcter puede ser una
letra (A, B, ......, Z, a, b,......z), un dgito (1, 2, .....,9) o un smbolo ( ! , @ ,
# , $ , % , ^ , * , & , +, - , .........).
Un dato de este tipo slo contiene un carcter, y debe estar entre comillas.
Ejemplos:
M, &, 9
Datos de tipo cadena de caracteres: son datos que contienen una sucesin de caracteres
delimitada por comillas.
Los siguientes son datos de tipo cadena de caracteres:
Simn Bolivar
Lic. Mendoza
31 de diciembre de 1999
1000 $
Datos de tipo lgico: son datos que slo pueden tomar uno de dos valores, verdadero o falso. Se
conocen tambin como datos de tipo booleano. Este tipo de datos se utiliza para representar las
alternativas (si / no) a determinadas condiciones.
Ejemplo: se desea saber si una persona es soltera, en este caso la respuesta ser verdadera o
falsa y puede ser representada mediante un dato de tipo lgico.

Constantes y Variables
Los datos que maneja un programa pueden ser constantes o variables. A continuacin se definen
ambos trminos.

Constante: es un valor o dato que no puede cambiar en la ejecucin de un programa. Las


constantes son valores fijos.
Una constante tiene dos atributos que la caracterizan: nombre y valor.
Ejemplos:
Pi = 3.1416
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Mnimo = 20
Empresa = Corporacin M & M
EdadMaxima= 50
Respuesta = Falso
Clase = A
El valor dado a una constante determinar su tipo. As, Pi es una constante real ya que su valor es
un nmero real. Las constantes Mnimo y EdadMxima son de tipo entero.
Empresa es una constante de tipo cadena de caracteres. La constante clase es tipo carcter y
respuesta es de tipo lgico.

Variable: es un valor o dato que puede cambiar durante la ejecucin de un programa. Una variable
representa una direccin o posicin de memoria donde se guarda un dato.
Todo dato que vaya a ser introducido en la computadora, y todo valor que se calcule a partir de
otros datos en un programa, debe manejarse como una variable.
Una variable tiene dos atributos: un nombre que la identifica y el tipo de dato que describe su uso.
Los siguientes son ejemplos de variables:
NOMBRE TIPO
Dimetro Real
Nota Entero
Ciudad Cadena de caracteres

Una variable que es de cierto tipo solamente puede tomar valores de ese tipo. Porejemplo, a la
variable nota no podra drsele el valor 11.5 porque su tipo es entero y 11.5 es un nmero real; en
este caso se originara un error.

Pasos para la construccin de un programa


Elaborar un programa de computacin implica llevar a cabo una serie de pasos que comienzan
con la definicin y anlisis del problema, y conducen a la implantacin de un programa que lo
soluciona. Los pasos que generalmente sigue cualquier programador a la hora de construir un
programa son los siguientes:
Anlisis: tiene como finalidad conocer y comprender el problema. En esta fase sedefinen cules
son los datos necesarios, qu debe hacer el programa y cules son losresultados que debe arrojar.
Una tcnica que ayuda a realizar el anlisis en forma ordenada es el anlisis de entradaproceso-
salida, tambin llamado anlisis E-P-S, el cual se describe en elanlisis de entrada proceso
salida.
Diseo: consiste en especificar cmo se resuelve el problema. Durante esta fase se establece la
secuencia de pasos que debe seguirse para obtener la solucin del problema.
Esta secuencia de pasos es un esquema en base al cual se escribir el cdigo del programa.
Dos herramientas que se utilizan en el diseo del programa son los algoritmos y los diagramas de
flujo, stos se explican con detenimiento ms adelantes.
Codificacin: es la traduccin de cada uno de los pasos especificados en el diseo a un lenguaje
de programacin, siguiendo las reglas de sintaxis del mismo. El resultado de esta fase ser el
programa escrito en el computador, llamado tambin cdigo fuente.
Ejecucin y pruebas: consiste en ejecutar (correr) el programa para observar su funcionamiento y
detectar fallas. Durante esta fase se recomienda probar el programa con una amplia variedad de
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
datos para encontrar y corregir todos los errores que puedanpresentarse, de esta manera se evita
que el programa produzca resultados errneos en situaciones especficas. A la accin de
encontrar y corregir errores se le conoce como depuracindel programa.
El resultado esperado al finalizar los cuatro pasos antes descritos, es un programa de computacin
que funcione correctamente y que solucione el problema planteado.
A continuacin se explican con detenimiento el anlisis y diseo. Para llevar a cabo la codificacin,
ejecucin y pruebas del programa, es necesario conocer un lenguaje de programacin; razn por
la cual se presentan los fundamentos bsicos del lenguaje Visual Basic.

Anlisis de entrada proceso salida


Una manera fcil y ordenada de realizar el anlisis del problema, es dividir dichoanlisis en tres
partes: entrada, proceso y salida.
Entrada: en esta parte se especifican cules son los datos necesarios para resolver el problema
(datos de entrada) y de qu tipo son.
Proceso: se indican los procesos que se van a realizar con los datos de entrada, a travs de
frmulas y expresiones escritas de la manera ms sencilla posible.
Salida: aqu se explican cules son los resultados esperados.

Ejemplo 1: supngase que se quiere realizar un programa para calcular el rea de un tringulo. El
anlisis del problema usando la tcnica de entrada proceso salida, es el siguiente:
Entrada
Los datos necesarios para resolver el problema son:
b: base del tringulo. Tipo: Real
h: altura del tringulo. Tipo: Real
Proceso

Salida
A: rea del tringulo. Tipo: Real.

ALGORITMOS

Definicin de algoritmo
Un algoritmo es una secuencia de pasos lgicos necesarios para llevar a cabo una tarea
especfica, como la solucin de un problema. Los algoritmos son independientes tanto del lenguaje
de programacin en que se expresan como de la computadora que los ejecuta. En cada problema
el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una
computadora distinta; sin embargo el algoritmo ser siempre el mismo.
Por ejemplo en una analoga con la vida diaria, una receta de un plato de cocina se puede
expresar en espaol, ingls o francs, pero cualquiera que sea el lenguaje, los pasos para la
elaboracin del plato se realizaran sin importar el cocinero.
Los pasos a seguir en la solucin de una ecuacin de segundo grado.
Los pasos matemticos para la solucin de un nmero factorial.
Las instrucciones para la liquidacin de una nmina.
Las acciones que se deben seguir para la obtencin de una estadstica.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Para llegar a la realizacin de un programa es necesario el diseo previo de un algoritmo, de modo
que sin algoritmo no puede existir un programa.

Caractersticas de los algoritmos


Las caractersticas fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso.
Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el
mismo resultado cada vez.
Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento;
o sea debe de tener un nmero finito de pasos.

La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.


En el algoritmo citado anteriormente se tendr:
Entrada ingredientes y utensilios empleados
Proceso elaboracin de la receta de cocina
Salida terminacin del plato (por ejemplo, cordero)
Un algoritmo exige que se tengan varias propiedades importantes:
Los pasos de un algoritmo deben ser simples y exentos de ambigedades (diferentes
Significados), deben seguir un orden cuidadosamente prescrito, deben ser efectivos y deben de
resolver el problema en un nmero finito de pasos.

El siguiente ejemplo muestra un algoritmo para cambiar un foco quemado.


Cambiar un foco quemado podra resumirse en dos pasos:
1. Quitar el foco quemado
2. Colocar un foco nuevo

Pero, si tuviera que entrenar un robot domestico para que efecte esta tarea, tendr que ser ms
especfico y claro en los pasos a seguir, dar ms detalles (suponga que el foco se encuentra en el
techo de una habitacin):
1. Situar escalera bajo el foco quemado.
2. Elegir un foco de reemplazo (de la misma potencia que el anterior).
3. Subir por la escalera hasta alcanzar el foco.
4. Girar el foco contra las manecillas del reloj hasta que est suelto.
5. Ubicar el foco nuevo en el mismo lugar que el anterior.
6. Enroscar en el sentido de las manecillas del reloj hasta que quede apretado.
7. Bajar de la escalera.

Ejemplo 1: algoritmo para un cajero automtico simple.


1. Obtener clave secreta del usuario
2. Si la clave no es vlida, dar un mensaje de error e ir al paso 9.
3. Si la clave es vlida, preguntar el usuario el tipo de transaccin, depsito o retiro, y la
cantidad.
4. Obtener del banco el saldo actual
5. Si el tipo de transaccin es depsito, sumar la cantidad al saldo actual.
6. Si el tipo de transaccin es retiro, consultar el saldo actual.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
6.1 Si la cantidad es mayor que el saldo actual, mostrar un mensaje de error e ir al paso 9.
6.2 Si la cantidad es igual o menor que el saldo actual, restar la cantidad delsaldo actual y
entregar efectivo.
7. Mostrar el saldo actual
8. Preguntar al usuario si desea efectuar otra transaccin. En caso afirmativo ir alpaso 3.
9. Mostrar mensaje Gracias por usar el cajero automtico
10. Fin del algoritmo

Para ser correcto, un algoritmo debe reunir las siguientes caractersticas:


Debe ser claro y no ambiguo.
Debe resolver el problema correctamente.
Debe ejecutarse en un nmero finito de pasos.
Durante el desarrollo de algoritmos para computadora, es necesario idear los pasos que la
mquina deber seguir para resolver el problema planteado. Es importante especificar cada paso,
aunque algunos parezcan demasiado obvios. El algoritmo puede incluir frmulas o expresiones
matemticas.
En el siguiente ejemplo se muestra un algoritmo tpico para computadora.

Ejemplo 2: algoritmo para calcular el rea de un tringulo.


1. Obtener base del tringulo (b)
2. Obtener altura del tringulo (h)
3.
4. Escribir el rea (A)
5. Fin
Obsrvese que este algoritmo comienza con la obtencin de los datos necesarios para resolver el
problema, llamados datos de entrada (pasos 1 y 2); se recomienda colocar entre parntesis el
nombre de las variables donde se almacenarn los datos. Luego, se describe el proceso, mediante
el uso de la ecuacin correspondiente (paso 3). Una vez efectuado el proceso est la instruccin
Escribir, con la cual se indica que el resultado debe ser presentado al usuario del programa;
adems se especifica entre parntesis el nombre de la variable que almacenar el resultado para
facilitar la codificacin.

Ejemplo 3: anlisis E-P-S y algoritmo para calcular el salario de un trabajador, al cual se le paga
de acuerdo a las horas trabajadas.
a) Anlisis E-P-S
Entrada
Nom: nombre del trabajador. Tipo: cadena de caracteres
nh: nmero de horas trabajadas. Tipo: Real
T: tarifa por hora. Tipo: Real
Proceso
Calcular el salario del trabajador usando la ecuacin:
S = nh x T
Salida
S: salario del trabajador. Tipo: Real.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
b) Algoritmo
1. Obtener el nombre del trabajador (Nom)
2. Obtener el nmero de horas trabajadas (nh)
3. Obtener la tarifa por horas (T)
4. S = nh x T
5. Escribir nombre (nom) y salario del trabajador (S)
6. Fin

DIAGRAMAS DE FLUJO

Diagrama de flujo (Representacin grfica)


Un diagrama de flujo (flowchart) es una de las tcnicas de representacin de algoritmos ms
antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo
desde la aparicin de lenguajes de programacin estructurados. Un diagrama de flujo es un
diagrama que utiliza los smbolos (cajas) y que tiene los pasos del algoritmo escritos en esas cajas
unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se deben
ejecutar.
Los smbolos estndar normalizados por ANSI (abreviatura de American National Standards
Institute) son muy variados, aqu se presentan algunos:

Smbolos Funcin
Principales
Terminal (Representa el inicio y el fin de un programa. Puede
representar tambin una interrupcin que sea necesaria realizar
en el programa

Entrada/Salida (Cualquier tipo de introduccin de datos en la


memoria desde los perifricos, entrada, o registro de la
informacin procesada en un perifrico, salida

Proceso (Cualquier tipo de operacin que pueda originar cambio


de valor, formato o posicin de la informacin almacenada en
memoria, operaciones aritmticas, de transferencia, etc.

Decisin (Indica operaciones lgicas o de comparacin entre


no datos (normalmente entre dos) y en funcin del resultado de la
misma determina cul de los distintos caminos alternativos del
programas se debe seguir, generalmente tiene 2 salidas
si (respuesta SI o NO), pero puede tener tres o ms segn sea los
casos.)

Conector (Sirve para enlazar dos parte cuales quiera de un


ordinograma a travs de un conector en la salida y otro de
entrada. Se refiere a la conexin en la misma pgina del
diagrama)

Indicadores de direccin o lneas de flujos (Indica el sentido de


la ejecucin de las operaciones)
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Conector de pgina (Conexin entre dos puntos del organigrama
situado en pginas diferentes)

Llamada de Sub-rutina o de proceso determinado (Una Sub-


rutina es un mdulo independiente del programa principal, recibe
de entrada procedente de dicho programa, realiza una tarea
determinada y al terminar regresa al programa principal.

Ejemplo bsico de un diagrama de flujo:


Inicio

Leer:
nombre, horas,
precios

Calcular:
Bruto= horas*precios

Calcular:
neto= bruto-0,10*bruto

Escribir:
nombre, horas,
bruto, neto

Fin

El diagrama citado representa la resolucin de un programa que deduce el salario neto de un


trabajador a partir de la lectura del nombre, horas trabajadas, precio de la hora, y sabiendo que los
impuestos aplicados son el 10 % sobre el salario bruto.

Pseudocdigo
El pseudocdigo es un lenguaje de especificacin de algoritmos.
En s es una mezcla de lenguaje de programacin y de lenguaje natural. La idea del pseudocdigo
consiste en aprovechar la flexibilidad y poder expresivo del lenguaje natural por un lado, y las
reglas de composicin de los lenguajes de programacin de alto nivel por el otro.
El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas en ingls -
similares a sus homnimas en los lenguajes de programacin -, tales como start, end, stop, if-
then-else, while etc. La escritura del pseudocdigo exige normalmente la indentacin (sangra en
el margen izquierdo) de diferentes lneas. La representacin en pseudocdigo del diagrama de
flujo del ejemplo anterior sera:
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Start
{Clculo de impuesto y salario}
readnombre, hora, precio_hora
salario_bruto = horas * precio_hora
tasa = 0.1 *salario_bruto
salario_neto = salario_bruto - tasa
write nombre, salario_bruto, tasa, salario_neto
end

El algoritmo comienza con la palabra start y finaliza con la palabra end, en ingls (en espaol,
inicio y fin). Entre estas palabras, slo se escribe una instruccin o accin por lnea.
La lnea encerrada entre llaves { ...} se denomina comentario. Es una informacin al lector del
programa y no realiza ninguna instruccin ejecutable; slo tiene efecto de documentacin interna
del programa. Algunos autores suelen utilizar corchetes en lugar de llaves [ ...].

Ejemplo 1: diagrama de flujo para calcular el rea de un tringulo.


Inicio

Leer:
Base; b

Leer:
Altura, h

Escribir:
Area:, A

Fin

Lenguaje Algortmico
El lenguaje algortmico extrae las mejores caractersticas de los dos enfoques anteriores y los
combina en un lenguaje especial para expresar algoritmos. Del pseudocdigo se tom la facilidad
de descripcin de la prosa, al que se agreg lo conciso del diagrama de flujo.
La traduccin del lenguaje algortmico a un lenguaje de programacin debe resultar sencilla, sin
importar cual se utilice. La decisin final sobre el lenguaje de programacin a emplear depende de
muchos factores, como la naturaleza de la aplicacin particular y las caractersticas del lenguaje.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Metodologa de solucin
La principal razn para que las personas aprendan a programar en general y los lenguajes de
programacin en particular es utilizar la computadora como una herramienta para la resolucin de
problemas ayudado por una computadora. La resolucin de un problema consta de ocho etapas:
Definicin y delimitacin del problema a solucionar (enunciado del problema)
Pseudocdigo o diagrama de flujo (algoritmo)
Prueba de escritorio
Codificacin
Digitacin
Compilacin o interpretacin del programa
Ejecucin del Programa
Evaluacin de los resultados

1. - Definicin y delimitacin del problema a solucionar


El problema debe estar bien definido si se desea llegar a una solucin satisfactoria para poder
definir con precisin el problema se requiere que las especificaciones de entrada y salida sean
descritas con detalle. Una buena definicin del problema, junto con una descripcin detallada de
las especificaciones de entrada y salida, son los requisitos ms importantes para llegar a una
solucin eficaz.
Anlisis del
problema

Definicin del Especificaciones Especificaciones


problema de Entrada de Salida
El anlisis del problema exige una lectura previa del problema a fin de obtener una idea general de
lo que se solicita. La segunda lectura deber servir para responder a las preguntas:
Qu informacin debe proporcionar la resolucin del problema?
Qu datos se necesitan para resolver el problema?
La respuesta a la primera pregunta indicar los resultados deseados o las salidas del problema.
La respuesta a la segunda indicar qu datos se proporcionan o las entradas del problema.

2. - Pseudocdigo o diagrama de flujo (algoritmo)


Una computadora no tiene la capacidad para solucionar problemas ms que cuando se le
proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a
ejecutar por la mquina constituyen, como ya conocemos, el algoritmo.
En esta etapa es donde se determinan los pasos o instrucciones que deben llevarse a cabo y el
orden lgico de su ejecucin para dar una eficiente solucin al problema.
La informacin proporcionada al algoritmo constituye su entrada y la informacin producida por el
algoritmo constituye su salida.

3. - Prueba de escritorio (prueba de un algoritmo)


Para comprobar que un algoritmo realiza la tarea para la cual fue diseado, debe ejecutarse a
mano. Para esto deben utilizarse datos representativos y anotarse los valores que toman las
variables en cada paso. Esto se conoce como corrida de escritorio.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
4. - Codificacin
El programa que implementa el algoritmo debe ser escrito en un lenguaje de programacin y
siguiendo las reglas gramaticales o sintaxis del mismo. La fase de conversin del algoritmo en un
lenguaje de programacin se denomina codificacin, ya que el algoritmo escrito en un lenguaje
especfico de programacin (lenguaje de alto nivel) se denomina cdigo.

5. - Digitacin
Tras la codificacin del programa las instrucciones se convierten a un medio legible para la
computadora; a igual procedimiento se someten los datos (en disquetes, cassettes, cintas, etc.),
utilizando dispositivos como digitadoras o consolas.

6. - Compilacin o interpretacin del programa


En esta etapa la computadora chequea si todas las instrucciones estn escritas correctamente
desde el punto de vista de la sintaxis y gramtica de cada lenguaje y las transcribe, dentro de la
memoria, del lenguaje de alto nivel al lenguaje mquina para obtener el llamado programa objeto.

7. - Ejecucin del Programa


El programa objeto es ejecutado por la computadora para llegar a los resultados esperados,
utilizando los dispositivos, unidades y memoria necesaria, segn cada caso o programa.

8. - Evaluacin de los resultados


Obtenidos los resultados se les evala para verificar que sean correctos. En caso contrario, se
revisa en las etapas anteriores para detectar la falla o error, entrar a corregirla y reiniciar desde
este punto los pasos para resolver de nuevo y en forma correcta el problema.

Prueba de un algoritmo (Ejemplos)


Ejemplo No. 1
Disee un algoritmo que dadas 4 calificaciones (Cal1, Cal2, Cal3, Cal4), calcule la calificacin
promedio y escriba el resultado final junto con un mensaje explicativo.
Anlisis del problema
Entrada: Leer las calificaciones individuales
Proceso: Calcular la calificacin promedio
Salida: Escribir resultado con mensaje explicativo
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema I. Conceptos Bsicos de Programacin
Diagrama de flujo
Inicio

Leer:
Cal1, Cal2, Cal3, Cal4

Prom (Cal1+Cal2+Cal3+Cal4)/4

Si No
Es
Prom>60?

Escribir: Escribir:
Aprobaste con un Reprobaste con un
promedio de:, Prom promedio de:, Prom

Fin
Pseudocdigo
Inicio
{Clculo del promedio de calificaciones}
Leer Cal1, Cal2, Cal3, Cal4
Prom = (Cal1+Cal2+Cal3+Cal4)/4
Escribir ("Resultado final es", Prom)
Fin
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic

2. Introduccin a Visual Basic

Qu es la programacin orientada a objetos?


Se le llama objeto a todo lo que se ve en una ventana tpica de Windows; los objetos son por
ejemplo un botn de comando, una caja de texto, una imagen, en general todo objeto visible que
puedas ver en la pantalla.
Se puede definir la Programacin Orientada a Objetos (POO) como aquella en la que
trabajamos con objetos visibles cada uno de los cuales poseen sus propios eventos, mtodos y
propiedades.

Programas orientados a eventos


Es lgico que para que un programa se pueda llamar orientado a eventos debe haber sido creado
en un lenguajes de programacin orientado a objeto, ya que cada objeto espera a algn evento
que realice el usuario sobre l.
Los programas orientados a eventos son los programas tpicos de Windows, Linux, Beos, que
esperan a que el usuario realice alguna accin, ya sea con el mouse o con el teclado para realizar
alguna funcin, por ejemplo, la calculadora de Windows espera a que el usuario haga clic con el
mouse sobre uno de los botones que contienen los nmeros para ponerlo en la caja de texto, o
bien, espera a que el usuario pulse un numero desde el teclado para ponerlo en la caja de texto.

Qu es Visual Basic?
Visual Basic es un lenguaje de programacin que permite crear aplicaciones (programas) para
Windows. Usando Visual Basic se pueden construir en forma fcil, programas con una interfaz
grfica que puede incorporar elementos como ventanas, botones, cuadros de dilogo, cuadros de
texto, botones de opcin y de seleccin, barras de desplazamiento, mens, etc., propios de
cualquier aplicacin bajo Windows.
En una aplicacin Visual Basic, el programa est formado por una parte de cdigo puro, y otras
partes asociadas a los objetos que forman la interfaz grfica. Es por tanto, un trmino medio entre
la programacin tradicional, formada por una sucesin lineal de cdigo estructurado, y la
programacin orientada a objetos. Combina ambas tendencias sin embargo, no puede decirse que
Visual Basic pertenezca por completo a uno de esos dos tipos de programacin.
En esta seccin se especifican los fundamentos bsicos del lenguaje Visual Basic y la sintaxis
utilizada para crear el cdigo de los programas. Adems, se explican programas muy sencillos que
siguen el enfoque de programacin tradicional, es decir, programas secuenciales donde el usuario
introduce los datos, el programa hace los clculos y muestra los resultados. Ms adelante, se
explica cmo realizar programas con una interfaz grfica.

Programas para entorno de Windows


Visual Basic est orientado a la realizacin de programas para Windows, pudiendo incorporar
todos los elementos de este entorno informtico: ventanas, botones, caja de dialogo y de texto,
botones de opcin y de seleccin, barra de desplazamientos, graficos, mens, etc.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
Modo de Diseo y Modo de Ejecucin
La aplicacin Visual Basic de Microsoft puede trabajar de dos modos distintos: en modo de diseo
y en modo de ejecucin. En modo de diseo el usuario construye interactivamente la aplicacin,
colocando controles en el formulario, definiendo sus propiedades, y desarrollando funciones
para gestionar los eventos.
La aplicacin se prueba en modo de ejecucin. En ese caso el usuario acta sobre el
programa (introduce eventos) y prueba cmo responde el programa. Hay algunas propiedades de
los controles que deben establecerse en modo de diseo, pero muchas otras pueden cambiarse
en tiempo de ejecucin desde el programa escrito en Visual Basic 6.0, en la forma en que ms
adelante se ver. Tambin hay propiedades que slo pueden establecerse en modo de ejecucin
y que no son visibles en modo de diseo.

Formulario y Controles
Cada uno de los elementos grficos que pueden formar parte de una aplicacin tpica de Windows
es un tipo de control: botones, caja de dialogo y de texto, caja de seleccin desplegables, los
botones de seleccin y de opcin, las barras de desplazamientos horizontales y verticales, los
grficos, los mens, y muchos otros elementos son controles de Visual Basic. Cada control debe
tener un nombre a travs del cual se puede hacer referencia a l en el programa. Visual Basic
asigna nombres por defecto, y tambin permite al usuario poder cambiar estos nombres.
Un formulario es una ventana. Un formulario puede ser considerado como una especie de
contenedor para los controles. Una aplicacin puede tener una o varios formularios (ventanas),
pero un nico formulario puede ser suficiente para la creacin de una aplicacin sencilla. Los
formularios deben tener tambin un nombre que permita hacerse referencia a l o del l.
Objetos, Propiedades y Clase.
A los controles que colocamos en un formulario que poseen propiedades, mtodos y eventos se
les llaman objetos y a las caractersticas propias de esos objetos se le llaman propiedades.
La clase es la entidad genrica a la que pertenece un control, por ejemplo, en un programa puede
haber varios botones, cada uno de los cuales es un objeto que pertenece a una clase de los
controles (CommandButton). Cada formulario y cada tipo de control tienen un conjunto de
propiedades que definen su aspecto grfico (tamao, color, posicin en la ventana, tipo, tamao de
letra, etc.) y su forma de responder a las acciones (eventos) del usuario.
Las propiedadesde un objeto son datos que tienen valor lgico (true, false) o numrico concretos,
propios de ese objeto y distintos de las de otros objetos de su clase.
Para acceder a una propiedad de un objeto se hace por medio del nombre del (name), seguido de
un punto (.) y el nombre de la propiedad. Por ejemplo, para cambiar el color de fondo de una caja
de texto (TextBox) llamada Text1 seria de la siguiente manera:
Ejemplo:
Text1.BackColor = VrRed

Nombre de Objetos
En principio cada objeto de Visual Basic debe tener nombre, por medio del cual se hace referencia
de dicho objeto. El nombre (name) puede ser el que el usuario desee, e incluso Visual Basic
proporciona nombre por defecto para que los diversos controles.
Para asignar los nombres de los controles existe una conversin ampliamente aceptada que es la
siguiente: se realizan siempre tres letras en minscula que indican el tipo de control, seguido de
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
otras letras (la primera en mayscula) libremente escogidas por el usuario, que tienen que hacer
referencia al uso que se va a dar ese control.
Cuadro 1. Muestra Abreviaturas de los controles ms usuales.
Abreviatura Control Abreviatura Control
chk CheckBox cbo Combo y Drop- ListBox
cmd CommandButton dir DirListBox
drv DriveListBox fil FileListBox
frm Form fra Frame
hsb HorizontalScrollBar img Image
lbl Label lin Line
lst List mnu Menu
opt OptionButton pct PictureBox
shp Shape txt TextEditBox
tmr Timer vsb VeticalScrollBar

Mtodos
Los mtodos son funciones que tambin son llamados los programas, pero a diferencia de los
procedimientos no son programas de usuarios, sino que vienen ya pre-programadas con el
lenguaje de programacin.

Elementos del lenguaje Visual Basic

Tipos de datos
Los tipos de datos que maneja Visual Basic se especifican en el cuadro 2:

Cuadro2. Tipos de datos que acepta Visual Basic


TIPO DESCRIPCIN RANGO
Byte Entero corto 0 a 255
Integer Entero (2 bytes) -32768 a 32767
Long Entero largo (4 bytes) -2147483648 a 2147483647
Single Real de simple precisin. (4 bytes) -3.40 E+38 a 3.40E+38
Double Real de doble precisin (8 bytes) -1.79E+308 a 1 .79E+308
Currency Nmero con punto decimal fijo (8 -9.22E+14 a 9.22E+14
bytes)
String Cadena de caracteres 0 a 65500 caracteres
Date Fecha y hora (8 bytes) Fecha: 01/01/100 a 31/12/9999
Hora: 0:00:00 a 23:59:59
Boolean Lgico o booleano True o False
Variant Guarda informacin de cualquier tipo Mismo rango que el tipo de valor
de dato: enteros, reales, caracteres, almacenado.
fecha y hora.
Object Tipo especial de dato que contiene
referencias a objetos como controles
y formularios.

Declaracin de variables y constantes


La declaracin de variables o constantes implica decirle a la computadora cuntas variables y/o
constantes se utilizarn en el programa, cmo se llamarn y el tipo de datos que contendrn.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
Declaracin de constantes
Para declarar una constante en Visual Basic nicamente es necesario utilizar la palabra CONST
seguida del nombre de la constante y su correspondiente valor. La sintaxis es:
Const nombre_constante = valor
Nombre_constante: es el nombre que el programador le da a la constante que se est declarando.
Valor: valor asignado a la constante.

Ejemplo de declaracin de constantes:


Const PI = 3.1416
Const Max = 350
Const Saludo = Hola

Declaracin de variables
En Visual Basic hay diferentes formas de declarar una variable. La Sentencia DIM es la forma ms
comn. Puede emplearse en un Procedimiento, Funcin, Formulario oMdulo. La sintaxis es la
siguiente:
DIM nombre_varible As tipo
Nombre_variable: es el nombre que el programador le da a la variable que se est declarando.
Tipo: tipo de dato asociado a la variable.
Se le puede colocar cualquier nombre a una variable, siempre y cuando cumpla con las siguientes
reglas:
1. El nombre de una variable tiene que comenzar siempre por una letra y puede contener hasta
255 caracteres.
2. El nombre slo puede contener letras, nmeros y el carcter de subrayado _. No se aceptan
espacios en blanco.
3. No pueden utilizarse como nombres de variables las palabras reservadas de Visual Basic, como
por ejemplo: if, next, for, val, caption, etc. Para saber cules son las palabras reservadas se
puede consultar el Help de Visual Basic, en la referencia Reserved Words. Las palabras
reservadas aparecen en color azul cuando se escribe el cdigo del programa.

Ejemplos de declaraciones de variables:


Dim Edad as byte
Dim Nom_Estudiante as string
Dim salario as single
Dim area as double, saldo as single
Mediante estas declaraciones, el programa sabe de qu tipo de dato se trata y por tanto cmo
debe trabajar con l.
Existen otras formas de declarar las variables en Visual Basic, aqu slo se utilizar DIM.
Visual Basic no distingue entre maysculas y minsculas. Por ejemplo, las variablesSalarioTotal y
salariototal son consideradas como una misma variable y no como dos.
Debe evitarse declaraciones de variables como la siguiente:
Dim X, Y as integer
En este caso no se declaran dos variables de tipo integer como pudiera pensarse a simple vista;
se declara Y de tipo integer y X de tipo Variant.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
En Visual Basic no es necesario que se declaren todas las variables que se van a utilizar.Cuando
en elcdigo se escribe una variable nueva que no ha sido declarada, VisualBasic asume que es
una variable y que su tipo es el adecuado para el valor que le est asignando en ese momento.
Por ejemplo, si Visual Basic encuentra estas instrucciones
Nombre ="Pedro Gonzlez"
CI = "1234567"
Nota=18
Entiende que Nombre, CI y Nota son variables, que Nombre y CI son cadenas de caracteres
(string) porque su valor est entre comillas, y que Nota es un nmero (su valor no est entre
comillas).
Esta particularidad de no necesitar declarar las variables hace que sea sencillo introducir una
variable nueva. Sin embargo, puede ser una fuente de errores. Supngase que en un paso
posterior del programa, se desea hacer una operacin con la variable Nota, y que por error el
programador escribe Nata en vez de Nota. Visual Basic interpreta que Nataes una variable e ir a
leer en memoria el valor que tiene. No tendr ningn valor. Por lotanto la operacin no se har en
forma correcta y adems no dar ningn aviso de que seha cometido un error.
Para evitar este tipo de errores se recomienda declarar todas las variables que se van a utilizar en
el programa. Para que Visual Basic d un mensaje de error cuando se utiliza una variable no
declarada previamente se puede utilizar la instruccin Option Explicit, la cual se explica a
continuacin.

OPTION EXPLICIT
Obliga a declarar previamente las variables que se vayan a usar. De no haberla declarado antes
de usarla, el programa dar una comunicacin de error.
Instruccin de asignacin
Una vez que se elige un nombre y un tipo de dato para una variable, se le debe dar un valor.
Existen tres mtodos principales para dar valores a una variable:
1. Asignarle un valor dentro del programa.
2. Pedir al usuario que teclee un valor.
3. Leer un valor de un archivo de datos.
La sintaxis de una instruccin de asignacin es:
Nombre_variable = valor o expresin
Ejemplos:
1) A = X+Y +2
El resultado de sumar las variables X y Y, se le asigna a la variable A.
2) Salario = 1250000
La variable salario se le asigna el valor 1250000
3) Nombre_ alumno = Jos Rodrguez
A la variable nombre_alumno se le asigna el valor Jos Rodrguez. Obsrvese que cuando se
asigna una cadena de caracteres, sta debe ir entre comillas.
4) A=B
El contenido de la variable B se le asigna a la variable A.
Existen algunas reglas para instrucciones de asignacin que hay que tener presente:
1. Slo un nombre de variable puede ir a la izquierda del signo igual, porque indica la
ubicacin de memoria que cambiar.
2. El valor a la derecha del signo igual puede ser una constante (ejemplos b y c), otra variable
(ejemplo d) o una frmula o expresin que combine constantes y variables (ejemplo a).
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
3. La variable y su valor deben ser del mismo tipo de datos.

Operadores y expresiones aritmticas


Los operadores aritmticos que se utilizan para las operaciones bsicas son:

+ Suma
- Resta
* Multiplicacin
/ Divisin
\ Divisin sin decimales
Mod Resto de una divisin
^ Exponenciacin

Ejemplos:
1) Y = 12 + 10 Y = 22
2) Y = 12 - 10 Y=2
3) Y= 12 * 10 Y = 120
4) Y = 12 / 10 Y = 1.2
5) Y= 12 \ 10 Y=1
6) Y = 12 Mod 10 Y=2
7) Y = 12 ^ 2 Y = 144

Muchas veces es necesario construir una expresin que incluya varios operadores aritmticos, es
decir, una frmula. En ese caso hay que considerar el orden en que se ejecutan las operaciones
para escribir correctamente la expresin. En el cuadro 3 se indica el orden de precedencia de los
operadores aritmticos.

Cuadro 3. Orden de precedencia de los operadores aritmticos.


OPERADOR ORDEN DE PRECEDENCIA
() 1
^ 2
* / 3
\ 4
Mod 5
+ - 6

Ejemplos:
1) Y = ( ( 6 * 3 ) / 2 ) ^ 2 Y= 81
2) Y = (7 * 8 * (16 mod 3) \ 5 )* 3 - 28 Y= 5
3) Y = 3 * 10 * (17 mod 3) \ 5 * 3 -28 Y= -24

Algunas funciones numricas


En el cuadro 4 se muestran algunas funciones matemticas y trigonomtricas que tiene Visual
Basic, las cuales pueden ser tiles en la construccin de frmulas.

Cuadro 4. Algunas funciones matemticas y trigonomtricas


FUNCIN DESCRIPCIN
Abs ( ) Devuelve el valor absoluto de un nmero
Sqr ( ) Devuelve la raz cuadrada de un nmero
Round (x, d) Redondea un nmero real x a un nmero con d dgitos despus
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
del punto decimal. Si se omite la cantidad de decimales d, round
aproximar el nmero al entero ms cercano.
Exp ( ) Funcin exponencial. Devuelve e elevado al nmero indicado
entre parntesis.
Log ( ) Devuelve el logaritmo en base e de un nmero.
Sgn ( ) Devuelve 1 si el signo del argumento es positivo, y -1 si es
negativo.
Sin ( ) Devuelve el seno de un ngulo expresado en radianes.
Cos ( ) Devuelve el coseno de un ngulo expresado en radianes.
Tan ( ) Devuelve la tangente de un ngulo expresado en radianes.
Atn( ) Devuelve el arco tangente de un ngulo expresado en radianes.

Ejemplo:
Considrese la siguiente frmula matemtica
La expresin aritmtica equivalente en Visual Basic es Z = (abs( x -3) + srq(x)) / x^2

Operaciones de Entrada / Salida simple


Recurdese que el flujo bsico del procesamiento por computadora es entrada, proceso, salida. En
los problemas que aqu se resuelven, se asume que hay un usuario sentado frente a la
computadora introduciendo datos con el teclado, el programa acepta estos datos (entrada), los
procesa y luego muestra el resultado en la pantalla (salida).
En Visual Basic existen varias formas de gestionar las entradas y salidas. En este captulo se
explicarn las ms simples: cuadros de entrada (InputBox) y cuadros de Mensaje (MsgBox).

InputBox
Un InputBox es una ventana donde se le solicita informacin al usuario, tal como puede verse en el
siguiente ejemplo:

Figura 1. Cuadro de entrada (InputBox)


El InputBox escribe un mensaje que da informacin al usuario, en la figura 1 le est indicando que
escriba la edad. Adems presenta un cuadro donde el usuario puede escribir lo que se le est
solicitando.
Sintaxis:
Nombre_variable = InputBox (mensaje)
Esta es la expresin ms sencilla de un InputBox, donde:
Nombre_variable: corresponde al nombre de la variable en la cual se almacenar el valor que
escriba el usuario.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
Mensaje: es la frase que aparecer en el InputBox antes del cuadro donde el usuario puede
escribir su respuesta. El mensaje debe ir entre comillas.
Ejemplo 1:
Para que aparezca el InputBox de la Figura 1, debe escribirse el siguiente cdigo:
edad = InputBox("Por favor escriba su edad")

Nombre de la variable donde Mensaje (escrito entre comillas)


se almacenar el valor que el
usuario escriba

Los cuadros de entrada o InputBox siempre incluyen los botones Aceptar y Cancelar. Si el usuario
hace clic en Aceptar (o presiona la tecla Enter), lo que haya escrito se almacenar en la variable
indicada (para el ejemplo, sera la variable edad). Si se presiona cancelar, a la variable se le
asigna una cadena vaca .
Un InputBox tiene como ttulo predeterminado el nombre dado al proyecto Visual Basic en el
momento de guardar, por ejemplo, en la figura 1 se observa que el ttulo es Proyecto1. Sin
embargo, es posible colocarle un ttulo diferente, as como tambin un valor predeterminado para
la respuesta. En ese caso la sintaxis es:
Nombre_variable = InputBox (mensaje, ttulo, valor predeterminado)
Ejemplo 2:
Pais_nac = InputBox("Pas de nacimiento", "Datos personales", "Venezuela")

Nombre de Variable Mensaje Ttulo del cuadrode entrada Valor predeterminado

Esta instruccin despliega un cuadro de entrada como el siguiente:


Observe que el valor por defecto es Venezuela, esto significa que el mismo aparecer como
respuesta predeterminada. Si el usuario est de acuerdo hace clic en Aceptar. Si no est de
acuerdo puede escribir otro pas.

Figura 2. Cuadro de entrada del ejemplo 2 de InputBox

MsgBox
Un MsgBox o cuadro de mensaje es una ventana donde se puede dar informacin al usuario. En la
figura 3 se muestra un MsgBox.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic

Figura 3. Ejemplo de cuadro de mensaje (MsgBox)


Sintaxis.
La sintaxis del MsgBox en su forma ms sencilla es la siguiente:
MsgBox (mensaje)
El MsgBox muestra el mensaje y luego espera que el usuario haga clic en Aceptar.
Ejemplo 1: El cdigo para generar el cuadro de mensaje de la figura 3 es el siguiente:
MsgBox ("Este es un ejemplo de MsgBox")
Mensaje que aparece en el MsgBox
Si se desea colocar mensajes y variables en un MsgBox, stos se concatenan con el signo &. A
continuacin se dan algunos ejemplos.
Ejemplo 2: Supngase que se tiene el siguiente cdigo:
a=7
num = 4*a
MsgBox ("El nmero seleccionado es" & num)
Estas instrucciones hacen que un programa muestre el siguiente cuadro de mensaje:

Figura 4. Ejemplo 2 de MsgBox

Ejemplo 3: La instruccin
MsgBox ("lnea 1" &Chr(10) & "lnea 2")
Muestra el cuadro de mensaje de la figura 5.

Figura 5. Ejemplo 3 de MsgBox


Existen opciones que permiten cambiar la apariencia de un cuadro de mensaje, mostrando otros
botones adems del botn Aceptar, un ttulo especfico, un icono, etc.
As por ejemplo, si se desea colocar otros botones y/o un ttulo especfico en un MsgBox, debe
utilizarse la siguiente sintaxis:
Nombre_variable = Msgbox (mensaje, tipos_de_botones, ttulo)
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
Nombre_variable: se refiere a una variable donde se almacenar un nmero entero entre 1 y 7, el
cual indica el botn sobre el cual el usuario hizo clic. En el cuadro 5 se muestra el significado de
cada nmero.
Tipos_de_ botones: es un nmero entero entre 0 y 5, o una constante de Visual Basic que indica la
combinacin de botones que se desea para el MsgBox. En el cuadro 6 se muestran los posibles
valores.
Ttulo: texto que aparecer en la barra de ttulo del cuadro de mensaje.
Cuadro 5. Valores de retorno de un MsgBox
VALOR CONSTANTE VISUAL BASIC SIGNIFICADO
1 vbOK El usuario hizo clic en el botn
Aceptar
2 vbCancel El usuario hizo clic en el botn
Cancelar
3 vbAbort El usuario hizo clic en el botn
Abortar
4 vbRetry El usuario hizo clic en el botn
Reintentar
5 vbIgnorar El usuario hizo clic en el botn Ignorar
6 vbYes El usuario hizo clic en el botn S
7 vbNo El usuario hizo clic en el botn No

Cuadro 6. Botones que pueden mostrarse en un MsgBox


VALOR CONSTANTE VISUAL BASIC BOTONES QUE APARECEN
0 vbOKonly Aceptar
1 vbOKCancel Aceptar y Cancelar
2 vbAbortRetryIgnore Abortar, Reintentar, Ignorar
3 vbYesNoCancel S, No, Cancelar
4 vbYesNo S, No
5 vbRetryCancel Reintentar, Cancelar

Ejemplo 4: El MsgBox de la figura 6 se genera mediante la siguiente instruccin:


Resp = MsgBox(El inventario ha finalizado,0,Sistema de Inventarios)

Figura 6. Ejemplo 4 de MsgBox


Ejemplo 5: En el siguiente cdigo se utiliza una constante Visual Basic para mostrar los botones
S y No.

Figura 7. Ejemplo 5 de MsgBox


Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic
Para incluir un icono en un cuadro de mensaje, se suma al parmetro tipos_de_botones el valor o
constante Visual Basic que representa a un determinado icono. En el cuadro 7 se muestran los
tipos de iconos disponibles.
Cuadro 7. Tipos de iconos para un MsgBox
VALOR CONSTANTE VISUAL BASIC ICONO
16 vbcritica

32 vbQuestion

48 vbExclamation

64 vbInformation

Ejemplo 6:
El siguiente cdigo muestra un mensaje de error con un icono.
Resp = MsgBox (Error: ha introducido un dato invlido, 5 + 16, Clculos)

Figura 8. Ejemplo 6 de MsgBox

Ejemplo 7:Para mostrar el cuadro de mensaje del ejemplo 5 con un icono de interrogacin, se
escribe la siguiente instruccin:
R = Msgbox (Desea introducir nuevos datos?, vbYesNo + 32, Estadstica 1.0)

Figura 9. Ejemplo 7 de MsgBox

Ejemplo 8:
Resp = MsgBox (Faltan datos por introducir, vbexclamation, Advertencia)
Esta instruccin despliega el cuadro de mensaje de la figura 10. Obsrvese que el MsgBox slo
tiene el botn Aceptar, en ese caso no es necesario colocar 0 +vbexclamation vbOkonly +
vbexclamation, en el segundo parmetro.
Instituto Universitario Politcnico
Santiago Mario Unidad I: Entorno de Programacin
Sede Barcelona
Tema II. Introduccin a Visual Basic

Figura 10. Ejemplo 8 de MsgBox


Escritura de programas
Ya se conocen los elementos bsicos que permitirn escribir los primeros programas en Visual
Basic. Lo que falta es colocar todo entrada, proceso y salida en un programa completo que la
computadora pueda entender.
Ya que por ahora no se utilizan las herramientas visuales del lenguaje Visual Basic (formularios,
controles, etc.), el cdigo se coloca en una subrutina (seccin de cdigo) llamada Sub Main, la cual
es el punto de partida del programa.

Ejemplo 1: programa que eleva un nmero entero al cuadrado (el nmero debe ser suministrado
por el usuario).
Cdigo del programa:
Option explicit
Sub main()
Dim num As Integer, cuadrado As Integer
num = InputBox("introduzca el nmero que desea elevar al cuadrado")
cuadrado = num * num
MsgBox (Str(num) + " elevado al cuadrado es" & cuadrado)
End Sub

Ejemplo 2: Programa que calcula el rea de un tringulo.


Option explicit
Sub main()
Dim b As Single, h As Single, area As Single
b = InputBox("Introduzca la base")
h = InputBox("Introduzca la altura")
area = b * h / 2
MsgBox ("El rea del tringulo es" &area )
End Sub
Ejemplo 3: programa que calcular el precio total a pagar por un artculo si se tienecomo dato el
precio de venta y se sabe que el IVA es del 16%.
Option explicit
Sub main()
Dim pv As Single, iva As Single, pt As Single
pv = InputBox("Precio de venta")
iva = 0.16 * pv
pt = pv + iva
MsgBox (" Precio total a pagar" &pt )
End Sub
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
3. Estructuras de Decisin
Las estructuras de decisin permiten a la computadora elegir los cursos de accin a seguir en un
programa. En las estructuras de decisin se evala una condicin y dependiendo del resultado se
seleccionan las instrucciones a ejecutar. Se puede elegir entre dos o ms alternativas posibles.
Antes de comenzar a estudiar los conceptos relacionados con las estructuras de decisin, es
importante aprender a construir expresiones lgicas, usando operadores relacionales y operadores
lgicos. Este tipo de expresiones permite definir las condiciones que utilizan las estructuras de
decisin.
Operadores relacionales
Son operadores que permiten hacer comparaciones entre constantes y variables. En el cuadro 8
se muestran los operadores relacionales usados en Visual Basic, su significado y el equivalente en
notacin matemtica.
Cuadro 8. Operadores relacionales.
OPERADOR SIGNIFICADO EQUIVALENTE
MATEMTICO
> Mayor que >
< Menor que <
>= Mayor o igual que
<= Menor o igual que
= Igual a =
<> Diferente a

Operadores lgicos
Los operadores lgicos bsicos son AND, OR y NOT. Estos operadores se aplican a operandos
lgicos (booleanos), que son variables o constantes que pueden tener el valor verdadero o falso,
pero no ambos a la vez.

Operador AND
Relaciona dos operandos booleanos. Da como resultado un valor verdadero (V), si los dos
operandos son verdaderos (V); en caso contrario proporciona un resultado falso (F).
Sintaxis:
Operando 1 AND Operando 2

Las posibles combinaciones de resultados se muestran en el cuadro 9.


Cuadro 9. Resultados de un operador AND.
Operando 1 Operando 2 Resultado
V V V
V F F
F V F
F F F

Operador OR
Al igual que AND, el operador OR relaciona dos operandos booleanos. Da como resultado un valor
verdadero (V), si cualquiera de los dos operandos es verdadero (V); y proporciona un resultado
falso (F) si los dos operandos son falsos (F).
Sintaxis:
Operando 1 OR Operando 2
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
Los resultados que pueden obtenerse al aplicar un operador OR, se muestran en el cuadro 10.
Cuadro 10. Resultados de un operador OR.
Operando 1 Operando 2 Resultado
V V V
V F V
F V V
F F F

Operador NOT
Este operador se aplica a un operando lgico y da como resultado el valor opuesto al que tiene el
operando. Esto es, si el operando es verdadero el resultado es falso, y si el operando es falso el
resultado es verdadero.

Sintaxis:
NOT Operando
Los posibles resultados se muestran en el cuadro 11.
Cuadro 11. Resultados de un operador NOT.
Operando Resultado
V F
F V
Expresiones lgicas
Este tipo de expresiones se forma al combinar variables, constantes, operadores relacionales y
operadores lgicos. Se llaman expresiones lgicas o booleanas porque al ser evaluadas, el
resultado siempre ser verdadero o falso.
Las expresiones lgicas ms simples se forman al combinar variables y/o constantes con
operadores relacionales. Ejemplos de este tipo de expresiones se muestran en el cuadro 12.
Cuadro 12. Ejemplos de expresiones lgicas simples
Expresin lgica Valor de la expresin
si X=5 y Y=2
X<3 Falso
Y>X-4 Verdadero
Y <= X Verdadero
X=Y Falso

Las variables de tipo cadena de caracteres tambin se pueden comparar. En este caso la
computadora examina los valores de izquierda a derecha, carcter por carcter y compara el valor
ASCII de cada letra. De acuerdo al cdigo ASCII:
a < b < c << z
A < B < C << Z
Minsculas > Maysculas
En el cuadro 13 se muestran algunos ejemplos.

Cuadro 13. Ejemplos de expresiones lgicas con cadenas de caracteres


Expresin lgica Valor de la expresin
Mari < Marianela Verdadero
Ana > Jos Falso
Doris > Doria Verdadero
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
Es posible construir expresiones lgicas ms complejas al utilizar los operadores lgicos AND, OR
y NOT.
Ejemplos:
Sea X= Verdadero (V) y Y= Falso (F).
1. X AND Y = F
2. X OR Y = V
Se pueden utilizar varios operadores lgicos en una misma expresin. En este caso, para
determinar el valor de la expresin es necesario conocer el orden de precedencia de los
operadores lgicos, el cual se muestra en el cuadro 14.

Cuadro 14. Orden de precedencia de los operadores lgicos


OPERADOR ORDEN DE
PRECEDENCIA
() 1
NOT 2
AND 3
OR 4

Ejemplos:
Determinar el valor de las siguientes expresiones lgicas, suponiendo que A= V, B=V, C= F y D=F
1. NOT A AND B OR C
NOT V AND V OR F
F AND V OR F
F OR F = F
El valor de esta expresin es falso.
2. NOT (A AND C) OR B AND D
NOT (V AND F) OR V AND F
NOT F OR V AND F
V OR V AND F
V OR F = V
El valor de esta expresin es verdadero.
Cuando se est programando, es bastante usual tener que construir expresiones lgicas que
combinen operadores relacionales y operadores lgicos, como por ejemplo:
(A >= 5) AND (B< 8)
En expresiones de este tipo se evalan primero los operadores relacionales y luego los operadores
lgicos.
Si A = 8 y B = 2, el valor de la expresin anterior sera verdadero.

Estructuras de decisin simple


Este tipo de estructura evala una condicin, que corresponde a una expresin lgica.
Si la condicin es verdadera, se ejecuta un conjunto de instrucciones. Si la condicin es falsa se
ignoran estas instrucciones.
Una estructura de decisin simple se utiliza cuando la ejecucin de algunas instrucciones est
condicionada, pero no hay instrucciones alternativas.
La figura 11 ilustra el diagrama de flujo de este tipo de instruccin.
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin

Falsa Expresin Verdadera


Lgica

Instrucciones

Figura 11. Diagrama de flujo de una estructura de decisin simple.

Si la expresin lgica es verdadera, se ejecutarn las instrucciones. Si es falsa, no sucede nada y


la ejecucin del programa continua en las instrucciones que van despus de la estructura de
decisin simple.
La sintaxis de una estructura de decisin simple en Visual Basic es la siguiente:
If expresin lgica Then
Una o varias instrucciones
End If

Ejemplo 1: programa que calcula el salario neto de un trabajador, teniendo como entrada su
salario base y el nmero de hijos. Al trabajador se le descuenta el 5% de su salario base por
concepto de seguro social, pero si tiene ms de dos hijos se le pagan 50.000 Bs. adicionales.

Option Explicit
Sub main()
Dim sb As Single, nh As Byte, sn As Single
sb = InputBox("Salario base: ")
nh = InputBox("Nmero de hijos")
sn = sb - 0.05 * sb
If nh> 2 Then
sn = sn + 50000
End If
MsgBox ("Salario Neto = " &sn)
End Sub

Ejemplo 2: programa que calcula el precio total a pagar por la compra de un artculo,considerando
que el IVA es del 16%. Si el precio es mayor de 100.000 Bs. se realiza un descuento del 1%.

Option explicit
Sub main()
Dim Pv As Single, Pt As Single
Pv = InputBox("Introduzca el precio de venta del artculo")
If Pv> 100000 then
Pv = Pv - 0.01 * Pv
End If
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
Pt = Pv + 0.16 * Pv
MsgBox (" El precio total a pagar es " & pt)
End Sub

Estructuras de decisin doble


Se utilizan cuando la computadora debe elegir entre dos alternativas dependiendo de una
condicin. Una estructura de decisin doble evala una expresin lgica, si sta es verdadera se
ejecuta un conjunto de instrucciones, y si es falsa se ejecuta otro conjunto de instrucciones.
En la figura 12 se presenta el diagrama de flujo de este tipo de estructura de programacin. En el
mismo, se observa claramente como la computadora debe elegir entre dos cursos de accin.

Falsa Expresin Verdadera


Lgica

Instrucciones Instrucciones

Figura 12. Diagrama de flujo de una estructura de decisin doble.

En Visual Basic, una estructura de decisin doble se escribe de la siguiente manera:


If expresin lgica Then
Una o varias instrucciones
Else
Una o varias instrucciones
End If

Si la expresin lgica es verdadera se ejecutan las instrucciones que estn acontinuacin de


Then, y si la expresin es falsa, se ejecutan las instrucciones que estndespus de Else.

Ejemplo 3: programa que calcula el promedio de un estudiante dadas tres calificaciones. Si el


promedio es mayor o igual que 9.5 se debe mostrar un mensaje que indique APROBADO. En
caso contrario, el mensaje debe ser REPROBADO.

Option explicit
Sub main()
Dim C1 As Single, C2 As Single, C3 As Single, prom As Single
C1 = InputBox("Introduzca la calificacin 1")
C2 = InputBox("Introduzca la calificacin 2")
C3 = InputBox("Introduzca la calificacin 3")
Prom = (C1 + C2 + C3) / 3
If Prom >= 9.5 then
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
MsgBox (" Promedio=" & prom &Chr(10) & Chr(10) & "APROBADO")
Else
MsgBox (" Promedio=" & prom &Chr(10) & Chr(10) & "REPROBADO")
End If
End Sub

Ejemplo 4: Programa que calcula el valor de Y, el cual est dado por la siguiente ecuacin
. Si x = 0 debe dar un mensaje de error e indicar que no puede realizarse el clculo.

Option Explicit
Sub main()
Dim X As Single, Y As Single, resp As Byte
X = InputBox("Escriba el valor de X")
If X = 0 Then
resp = MsgBox("No puede realizarse el clculo" & Chr(10) & "X debeser diferente de cero",
vbCritical, "Error")
Else
Y = (X ^ 3 + 5) / X
MsgBox ("El valor de Y es " & y)
End If
End Sub

Ejemplo 5: Programa que calcula la comisin que le corresponde a un vendedor. Si vendi msde
Bs. 1.000.000, la comisin es el 3% sobre las ventas. Si vendi Bs.1.000.000 o menos, lacomisin
es del 1% de las ventas.

Option Explicit
Sub main()
Dim Ventas As Single, Com As Single
Ventas = InputBox ("Introduzca el monto vendido (Bs.)")
If Ventas > 1000000 Then
Com = 0.03 * Ventas
Else
Com = 0.01 * Ventas
End If
MsgBox (" Comisin del vendedor=" &Com )
End Sub

Estructuras de decisin anidadas


Se utilizan cuando hay ms de dos alternativas entre las cuales se puede elegir. Cuando en una
estructura de decisin, alguna de sus instrucciones es otra estructura de decisin, se dice que las
estructuras estn anidadas.
Hay diferentes maneras en que pueden anidarse las estructuras de decisin. En la figura 13 se
presentan dos formas diferentes de anidamiento.
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin

Falsa Verdadera
Expresin
Lgica

Falsa Expresin Verdadera


Lgica

Instrucciones

Instrucciones Instrucciones

Figura 13.(a) Diagrama de flujo de una estructura de decisin anidada

Falsa Expresin Verdadera


Lgica

Falsa Expresin Verdadera Falsa Expresin Verdadera


Lgica Lgica

Instrucciones Instrucciones Instrucciones Instrucciones

Figura 13.(b) Diagrama de flujo de una estructura de decisin anidada


Visual Basic permite escribir las estructuras anidadas haciendo uso de estructuras If then else,
tal como se muestra a continuacin.

If expresin lgica then


Una o ms instrucciones
Else
If expresin lgica then
Una o ms instrucciones
Else
If expresin lgica then
Una o ms instrucciones
End If
End If
End If
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
Esta sintaxis corresponde a un esquema de anidamiento similar al mostrado en la figura 13 a). Se
deja como ejercicio plantear la sintaxis correspondiente a la figura 13 b).

Ejemplo 6: programa para clasificar una especie forestal de acuerdo a su resistencia. El dato de
entrada del programa es el porcentaje de prdida de peso de la especie y la salida es uno de los
siguientes mensajes.
Mensaje % Prdida de peso
Altamente resistente [0 1]
Resistente (1 5]
Moderadamente resistente (5 10]
Muy poco resistente (10 30]
No resistente Ms de 30
Option Explicit
Sub main()
Dim pp as Single
Pp = InputBox ("Introduzca el porcentaje de prdida de peso")
If pp <=1 then
MsgBox ("Especie forestal altamente resistente")
Else
If pp <= 5 then
MsgBox ("Especie forestal resistente")
Else
If pp <= 10 then
MsgBox ("Especie forestal moderadamente resistente")
Else
If pp<= 30 then
MsgBox ("Especie forestal muy poco resistente")
Else
MsgBox ("Especie forestal No resistente")
End If
End If
End If
End If
End Sub
Ejemplo 7: Programa para calcular el precio a pagar por la compra de madera. Los datos de
entrada son la cantidad de metros cbicos a comprar, el precio por metro cbico y el tipo de
madera. La madera est clasificada en tres tipos (A, B y C). Si la cantidad a comprar es superior a
30 metros cbicos, se aplica el siguiente esquema de descuento:
Tipo de madera Descuento
A 4%
B 8%
C 10 %

Si la cantidad comprada es inferior a 30 metros cbicos el descuento es del 2%,


independientemente del tipo de madera.

Option Explicit
Sub main()
Dim cant as Single, pre as Single, pre_tot as Single, desc as Single
Dim TipoM as String
TipoM = InputBox ("Introduzca el tipo de madera")
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
cant = InputBox ("Introduzca la cantidad en metros cbicos a comprar")
pre = InputBox ("Introduzca el precio por metro cbico")
pre_tot = cant * pre
If cant > 30 then
If TipoM= "A" then
Desc = 0.04 * pre_tot
Else
If TipoM = "B" then
Desc = 0.08 + pre_tot
Else
If tipoM = "C" then
Desc = 0.1 * pre_tot
End If
End If
End If
Else
Desc= 0.02 * pre_tot
End If
Pre_tot = pre_tot Desc
MsgBox (" El precio total a pagar es " & pre_tot)
End Sub

Ejemplo 8: programa que determina cul es el mayor de tres nmeros.

Option Explicit
Sub main()
Dim a As Single, b As Single, c As Single, mayor As Single
a = InputBox("Escriba el primer nmero")
b = InputBox("Escriba el segundo nmero")
c = InputBox("Escriba el tercer nmero")
If a > b Then
If a > c Then
mayor = a
Else
mayor = c
End If
Else
If b > c Then
mayor = b
Else
mayor = c
End If
End If
MsgBox (" El nmero mayor es = " & mayor)
End Sub

Estructuras de decisin mltiple


Al igual que las estructuras de decisin anidadas, las estructuras mltiples se utilizan cuando se
quiere elegir entre varias alternativas.
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
En una estructura de decisin mltiple se especifica una variable o expresin, la cual puede tomar
diferentes valores, dependiendo del valor que tenga se ejecutarn las instrucciones pertinentes. En
la figura 14 se observa el diagrama de flujo de este tipo de estructura.

Variable o
Expresin

Valor 1 Valor 2 Valor 3 Valor n


Una o ms Una o ms Una o ms Una o ms
instrucciones instrucciones instrucciones instrucciones
Figura 14. Diagrama de flujo de una estructura de decisin mltiple

Visual Basic tiene la instruccin Select Case, que corresponde a una estructura de decisin
mltiple. Su sintaxis es la siguiente:
Select Case Variable o Expresin
Case primer valor
Una o ms instrucciones (1)
Case segundo valor
Una o ms instrucciones (2)
Case tercer valor
Una o ms instrucciones (3)
.
..
Case Else
Una o ms instrucciones (n)
End Select
El Select Case funciona de la siguiente manera: si la variable o expresin toma el primer valor se
ejecuta el bloque de instrucciones (1), si es igual al segundo valor se ejecutan las instrucciones (2),
y as sucesivamente. En el caso de que la variable o expresin no sea igual a ninguno de los
valores especificados, se ejecutan las instrucciones que estn despus del Else. Una vez que
Visual Basic ejecuta el Case que coincida, ignorar los Case restantes y continuar con el cdigo
que est despus del End Select.
La parte Case Else de la estructura Select Case es opcional, slo se coloca si es necesario. Si no
se utiliza Case Else y la variable no toma ninguno de los valores especificados en los Case, se
ejecuta el cdigo que sigue a End Select.

Ejemplo 8: Programa que recibe como dato de entrada un nmero entero entre 1 y 7, y escribe el
da de la semana correspondiente.

Option explicit
Sub main( )
Dim nmero as Integer
nmero = InputBox (Escriba un nmero entre 1 y 7)
Select Case nmero
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
Case 1
MsgBox (Domingo)
Case 2
MsgBox (Lunes)
Case 3
MsgBox (Martes)
Case 4
MsgBox (Mircoles)
Case 5
MsgBox (Jueves)
Case 6
MsgBox (Viernes)
Case 7
MsgBox (Sbado)
Case Else
MsgBox (Nmero fuera de rango)
End Select
End Sub

Formatos adicionales del Select Case


Existen dos formatos adicionales del Select Case, que permiten utilizar esta estructura cuando se
desea hacer comparaciones o utilizar un rango de valores. A continuacin se presenta el primer
formato adicional:

Select Case Variable o Expresin


Case Is Relacin:
Una o ms instrucciones
Case Is Relacin:
Una o ms instrucciones
Case Is Relacin:
Una o ms instrucciones
..
.
Case Else:
Una o ms instrucciones
End Select

Donde relacin puede ser cualquier prueba decomparacin, por ejemplo >5, <25.
El segundo formato adicional permite considerar rangos de valores, su sintaxis es la siguiente:

Select Case Variable o Expresin


Case valor_inicial To valor_final:
Una o ms instrucciones
Case valor_inicial To valor_final:
Una o ms instrucciones
Case valor_inicial To valor_final:
Una o ms instrucciones
...
Case Else:
Una o ms instrucciones
End Select
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema III. Estructuras de Decisin
Ejemplo 9: Programa que clasifica a una persona de acuerdo a su edad, Las posibles
clasificaciones son: beb, nio, adolescente, adulto y anciano.

Option Explicit
Sub main()
Dim edad As Integer
Dim Tipo As String
edad = InputBox("Escriba la edad")
Select Case edad
Case Is < 2:
Tipo = "Beb"
Case 2 To 12:
Tipo = "Nio"
Case 13 To 18:
Tipo = "Adolescente"
Case 19 To 69:
Tipo = "Adulto"
Case Is >= 70:
Tipo = "Anciano"
End Select
MsgBox (Tipo)
End Sub

Como puede observarse en los ejemplos, un Select Case cumple la misma funcin que una
estructura de decisin anidada con If Then Else, pero de una forma ms ordenada, la nica
desventaja es que slo es posible evaluar una expresin, mientras que con If pueden usarse
tantas como sean necesarias. Por ejemplo, si en un programa se quiere hacer un descuento a los
clientes tipo A que compren un monto superior a 200000 Bs, no puede usarse un Select Case ya
que hay que considerar dos criterios para tomar la decisin, uno referente al tipo de cliente y el
otro al monto de la compra. Es precisamente por eso que existen estas dos posibilidades,
estructuras de decisin anidadas y mltiple, cuando una no es vlida, se puede usar la otra.

4. Estructuras de Repeticin
Las estructuras de repeticin permiten ejecutar un conjunto de instrucciones varias veces, tantas
como sea necesario. Tambin se conocen como bucles o lazos.
En general, existen tres tipos de repeticin: Para, Mientras y Hasta; en las prximas secciones se
explica la lgica de cada una de estas estructuras y la forma de utilizarlas en Visual Basic.
Repetir Para

Se utiliza cuando de antemano es posible conocer el nmero exacto de repeticiones, el cual puede
ser un dato de entrada o un valor dado en el planteamiento del problema.

En la figura 15 se muestra el diagrama de flujo correspondiente a una estructura Repetir Para.


Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin

Repetir Para
variable = Vi hasta Vf

Instrucciones

Figura 15. Diagrama de flujo de una estructura Repetir Para

La estructura Repetir Para ejecuta las instrucciones (1), un nmero determinado de veces. El
nmero de repeticiones se especifica mediante una variable (ndice), a la cual se le da un valor
inicial (Vi) y un valor final (Vf). As por ejemplo, si se quieren ejecutar 100 veces las instrucciones
(1), el valor inicial es 1 y el valor final 100.
Cada vez que se ejecutan las instrucciones que estn dentro de la estructura de repeticin, la
variable ndice se incrementa en uno, hasta que su valor sea mayor al valor final, momento en el
cual se deja de ejecutar el bucle. El incremento de la variable ndice siempre es 1, a menos que se
indique otra cosa.

La sintaxis de una estructura Repetir Para en Visual Basic es la siguiente:

For variable = Valor_Inicial to Valor_Final Step Incremento


Una o ms instrucciones (1)
Next variable

La instruccin For ejecutar las instrucciones (1) X veces, siendo X =Valor_final Valor_inicial +1.
Step Incremento, permite especificar si se requiere un incremento diferente de uno. Si el
incremento es 1, no es necesario escribir Step.
Los ejemplos 1 y 2 muestran dos programas muy sencillos que permiten comprender la sintaxis y
el funcionamiento de la estructura For.

Ejemplo 1: programa que muestra 5 veces un mismo mensaje.


Option Explicit
Sub Main()
Dim i As Integer
For i = 1 To 5
MsgBox ("Hola Cmo estas?")
Next i
End Sub

Ejemplo 2: programa que escribe los nmeros pares comprendidos entre 2 y 10 (ambos inclusive).
Option explicit
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin
Sub Main ( )
Dim num as integer
For num = 2 to 10 step 2
MsgBox(num)
Next num
End Sub

El siguiente ejemplo muestra un programa en el cual se utiliza una estructura de repeticin para
introducir los datos de entrada y calcular un resultado.

Ejemplo 3: Programa que calcula el promedio general de un curso de n estudiantes.


Option Explicit
Sub Main()
Dim nota As Single, suma As Single, i As Integer
Dim n As Integer, promedio As Single
suma = 0
n = InputBox ("Introduzca el nmero de estudiantes a procesar:")
For i = 1 To n
nota = InputBox("Nota del estudiante " & i)
suma = suma + nota
Next i
promedio = suma / n
MsgBox("Promedio = " & promedio)
End Sub
La variable suma de este ejemplo es un acumulador. Una variable acumuladora se utiliza cuando
se quiere sumar valores sucesivos de una variable, dentro de una estructura de repeticin.
Generalmente se inicializa en cero.
Ejemplo 4: Programa que calcula el valor de la serie , donde n es un
nmero especificado por el usuario.
Option Explicit
Sub Main()
Dim n As Integer
Dim i As Integer, suma As Single
n = InputBox ("Valor de n:")
suma = 0
For i = 1 To n
suma = suma + 1 / i
Next i
MsgBox ("suma = " & suma)
End Sub

Repetir Mientras
Este tipo de estructura de programacin, repite la ejecucin de un conjunto de instrucciones
mientras que una expresin lgica es verdadera. Si la expresin lgica es falsa, no se repiten las
instrucciones.
La estructura Repetir Mientras es adecuada cuando no se conoce de antemano el nmero de
repeticiones. Por ejemplo, supngase que se desea un programa que calcule el dimetro promedio
de los rboles de una plantacin, pero no se sabe exactamente cuntos rboles son. En casos
como estos no es posible usar una estructura Repetir Para.
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin
Tambin se puede utilizar un Repetir Mientras cuando se conoce el nmero de repeticiones o
puede obtenerse como un dato de entrada, siendo una alternativa al Repetir Para.
En la figura 16 se muestra el diagrama de flujo correspondiente a una estructura Repetir
Mientras.

Expresin Verdadera
lgica

Falsa

Instrucciones

Figura 16. Diagrama de flujo de una estructura Repetir Mientras

Visual Basic proporciona tres formas distintas para definir una estructura Repetir Mientras, la
sintaxis de cada una de ellas se indica a continuacin.
a) Forma 1: expresin lgica al comienzo
Do While expresin lgica
Una o ms instrucciones (1)
Loop
Esta es la manera tradicional de utilizar un Repetir Mientras; se evala inicialmente una
expresin lgica, y si sta es verdadera se ejecuta el conjunto de instrucciones (1), si es falsa no
se ejecuta. El diagrama de flujo de la figura 4.5 corresponde a la forma 1 de Repetir Mientras en
Visual Basic.
b) Forma 2: expresin lgica al final
Do
Una o ms instrucciones (1)
Loop While expresin lgica
La forma 2 es una variante del Repetir Mientras, aqu la expresin lgica se evala al final de la
estructura de repeticin, por lo tanto, las instrucciones dentro del bucle siempre se ejecutarn al
menos una vez. Despus de la primera ejecucin del bucle, se evala la expresin lgica y si sta
es verdadera se repite la ejecucin de las instrucciones correspondientes, si es falsa no se repite.
c) Forma 3
While expresin lgica
Una o ms instrucciones (1)
Wend

Esta manera de escribir un Repetir Mientras tiene la misma lgica de la forma 1, es simplemente
otra alternativa.
Los siguientes ejemplos hacen uso de la forma 1 de la estructura Repetir Mientras. Sin embargo,
es fcil resolverlos usando cualquiera de las otras dos formas
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin
Ejemplo 5: programa que calcula el promedio general de un curso de n estudiantes.
ste es igual al ejemplo 3 pero en su solucin se utiliza Repetir Mientras.

Option Explicit
Sub Main()
Dim nota As Single, suma As Single, i As Integer
Dim n As Integer, promedio As Single
suma = 0
n = InputBox ("Introduzca el nmero de estudiantes a procesar:")
i=1
Do While i<= n
nota = InputBox("Nota del estudiante " & i)
suma = suma + nota
i=i+1
Loop
promedio = suma / n
MsgBox( "Promedio = " & promedio)
End Sub
Ejemplo 6: programa que recibe como datos de entrada las edades de los 50 empleados de una
empresa y calcula: a) el nmero de empleados que tienen menos de 30 aos, b) el nmero de
empleados que tienen entre 30 y 50 aos, c) el nmero de empleados que tienen ms de 50 aos,
y d) la edad promedio de los empleados.

Option Explicit
Sub Main()
Dim i As Integer, edad As Byte, e1 As Byte, e2 As Byte, e3 As Byte
Dim prom As Single, sumaedad As Integer
i=1
sumaedad = 0
Do While i <= 5
edad = InputBox("Edad " & i)
sumaedad = sumaedad + edad
If edad < 30 Then
e1 = e1 + 1
Else
If edad <= 50 Then
e2 = e2 + 1
Else
e3 = e3 + 1
End If
End If
i=i+1
Loop
prom = sumaedad / 5
MsgBox ("Promedio = " & prom)
MsgBox ("Empleados con menos de 30 aos= " & e1)
MsgBox ("Empleados con que tienen entre 30 y 50 aos " & e2)
MsgBox ("Empleados con ms de 50 aos= " & e3)
End Sub
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin
Las variables e1, e2 y e3 son contadores. Un contador es una variable que se utiliza para
determinar la cantidad de elementos que cumplen cierta condicin. En este ejemplo, las variables
e1, e2 y e3 almacenan la cantidad de empleados que tienen menos de 30 aos, entre 30 y 50
aos, y ms de 50 aos, respectivamente.

Ejemplo 7.Programa que recibe como entrada el volumen de los rboles de una plantacin y
calcula el volumen total, asumiendo que se desconoce cuntos rboles se van a procesar. Adems
del volumen total, el programa muestra como salida el N de rboles que fueron procesados.
Este ejemplo corresponde a una situacin donde el nmero de repeticiones es desconocido. Una
forma de resolverlo es usar un valor centinela, esto es, cuando el usuario no desee introducir ms
datos escribir como volumen el valor -1 y el programadebe dejar de recibir ms datos de entrada
y mostrar la salida. En este caso el valorcentinela es -1, podra usarse otro valor, siempre y cuando
no sea un valor posible para el volumen.

Option explicit
Sub Main()
Dim na As Integer 'nmero de rboles
Dim vol As Single
Dim sumavol As Single 'acumulador utilizado para sumar los volmenes
na = 0
vol = 0
Do While vol <> -1
vol = InputBox("Volumen " &(na + 1))
If vol <> -1 Then
sumavol = sumavol + vol
na = na + 1
End If
Loop
MsgBox ("Volumen total= " + & sumavol)
MsgBox ("Nmero de rboles procesados= " & na)
End Sub

Repetir Hasta
Esta estructura permite repetir un conjunto de instrucciones hasta que una expresin lgica sea
verdadera, o lo que es igual, repite mientras una expresin lgica es falsa.
Cuando la expresin lgica es verdadera, el bucle deja de ejecutarse y el programa contina en la
instruccin siguiente.
Un Repetir Hasta se puede utilizar en los mismos casos que se usa Repetir Mientras. La lgica
del problema indicar cul de las dos estructuras es ms conveniente emplear, o si es indiferente
utilizar cualquiera de ellas.
La expresin lgica que determina la ejecucin de un Repetir Hasta puede ir al comienzo o al
final de la estructura. En la figura 17se muestra el diagrama de flujo correspondiente a las dos
situaciones.
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin

Instrucciones
Expresin lgica Falsa

Verdadera
Expresin lgica
Instrucciones
Falsa

Verdadera

a) Expresin lgica al final b) Expresin lgica al comienzo


Figura 17. Diagrama de flujo de una estructura Repetir Hasta

La sintaxis en Visual Basic de un Repetir Hasta es la siguiente:


a) Expresin lgica al final
Do
Una o ms instrucciones (1)
Loop Until expresin lgica

Como la expresin lgica se evala al final de la estructura de repeticin, las instrucciones (1)
siempre se ejecutarn al menos una vez. Despus de la primeraejecucin del bucle, se evala la
expresin lgica y si sta es falsa se repite la ejecucin de las instrucciones, si es verdadera no se
repite.
b) Expresin lgica al comienzo
Do Until expresin lgica
Una o ms instrucciones (1)
Loop

Al comienzo del bucle se evala la expresin lgica y si sta es falsa se ejecutan las instrucciones
(1), si es verdadera no se ejecuta el Repetir Hasta.

Ejemplo 8: Programa que calcula el promedio general de un curso de n estudiantes.


ste es el mismo programa de los ejemplos 3 y 5, pero resuelto con la estructura Repetir Hasta.

Option Explicit
Sub Main()
Dim nota As Single, suma As Single, i As Integer
Dim n As Integer, promedio As Single
suma = 0
n = InputBox ("Introduzca el nmero de estudiantes a procesar:")
i=1
Do Until i> n
nota = InputBox("Nota del estudiante " & i)
suma = suma + nota
i=i+1
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin
Loop
promedio = suma / n
MsgBox ("Promedio = " & promedio)
End Sub

Ejemplo 9: Programa que permite obtener la siguiente informacin acerca de los estudiantes de
una Facultad
- Nmero de estudiantes del sexo masculino
- Nmero de estudiantes del sexo femenino
- Edad promedio
- Promedio de notas general de la Facultad
Para resolver este problema utilizando una estructura de repeticin, se requiere comoprimer dato
de entrada el nmero de estudiantes de la Facultad. Luego, para cada estudiante se solicitan los
siguientes datos: sexo, edad y promedio de notas.

Option Explicit
Sub Main()
Dim n As Integer, sexo As String, edad As Byte, prom As Single
Dim i As Integer, nm As Integer, nf As Integer, sumae As Single
Dim sumap As Single, prome As Single, promg As Single
n = InputBox("Nmero de estudiantes")
i=1
nm = 0
Do Until i > n
sexo = InputBox("Sexo:", "Estudiante " & i)
edad = InputBox("Edad:", "Estudiante " & i)
prom = InputBox("Promedio:", "Estudiante " & i)
If sexo = "M" Or sexo = "m" Then
nm = nm + 1
Else
If sexo = "F" Or sexo = "f" Then
nf = nf + 1
End If
End If
sumae = sumae + edad
sumap = sumap + prom
i=i+1
Loop
prome = sumae / n
promg = sumap / n
MsgBox("Edad Promedio=" & prome & Chr(10) & "Promedio General= " & promg)
MsgBox ("No. de hombres= " & nm &Chr(10) & "No. de mujeres= " & nf)
End Sub

Este programa utiliza variables contadoras para determinar el nmero de estudiantes del sexo
masculino (nm) y el nmero de estudiantes del sexo femenino (nf). Se asume que el sexo
masculino debe ser ingresado al programa con una letra M (mayscula o minscula), y el sexo
femenino con una F (mayscula o minscula).
Adems se usaron acumuladores (sumae y sumap) para representar la sumatoria de las edades y
la sumatoria de los promedios de notas.
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin

Ejemplo 10: este programa tiene un conjunto de instrucciones que permiten validar la entrada de
datos haciendo uso de una estructura Repetir Hasta. En el ejemplo el usuario debe introducir la
edad, pero se requiere que la edad est entre 5 y 100, es decir que una edad menor que 5 se
considera invlida, al igual que una edad superior a 100.El objetivo es que el programa detecte el
error y no acepte las edades que son invlidas.
Option Explicit
Sub main()
Dim edad As Byte, Resp As Integer
Do
edad = InputBox("Escriba su edad")
If edad < 5 Or edad > 100 Then
Resp = MsgBox("La edad debe estar entre 5 y 100", vbExclamation, "Error!")
End If
Loop Until edad >= 5 And edad <= 100
End Sub
El programa funciona de la siguiente manera:
1. Muestra un InputBox solicitando la edad

2. Si la edad no se encuentra dentro del rango especificado muestra un mensaje de error.

3. Luego vuelve a mostrar el InputBox, para que se introduzca un nuevo valor.Esto lo repite
hasta que el valor introducido para la edad sea vlido.

4. Si la edad introducida se considera vlida (entre 5 y 100), entonces se acepta el valor


escrito por el usuario en el InputBox y se asigna a la variable edad.

Ejemplo 11: programa que calcula la suma y la media aritmtica de un conjunto de nmeros.
Cada vez que se introduce un nmero se muestra un MsgBox donde se pregunta si se desea
introducir un nuevo nmero, si la respuesta es s, aparece un InputBox para escribir el siguiente
Instituto Universitario Politcnico
Santiago Mario Unidad II: Estructura s de Control en la Programacin
Sede Barcelona
Tema IV. Estructuras de Repeticin
nmero, si es no, entonces se muestran la suma, la media aritmtica y la cantidad de nmeros
procesados.
Option Explicit
Sub main()
Dim num As Single, suma As Single, media As Single, can_num As Integer
Dim resp As Byte
suma = 0
can_num = 0
Do
num = InputBox("Escriba un nmero:")
suma = suma + num
can_num = can_num + 1
resp =MsgBox("Desea introducir otro nmero?", vbYesNo + vbInformation, _
"ejemplo 11")
Loop Until resp = 7
media = suma / can_num
MsgBox ("Nmeros procesados = " & can_num &Chr(10) & "Suma = " & _
suma& Chr(10) & "Media = " & media)
End Sub

Nota: cuando una instruccin no cabe en una sola lnea, se coloca al final de sta elsmbolo _, y se
contina en la siguiente lnea.

Obsrvese que la instruccinresp =MsgBox("Desea introducir otro nmero?", vbYesNo +


vbInformation, _ "ejemplo 11") muestra el siguiente cuadro de mensaje:

Si el usuario hace clic en el botn S, la variable resp toma el valor 6 (ver cuadro 4). Si hace clic en
el botn No resp vale 7, en ese caso la expresin lgica de la estructura Do Loop Until es
verdadera, por lo tanto se deja de ejecutar el bucle e inmediatamente se muestran los resultados
en un Msgox.
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
5. Uso de Formularios y Controles
Hasta ahora no se han utilizado las capacidades que tiene Visual Basic para crear programas con
una interfaz grfica propia del ambiente Windows, que incluya botones de comando, cuadros de
texto, cuadros de dilogo, botones de opcin y de seleccin, listas desplegables, etc. En los
captulos anteriores los programas se han limitado al uso de InputBox y MsgBox para la entrada y
salida de datos, pues se hace nfasis en lgica de programacin. En este captulo se muestran
otras formas de gestionar las entradas y salidas, introduciendo la programacin por eventos.

Formularios (Form)
Un formulario es una ventana donde se colocan todos los controles del programa (botones de
comando, cuadros de texto, etiquetas, botones de opcin y de seleccin, listas, imgenes, etc.).
Un programa puede tener varios formularios, pero en programas sencillos un solo formulario
debera ser suficiente.
Cuando se inicia Visual Basic se abre en pantalla un formulario, que tiene por defecto el nombre
de Form1. En la figura 18 se observa la ventana inicial de Visual Basic; en el centro se encuentra
el formulario.

Propiedad del
Figura 18. Ventana inicial de Visual Basic.
Formulario formulario
Este formulario (Form1) ser la interfaz grfica del programa, a travs de la cual se solicitarn los
datos necesarios y se escribirn los resultados.
Una vez que se abre la ventana inicial de Visual Basic para comenzar a construir un programa, el
primer paso es colocar en el formulario los controles necesarios para que el usuario introduzca los
datos.

Ejemplo de un formulario
En la figura 19 se muestra un ejemplo de un formulario donde se piden algunos datos personales.
El programador que cre este formulario, lo hizo agregando controles al formulario que aparece en
la ventana inicial de Visual Basic (figura 18).
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles

Controles

Figura 19. Ejemplo de formulario

Algunas propiedades de los formularios


Un formulario tiene propiedades que definen su apariencia (forma, tamao, ttulo, color, etc.) y su
forma de responder a las acciones del usuario. Si se hace clic en las barras de desplazamiento del
recuadro propiedades que aparece en la ventana de Visual Basic (ver figura 18), se puede
observar una lista de todas las propiedades de un formulario y adems se puede cambiar el valor
de las mismas.
Algunas propiedades son:
Nombre: permite identificar al formulario. Se introduce en tiempo de diseo y no se puede variar
durante la ejecucin. Nombre por defecto: Form1 (Form2 y sucesivos, si hay ms de un
formulario).
Caption: ttulo del formulario. Es el texto que se mostrar en la barra de ttulo cada vez que
aparezca en pantalla el formulario, no tiene otra funcin dentro del programa. El programa no
accede a un formulario por el ttulo sino por el nombre.
No debe confundirse el Nombre con el Ttulo (Caption). Por ejemplo, en el formulario de la figura
16, en la propiedad Caption se escribi: Datos Personales; y en la propiedad Nombre se le coloc
formdatos.
MinButton: Es una propiedad booleana que admite el valor True o False. Si est en True,

aparecer el botn de minimizar el formulario , si est en False, no aparecer.


Debe configurarse de una u otra forma, dependiendo si se quiere o no minimizar el formulario
durante la ejecucin. Valor por defecto: True.
MaxButton: funciona en forma similar a la propiedad MinButton pero con el botn maximizar .
Backcolor: Establece el color de fondo del formulario.
Picture: permite seleccionar una imagen para que aparezca como fondo del formulario.
Se puede consultar el Help de Visual Basic para conocer las dems propiedades que tienen los
formularios.
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
Controles
Un control es un elemento grfico que puede incluirse en un formulario, con la finalidad de mostrar
informacin o aceptar los datos introducidos por el usuario. En el formulariode la figura 19 se
pueden observar algunos controles.
Los controles al igual que los formularios, tienen propiedades que definen sus caractersticas. Las
propiedades dependern del tipo de control que se utilice.
Para colocar un control en un formulario, basta con hacer clic en el cuadro de herramientas que se
encuentra en la parte izquierda de la ventana de Visual Basic, especficamente sobre el control
que se quiere agregar. Luego se coloca el cursor del ratn en el sitio del formulario donde se va a
insertar el control y se arrastra el ratn para especificar el tamao deseado.
En la figura 20 se muestra el cuadro de herramientas con los nombres de los diferentes controles.

Puntero PictureBox

Etiqueta (label) Cuadro de texto (TextBox)

Marco (Frame) Botn de comando (Command Button)

Cuadro de seleccin (CheckBox) Botn de opcin (Option Button)

Cuadro combinado (ComboBox) Listas (ListBox)

Barras de desplazamiento horizontal Lista de discos (DriveListBox)

Timer Barras de desplazamiento vertical


Lista de directorios (DirListBox) Lista de archivos (FileListBox)
Shap Line
Image Data

Ole
Figura 20. Cuadro de herramientas
En las siguientes secciones se explican los controles bsicos.

Etiquetas (Label)
Estos controles permiten mostrar mensajes en un formulario. Con frecuencia se utilizan etiquetas
para colocar ttulos y para escribir los resultados generados por el programa. En la figura 21 se
muestran dos etiquetas.

Figura 21. Etiquetas.


Las principales propiedades de las etiquetas son:
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
Nombre: permite identificar la etiqueta y acceder a sta mediante cdigo.
Para facilitar la lectura y anlisis de los programas escritos en Visual Basic, se acostumbra colocar
prefijos a los nombres de los controles (de acuerdo a su tipo). En el caso de la etiquetas se usa el
prefijo lbl. Un ejemplo de nombre de una etiqueta puede ser: lbltitulo.
Caption: es la propiedad ms importante ya que contiene el texto que aparece sobre la etiqueta.
Esta propiedad puede cambiarse en la ventana propiedades y en el cdigo del programa.
Alignment: permite alinear el texto de la etiqueta a la izquierda, a la derecha o centrarlo.
Font: se refiere al tipo, tamao y estilo de letra del texto de la etiqueta.
Forecolor: permite definir el color del texto de la etiqueta.
BackColor: especifica el color de fondo.
BorderStyle: si esta propiedad vale 0 la etiqueta no tiene borde, y si es igual a 1 presenta un
borde como el de la primera etiqueta de la figura 21.
Autosize: cuando est en True ajusta el tamao de la etiqueta al del texto.
WordWrap: si vale True hace que el texto se distribuya en varias lneas cuando no cabe en una
sola.
Cuadros de texto (TextBox)
Los cuadros de texto reciben la informacin que el usuario introduce. Aunque hay otros controles
que captan los datos de entrada, los cuadros de texto son la forma ms sencilla de hacerlo.
Tambin se puede utilizar un TextBox para mostrar resultados del programa, en este caso es
importante tener presente que el usuario puede modificar lo que est escrito en el cuadro de texto,
incluso si es un valor generado por el programa.

Figura 22. Cuadros de texto.


Frecuentemente se utilizan etiquetas para colocar mensajes antes de los cuadros de texto, con la
finalidad de que los usuarios sepan qu deben escribir en ellos.
Algunas propiedades de los cuadros de texto son:
Nombre: permite identificar al cuadro de texto. Se acostumbra anteponer las letras txt al nombre
de un TextBox.
Text: es la propiedad ms importante de los TextBox, ya que almacena el texto que aparece en el
cuadro.
MultiLine: si su valor es True, el cuadro de texto puede tener varias lneas. Si est en False el
texto se maneja en una sola lnea.
ScrollBars: permite agregar barras de desplazamiento horizontales y/o verticales para que el
usuario pueda moverse por las lneas del texto. Para observar estas barras la propiedad Multiline
debe tener el valor True.
Un cuadro de texto tambin tiene las propiedades font, forecolor y backcolor, las cuales funcionan
de la misma forma que en las etiquetas.
Botones de comando (Command Button)
Estos botones determinan el momento en que el usuario desea hacer algo, como salir del
programa, hacer algn clculo, comenzar a imprimir, etc. Aparecen en casi todas las ventanas de
las aplicaciones de Windows.
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
En la siguiente figura pueden verse dos botones de comando. El tamao puede cambiarse a
voluntad, pero la forma siempre es rectangular.

Figura 23. Botones de comando.


El botn de comando tiene ms de 30 propiedades, seguidamente se mencionan las ms
importantes:
Nombre: permite hacer referencia al botn. Se acostumbra colocar el prefijo cmd a los nombres de
los botones de comando.
Caption: define el texto que aparecer en el botn. Por ejemplo, en el primer botn de la figura 22
la propiedad Caption est definida como Aceptar.
Enabled: cuando est en False el botn no puede ser pulsado y se presenta en forma atenuada
(no est activado el botn).
Style: si su valor es 0 (Standard) el botn tendr la forma tradicional (ver figura 23). Si su valor es
1 (Graphical) el botn podr tener algn color o una imagen.
Backcolor: especifica el color de fondo. Para que el botn aparezca con color, ste debe ser tipo
grfico (Style=1).
Picture: permite seleccionar una imagen para que aparezca en el botn. Para poder observar la
imagen, la propiedad Style debe ser igual a 1.
Botones de opcin (OptionButton)
Un botn de opcin permite al usuario realizar una seleccin. Este control muestra una opcin que
se puede activar o desactivar. La opcin que se activa o selecciona se presentar con un punto
negro que la distingue. En la siguiente figura se muestra un ejemplo de botones de opcin.

Figura 24. Botones de Opcin.

Generalmente los controles OptionButton se utilizan en grupo, para mostrar opciones de las cuales
el usuario slo puede seleccionar una. Pueden agruparse colocndolosdentro de un control Frame

(Marco) .
Para agrupar botones de opcin se coloca en primer lugar el Frame y luego se sitan los botones,
tantos como se desee. Todos los controles OptionButton que estn dentro de un marco actan
como un solo grupo. En un mismo formulario se pueden colocar cuantos grupos de botones de
opcin se quiera, cada uno de ellos dentro de un marco. Si no se coloca un Frame todos los
botones de un mismo formulario forman un nico grupo.
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
En el ejemplo de la figura 24, se observa un grupo de botones de opcin, en el cual slo uno
puede ser seleccionado.
Algunas de las propiedades ms utilizadas de los botones de opcin son:
Nombre: define un identificador para el botn de opcin. Comnmente se empieza el nombre de
un OptionButton con las letras opt.
Caption: texto que aparece al lado del botn.
Value: es la propiedad ms importante e indica si el botn est seleccionado en tiempo de
ejecucin. Si Value es igual a True el botn est seleccionado. Si es False, el botn no estar
seleccionado.
Adems de muchas otras, tiene las propiedades backcolor, font y forecolor antes mencionadas.
Casillas de seleccin (CheckBox)
El control CheckBox funciona en forma similar al OptionButton, con la siguiente diferencia: las
casillas de seleccin no son mutuamente excluyentes, es decir, el usuario puede seleccionar una o
varias casillas, incluso si se encuentran dentro del mismo marco o formulario. En la figura 25 se
muestra un ejemplo de casillas de seleccin dentro de un marco; en el mismo se puede observar
que ms de una casilla est seleccionada.

Figura 25. Casilla de seleccin


Las casillas de verificacin tienen las mismas propiedades bsicas de los botones de opcin, pero
la propiedad Value vale 0 si la casilla no est seleccionada , 1 si est seleccionada o 2 si
est atenuada .
El prefijo que se acostumbra utilizar en el nombre de un CheckBox es chk.
Listas (ListBox)
Es un control que permite mostrar una lista de elementos, de la cual el usuario podr seleccionar
uno o varios de ellos. En la figura 26 se muestra un ejemplo de una lista, en la que se encuentra
seleccionado un elemento.

Figura 26. Lista


Si la lista no puede verse completa porque el control no es lo suficientemente grande, aparecern
en forma automtica barras de desplazamiento que le permitirn al usuario observar todos los
elementos.
Algunas propiedades de las listas son:
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
Nombre: permite identificar al ListBox. El prefijo que comnmente se utiliza en los nombres de lista
es Lst.
List: se usa para definir el contenido de la lista. Para establecer los elementos de la lista, se
escribe un elemento o valor en la propiedad List en la ventana propiedades, luego se pulsa la
combinacin de teclas Ctrl Enter, y a continuacin se escribe el siguiente valor. Cuando no hay
ms elementos que definir se oprime Enter.
Multiselect: indica las formas de seleccin. Si es 0-None (valor por defecto), el usuario podr
seleccionar slo un elemento haciendo clic sobre l. Si es 1-Simple, podr seleccionar ms de un
elemento haciendo clic sobre ellos. Si Multiselect tiene el valor2-Extended la seleccin mltiple se
har usando las teclas Ctrl y Shift.
Listindex: permite determinar el elemento de la lista que el usuario seleccion. Los elementos
estn numerados a partir de 0. Listindex almacena el ndice (nmero) del elemento seleccionado.
Por ejemplo, supngase que en la lista de la figura 26 se escoge Fortran, en ese caso la propiedad
Listindex toma el valor 4. Si el usuario no selecciona algn elemento de la lista, Listindex vale -1.
Cuando el ListBox permite seleccionar varios tems (Multiselect = 1 o 2), Linstindex guarda el
ndice del ltimo elemento seleccionado.
ListCount: almacena la cantidad de elementos que tiene la lista.
El control ListBox tiene asociados algunos mtodos que permiten realizar operaciones especficas
mediante cdigo, tales como aadir y eliminar elementos de la lista. Es importante aclarar que un
mtodo es una funcin pre-programada que viene con el lenguaje Visual Basic y que ejecuta
tareas comunes a distintos programas. Los diferentes tipos de objetos y controles tienen sus
propios mtodos.
Algunos mtodos de las listas son:
AddItem: permite agregar elementos a la lista.
Sintaxis
Nombrelista.AddItem elemento
Ejemplo: la siguiente instruccin agrega el tem Visual C++ a la lista de la figura 26, cuyo nombre
es lstLenguajes.
lstLenguajes.AddItem Visual C++
RemoveItem: se utiliza para eliminar un elemento de la lista.
Sintaxis
Nombrelista.RemoveItem posicin_del_elemento_en_la_lista
Por ejemplo, para eliminar de lstLenguajes el elemento Turbo Pascal el cdigo correspondiente es:
lstLenguajes.RemoveItem 3
Clear: elimina todos los elementos de la lista.
Sintaxis
Nombrelista.clear
Asignacin usando elementos de la lista
Si se quiere asignar un valor a un elemento determinado de la lista, mediante cdigo, se utiliza la
propiedad List con la siguiente sintaxis:
Sintaxis
Nombredelista.List(posicin del elemento) = valor
Supngase que para el ejemplo de la figura 26, se quiere cambiar a travs de cdigo el elemento
Visual Basic por Cobol, entonces la instruccin correspondiente es:
lstLenguajes.List(0) = Cobol
Tambin se puede asignar un tem de la lista a una variable. Por ejemplo, la siguienteinstruccin
asigna el elemento Delphi (No. 2 de lista de la figura 26) a la variable LengProg de tipo String:
LengProg = lstLenguajes.List(2)

Cuadros combinados (ComboBox)


Son controles que combinan un cuadro de texto y una lista. Sus propiedades ms importantes son:
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
Nombre: se utiliza para identificar el ComboBox. El prefijo que usualmente se coloca en el nombre
es cbo.
Style: permite indicar el tipo de cuadro combinado que se desea utilizar. Hay tres tipos:
1. Cuadro combinado desplegable (Style=0): ocupa slo una lnea del formulario, para ver los
elementos de la lista el usuario debe abrir el cuadro haciendo clic sobre una flecha que est en el
lado derecho del ComboBox. El usuario puede seleccionar uno de los elementos de la lista o
puede escribir un nuevo valor en el cuadro de texto disponible.
2. Cuadro combinado simple (Style=1): funciona en forma similar a un cuadro combinado
desplegable, con la diferencia que en el formulario se pueden observar varias lneas de la lista de
elementos.
3. Lista desplegable (Style=2): no permite al usuario escribir sobre el cuadro de texto, slo puede
seleccionar un valor de la lista. Se presenta en una lnea del formulario y para ver la lista el usuario
debe hacer clic en la flecha ubicada al lado derecho del ComboBox.
En la figura 27 se pueden observar los tres tipos de cuadros combinados disponibles. Ntese que
el ComboBox desplegable (Style=0) ocupa una lnea del formulario y all el usuario escribi una
ciudad que no est en la lista. Obsrvese tambin que el ComboBox tipo lista (Style=2) se
encuentra desplegado, esto es porque el usuario hizo clic en la flecha para ver las opciones
disponibles, de no ser as se mostrara en una sola lnea. Aqu el usuario no puede escribir en el
cuadro de texto.

Figura
27. Tipos de cuadros combinados (ComboBox)

Text: almacena lo que se encuentra en el cuadro de texto de un ComboBox.


Los cuadros combinados tambin tienen las propiedades List, ListIndex, ListCount y los mtodos
AddItem, RemoveItem y Clear explicados en las listas.
Control Image
Este tipo de control se utiliza para colocar imgenes en un formulario. Los tipos de archivos que
soporta el control Image son: mapas de bits (.bmp, .dib), imgenes GIF (.gif), imgenes JPEG
(.jpg), iconos (.ico, .cur) y metarchivos (.wmf, .emf).
En la figura 28 se muestra un formulario en tiempo de diseo con un control Image.
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles

Figura 28. Formulario con un control Image

Las propiedades ms importantes de un control Image son las siguientes:


Nombre: permite identificar el control Image. Se acostumbra comenzar los nombres de este tipo
de control con las letras img.
Picture: se utiliza para seleccionar la imagen que se quiere cargar en el control Image.
Stretch: cuando esta propiedad vale False, el tamao del control se ajusta al tamao de la
imagen. Si la propiedad Stretch es igual a True, la imagen se ajustar al tamao del control. En la
figura 29 se muestra el efecto que tiene esta propiedad.

Figura
29. Efecto de la propiedad Stretch del control Image
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles
BorderStyle: si esta propiedad se establece en 1 se observa un borde en el control Image, tal
como el que muestran las imgenes de la figura 29.
Control PictureBox
Un PictureBox se utiliza para mostrar imgenes, pero adems puede ser un contenedor de otros
controles (como el Frame). De esta forma puede utilizarse para agrupar controles mostrando una
imagen de fondo.

Este control es ms potente que el control Image, tiene ms propiedades, eventos y mtodos. Sin
embargo el PictureBox consume ms recursos, siendo ms lento que un Image.

Algunas propiedades son: Nombre (se acostumbra colocarle el prefijo pic), Picture y BorderStyle,
que trabajan igual que en los controles Image. No tiene la propiedad Stretch, pero tiene la
propiedad Autosize, la cual determina la forma en que el control responder al tamao de la
imagen cargada.

Si se carga una imagen y Autosize est en False (valor por defecto), el control no se ajusta al
tamao de la imagen. Si Autosize es igual a True, el control se ajustar. Laimagen siempre se
mostrar en su tamao original, ubicndose en la esquina superior izquierda del PictureBox. En la
figura 30 se muestran algunos ejemplos.

Figura 30. Efecto de la propiedad Autosize del control PictureBox

La propiedad Autosize funciona de manera distinta con las imgenes tipo metarchivos.
Estas son las nicas imgenes que ajustan su tamao al del control PictureBox. Si Autosize es
True, el tamao del control se ajusta al tamao de la imagen, y si est en False la imagen se
ajusta al tamao del control. En la figura 31 puede observarse el efecto de la propiedad Autosize
cuando se cargan metarchivos.
Instituto Universitario Politcnico
Santiago Mario Unidad III: Elementos del leguajes de programacin
Sede Barcelona
Tema V. Uso de Formularios y Controles

Figura 31. Efecto de la propiedad Autosize del controlPictureBox con metarchivos.


Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
6. Creacin y Uso de Procedimientos
Eventos
Un evento es algo que sucede durante la ejecucin de una aplicacin, especficamente, son las
acciones del usuario sobre el programa. Ejemplos de eventos son hacer clic sobre un botn, pulsar
una tecla o una combinacin de teclas, hacer doble clic sobre elnombre de un archivo para abrirlo,
escribir en un cuadro de texto, elegir una opcin deun men, colocar el ratn en un rea
determinada de la pantalla, etc.
En la programacin por eventos, un programa debe responder a distintos eventos que el usuario
genera. Por ejemplo, si se tiene un formulario con dos botones Aceptar y Cancelar, el programa
debe tener un cdigo que le diga que hacer cuando el usuario hace clic sobre alguno de ellos.
Supngase que se quiere solicitar nuevos datos si el usuario oprime el botn Aceptar, y si pulsa el
botn Cancelar, el programa debecerrarse; para ejecutar estas acciones es necesario escribir las
instrucciones en VisualBasic apropiadas.

El cdigo correspondiente a cada evento se coloca en los llamados procedimientos de evento,


que son rutinas o mdulos que contienen las instrucciones necesarias para realizar las acciones
programadas para un evento concreto. El programa slo responder a aquellos eventos que
tengan un cdigo asociado. De cierto modo, unprograma escrito en Visual Basic, no es ms que
una coleccin de pequeas rutinas.
Cada control que se coloca en un formulario soporta uno o ms eventos. Por ejemplo, si se coloca
un cuadro de texto en un formulario, tres posibles eventos que pueden ocurrir son hacer clic sobre
l, introducir texto o hacer doble clic.
Si se codificara un procedimiento para el evento hacer doble clic, las instrucciones del cdigo se
ejecutarn tan pronto el usuario haga doble clic sobre el cuadro de texto.
En el cuadro 15 se describen algunos eventos generales con los que se puede trabajar enVisual
Basic.
Cuadro15. Algunos eventos que soporta Visual Basic.
NOMBRE DEL
EVENTO DESCRIPCIN
(VISUAL BASIC)
Load Se produce al cargar un formulario, esto es, al visualizarse un
formulario.
Unload Se genera al cerrar un formulario mediante el botn cerrar.
KeyPress Sucede cuando el usuario pulsa y suelta determinada tecla.
KeyDown Se produce cuando el usuario pulsa determinada tecla
KeyUp Ocurre cuando el usuario suelta una determinada tecla
Click Se genera cuando el usuario pulsa y suelta uno de los botones del ratn
sobre un formulario o control. Para el caso de un botn de comando,
botn de opcin y casilla de seleccin, el evento ocurre cuando se pulsa
el botn izquierdo del ratn.
DblClick Sucede cuando se hace clic dos veces seguidas con el botn izquierdo
del ratn sobre un formulario o control
MouseDown Se genera cuando el usuario pulsa cualquiera de los botones del ratn
MouseUp Sucede al soltar un botn del ratn que previamente se haba pulsado
MouseMove Ocurre al mover el ratn sobre un control o un formulario.
Cmo codificar un procedimiento de evento?
Los procedimientos de evento se comienzan con la instruccin Private Sub y finalizan con End
Sub. Estas instrucciones representan la primera y la ltima lnea, respectivamente, y entre ellas se
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
encuentra lo que se denomina cuerpo del procedimiento, all se colocan todas las instrucciones
que el programa debe seguir cuando ocurra el evento en cuestin.
Sintaxis de un procedimiento de evento:
Private Sub NombredelProcedimiento ( )
Instrucciones
End Sub
El nombre del procedimiento de evento est compuesto del nombre de un control, un carcter de
subrayado y el nombre de un evento. As por ejemplo, si se desea programar el evento clic de un
botn de comando llamado cmdBotonA, es necesario tener un procedimiento de nombre:
cmdBotonA_Click( )

Nombre del control Carcter de subrayado Nombre del evento

Y si se desea hacer un procedimiento para el evento doble clic, su nombre sera:


cmdBotonA_DblClick ( ).
No es necesario saber de memoria los nombres de los eventos (dblclick, keydowm, mousemove,
etc.), ya que cuando se est agregando controles a los formularios, es posible hacer doble clic
sobre alguno de ellos y aparece la ventana de cdigo, en laparte superior derecha se encuentra
una lista desplegable con todos los eventos posibles para el control sealado.
Ejemplo de un procedimiento de evento
El siguiente cdigo corresponde a un procedimiento para el evento clic de un botn de comando
llamado cmdSumar.

Private Sub cmdSumar_Click( )


Dim a as Single, b as Single, suma as Single
a=3
b=8
suma = a + b
MsgBox ("La suma es " & suma)
End Sub
Las instrucciones de este procedimiento se ejecutarn inmediatamente despus que el usuario
haga clic sobre el botn Sumar.
Construccin de programas con una interfaz grfica.
A partir de ahora, para crear un programa Visual Basic se seguirn estos pasos:
1. Se disea y prepara la parte grfica. Esto es, se colocan sobre el formulario los controles
(botones, etiquetas, cuadros de texto, listas, etc.) que constituirn la aplicacin.
2. Se define para cada control el cdigo con el que se va a responder a los diferentes eventos. En
aplicaciones sencillas, el evento que con mayor frecuencia se programa es el evento clic de los
botones de comando.
A continuacin se presentan algunos ejemplos resueltos, donde se trabaja con una interfaz grfica
y procedimientos de evento.
Ejemplo 1: programa que eleva un nmero entero al cuadrado.
a) Diseo de la interfaz grfica
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos

La interfaz de este programa consta de un formulario que tiene los siguientes controles:
Tres etiquetas
Dos cuadros de texto
Dos botones de comando
Para comprender el programa, es conveniente indicar el nombre dado a los controles que se
utilizan en el cdigo. Recurdese que el nombre de un control se coloca en la ventana propiedades
de Visual Basic.
Control Nombre
Cuadro de texto para escribir el nmero TxtNmero
Cuadro de texto para indicar el resultado TxtResult
Botn calcular CmdCalcular
Botn salir CmdSalir

b) Cdigo del programa


El cdigo incluye dos procedimientos de evento, uno para el evento clic del botn Calcular y otro
para el evento clic del botn Salir.
Option Explicit
Private Sub CmdCalcular_Click()
Dim num As Single, res As Single
num = txtNmero.Text
res = num * num
TxtResult.Text = res
End Sub

Private Sub CmdSalir_Click()


Unload Me
End Sub
Acerca del cdigo de este programa hay algunos detalles que vale la pena aclarar:
1. Es conveniente hacer la declaracin de variables de la manera acostumbrada.
2. Obsrvese que el usuario introduce los datos en cuadros de texto. Por tal razn, el valor que
tiene la propiedad Text del cuadro de texto donde el usuario escribe el nmero que desea elevar al
cuadrado, debe asignarse a una variable:
num = txtNmero.Text
num: es el nombre de la variable
txtNmero: es el nombre del cuadro de texto donde el usuario escribe el nmero que desea elevar
al cuadrado.
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
Text: hace referencia a la propiedad Text del cuadro de texto.
Es importante saber que para acceder a una propiedad de un control mediante cdigo, se coloca el
nombre del control seguido por un punto y luego se escribe la propiedad. En el caso anterior el
control es un cuadro de texto de nombre txtNmero y se estutilizando la propiedad Text.
3. Ntese que la salida del programa (resultado de elevar un nmero al cuadrado), se coloca en un
cuadro de texto llamado txtResult. Para ello se le asigna a la propiedad Text de este cuadro la
variable que almacena el resultado (res), mediante lainstruccin:
txtResult.Text = res
De esta manera en el cuadro de texto txtResult aparecer el valor de la variable res.
4. El procedimiento del evento clic del botn cmdSalir incluye la instruccin Unload Me, que no se
haba visto hasta ahora. Unload descarga un formulario de la memoria, y cuando se escribe a
continuacin la palabra Me, descarga el formulario activo. En este ejemplo Unload Me descarga el
formulario y cierra el programa.

Ejemplo 2: programa que resuelve una ecuacin de segundo grado.


a) Diseo de la interfaz grfica

Al hacer clic sobre el botn limpiar, se borran los valores escritos en los cuadros de texto y se
dejan stos en blanco, para que el usuario pueda introducir nuevos datos y resolver otra ecuacin
de segundo grado.
Nombres de los controles utilizados en el cdigo:
Control Nombre
Cuadro de texto para el coeficiente A txtCoefA
Cuadro de texto para el coeficiente B txtCoefB
Cuadro de texto para el coeficiente C txtCoefC
Cuadro de texto para X1 txtValorX1
Cuadro de texto para X2 txtValorX2
Botn resolver cmdResolver
Botn limpiar cmdLimpiar
Botn Salir cmdSalir
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
b) Cdigo del programa
Option Explicit
Private Sub cmdLimpiar_Click()
txtCoefA.Text = ""
txtCoefB.Text = ""
txtCoefC.Text = ""
txtValorX1.Text = ""
txtValorX2.Text = ""
End Sub
Private Sub cmdResolver_Click()
Dim a As Single, b As Single, c As Single, d As Single
Dim X1 As Single, X2 As Single, pr As Single, pi As Single
a = txtcoefA.Text
b = txtCoefB.Text
c = txtCoefC.Text
d=b^2-4*a*c
If d >= 0 Then
X1 = (-b + Sqr(d)) / (2 * a)
X2 = (-b - Sqr(d)) / (2 * a)
txtValorX1.Text = X1
txtValorX2.Text = X2
Else
pr = -b / (2 * a)
pi = Abs(d)
txtValorX1.Text = pr &" + " & pi & "i"
txtValorX2.Text = pr & " - " & pi & "i"
End If
End Sub

Private Sub Salir_Click()


Unload Me
End Sub

Ejemplo 3: programa para calcular el salario mensual de un trabajador, de acuerdo a los


siguientes criterios:
El salario base depende del tipo de empleado: obreros, personal administrativo (no profesional),
tcnicos y profesionales. El salario base es 200000, 300000, 450000 y
900000 Bs., respectivamente.
Por cada hijo, el empleado obtiene un bono de 80000 Bs.
Si el empleado est inscrito en el seguro HCM se le descuenta de su salario 52300 Bs.
Dependiendo de los aos de servicio que el empleado tiene en la empresa, se da la siguiente
bonificacin:

Aos de servicio Bonificacin


Menos de 5 0
Entre 5 y 10 50000
Ms de 10 95000
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
a) Diseo de la interfaz grfica

Nombre de los controles utilizados en el cdigo:


Control Nombre
Cuadro de texto para el nmero de hijos txtHijos
Botn de Opcin obrero optObr
Botn de Opcin Administrativo optAdm
Botn de Opcin Tcnico optTec
Botn de Opcin Profesional optProf
Botn de Opcin menos de 5 (Aos de servicio) optAo5
Botn de Opcin entre 5 y 10 (Aos de servicio) optAo5_10
Botn de Opcin ms de 10 (Aos de servicio) optAo10
Botn de Opcin Si (HCM) optHCM1
Botn de Opcin No (HCM) optHCM2
Botn Calcular salario cmdCalcularSal
Botn Limpiar cmdLimpiar
Botn Salir cmdSalir
Etiqueta para escribir el salario lblSalario

b) Cdigo del programa


Option Explicit
Private Sub cmdCalcularSal_Click()
Dim nh As Byte, nom As String, sb As Single
Dim bonoao As Single, seguro As Single, sal As Single
nh = txthijos.Text
If optObr.Value = True Then
sb = 200000
Else
If OptAdm.Value = True Then
sb = 300000
Else
If OptTec.Value = True Then
sb = 450000
Else
sb = 900000
End If
End If
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
End If
If optao5.Value = True Then
bonoao = 0
Else
If optAo5_10.Value = True Then
bonoao = 50000
Else
If optAo10.Value = True Then
bonoao = 100000
End If
End If
End If
If optHCM1 = True Then
seguro = 52300
Else
seguro = 0
End If
sal = sb + 80000 * nh + bonoao - seguro
LblSalario.Caption = "SALARIO = " & sal
End Sub
Private Sub cmdLimpiar_Click()
nombre.Text = " "
hijos.Text = " "
LblSalario.Caption = " "
End Sub
Private Sub cmdSalir_Click()
Unload Me
End Sub

Comentarios sobre el cdigo:


1. Para determinar si el usuario seleccion un botn de opcin determinado se utiliza la propiedad
Value. Si es True significa que el usuario seleccion el botn, si es False no lo seleccion. Por
ejemplo: hay 4 tipos de empleado (obrero, administrativo, tcnico y profesional), para saber si un
usuario seleccion la primera opcin se utiliza lapropiedad Value de la siguiente forma:
If optObr.Value = True Then
Con esta instruccin se verifica si el usuario seleccion el botn de opcin de nombre optObr, el
cual corresponde a la opcin Obrero. Se procede de forma similar para las dems opciones,
tambin para el grupo de botones de opcin correspondientes a la inscripcin en el seguro HCM y
a los aos de servicio.
2. El resultado se escribe en una etiqueta de nombre lblResult, que en el momento de diseo del
formulario se deja vaca. Luego, despus de calcular el salario total (variable de nombre sal), el
resultado se asigna a la propiedad Caption de dicha etiqueta mediante la instruccin:
LblSalario.Caption = "SALARIO = " & sal
Mostrar los resultados en una etiqueta es ms conveniente, ya que el usuario no puede
modificarlo.

Ejemplo 4: programa que permite al usuario escribir varias lneas de texto y seleccionar el estilo
de la letra.
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
a) Diseo de la interfaz grfica

En este formulario se incluye un cuadro de texto con la propiedad Multiline = True, con la finalidad
que el usuario pueda escribir varias lneas de texto.
Se utilizan controles tipo Checkbox para seleccionar una o ms opciones. El cambio de estilo de
letra se observar despus de hacer clic sobre el botn Aplicar.
Nombre de los controles utilizados en el cdigo:

Control Nombre
Cuadro de texto txtTexto
CheckBox para seleccionar negrita chkNeg
CheckBox para seleccionar cursiva chkCur
CheckBox para seleccionar subrayada chkSubr
Botn Aplicar cmdAplicar

b) Cdigo del programa


Private Sub cmdAplicar_Click()
If chkNeg.Value = 1 Then
txtTexto.FontBold = True
Else
txtTexto.FontBold = False
End If
If chkcur.Value = 1 Then
txtTexto.FontItalic = True
Else
txtTexto.FontItalic = False
End If
If chkSubr.Value = 1 Then
txtTexto.FontUnderline = True
Else
txtTexto.FontUnderline = False
End If
End Sub
Obsrvese que en el cdigo del programa se usan las siguientes propiedades de los cuadro de
texto:
FontBold: si vale True la letra se muestra en negrita.
FontItalic: si se establece en True la letra es cursiva
Fontunderline: si es igual a True el texto aparece subrayado.
Estas propiedades tambin las tienen otros objetos de Visual Basic (formularios, etiquetas,
botones de comando, botones de opcin, etc.)
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
Ejemplo 5: este programa es parecido al ejemplo 4 pero adems de seleccionar el estilo de letra,
el usuario puede elegir entre dos tipos de fuente.
a) Diseo de la interfaz grfica

Ntese que el formulario no tiene un botn de comando donde se pueda hacer clic para ver los
cambios en el texto. Estos cambios se observarn inmediatamente despus que el usuario haga
clic sobre un checkbox (negrita, cursiva, subrayada) o sobre alguno de los botones de opcin que
indica la fuente.
Los nombres de los CheckBox y del cuadro de texto son los mismos utilizados en el ejemplo 4. Los
botones de opcin tienen como nombre optTim (Times New Roman) y optCom (Comic Sans Ms)
b) Cdigo del programa
Private Sub chkCur_Click()
If chkcur.Value = 1 Then
texto.FontItalic = True
Else
texto.FontItalic = False
End If
End Sub
Private Sub chkNeg_Click()
If chkNeg.Value = 1 Then
texto.FontBold = True
Else
texto.FontBold = False
End If
End Sub
Private Sub chkSubr_Click()
If subr.Value = 1 Then
texto.FontUnderline = True
Else
texto.FontUnderline = False
End If
End Sub
Private Sub optTim_Click()
texto.FontName = "times new roman"
End Sub
Private Sub optCom_Click()
texto.FontName = "comic sans ms"
End Sub
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
Comentarios sobre el cdigo:
1. Se utiliza la propiedad FontName para indicar el nombre de la fuente.
2. Se programa el evento clic de los CheckBox y los botones de opcin, para lograr que el cambio
en la fuente del cuadro de texto se vea cuando el usuario haga clic sobre alguna de las opciones
disponibles.

Ejemplo 6: este es un programa muy sencillo que ilustra el uso de un ListBox. Setiene una lista de
los ingenieros forestales que estn acreditados para trabajar en unaempresa determinada, el
usuario puede agregar y eliminar ingenieros. El programa tambin puede indicar la cantidad de
nombres que hay en la lista.
a) Diseo de la interfaz grfica

El botn agregar (cmdAgregar) solicita el nombre del ingeniero que se desea incluir en la lista por
medio de un InputBox y lo luego lo agrega.
El botn eliminar (cmdEliminar) saca de la lista al ingeniero que est seleccionado. Si no hay
alguno seleccionado, muestra un MsgBox indicndole al usuario que debe elegir un nombre de la
lista.
El botn contar (cmdContar) muestra un MsgBox indicando la cantidad de ingenieros que hay en la
lista.
El botn Ver nombre (cmdVer) muestra en un MsgBox, el nombre del ingeniero seleccionado.
El nombre de la lista es lstIngFor. La propiedad Sorted de esta lista fue definida en true, con la
finalidad que la lista est ordenada alfabticamente.
b) Cdigo del programa
Option Explicit
Private Sub cmdagregar_Click()
Dim nom As String, resp As Integer
nom = InputBox("Escriba el nombre del Ingeniero Forestal que desea agregar", _ "agregar")
If nom <> "" then
LstIngFor.AddItem nom
resp = MsgBox(nom & " ha sido agregado a la lista", 0 + vbInformation, _"Agregar")
else
resp = MsgBox ("Debe escribir un nombre", vbExclamation, "Agregar")
End If
End Sub
Private Sub cmdContar_Click()
Dim n As Integer, resp As Integer
n = LstIngFor.ListCount
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
resp = MsgBox("Hay " & n & " ingenieros forestales en la lista", _ 0 + vbInformation, "Contar")
End Sub
Private Sub cmdEliminar_Click()
Dim resp As Integer, ingsel As Integer
Dim nom As String
ingsel = LstIngFor.ListIndex
If ingsel = -1 Then
resp=MsgBox("Debe seleccionar en la lista el ingeniero que desea eliminar", _
vbExclamation, "Eliminar")
Else
nom = LstIngFor.List(ingsel)
LstIngFor.RemoveItem (ingsel)
resp = MsgBox(nom & " ha sido eliminado de la lista", 0 + vbInformation, _ "Eliminar")
End If
End Sub
Private Sub CmdVer_Click()
Dim nom As String, resp As Integer
ingsel = LstIngFor.ListIndex
If ingsel = -1 Then
resp = MsgBox("Debe seleccionar un ingeniero de la lista", vbExclamation, _ "Ver")
Else
nom = LstIngFor.List(ingsel)
resp = MsgBox("El Ing. For. seleccionado es " & nom, vbInformation, _ "Seleccin")
End If
End Sub

Ejemplo 7: programa para calcular el precio total a pagar por la compra de madera hmeda en un
aserradero, considerando la cantidad de metros cbicos adquirida. El aserradero vende
principalmente cedro, pardillo y samn, cuyos precios por metro cbico son: Bs. 800000, 600000 y
920000. Eventualmente se puede vender otra especie, en ese caso el programa debe solicitar el
precio por metro cbico. Si el pago es de contado se aplican los siguientes descuentos: cedro
(8%), pardillo (10%), samn (6%), otra especie (2%).
a) Diseo de la interfaz grfica
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
En esta interfaz se usan dos ComboBox, uno que permite elegir entre Cedro, Pardillo y Samn,
con la propiedad Style=1 para que pueda escribirse otra especie diferente. El segundo ComboBox
presenta dos opciones de pago: crdito y contado, con la propiedad Style=3 para que el usuario no
pueda escribir otra forma de pago distinta.
Obsrvese tambin que se utiliza un control Image para colocar una imagen en el formulario.
Tambin se pudo haber utilizado un PictureBox.
Nombre de los controles utilizados en el cdigo:
Control Nombre
Cuadro de texto para la cantidad de madera txtcantidad
ComboBox para seleccionar especie cboEspecie
ComboBox para seleccionar tipo de pago cboTipopago
Frame donde colocan los resultados frmResult
Etiqueta para el subtotal lblSubtot
Etiqueta para el descuento lblDescuento
Etiqueta para el total a pagar lblPagototal
Botn Calcular Precio cmdCalcular
Botn Salir cmdSalir

b) Cdigo del programa


Option Explicit
Private Sub cmdCalcular_Click()
Dim esp As Integer, tipop As Integer, cant As Single, d As Single,preciototal As Single, precio As
Single, resp as integer
Dim subtotal As Single
Const preciocedro = 800000, preciopard = 600000, preciosaman = 920000
If txtcantidad.Text = "" Or cbotipopago.Text = "" Or cboespecie.Text = "" Then
resp = MsgBox("Faltan datos por introducir", vbCritical, "error")
Else
cant = txtCantidad.Text
esp = cboEspecie.ListIndex
tipop = cboTipopago.Listindex
d=0
Select Case esp
Case 0
subtotal = preciocedro * cant
If tipop = 0 Then
d = 0.08 * subtotal
End If
Case 1
subtotal = preciopard * cant
If tipop = 0 Then
d = 0.1 * subtotal
End If
Case 2
subtotal = preciosaman * cant
If tipop = 0 Then
d = 0.06 * subtotal
End If
Case Else
precio = InputBox("Escriba el precio por metro cbico")
subtotal = precio * cant
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
If tipop = 0 Then
d = 0.02 * subtotal
End If
End Select
preciototal = subtotal d
FrmResult.Visible = True
lblSubtot.Caption = "Subtotal = " & subtotal
lblDescuento.Caption = "Descuento = " & d
lblPagototal.Caption = "Precio Total = " & preciototal
End If
End Sub
Private Sub cmdSalir_Click()
Unload Me
End Sub

Comentarios sobre el cdigo:


1. Los precios de la madera se colocaron como constantes para facilitar la actualizacin del
programa, esto es, cuando cambien los precios slo ser necesario modificar las constantes.
2. Se verifica que no falten datos antes de hacer los clculos. Si el usuario no introdujo algn dato
de entrada se muestra un mensaje de error.
3. Los resultados se escriben en tres etiquetas que estn dentro de un frame de nombreFrmresul.
Cuando el programa se ejecuta este marco no se ve, pues su propiedad Visible fue definida en
False en tiempo de diseo. Para poder ver los resultados es necesario cambiar esta propiedad a
True, lo que se hace con la instruccin:
FrmResult.Visible = True
Ejemplo 8: programa que permite calcular el rea de diferentes figuras geomtricas: tringulo,
circunferencia y rectngulo.
a) Diseo de la interfaz grfica
Este programa utiliza cuatro formularios. El primer formulario es el formulario principal, llamado
FormAreas, y en l se selecciona la figura geomtrica deseada.
Hay un formulario adicional para cada tipo de figura, si el usuario selecciona tringulo se abre el
formulario FormAreaT, si elige circunferencia aparece el formulario FormAreaC y si selecciona
rectngulo, se observa el formulario FormAreaR.

Formulario Principal (FormAreas) Formulario FormAreaT


Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos

Formulario FormAreaC Formulario FormAreaR

Nombre de los controles usados en el cdigo:


Los botones de comando del formulario principal tienen por nombre cmdTriang, cmdCircunf,
cmdRectan y cmdSalir. Los cuadros de texto donde se escriben los datos de entrada y salida
se llaman: txtbase, txtaltura, txtradio y txtarea.
El botn calcular del formulario FormAreaT tiene por nombre cmdCalcularAT, elbotn calcular del
formulario FormAreaC se llama cmdCalcularAC, y el botn calcular del formulario FormAreaR tiene
como nombre cmdCalcularAR.

b) Cdigo del programa


CDIGO DEL FORMULARIO FormAreas
Option Explicit
Private Sub cmdTriang_Click()
FormAreaT.Show
End Sub

Private Sub cmdCircunf_Click()


FormAreaC.Show
End Sub

Private Sub cmdRectan_Click()


FormAreaR.Show
End Sub

Private Sub cmdSalir_Click()


Unload FormAreaT
Unload FormAreaC
Unload FormAreaR
Unload Me
End Sub

CDIGO DEL FORMULARIO FormAreaT


Option Explicit
Private Sub cmdCalcularAT_Click()
Dim b As Single, h As Single, ar As Single
b = txtbase.Text
h = txtaltura.Text
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
ar = b * h / 2
txtarea.Text = ar
End Sub

CODIGO DEL FORMULARIO FormAreaC


Option Explicit
Private Sub cmdCalcularAC_Click()
Dim r As Single, ar As Single
r = txtradio.Text
ar = 3.1416 * r ^ 2
txtarea.Text = ar
End Sub

CODIGO DEL FORMULARIO FormAreaR


Option Explicit
Private Sub cmdCalcularAR_Click()
Dim b As Single, h As Single, ar As Single
b = txtbase.Text
h = txtaltura.Text
ar = b * h
txtarea.Text = ar
End Sub

Comentarios acerca del cdigo:


1. El ejemplo anterior es un programa con mltiples formularios. En estos casos siempre debe
haber un formulario principal, que es el que aparece al arrancar la aplicacin. Por defecto, Visual
Basic considera como formulario principal el primero que se haya creado. Sin embargo, es posible
indicar cul es el formulario principal en el men Proyecto / Propiedades de proyecto, en la
pestaa General y en la seccin Objeto inicial.
2. En tiempo de diseo se utiliza el men Proyecto/Agregar Formulario, para incorporar nuevos
formularios.
3. Para que en tiempo de ejecucin se pueda observar un formulario distinto al inicial, se utiliza el
mtodo Show. Por tal razn, en los procedimientos del evento clic de los botones de comando
Tringulo, Circunferencia y Rectngulo, se escribieron las instrucciones FormAreaT.Show,
FormAreaC.Show y FormAreaR.Show respectivamente, de manera que puedan observarse los
formularios correspondientes a cada figura geomtrica.
4. Obsrvese que en el procedimiento cmdSalir_Click se descargan todos los formularios de la
aplicacin con la instruccin Unload.

Ejemplo 9: programa que muestra como salida la calificacin definitiva de un aspirante a


preparador de Informtica, la cual se calcula promediando la nota obtenida en la asignatura, la
calificacin del examen escrito y la nota de la prueba de credenciales. Las dos primeras
calificaciones son datos de entrada y la tercera debe determinarla el programa de acuerdo a los
siguientes criterios:
- Manejo avanzado y/o cursos: lenguaje de programacin Visual Basic (5 puntos),
Sistema Operativo Windows (5 puntos), hoja de clculo Excel (5 puntos).
- Experiencia como preparador (2 puntos)
- Informe elaborado por el profesor encargado acerca del aspirante, basado en una entrevista
previa. La puntuacin es: Excelente (3 puntos), Bueno (2 puntos), Regular (1 punto) y Malo (0
puntos)
La puntuacin de cada tem debe sumarse y el total corresponde a la calificacin de la prueba de
credenciales.
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
a) Diseo de la interfaz grfica
La interfaz grfica est compuesta de dos formularios: FormEntrada donde se introducen los datos
y FormResultados para mostrar la calificacin definitiva.

Formulario FormEntrada

Formulario FormResultados
Nombre de los controles usados en el cdigo:
Formulario FormEntrada

Cuadro de texto para el nombre txtNombre


Cuadro de texto para la nota de la prueba escrita txtNotape
Cuadro de texto para la nota de informtica txtNotainf
ComboBox para el informe del profesor cboInforme
CheckBox para Windows chkWIND
CheckBox para Excel chkEXC
CheckBox para Visual Basic chkVB
Botn de opcin para Experiencia Si optExpsi
Botn de opcin para Experiencia No optExpno
Botn Continuar cmdContinuar
Botn Salir cmdSalir
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
Formulario FormResultados
Control Nombre
Etiqueta para el nombre lblNombre_asp
Etiqueta para la nota de credenciales lblNotacre
Etiqueta para la nota definitiva lblNotadef
Botn para procesar otro aspirante cmdOtroAsp
Botn Salir cmdSalir
b) Cdigo del programa
Cdigo del formulario FormEntrada
Option Explicit
Private Sub cmdContinuar_Click()
Dim npe As Single, ni As Single, nc As Single, nd As Single
Dim inf_prof As Byte
npe = txtNotape.Text
ni = txtNotainf.Text
inf_prof = cboInforme.ListIndex
If inf_prof = 0 Then
nc = 3
Else
If inf_prof = 1 Then
nc = 2
Else
If inf_prof = 2 Then
nc = 1
End If
End If
End If
If chkWIND.Value = 1 Then
nc = nc + 5
End If
If chkEXC.Value = 1 Then
nc = nc + 5
End If
If chkVb.Value = 1 Then
nc = nc + 5
End If
If optEXP_si.Value Then
nc = nc + 2
End If
nd = (npe + ni + nc) / 3
FormResultados.Show
FormResultados.lblNombre_asp.Caption = txtNombre.Text
FormResultados.lblNotacre.Caption = "Nota de credenciales= " & nc
FormResultados.lblNotadef.Caption = "Nota definitiva = " & nd
End Sub

Cdigo del formulario FormResultados


Private Sub cmdSalir_Click()
Unload FormResultados
Unload Me
End Sub
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos
Private Sub cmdOtroAsp_Click()
Unload Me
FormEntrada.txtNombre.Text = ""
FormEntrada.txtNotainf.Text = ""
FormEntrada.txtNotape.Text = ""
FormEntrada.cboInforme.ListIndex = -1
FormEntrada.chkEXC.Value = 0
FormEntrada.chkVb.Value = 0
FormEntrada.chkWIND.Value = 0
FormEntrada.optExp_no.Value = True
End Sub
Private Sub cmdSalir_Click()
Unload Me
Unload FormEntrada
End Sub
Ntese que en el cdigo del formulario FormEntrada, se manda a escribir los resultados en
etiquetas que estn en el formulario FormResultados. Para hacer referencia a un objeto de otro
formulario es necesario colocar el nombre de dicho formulario, un punto y luego el nombre del
objeto. Ejemplo:
FormResultados.lblNombre_asp.Caption = txtNombre.Text
Esta instruccin se encuentra en el procedimiento de evento cmdContinuar_click del formulario
FormEntrada y hace referencia a la etiqueta lblNombre_Asp del formulario FormResultados

Ejemplo 10: Programa que recibe como datos de entrada las edades de los 50 empleados de una
empresa y calcula: a) el nmero de empleados que tiene menos de 30 aos, b) el nmero de
empleados que tiene entre 30 y 50 aos, c) el nmero de empleados que tiene ms de 50 aos, y
d) la edad promedio de los empleados. Este es igual al ejemplo 6 de estructuras de repeticin,
pero utiliza una interfaz grfica.
a) Diseo de la interfaz grfica

El botn introducir edades, mostrar un InputBox para solicitar la edad de cada empleado
(aparecern 50 InputBox). Finalizada la entrada de los datos se hacen los clculos y se muestran
los resultados en los cuadros de texto destinados para ello.
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VI. Creacin y Uso de Procedimientos

Nombre de los controles usados en el cdigo:


Control Nombre
Botn para introducir las edades cmdInt_edad
Cuadro de texto para el nmero de empleados que txtmenos_30
tienen menos de 30 aos
Cuadro de texto para el nmero de empleados que txtEntre30_50
tienen entre 30 y 50 aos
Cuadro de texto para el nmero de empleados que txtMas_50
tienen ms de 50 aos
Cuadro de texto para la edad promedio txtPromedio
b) Cdigo del programa
Option Explicit
Private Sub cmdInt_edad_Click()
Dim i As Integer, edad As Byte, e1 As Byte, e2 As Byte, e3 As Byte
Dim prom As Single, sumaedad As Integer
sumaedad = 0
For i= 1 to 50 do
edad = InputBox("Edad " & i)
sumaedad = sumaedad + edad
If edad < 30 Then
e1 = e1 + 1
Else
If edad <= 50 Then
e2 = e2 + 1
Else
e3 = e3 + 1
End If
End If
Next i
prom = sumaedad / 5
txtPromedio.Text = prom
txtMenos_30.Text = e1
txtEntre30_50.Text = e2
txtMas_50.Text = e3
End Sub
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
7. Aplicacin de Funciones
Procedimientos para expresiones numricas
Las funciones de conversin numrica se utilizan para cambiar el tipo de dato, de una expresin
no numrica, a algn tipo numrico, a fin de poder operar matemticamente con ella.
Evidentemente, el resultado de k expresin slo debe contener nmeros. Si hay letras o signos se
producir un error. No olvides que si hay varias expresiones, que una vez convertidas, sern
utilizadas en un clculo matemtico, los tipos de conversin deben ser equivalentes, de lo contrario
bs resultado son imprevisibles.
CBool(valor)
Convierte un tipo no numrico a tipo Booleano, donde valor debe ser una cadena numrica, un
nmero o una expresin que devuelva un tipo numrico. Si valor vale cero CBool() devuelve False,
si es mayor que cero devuelve True y si no es numrico, se producir un error.
CByte(valor)
Convierte un tipo no numrico a tipo Byte (cuyo rango es de 0 a 255), donde valor debe ser un
nmero, una cadena numrica o una expresin que devuelva un tipo numrico. Si valor es mayor
de 255 o no es numrico, CByte() devuelve error.
CCur(valor)
Convierte un tipo no numrico a tipo Currency (cuyo rango va de -922.337.203.685.477,5808 a
922.337.203.685.477,5807), donde valor debe ser un nmero, una cadena numrica o una
expresin que devuelva un tipo numrico.
CDbl(valor)
Convierte un tipo no numrico a tipo Double (nmero de precisin doble y punto flotante), donde
valor debe ser un nmero, una cadena numrica o una expresin que devuelva un tipo numrico.
CLng(valor)
Convierte un tipo no numrico a tipo Long (entre -2.147.483.648 y 2.147.483.647), donde valor
debe ser un nmero, una cadena numrica o una expresin que devuelva un tipo numrico. CLng()
se diferencia de las funciones Fix() e Int() en que redondea, en lugar de truncar, la parte decimal
de un nmero. Cuando la parte decimal es exactamente 0,5, la funcin CLng() siempre redondea
al nmero par ms cercano. Por ejemplo: 0,5 se redondea a 0 y 1,5 se redondea a 2.
CInt(valor)
Convierte un tipo no numrico a tipo Integer (entre -32.768 a 32.767), donde valor debe ser un
nmero, una cadena numrica o una expresin que devuelva un tipo numrico. Al igual que la
anterior, Clnt() se diferencia de las funciones Fix() e Int() en que redondea, en lugar de truncar, la
parte decimal de un nmero. Tambin redondea de la misma forma que CLng().

Funciones trigonomtrica
Todas las funciones trigonomtricas trabajan con el argumento en radianes. Recuerda que para
convertir grados en radianes hay que multiplicar los grados por (pi/180) y para convertir radianes
en grados, multiplicar bs radianes por (180/pi). Otro recordatorio: el nmero pi vale
aproximadamente 3,1415926535...
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Sin(ngulo)
Devuelve el seno de un ngulo, medido en radianes, que expresa el argumento ngulo, que es
obligatorio, y que debe ser un nmero o una expresin que devuelva un tipo numrico.
El seno de un ngulo es la razn de dos lados de un tringulo rectngulo. Dicho de otro modo, la
razn es la longitud del cateto opuesto al ngulo dividida por la longitud de la hipotenusa. El
resultado est dentro del intervalo -1 a 1.
Cos(ngulo)
Devuelve el coseno de un ngulo, medido en radianes, que expresa el argumento ngulo, que es
obligatorio, y que debe ser un nmero o una expresin que devuelva un tipo numrico.
El coseno de un ngulo es la razn de dos lados de un tringulo rectngulo. Dicho de otro modo, la
razn es la longitud del cateto adyacente al ngulo dividida por la longitud de la hipotenusa. El
resultado est dentro del intervalo -1 a 1.
Tan(ngulo)
Devuelve la tangente de un ngulo, medido en radianes, que expresa el argumento ngulo, que es
obligatorio, y que debe ser un nmero o una expresin que devuelva un tipo numrico.
La tangente de un ngulo es la razn de dos lados de un tringulo rectngulo. Dicho de otro modo,
la razn es la longitud del cateto opuesto al ngulo, dividida por la longitud del cateto adyacente al
ngulo
Atn(nmero)
Devuelve el arco tangente de un nmero, que expresa el argumento nmero, que es obligatorio, y
que debe ser un nmero o una expresin que devuelva un tipo numrico.
Esta funcin obtiene la razn entre bs dos catetos de un tringub rectngub y devuelve el ngufo
correspondiente en radianes. La razn es la bngitud del lado opuesto al ngub dividida por la
bngitud del lado adyacente al mismo. El resultado est entre (-pi/2) y (pi/2) radianes.
Con las funciones trigonomtricas intrnsecas vistas hasta aqu, y algunas que se exponen ms
abajo, se pueden construir otras funciones:
Funciones no intrnsecas Equaciones basadas en funciones intrnsecas
Secante Sec(X) = 1 / Cos(X)
Cosecante Cosec(X) = 1 / Sin(X)
Cotangente Cotan(X)=l/Tan(X)
Seno inverso Arcsin(X) = Atn(X / Sqr(-X * X + 1))
Coseno inverso Arceos (X) = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(l)
Secante inversa Arcsec(X) = Atn(X / Sqr(X * X -1)) + Sgn((X) -1) * (2 * Atn(l))
Cosecante inversa Arccosec(X) = Atn(X / Sqr(X * X -1)) + (Sgn(X) -1) * (2 * Atn(l))
Cotangente inversa Arccotan(X) = Atn(X) + 2 * Atn(l)
Seno hiperblico HSin(X) = (Exp(X) - Exp(-X)) / 2
Coseno hiperblico HCos(X) = (ExpQC) + Bq)(-X)) / 2
Tangente hiperblica HTan(X) = (Exp(X) - Exp(-X)) / (ExpfX) + Eqp(-X))
Secante hiperblica HSec(X) = 2 / (Exp(X) + Ejp(-X))
Cosecante hiperblica HCosec(X) = 2 / (Ejp(X) - Exp(-X))
Cotangente hiperblica HCotan(X) = (Exp(X) + Eq>(-X)) / (EipPO - Bqp(-X))
Seno hiperblico inverso HArcsin(X) = Log(X + Sqr(X * X + 1))
Coseno hiperblico inverso HArccos(X) = Log(X + Sqr(X * X -1))
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Tangente hiperblica inversa HArctan(X) = Log((l + X) / (1 - X)) / 2
Secante hiperblica inversa HArcsec(X) = Log((Sqr(-X * X + 1) + 1) / X)
Cosecante hiperblica inversa HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) +1)/ X)
Cotangente hiperblica inversa HArccotan(X) = Log((X + 1) / (X -1)) / 2

Funciones logartmica y exponencial


Log da como resultado el logaritmo neperiano (base e) y Exp da como valor del nmero e elevado
a la expresin. Su sintaxis es
variable = Log(expresin)
variable = Exp(expresin)

Log(valor)
Devuelve el logaritmo natural de valor, que es obligatorio, y que debe ser un nmero o una
expresin que devuelva un tipo numrico mayor que 0. El logaritmo natural es el logaritmo en base
e. El valor de la constante e es aproximadamente 2.718282.
Utilizando Log() se pueden calcular logaritmos en base-n para cualquier nmero x, dividiendo el
logaritmo natural de x por el logaritmo natural de n. Veamos un ejemplo de funcin para calcular
logaritmos en base 10:

Function Log10(X)
Log10 = Log(X) / Log(10)
End Function

Fjate en que Log()es el nombre de nuestra funcin de ejemplo, y no es lo mismo que Log(10).
Exp(valor)
Devuelve e elevado a una potencia, contenida en valor, que es obligatorio, y que debe ser un
nmero o una expresin que devuelva un tipo numrico, mayor que 0 y menor que 709,78271. El
vabr de k constante e es aproximadamente 2.718282. La fundn Exp(), a veces llamada
antilogaritmo, complementa la accin de la funcin Log().

Otras funciones numricas

Int(valor) - Fix(valor)
Estas dos unriones devuelven el valor entero de un nmero truncndolo, es decir, que no
redondean La diferencia entre FixQ e Int() es que si valor es negativo, Int() devuelve el primer
entero negativo menor o igual a valor, mientras que Fix() devuelve el primer entero negativo mayor
o igual a valor. Por ejemplo: Int() convierte -5,4 en -6 y Fix() convierte -5,4 a -5. Si valor contiene
Null devuelven NuL
Abs(numero)
Devuelve el valor absoluto de un nmero o de cualquier expresin numrica. El vabr absoluto de
un nmero no tiene signo. Por ejempfo, Abs(-l) y Abs(l) devuelven 1.
Sgn(numero)
Devuelve un entero que indica el signo de un nmero o de cualquier expresin numrica. Sgn()
puede devolver tres valores: Si numero vale 0, devuelve 0. Si es mayor que 0 devuelve 1 y si es
menor que 0 devuelve -1.
Round(valor[, posicionesdecimales])
Redondea el nmero contenido en valor, que es obligatorio, y que debe ser un nmero o una
expresin que devuelva un tipo numrico. El argumento [, posicionesdecimales] es opcbnaL Indica
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
cuntas posiciones decimales a la derecha del punto se van a incluir en el redondeo. Si se omite,
la funcin Round() devuelve un entero.
Sqr(valor)
Devuelve la raz cuadrada de valor, que es obligatorio, y que debe ser un nmero o una expresin
que devuelva un tipo numrico de valor 0 o mayor que 0.
Oct(valor)
Devuelve un string con el valor en Octal de valor, que es obligatorio, y que debe ser un nmero o
una expresbn que devuelva un tipo numrico entero. Si tiene parte decimal, ser redondeado al
entero ms cercano antes de obtener su equivalente octal. El mximo vabr octal obtenido no
puede ser mayor de 11 caracteres ocales.
Hex(valor)
Devuelve un string con el valor en Hexadecimal de valor, que es obligatorio, y que debe ser un
nmero o una expresin que devuelva un tipo numrico entero. Si tiene parte decimal, ser
redondeado al entero ms cercano antes de obtener su equivalente hexadecimal El mximo vabr
obtenido no puede ser mayor de 8 caracteres hexadecimales.
IsNumeric(expresin)
Devuelve un valor de tipo Booleano que indica si expresin puede ser evaluada como un nmero.
IsNumeric() devuelve True si la expresin completa se reconoce como un nmero, en caso
contrario, devuelve False. Tambin devuelve False si la expresbn es una fecha.
Rnd([N])
Genera un nmero aleatorio partiendo de N, que es opcional.
Rnd devuelve un valor menor que 1 y mayor o igual que 0, por b que si se quieren obtener
nmeros enteros mayores que 1 hay que hacer algunas operaciones.
Por ejemplo, si se utiliza Rnd de forma simple:
<%
Randomize
For x = 0 To 5
Response.Write(Rnd() & "<BR>")
Next
%>
Si se quieren obtener nmeros enteros dentro de un cierto intervalo puede utilizarse una
expresin:
Int((N_mayor - Nmenor + 1) * Rnd + Nmenor)
Por ejemplo para obtener una secuencia aleatoria entre 1 y 5:
<%
Randomize
For x = 0 To 5
Response.Write(Int((5 -1+1) * Rnd + 1) & "<BR>")
Next
%>

Te preguntars de dnde ha salido y para qu sirve la instruccin Randomize[n] que aparece antes
del bucle For..To..Next de cada ejemplo; pues se utiliza para inicializar el generador de nmeros
aleatorios.
En efecto, la instruccin Randomize[n] utiliza [n] (opcional) para inicializar el generador de
nmeros aleatorios de la funcin Rnd(), asignndole un nuevo valor de inicializacin. Si se omite
[n], se usar para este fin el valor devuelto por el reloj del sistema.
Si no se utiliza la instruccin Randomize, la funcin Rnd() (sin argumento) utiliza como valor de
inicializacin el mismo que utiliz k primera vez que se la invoca, por b que repetir la misma
secuencia.
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
FormatNumber(Expresin [, Decimales, [Ceros, [Negativos, [Grupos]]]])
Sirve para dar formato a un nmero o expresin numrica. El resultado de FormatNumber() sigue
siendo de upo numrico. Tiene los siguientes parmetros:
ExpresinObligatoria. Es el valor que se pretende fbrmatear. Por supuesto, tiene que ser un
nmero o una expresin que devuelva un upo numrico
DecimalesOpcional. Valor numrico que indica cuantas posiciones se muestran a k derecha del
signo decimal Si se omite, por defecto se aplica -1, y se utilizan bs valores de k configuracin
regional del servidor. Si Decimales es menor que el nmero de dgitos existente, se aplica
redondeo,
Ceros Opcional. Indica si se muestran o no bs ceros a k izquierda en bs valores fraccionarios.
Puede tenerlodos valores: 0 (por defecto) para no mostraros, y -1 para mostrarlos.
Negativos Opcional. Indica si se muestran entre parntesis bs valores negativos. Puede tener dos
valores: 0 (por defecto) para no mostrarlos, y -1 para mostrarlos.
Grupos Opcional. Indica si se agrupan o no los nmeros utilizando el delimitador de grupos
especificado en el panel de control del servidor. Puede tener dos valores: 0 (por defecto) para no
agruparlos, y -1 para agruparlos.

Por ejemplo, al escribir:


<%
Response.Write(0012345.1299 & "<BR>")
Response.Write(FormatNumber(0012345.1299, 3, 0, 0, 0) & "<BR>")
Response.Write(FormatNumber(0.1299, 3, 0, 0, 0) & "<BR>")
Response.Write(FormatNumber(0.1299, 3, -1, 0, 0) & "<BR>")
Response.Write(FormatNumber(-0.1299, 3, -1, 0, 0) & "<BR>")
Response.Write(FormatNumber(-0.1299, 3, -1, -1, 0) & "<BR>")
%>

FormatPercent(Expresin [, Decimales, [Ceros, [Negativos, [Grupos]]]])


Es muy similar a k anterior. Sirve para dar formato a un nmero o expresin numrica, y adems lo
multiplica por 100, aadindole a k derecha el signo del tanto por ciento (%). El resultado de
FormatPercent() NO es de tipo numrico. Tiene bs mismos parmetros que FormatNumber().
Por ejemplo, si se escribe:
<%
Response.Write(0012345.1299 & "<BR>")
Response.Write(FormatNumber(0012345.129999, 3, 0, 0, 0) & "<BR>")
Response.Write(FormatNumber(0.129999, 3, 0, 0, 0) & "<BR>")
Response.Write(FormatNumber(0.129999, 3, -1, 0, 0) & "<BR>")
Response.Write(FormatNumber(-0.129999, 3, -1, 0, 0) & "<BR>")
Response.Write(FormatNumber(-0.129999, 3, -1, -1, 0) & "<BR>")
%>

Procedimientos para cadenas de caracteres


Una cadena de caracteres es sinnimo de constante de caracteres (se denomina tambin literal) y
es simplemente una secuencia de caracteres ANSI encerrados entre comillas. Por ejemplo:
"Introducir valor"
"AF1008G-7"
Una cadena de caracteres puede ser manipulada directamente o a travs de una variable de
caracteres o variable alfanumrica en la que se haya almacenado previamente. Por ejemplo:
Dim etiqueta As String
etiqueta = InputBox("Etiqueta:")
etiqueta = etiqueta & "O1"
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Utilizando el operador de concatenacin (&) y los procedimientos de cadenas de caracteres,
podemos agrupar las variables y las constantes de caracteres para formar una expresin de
caracteres.
Asimismo, utilizando los operadores de caracteres. Por ejemplo:
Dim cad As String, cad2 As String
If cad1 > cad2 Then
Decir que una cadena es menor, igual o mayor que otra, significa indicar si est antes por orden
alfabtico, si tienen exactamente los mismos caracteres o si est despus por orden alfabtico,
respectivamente.
A continuacin vamos a realizar un estudio de los procedimientos existentes para manipular
cadenas de caracteres de uso ms frecuente.

Funcin Len
Da como resultado el nmero de caracteres en una variable de caracteres.
Su sintaxis es:
nombre_varable = Len(expresin_de_cadena)
Donde expresin_de_cadena es cualquier expresin de caracteres y nombre_variable es una
variable numrica en la que se obtiene el resultado.
En el nmero de caracteres se contabilizan los caracteres no imprimibles y los espacios en blanco.
Por ejemplo:
Dim LongA As Integer, LongB As lnteger, LongT As I.nteger
Dim CadenaA As String, CadenaB As String, CadenaC As String
CadenaA = "Alejandro"
CadenaB = "30/06/83"
CadenaC = ""
LongA = Len(CadenaA)
LongB = Len(CadenaB)
LongT = Len(CadenaA & CadenaB & CadenaC)
Print LongA, LongB, LongT 'escribe: 9 8 17
El valor de LongT es 17, puesto que la longitud de CadenaC es 0.

Funcin Left
Da como resultado losn caracteres de la expresin_de_cadena situados ms a la izquierda. Su
sintaxis es
Nombre_variable = Left(expresin_de_cadena, n)
Dondeexpresin_de_cadena es cualquier expresin de caracteres y n es una expresin
numrica.
Si n es mayor que Len(expresin_de_cadena), el resultado es la cadena de caracteres completa.
Si n es igual a 0, el resultado es una cadena de longitud cero. Por ejemplo:
CadenaA = "Programa Visual Basic"
CadenaB = Left(CadenaA, 8)
Print CadenaB 'escribe: Programa
For K = 1 To 9
Print Left(CadenaA, K) ' escribe P Pr Pro ...
Next K

Funcin Right
Da como resultado losn caracteres de expresin_de_cadena situados ms a la derecha. Su
sintaxis es
nombre_variable = Left(expresin_de_cadena, n)
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
La explicacin es idntica a la dada para Left, con la diferencia de que ahora se trata de los
caracteres de la derecha.

Funcin Mid
Da como resultado una subcadena de una cadena de caracteres. Su sintaxis es nombre_variable
= Mid(expresin_de_cadena, n [,m])
Dondeexpresin_de_cadena es cualquier expresin de caracteres y n y m son expresiones
enteras.
La funcin Mid obtiene una subcadena de m caracteres de longitud, empezando por el n-simo
carcter, de la expresin_de_cadena. Si se omite m o si hay menos caracteres que m a la derecha
del carcter n-simo de expresin_de_cadena, se obtiene la totalidad de caracteres que hay a la
derecha de ste. Si m es igual a 0 o si n es mayor que Len(expresin_de_cadena), Mid da como
resultado una cadena de longitud cero. Por ejemplo:
CadenaA = "Francisco 25/08/82"
CadenaB = Mid(CadenaA, 14, 2)
Print CadenaB 'escribe: 08
Print Mid(CadenaA, 11) 'escribe: 25/08/82

Sentencia Mid
Sustituye una subcadena de una cadena de caracteres por otra subcadena de caracteres. Su
sintaxis es
Mid(nombre_variable, n [,m]) = cadena
Dondenombre_variable es una variable de caracteres en la cual se va reemplazar un nmero de
ellos, n y m son expresiones enteras y cadena es una expresin de caracteres que reemplaza
parte de nombre_variable.
Los caracteres en nombre_variable que comienzan en la posicin n son sustituidos por los
caracteres en cadena; m, que es opcional, indica el nmero de caracteres de cadena que van a
utilizarse en la sustitucin. Si m se omite, se utilizan todos los caracteres de cadena. La longitud
de nombre_variable, independientemente de si m es utilizado o no, no se modifica con el cambio.
Por ejemplo:
CadenaA = "15/09/99"
CadenaB = "-"
Mid(CadenaA, 3) = CadenaB
Mid(CadenaA, 6) = CadenaB
Print CadenaA 'escribe: 15-09-99
CadenaA = "abcd"
CadenaB = "1234"
Mid(CadenaA, 3) = CadenaB
Print CadenaA 'escribe: ab12

Funcin Instr
Da como resultado la posicin del primer carcter de una subcadena en una cadena. Su sintaxis
es
pos = Instr([n,] cadena, cadena_buscada)
Donden es una expresin numrica (su valor predeterminado es 1 ) y cadena y cadena_buscada
son expresiones de caracteres.
I n s tr da como resultado la posicin del primer carcter de cadena_buscada en cadena, si
cadena_buscada est contenida en cadena; el argumento n especifica la posicin en cadena
donde debe empezar la bsqueda. Si cadena_buscada no se encuentra en cadena, se devuelve
como resultado 0. Si cadena_buscada es una cadena de longitud cero, Instr retorna 1 o n si es que
n fue especificado. Por ejemplo:
CadenaA = "Programa ejemplo"
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
CadenaB = "gram"
Print InStr(CadenaA, CadenaB), InStr(6, CadenaA, CadenaB)
'La lnea anterior escribe: 4 0

Funcin String
Da como resultado una cadena de caracteres igual a uno dado. Su sintaxis es
cadena = String(n, carcter)
Donden es el nmero de caracteres de la cadena resultante y carcter es el cdigo ANSI (valor
entre 0 y 255) del carcter que genera la cadena o el primer carcter de una expresin de cadena.
Por ejemplo:
CadenaA = "*": CadenaB = String(12, CadenaA)
Print CadenaB; "INFORME ALUMNOS"; CadenaB
Print String(39, " -")
El resultado que se produce, suponiendo que la fuente elegida no es proporcional, es el siguiente:
************INFORME ALUMNOS************
-----------------------------------------

Funcin Str
Convierte una expresin numrica en una expresin de caracteres. Su sintaxis es
Nombre_variable = Str(nmero)
Dondenmero es cualquier expresin numrica vlida y nombre_variable es una variable de
caracteres.
Si nmero es positivo, el signo mas (+), est presente o no, es sustituido durante la conversin por
un espacio en blanco. El signo menos (-) queda tal cual. Por ejemplo:
a = 20: b = 30
Print Str(a) + Str(b) 'escribe: 20 30
Print Str(a - b) 'escribe: -10
La funcin Str slo reconoce el punto (.) como separador decimal vlido. Cuando el separador
decimal pueda ser otro (por ejemplo, en aplicaciones internacionales), se debe utilizar CStr para
convertir un nmero a una cadena.

Funcin Val
Da como resultado el valor numrico de una cadena de caracteres. Su sintaxis es
nmero = Val(expresin_de_cadena)
Dondeexpresin_de_cadena es una expresin de caracteres y nmero es una variable numrica.
La funcin Val ignora los espacios en blanco, tabuladores y saltos de lnea que puedan estar
presentes al principio de la expresin_de_cadena. Si el primer carcter distinto de espacio de la
expresin_de_cadena no es numrico (exce pto el signo -), Val da como resultado un cero. Los
caracteres no numricos que siguen a los nmeros se ignoran. Por ejemplo:
Dim n As Integer
Dim CadenaA As String, CadenaB As String
CadenaA = " 123"
CadenaB = " 1000 Pts."
n = Val(CadenaA) 'n= 123
Print n, Val(CadenaB) 'escribe: 123 1000

La funcin Val lo reconoce el punto (.) como separador decimal vlido. Cuando el separador
decimal pueda ser otro (por ejemplo, en aplicaciones internacionales), se debe utilizar CDbl para
convertir una cadena a un nmero.
CadenaA = " 1.230,5"
Print CDbI(CadenaA)
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Visual Basic convierte implcitamente cadenas de caracteres a valores numricos, y viceversa,
siempre que el contenido de la cadena represente un valor numrico. Por ejemplo:
Dim n As Doub1e
Dim CadenaA As String
CadenaA = 1230.5 + 10 'conversin implcita a cadena
n = CadenaA 'conversin implcita a Double
Print n 'escribe: 1240,5

Funcin Chr
Da como resultado el carcter ANSI correspondiente al cdigo de carcter especificado. Su
sintaxis es:
nombre_variable = Chr(Cdigo_caracter)
Dondecdigo_carcter es una expresin numrica de valor 0 a 255 y nombre_variable es una
variable de caracteres.
Chr normalmente se utiliza para enviar caracteres especiales al terminal o a la impresora. Por
ejemplo:
For i = 65 To 90
Print Chr(i); 'escribe: ABC ... Z
Next i

Funcin Asc
Da como resultado el cdigo de carcter correspondiente al primer carcter de la cadena de
caracteres especificada. Su sintaxis es
cdigo_caracter = Asc(expresin_de_cadena)
Dondeexpresin_decadena puede ser cualquier expresin de caracteres.
Si la expresin_de_cadena es de longitud cero, se devuelve en error. Esta funcin es la inversa de
Chr. Por ejemplo:
CadenaA = "Test"
Print Asc(CadenaA); 'escribe: 84
84 es el cdigo ANSI del carcter T, que es el primero de la cadena Test.

Funcin Space
Da como resultado una cadena de espacios. Su sintaxis es
cadena = Space(nmero)
Dondenmero es la cantidad de espacios que se desea contenga la cadena. Por ejemplo:
For c = 1 To 5
CadenaA = Space(c)
Print CadenaA; c
Next c 'El resultado es: 1 2 3 4 5

Variable Date
Da como resultado la fecha actual del sistema en una cadena de caracteres. Su sintaxis es
cadena = Date
Dondecadena es una variable que almacenar una expresin de caracteres de la forma
dd/mm/aa, en la que dd es el da, mm es el mes y aa es el ao. Por ejemplo:
Dim CadenaA As Strin
CadenaA = Date
Print CadenaA 'escribe, por ejemplo: 27/05/02
Sentencia Date
Establece la fecha actua1 del sistema. Su sintaxis es
Date = fecha
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Dondefecha es una constante o variable de caracteres dd-mm-aa, dd/mm/aa, dd-mm-aaaa o
dd/mm/aaaa. Por ejemplo:
Date = "27/05/02"
Variable Time
Da como resultado la hora actual del sistema en una cadena de caracteres. Su sintaxis es
cadena = Time
Dondecadena es una variable que almacenar una expresin de caracteres de la forma hh:mm:ss
, en la que hh especifica la hora, mm los minutos y ss los segundos. Por ejemplo:
CadenaA = Time
Print CadenaA 'escribe, por ejemplo: 18:05:23
Sentencia Time
Establece la hora actual. Su sintaxis es
Time = hora
Dondehora es una constante o variable de caracteres de la forma hh:mm o hh:mm:ss. Por ejemplo:
Time = "18:05:23"
Funcin LCase
Convierte una cadena de caracteres a letras minsculas. Su sintaxis es
cadena = LCase(expresin_de_cadena) donde
expresin_de_cadena es una expresin de caracteres. Por ejemplo:
CadenaA = "Esto es un EJEMPLO"
Print LCase(CadenaA) 'escribe: esto es un ejemplo
Funcin UCase
Convierte una cadena de caracteres a letras maysculas. Su sintaxis es
cadena = UCase(expresin_de_cadena)
Dondeexpresin_de_cadena es una expresin de caracteres. Por ejemplo:
CadenaA = "Esto es un EJEMPLO"
Print UCase(CadenaA) 'escribe: ESTO ES UN EJEMPLO
Funcin LTrim
Da como resultado una copia de la cadena de caracteres especificada, pero sin espacios en
blanco a la izquierda. Su sintaxis es
cadena = LTrim(expresin_de_cadena)
Dondeexpresin_de_cadena es una expresin de caracteres . Por ejemplo:
CadenaA = " abcd"
Print CadenaA
Print LTrim(CadenaA)
El resultado es:
abcd
abcd
Funcin RTrim
Da como resultado una copia de la cadena de caracteres especificada, pero sin espacios en
blanco a la derecha. Su sintaxis es
cadena = RTrim(expresin_de_cadena)
Dondeexpresin_de_cadena es una expresin de caracteres.
Funcin Trim
Da como resultado una copia de la cadena de caracteres especificada, pero sin espacios en
blanco a la derecha y a la izquierda. Su sintaxis es
cadena = Trim(expresin_de_cadena)
Donde expresin_de_cadena es una expresin de caracteres.
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Funcin Now
Devuelve la fecha y la hora actuales de acuerdo a la configuracin de la fecha y la hora del
sistema. Su sintaxis es
Now
Esta funcin devuelve un valor de tipo Date que se corresponde con una cadena de caracteres de
la forma
dd/mm/aa HH:MM:SS , donde dd es el da, mm es el mes, aa es el ao, HH es la hora, MM son los
minutos y SS son los segundos.
Para visualizar esta fecha y hora segn diversos patrones, utilice la funcin Format con los
smbolos especiales d (da), m (mes), y (ao), h (horas), m (minutos) y s (segundos). Por ejemplo:

Patrn Format(Now, "Patrn ")


d-m-yy 27- 5- 01
dd/mm/yy 27/05/01
dd-mmmm yyyy 25 - mayo - 2001
d-mmm m-yyyy 27 - may 5 - 2001
dddd dd - mmm m yyyy jueves 27 may 5 2001
h:m:s, d-mmm-yy 22:24:50, 27- may- 01
hh:mm:ss AM/PM, dd - mmm -yyyy 10:24:50 PM, 27 - may -2001
El siguiente ejemplo muestra cmo se utiliza esta funcin:
Dim fh As String
fh = Now
Print Format(fh, "hh:mm:ss AM/PM, dd-mmm-yyyy")
Desarrollaremos ahora una aplicacin en la cual se utilicen algunas de las
funciones anteriormente descriptas. Disee un formulario similar al siguiente:

El formulario est compuesto por una caja de texto (txtTexto) superior en la cual se ingresar el
texto al que se le aplicar las funciones nombradas en el frame Funciones. El resultado de las
funciones se mostrar en la etiqueta situada en la parte inferior del formulario llamada lblMuestra.
Como sabr, existen funciones que poseen argumentos mediante los cuales se realiza la
operacin especificada, como por ejemplo, la funcin Left, adems de necesitar el String, necesita
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
la cantidad de caracteres a obtener de la cadena especificada. Es por eso que se muestran caja
de texto a la derecha de dichas funciones.
Esta cajas de textos sern habilitadas o deshabilitadas de acuerdo a la funcin elegida mediante
los botones de opcin.
Al pulsar un botn de opcin deber deshabilitar las cajas de texto que se encuentran habilitadas,
y adems si el botn de opcin pulsado corresponde a funcin con argumentos, habilitar los
mismos. A continuacin se expone el evento de suceso Clic del botn de opcin Len :
Private Sub optLen_Click()
txtCantidadLeft.Enabled = False
txtCantidadRight.Enabled = False
txtCantidadMid.Enabled = False
txtInicio.Enabled = False
txtCadenaBuscada.Enabled = False
End Sub
Al hacer clic en mostrar, tambin deber validar que los argumentos hayan sido ingresados, en
caso de que sea necesario y aplicar la funcin elegida mostrando su resultado en la etiqueta
lblMuestra.

Private Sub cmdMostrar_Click()


'Funcin Len If optLen.Value Then
lblMuestra.Caption = Len(txtTexto.Text) End If
'Funcin LCase If optLCase.Value Then
lblMuestra.Caption = LCase(txtTexto.Text) End If
'Funcin UCase If optUCase.Value Then
lblMuestra.Caption = UCase(txtTexto.Text) End If
'Funcin LTrim If optLTrim.Value Then
lblMuestra.Caption = LTrim(txtTexto.Text) End If
'Funcin RTrim If optRTrim.Value Then
lblMuestra.Caption = RTrim(txtTexto.Text) End If
'Funcin Trim If optTrim.Value Then
lblMuestra.Caption = Trim(txtTexto.Text) End If
'Funcin Left If optLeft.Value Then
If txtCantidadLeft.Text = "" Then MsgBox "Debe ingresar la cantidad."
txtCantidadLeft.SetFocus Exit Sub
End If
lblMuestra.Caption=Left(txtTexto.Text,txtCantidadLef Text)
End If
'Funcin Right
If optRight.Value Then
If txtCantidadRight.Text = "" Then MsgBox "Debe ingresar la cantidad." txtCantidadRight.SetFocus
Exit Sub End If lblMuestra.Caption=Right(txtTexto.Text,txtCantidadLeft.Text) End If
'Funcin Mid If optMid.Value Then
If txtInicio.Text = "" Then
MsgBox "Debe ingresar el inicio." txtInicio.SetFocus Exit Sub End If If
txtCantidadMid.Text = "" Then
MsgBox "Debe ingresar la cantidad." txtCantidadMid.SetFocus Exit Sub End
If lblMuestra.Caption=Mid(txtTexto.Text, _
txtInicio.Text,txtCantidadLeft.Text) End If
'Funcin InStr If optInstr.Value Then
If txtCadenaBuscada.Text = "" Then
MsgBox "Debe ingresar la cadena buscada." txtCadenaBuscada.SetFocus Exit Sub End If
lblMuestra.Caption=InStr(txtTexto.Text,txtCadenaBuscada.Text)
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
End If End Sub

Procedimientos varios Funcin


Timer
Da como resultado el nmero de segundos transcurridos desde media noche. Su sintaxis es
variable = Timer
El siguiente ejemplo muestra cmo se utiliza funcin:
Dim segundos As Integer
Time = "01:00"
segundos = Timer
Print segundos; "segundos pasan de media noche"
El resultado producido por el ejemplo anterior es:
3600 segundos pasan de media noche

Funcin Rnd
Rnd devuelve un nmero al azar de tipo Single mayor o igual que 0 y menor que 1. Su sintaxis es
variable = Rnd[(expresin)]
Donde expresin es una expresin numrica de la que depende el nmero generado. Esto es, si
expresin< 0 siempre da como resultado el mismo nmero.
expresin> 0 o se omite da como resultado el siguiente nmero aleatorio.
expresin = 0 da como resultado el ltimo valor generado.
Si expresin > 0 o se omite, se generar la misma secuencia de nmeros al azar cada vez que se
ejecute el programa que invoca a Rnd. Para variar esta secuencia, se utilizar la sentencia
Randomize que veremos a continuacin.
Para producir enteros aleatorios en un intervalo dado se utiliza esta frmula:
Int((limitesup - limiteinf + 1 ) * Rnd + limiteinf)
Por ejemplo, para generar un conjunto 15 de nmeros comprendidos entre 1 y 49 el cdigo sera el
siguiente:
limitesup = 49
limiteinf = 1
For i = 1 To 15'Escribir 15 nmeros entre lmiteinf y lmitesup
Print Int((lmitesup - lmiteinf + 1) * Rnd + lmiteinf)
Next i

El siguiente ejemplo escribe 5 nmeros entre 0 y 1:


For i = 1 To 5
Print Rnd ;'escribe 5 nmeros entre 0 y 1
Next i

Sentencia Randomize
Activa el generador de nmeros aleatorios a partir de un nmero determinado. Su sintaxis es:
Randomize[n]
Donde n es una expresin entera que se utiliza para activar una secuencia aleatoria determinada.
Si se omite, se utiliza el valor devuelto por el reloj del sistema.

Funciones para manejo de Fechas


DateAdd
Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de
tiempo especificado. Su sintaxis es la s iguiente:
DateAdd(intervalo, nmero, fecha)
Donde;
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Intervalo es requerido y representa una expresin de tipo cadena (String) que contiene el intervalo
de tiempo que se desea agregar.

El argumento intervalo toma los valores siguientes:

Intervalo Descripcin
Yyyy Ao
Q Trimestre
M Mes
Y Da del ao
D Da
W Da de la semana
Ww Semana
H Hora
N Minuto
S Segundo
Nmero es requerido y representa una expresin numrica con el nmero de intervalos que se
desea agregar. Puede ser positiva (para obtener fechas futuras) o negativa (para obtener fechas
pasadas).
Fecha es requerido y representa el valor de tipo Variant (Date) o literal que representa la fecha en
la que se agreg el intervalo.
Puede utilizar la funcin DateAdd para agregar o restar un intervalo de tiempo especificado de una
fecha. Por ejemplo, con DateAdd podra calcular una fecha 30 das posterior al da de hoy o una
hora 45 minutos posterior a la actual.
Si desea agregar das a fecha, puede utilizar Da del ao (y), Da (d) o Da de la semana (w).
La funcin DateAdd no devuelve nunca una fecha no vlida. En el ejemplo siguiente se agrega un
mes al 31 de enero:
DateAdd("m", 1, "31-ene-95")
En este caso, DateAdd devuelve 28-feb-95 y no 31-feb-95. Si fecha es 31-ene-96, devolver 29-
feb-96, ya que 1996 es un ao bisiesto.
Si la fecha calculada va a resultar inferior al ao 100 (esto es, se restan ms aos que los que hay
en fecha), se produce un error.

Si nmero no es un valor de tipo Long se redondear al nmero entero ms cercano antes de ser
evaluado.
El formato del valor devuelto por DateAdd es determinado por la configuracin del Panel de
control, no por el formato que se pasa en el argumento fecha.

DateDiff
Devuelve un valor de tipo Variant (Long) que especifica el nmero de intervalos de tiempo entre
dos fechas determinadas. Su sintaxis es la siguiente:
DateDiff(intervalo,fecha1,fecha2[,primerdasemana[,primerasemanaao]])
Donde Intervalo es requerido y representa una expresin de tipo cadena con el intervalo de tiempo
utilizado para calcular la diferencia entre fecha1 y fecha2.
El argumento intervalo toma los valores siguientes:

Intervalo Descripcin
yyyy Ao
Q Trimestre
M Mes
Instituto Universitario Politcnico
Santiago Mario Unidad IV: Funciones y Procedimientos
Sede Barcelona
Tema VII. Aplicacin de Funciones
Y Da del ao
D Da
W Da de la semana
ww Semana
H Hora
N Minuto
S Segundo
Fecha1 y Fecha2 son requeridos, son de tipo de datos Variant (Date) y representan las dos fechas
que se van a utilizar en el clculo.
Primerdasemana es opcional y es una constante que especifica el primer da de la semana. Si no
se especifica, se asume que es el domingo.
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema VIII. Mens e Interfaces MDI
8. Menus e Interfaces MDI
Mens
Entre las capacidades de Visual Basic 6.0 no poda faltar la de construir mens con gran facilidad.
Sin embargo, hay algunas diferencias respecto al modo el que se construyen los controles. Para
crear mens Visual Basic dispone de una herramienta especial que se activa mediante el comando
Men Editor del men Tools. El cuadro de dilogo que se abre se nuestra en la Figura 32. Ms
adelante se ver cmo se utiliza esta herramienta; antes, conviene recordar brevemente las
caractersticas ms importantes de los mens de Windows 95/98/NT.
Los mens presentan sobre los dems controles la ventaja de que ocupan menos espacio en
pantalla, pero tienen el inconveniente de que sus posibilidades no estn a la vista ms que cuando
se despliegan.

Figura 32.Editor de Mens de Visual Basic


Introduccin a las posibilidades de los Mens
La mayor parte de las aplicaciones de Windows 95 utilizan mens. Aunque todo el mundo est
familiarizado con sus funciones ms bsicas, conviene ver algunas posibilidades menos usuales.
Se utilizarn para ello unas aplicaciones tan conocidas como Word y Excel.
La Figura 33 recoge el aspecto del men View de Word 97, en el que conviene destacar las
siguientes caractersticas:
1. Lo primero que llama la atencin es que los mens aparecen divididos en grupos de opciones
separados por lneas horizontales.
2. Algunos items como Page Layout tienen un icono resaltado a su izquierda. Esto quiere decir que
ese tem es la opcin elegida entre los cuatro items de su grupo. En este sentido los mens se
parecen a los controles OptionButton. Visual Basic 6.0 no permite hacer esto directamente,
pero lo puede simular.
3. Otros tems como Ruler tienen una marca de seleccin a su izquierda. En este caso el men
realiza la funcin de las cajas de seleccin (CheckBox).
4. Todas las opciones del men tienen una letra subrayada. La finalidad es poder desplegar y
activar los mens desde teclado, sin ayuda del ratn (con Alt y la letra subrayada).
5. Tambin se observa que el tem Comments aparece en gris claro. Esto quiere decir que en este
momento no est activo y por tanto no es seleccionaba.
6. Otros items como Toolbars estn seguidos por un pequeo tringulo. Eso quiere decir que
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema VIII. Mens e Interfaces MDI
existe un men secundario con ms opciones. Otros items como Zoom aparecen seguidos por
puntos suspensivos (...). Este es un convenio utilizado para indicar que eligiendo esa opcin se
abrir un cuadro de dilogo en el que habr que tomar otras decisiones.

Figura 33. Men View de Word 97


Por lo que respecta al men de Excel 97 que aparece en la Figura 34 la caracterstica ms
importante es que tiene sub-mens (sealados mediante un pequeo tringulo a su derecha), que
se abren al colocar el cursor sobre el tem correspondiente. Estos mens se suelen llamar mens
en cascada, y son muy frecuentes en Windows 95/98/NT.

Figura 34. Men Format/Sheet de Excel 97


Otra caracterstica de los mens, que no aparece en la Figura 32 ni en la Figura 34, es la
posibilidad de definir combinaciones de teclas que realizan la misma funcin que una opcin del
men. Por ejemplo, en muchas aplicaciones Ctrl+C equivale a Edit/Copy y Ctrl+V a Edit/Paste.
Estas combinaciones de teclas se llaman accesos rpidos (shortcut) y hay que distinguirlas de
acceder a los mens mediante la tecla Alt y las letras subrayadas de los nombres.

EL EDITOR DE MENS (MEN EDITOR)


En la Figura 35 se vuelve a recoger -a mayor tamao y con algunos elementos ya definidos- el editor de mens
mostrado en la Figura 32, que se abre con Tools/Menu Editor o clicando en el botn correspondiente de la barra

de herramientas .
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema VIII. Mens e Interfaces MDI

Figura 35. Definicin de mens con Men Editor.


Se llama ttulo a cada elemento que aparece en la barra de mens y lnea o tem a cada elemento que aparece
al desplegarse un ttulo. Para introducir un nuevo ttulo en la barra de mens hay que definir, en la caja de texto
Caption de la Figura 35, el nombre con el que se quiere que aparezca. Si se desea acceder a dicho ttulo
mediante teclado (Alt+letra), la letra que se desea utilizar deber ir precedida por el carcter (&). Adems, y al
igual que todos los controles de Visual Basic 6.0, conviene que el ttulo tenga un nombre (caja de texto Name)
para que se pueda acceder a l desde programa. Los nombres de los ttulos de los mens suelen comenzar por
las letras mnu, como por ejemplo mnuFile, mnuEdit o mnuHelp.
En la Figura 35 la caja de texto ndex hace referencia a la posibilidad de crear arrays de mens. Se puede definir
tambin un shortcut en la caja de texto correspondiente. En esta figura aparecen cuatro checkButtons (Enabled,
Checked, Visible y WindowList) con los que se pueden especificar algunas propiedades iniciales del men,
como por ejemplo que est activado o que sea visible.

Formularios MDI (Mltiple Document Interface)


En algunos casos puede ser interesante establecer una jerarqua entre las ventanas o formularios
que van apareciendo sucesivamente en la pantalla del ordenador, de tal manera que al cerrar una
que se haya establecido como principal, se cierren tambin todas las que se han abierto desde ella
y dentro de ella. De esta forma una misma aplicacin puede tener varios documentos abiertos, uno
en cada ventana hija. As trabajan por ejemplo WordyExcel, que pueden tener varios documentos
abiertosdentro de la ventana principal de la aplicacin. En el mundo de la Windows de Microsoft a
esto se llama MDI {Mltiple Document Interface). La Figura 36 muestra un ejemplo de formulario
MDI.
En Visual Basic 6.0 estos formularios que tienen sub-formularios hijos se conocen como
MDIForms. Los formularios MDI se crean desde el men de Visual Basic 6.0 con el comando
Project/AddMDIForm. En una aplicacin slo puede haber un formulario MDI, pero ste puede
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema VIII. Mens e Interfaces MDI
tener varios hijos. Si se quiere que un formulario sea Child, debe tener su propiedad MDIChild
como True.
Si al iniciar una aplicacin el formulario que se carga en primer lugar es un formulario Child, el
formulario MDI se carga al mismo tiempo. Al cerrar un formulario MDIForm se cierran todos sus
formularios Child, por ejemplo, al cerrar Word tambin se cierran todos los documentos
queestuvieran abiertos. Los formularios Child se minimizan y maximizan dentro de los lmites del
formulario MDI. Cuando estn maximizados, su Caption aparece junto al Caption del formulario
MDI. Los formularios Child no tienen mens propios, sino que sus mens aparecen en la barra de
mens del formulario MDI.
En una aplicacin con un formulario MDI y uno o ms formularios Child, puede haber otros
formularios que no sean Child y que se abren fuera de los lmites del formulario MDI cuando son
requeridos.

Figura 36. Formularios MDI (Mltiple Document Interface).


Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
9. Archivos y Base de Datos

Manejo de Archivo
En esta seccin se ve un repaso bsico de las tres formas de trabajar con diferentes tipos de
archivos en visual basic: Archivos secuenciales, archivos aleatorios y archivos binarios.
Por ltimo en el final de la seccin, se describe como utilizar sentencias y funciones propias de
visual basic para trabajar con archivos y directorios del sistema operativo, como por ejemplo la
sentencia Dir para buscar ficheros, Filecopy para copiar , ChDir, Mkdir para crear carpetas y
algunas otras funciones relacionadas.

Sentencia Open
Esta sentencia es la encargada de abrir o crear un archivo, ya sea para leer datos del mismo,
sobre escribirlos y/o para agregarle datos.
Esta sentencia tiene una serie de parmetros que varan de acuerdo a lo que queramos hacer.
Por ejemplo:
Open "c:\prueba.txt" For Input As #1
Este ejemplo abre un archivo para poder acceder a los datos que contenga en su interior, cuando
decimos abrir, estamos diciendo que se encuentra actualmente abierto y alojado en la memoria
ram para poder manipularlo.
En el primer parmetro indicamos el path del archivo en el que queremos trabajar.
Luego la palabra "As #1" indica el nmero de archivo que estamos utilizando. Este nmero lo
asignamos nosotros y va desde el rango 1 al 511. El "nmero de archivo" se utiliza para poder
diferenciar al archivo en el cdigo. Cada archivo que se encuentra abierto no se puede asignar un
nmero de archivo igual, ya que nos dara un error en tiempo de ejecucin.
Por ejemplo no podramos hacer esto:
Open "archivo1.txt" For Input As #1
Open "otroarchivo1.txt" For Input As #1
Una vez que terminamos de trabajar con un archivo que se encuentra abierto y que no lo vamos a
utilizar ms, debemos cerrarlo, para ello se utiliza la sentencia Closeseguido del nmero de
archivo que lo identifica.
Por ejemplo:
Close #2
Esto cerrar al archivo abierto que anteriormente le asignamos el nmero de archivo 2. Tambin si
tengo 3 archivos abiertos podra hacer lo siguiente:
Close #1, #2, #3
Si utilizamos la sentencia Close sin ningn parmetro, o mejor dicho ningn nmero de archivo, se
cerrarn todos los archivos cargados en memoria por nuestra aplicacin (los que nosotros abrimos
con Open).
Por lo general, si trabajamos con varios archivos abiertos simultneamente, es aconsejable utilizar
la sentencia Close sin ningn parmetro, de este modo cuando termine de ejecutarse el
procedimiento se cerrarn todos los archivos abiertos.
Hay una funcin en Visual basic llamada FreeFile. Esta funcin lo que hace es damos un nmero
de archivo que est libre y que se pueda usar, para que de este modo no intentamos abrir uno
est siendo utilizado, y evitar un error en tiempo de ejecucin. Para usar la funcin es muy fcil,
por ejemplo:
Dim NumeroArchivo As Integer
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
NumeroArchivo = FreeFile
Open "La ruta de un archivo" For Input As #NumeroArchivo

Archivos secuenciales
Los archivos secuenciales se denominan de esta manera por que la forma de escribir y leer los
datos en un archivo es, desde el principio hasta el fin del archivo, es decir, si yo quisiera acceder a
un determinado dato del archivo y este dato se encuentra en la mitaddel archivo, para llegar a ese
dato necesito pasar por todos los dems datos, de forma secuencial.
Por lo general se suelen utilizar los archivos secuenciales, para trabajar con archivos que
contengan una estructura de datos no muy compleja, porque por ejemplo, si utilizramos un
archivo para almacenar 50000 nombres con sus respectivos datos (apellido, telfono, direccin
etc..) , este mecanismo resultara ineficiente, ya que si quisiera recuperar por ejemplo el registro n
0
3650, para leer este dato tendra que pasar previamente por los 3649 registros anteriores a este,
haciendo ms lento el acceso y por lo tanto desperdiciando recursos del sistema.
Diferentes tipos de acceso
Append: esta sentencia se utiliza para agregar informacin a un archivo de texto.
Ejemplo:
Open "c:\miarchivo.txt" For Append As #1
Si el archivo ya contiene datos, se le agregarn al mismo al final del archivo, si no contena datos
los agrega igual. Si el archivo no existe, lo crea y le agrega los datos.
Input: la sentencia Input se utiliza para leer datos de un archivo de texto, ejemplo:
Open "c:\miarchivo.txt" For Input As #2
Este ejemplo abre un archivo para leer los datos del mismo. En las prximas lneas veremos
ejemplos de como leer los datos , escribir y guardar.
Una cosa importante con respecto a leer datos de un archivo con Input es que, si el archivo que
queremos abrir, no existe, se producir un error en tiempo de ejecucin al intentar abrir un archivo
que no existe, por eso debemos verificar la ruta del mismo siempre que est bien escrita en la
sentencia Open y evitarnos dolores de cabeza, y simpre aadir algn manejador de error para
este caso
Output: esta sentencia se utiliaza para crear un archivo de texto y grabar datos. Esta es igual que
Append salvo por un gran detalle:
Output crea el archivo y le agrega informacin, pero si el archivo exista y contena informacin
previa, sobre escribe todos los datos del archivo por los datos nuevos, perdiendo los anteriores
datos.
Si accedemos con Output a un archivo que no existe, no se produce un error, si no que se crea
dicho archivo.
Conclusin: si vamos a aadir datos a un archivo existente (para actualizarlo por ejemplo) hay que
utilizar la sentencia Append. Si vamos a crear un archivo vaco y nuevo para grabar nuevos datos,
hay que utilizar la sentencia Output. Si vamos a abrir un archivo para leer datos utilizamos la
sentencia Input.
Leer datos de un archivo utilizando Line Input
Como se coment antes, para leer datos de un archivo se utiliza la sentencia Input.pero para leer
los datos del archivo y poder utilizarlos en nuestro programa se utilizan 2 sentenciaso
instrucciones: Line Input e Input.
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
Ejemplo:
Dim mivariable As String
Open "c:\nombres.txt" For Input As #1
While Not EOF(1)
Line Input #1, mivariable
Wend
Close #1
En el ejemplo anterior aparece una funcin nueva llamada EOF. Esta funcin significa End Of File
o fin de archivo.
Cuando abrimos un archivo para leer informacin con Input, debemos saber en qu momento
llegamos al final del archivo, porque de lo contrario la sentencia Line Input o Input seguira
leyendo lneas donde no existen datos despus del fin del archivo, y por lo tanto se producira un
error en tiempo de ejecucin por querer leer un dato que no existe.
Mediante la condicin Not EOF(1) leeremos los datos hasta que llegue al final del archivo, y en
cada pasada del bucle While se almacenar en la variable mivariable, lnea por lnea los datos del
mismo. Es evidente que como est planteado el ejemplo habra que manipular los datos ledos y
agregar otras instrucciones, porque en este ejemplo la variable mivariable solo almacenara los
datos de la lnea que est leyendo y borrando los datos de las lneas que almacen anteriormente.
Ms adelante veremos cmo solucionar esto.
Conclusin: para leer datos de un archivo se utiliza la sentencia Line Input y luego de la coma
debemos poner una variable nuestra para almacenar los datos que se van leyendo de la lnea
actual
Line Input #1, nuestravariable
Ejemplo para leer un archivo de texto utilizando Line Input
Lo siguiente, lee un archivo de texto lnea por lnea, y carga el contenido en un control ListBox.
Colocar un control Listl, un Commandl y un Textl para indicar el path del archivo a leer:

Option Explicit
Private Sub CoinmandlClick() On Error GoTo
errSub
Dim nFile As Integer
Dim Linea As String
'Elimina el contenido del listbox Listl.Clear
'Nmero de archivo libre nFile = FreeFile
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
'Abre el archivo para leer los datos Open textl.Text For
Input As nFile
'Recorre linea a linea el mismo y aade las lineas al control List Do While Not EOF(n_File)
'Lee la linea Line Input #n_File, Linea Listl.Addltem
Linea Loop
Exit Sub errSub: 'error MsgBox "Nmero de error: " & Err.Number &
vbNewLine &
"Descripcin del error: " & Err.Description, vbCritical End Sub
Private Sub Form_Load()
Commandl.Caption = " Cargar en Listbox "
End Sub
Este otro ejemplo, lo que hace es leer un archivo de texto para contar las lneas del mismo Colocar
un commandl en el formulario y pegar el siguiente cdigo fuente
Public Function Contar_Lineas(ByVal strTextFile As String) As Long
Dim F As Integer
Dim Lineas As Long
Dim strLinea As String
1
Nmero de archivo libre
F = FreeFile
1
Abre el archivo de texto
Open strTextFile For Input As #F
'Recorre todo el archivo de texto linea por linea
hasta el final Do
'Lee una linea
Line Input #F, str_Linea
' Incrementa la cantidad de lineas leidas
Lineas = Lineas + 1
1
Leer hasta que llegue al fin de archivo
Loop While Not EOF(F)
1
Cierra el archivo de texto abierto
Close #F
1
Retorna a la funcin el nmero de lineas del fichero ContarLineas =
Lineas
End Function
Private Sub CommandlClick()
Dim Path As String
Path = InputBox(" Ingrese la ruta de un archivo de texto ", " Contar lineas ")
If Path = vbNullString Then Exit Sub
MsgBox " Cantidad de lineas: " & Contar_Lineas(Path)
End Sub
Leer el contenido de un archivo de texto con la funcin Input
La funcin input, a diferencia de Line Input que Lee por lnea, Input lee todo el contenido del
archivo de una sola ves, es decir no necesitamos, como en el ejemplo anterior, utilizar un bucle.
El modo de usarlo es el siguiente:
Primero se abre el archivo con Open, por ejemplo:
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
Open Path_Archivo For Input As #1
Luego se asigna a una variable, el contenido que devolver la funcin Input:
Contenido = Input(LOF(l), #1)
Un ejemplo:
Lo siguiente lee el contenido de un archivo txt y lo carga en un textBox multilnea
Colocar un TextBox llamado txt_Path ( para especificar la ruta del archivo ).
El Textbox que mostrar los datos del fichero, colocarle el nombre txt_Contenido
Cdigo en un botn:
On Error GoTo ErrSub
Dim n_File As Integer Dim Contenido
As String
'Nmero de archivo libre nFile =
FreeFile
'Abre el archivo indicado
Open txtPath For Input As n F i l e
'Lee todo los datos del archivo y lo almacena en la variable Contenido =
Input$(LOF( n F i l e ) , #nFile)
'Cierra el archivo abierto Close n_File
'Carga el contenido de la variable en el TextBox
txt_Contenido = Contenido
Exit Sub
Err_Sub:
MsgBox Err.Description, vbCritical
Escribir datos en archivos de texto
Para escribir datos en archivos de texto se utiliza la sentencia Print y Write.
Ejemplo:
Dim nombre As String
Dim edad As Integer Dim telefono
As String
Open "c:\miarchivo.txt" For Append As #1 Print #1,
"esta es una linea"
Print #1, "esta es otra linea"
Print #1, nombre, edad, telefono Close
#1
En este ejemplo agregamos datos a un archivo existente llamado miArchivo.txt con la sentencia
Print.
Primera abrimos el archivo con Open. luego la sentencia Print lleva 2 parmetros, el primero indica
el archivo que estamos manipulando (el archivo nl, dentro del cdigo), el segundo parmetro
indica los datos que se agregarn en el mismo. En el segundo parmetro podemos poner un dato
directamente (una cadena, nmero, etc...),,por ltimo cerramos el archivo.
Escribir datos con la sentencia Write
A diferencia de Print, la sentencia Write escribe datos en un archivo separados por comas.
Ejemplo:
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
Dim nombre As String Dim
apellido As String
apellido = "Peres"
nombre = "Carlos"
Open App.Path &"\Archivo.txt" For Output As #1
Write #1, nombre, apellido
Close #1
Como podemos ver la sentencia Write escribe los datos en el archivo separados por coma. En la
primera lnea escribir el contenido de los variables nombre y apellido. Tambin se pueden pasar
los datos directamente a Write sin usar variables, por ejemplo:
Write #1, "Un dato", "Otro dato", "Otro mas"
Nota importante: cuando escribimos datos con la sentencia Print se utiliza la sentencia Une Input
para leer los datos del archivo. En cambio cuando escribimos datos separados por comas con la
sentencia Write debemos utilizar la sencia Input
Para que esta pgina no sea tan extensa, he armado 10 ejercicios que utilizan todo lo visto hasta
aqu, o sea el tema relacionado a los archivos secuenciales. Dentro del cdigo se encuentra
detallado cada paso y lo podes descargar al final de esta pgina.
Archivos aleatorios o directos
A diferencia de los archivos secuenciales, los archivos aleatorios almacenan datos en forma de
registros. Como habannos dicho en el captulo anterior para leer datos de un archivo secuencial
haba que leer todo el archivo, es decir que no podamos leer por ejemplo los datos que
estuviesen en la lnea 35 del mismo sin antes pasar por todos los datos anteriores, por eso su
nombre de archivo secuencial.
En cambio los archivos aleatorios, tambin llamados archivos directos, almacenan los datos con
una estructura diferente. Los datos se guardan en registros mediante una estructura definida de
tipo Type (estructura definida por nosotros) tambin llamada UDT
Por ejemplo si tuvisemos 25 registros, cada uno con datos (apellido, email, telefono, etc), y
quisiera acceder al registro 17, puedo leer los datos del registro 17 sin tener que leer los 16
registros anteriores, ganando con ello mas velocidad y teniendo una estructura de datos definida.
Para abrir un archivo aleatorio para trabajar con l, se utiliza la sentencia Open con algunos
cambios en lo que se refiere a los archivos secuenciales
Ejemplo:
open "elarchivo.dat" for random as #1
len = len(mivariable)
Como podemos ver para abrir un archivo de acceso aleatorio se utiliza la palabra Random
(aleatorio). Luego debemos indicar el nmero de archivo para identificarlo, y por ltimo una
opcin nueva: Len.
Cada registro en el archivo, que es una estructura de datos Type, tiene que tener una longitud fija.
Mediante la funcin Len de visual Basic debemos indicar el tamao de la estructura de datos que
vamos a utilizar, para que quede ms claro un ejemplo:
Primero definimos una estructura de datos:
Prvate Type t_clientes
nombre As String * 20 apellido As
String * 15 direccin As String * 30
edad As Integer
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
End Type
Despus creamos una variable llamada clientes de tipo t_clientes
Dim clientes As t_clientes
Ahora abrimos nuestro archivo, y en el parmetro de la funcin Len le pasamos la variable para
que visual basic calcule el tamao de la estructura t_clientes
Open datos.dat" For Random As #1 Len = Len(clientes)
La estructura de datos debe tener un tamao fijo, no datos variables como en el caso de los
archivos secuenciales, de ah que se indicara en el Type en las variables mediante el asterisco en
el caso de los String.
En cada campo de la estructura de datos debemos indicar el tamao de la variable. En el caso del
campo nombre de tipo string le hemos asignado una longitud fija de 20 bytes, en el apellido 15 y
en la direccin 30 bytes. La variable o el campo edad que es de tipo integer, no debemos indicar el
tamao de la variable, ya que sabemos que un nmero integer ocupa 2 bytes.
En total esta estructura t_clientes tiene una longitud de 67 bytes (30 + 20 + 15 + 2).
Si no indicramos en la sentencia Open el tamao de la estructura, visual basic, por defecto
asumira la estructura de un tamao de 128 bytes, y si nuestra estructura tendra mayor tamao
ocurrira un error en tiempo de ejecucin, por lo cual siempre debemos utilizar la funcin len para
calcular el tamao de la misma.
Grabar datos en archivos aleatorios
Para grabar datos en un archivo de acceso aleatorio se utiliza la sentencia Put.
Un ejemplo pas a paso:
Primero declaramos una estructura de datos que contendr la informacin de cada registro:
Private Type t_empleados
nombre As String * 15 apellido As
String * 15 direccin As String * 30
edad As Integer End Type
Luego creamos una variable que sea de tipo t_empleados.
Dim empleados As templeados
Ahora abrimos el archivo e indicamos en la funcin Len el tamao de la estructura
Open "datos.dat" For Random As #1 Len = Len(clientes)
Ahora le asignamos un valor a cada campo de la estructura de esta forma:
empleados.nombre = "Carlos"
empleados.apellido = "Martinez"
empleados.direccin = "Avenida 9 de julio n 2054"
empleados.edad =45
Ahora grabamos en el registro nl del archivo los datos de esta forma:
Put #1, 1, empleados
Si queremos grabar ms datos, por ejemplo en el registro n 2 del archivo hacemos lo siguiente:
empleados.nombre = "Maria" empleados.apellido =
"Gonzales" empleados.direccin = "Avenida 13 n
1100" empleados.edad = 35
Put #1, 2, empleados
Close #1
Como vemos ver la sentencia Put lleva 3 parmetros. El primero indica el nmero de archivo
abierto en el cual estamos trabajando, en el segundo debemos indicar el nmero de registro en el
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
que se grabarn los datos. Si no ponemos el nmero de registro, los datos se grabarn en el
ltimo registro. Por ltimo en el tercer parmetro le pasamos la variable asociada con la estructura
de datos.
Leer datos en archivos aleatorios
Para leer los registros o datos de un archivo aleatorio se utiliza la sentencia Get. Esta sentencia
es exactamente igual que Put, pero la diferencia es que en vez de grabar los datos los recupera
para poder utilizarlos luego en el programa.
Posicionarse en un registro determinado
Supongamos que tenemos un archivo aleatorio que contiene 452 registros. Ahora queremos
recuperar los datos del registro 258. Para posicionarse en un determinado registro hay una
sentencia, hay una sentencia llamada Seek. Ejemplo:
Seek #1, 258
Get #1, , mivariable
si queremos posicionamos en un registro determinado, pero en vez de leer, queremos grabar
datos, hacemos la misma operacin pero con la sentencia Put:
Seek #1, 258
Put #1, , mivariable
Nota: Desde este enlace podes ver un simple cdigo fuente de una Agenda de contactos
utilizando Archivos Directos - Aleatorios
Funciones propia de vb para el manejo de ficheros y directorios
Visual basic posee varias funciones para manejar archivos y directorios de nuestro sistema. Las
principales son.
Funcin Dir
La funcin Dir se utiliza o para buscar archivos y devuelve una cadena que representa el nombre
de un archivo o directorio de acuerdo a un determinado patrn de bsqueda. La sintaxis de la
funcin es:
Dir (ruta, atributos)
En el parmetro ruta debemos indicar el path de un archivo, directorio o unidad. Si el path no
existe, la funcin Dir devuelve una cadena vaca.
En el parmetro atributos podemos especificar los siguientes:
vbnormal : cualquier atributo de archivo.
vbreadonly : archivos de solo lectura.
vbhidden: archivos ocultos
vbsystem : archivos de sistema
vbvolume : etiqueta de volumen de una unidad
vbdirectory : directorios
Ejemplo:
Si el archivo existe Dir devuelve "autoexec.bat"
Archivoabuscar = Dir("c:\autoexec.bat")
Tambin podemos utilizar los comodines * y ? para filtrar bsquedas.
En este ejemplo devuelve el primer archivo exe que encuentra, si es que existe.
Archivoabuscar = Dir("c:\windows\*.exe")
En este ejemplo la funcin Dir devuelve directorios adems de archivos
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
Archivoabuscar = Dir("c: \, vbdirectory")
El nico inconveniente de esta funcin es que siempre devuelve el primer archivo que encuentra.
Para que contine buscando los dems archivos debemos poner la funcin sin parmetros.
Ejemplo
Dim archivo As String
archivo = Dir("c:\*.exe")
While archivo <> "" archivo = Dir
Wend
En el ejemplo anterior buscar todos los archivos exe en el directorio c:\. cuando ya no encuentre
mas devolver una cadena vaca y saldr del bucle While.
Este otro ejemplo verifica si un archivo existe:
Private Function VerificarExiste(path) As Boolean
If Len(Trim$(Dir$(path))) Then
VerificarExiste = True Else
Verificar_Existe = False End If
MsgBox Verificar_Existe
End Function
Private Sub Form_Load()
CallVerificarExiste("c:\autoexec.bat")
End Sub
El siguiente enlace muestra un ejemplo de como utilizar la funcin Dir para buscar archivos v
tambin ordenarlos enforma alfabtica y luego agregar la lista en un control Listbox
Este otro enlace muestra como buscar ficheros mediante el Api de Windows
Funcin FileCopy
FileCopy nos permite copiar archivos. Esta funcin es muy fcil de usar, ejemplo:
FileCopy "origen", "destino"
Nota: si el archivo existe la funcin lo sobre escribe.
Funcin MkDir
Esta funcin se utiliza para crear directorios, pero crea un directorio por vez, es decir que no crea
varios niveles al mismo tiempo. La sintaxis es:
MkDir "Ruta directorio"
Para poder crear un Directorio que contiene varios subdirectorios, podemos hacerlo siguiente:
El ejemplo despliega un InputBox para Ingresar el path a crear:

Prvate Sub Commandl_Click()


Dim i As Integer Dim Array_Dir As
Variant Dim Sub_Dir As String Dim
ElPath As String
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
El_Path = InputBox("Escriba la ruta del directorio a crear" &
"con los subdirectorios", " Crear varios niveles de directorios")
If El_Path = vbNullString Then Exit Sub
'Desglosa el path ArrayDir = Split(ElPath,
"\")
El_Path = vbNullString
'Recorre el array anterior para ir creando uno por uno For i =
LBound(Array_Dir) To UBound(Array_Dir)
SubDir = ArrayDir(i)
If Len(Sub_Dir) > 0 Then
ElPath = ElPath & SubDir & "\"
If Right$(Sub_Dir, 1) o ":" Then 1Verificamos que no
exista
If Dir$(ElPath, vbDirectory) = vbNullString Then 'Crea la carpeta Cali
MkDir(El_Path) End If End If End If Next i
End Sub
Funcin Kill
La funcin kill se utiliza para eliminar archivos. Tambin es muy fcil de utilizar, y el nico
parmetro que lleva es la ruta del archivo que queremos eliminar. Si queremos eliminar varios
archivos de un directorio podemos utilizar el comodn"*", y si queremos excluir ciertos
archivosutilizamos el comodn "?".
kill "c:\*.txt"
Funcin FileLen
E sta funcin nos devuelve el tamao en bytes de un archivo.
Ejemplo:
Dim tamao As Long
tamao = FileLen("c:\windows\system32\control.exe")
MsgBox tamao & " bytes"
FileLen es muy til para trabajar con archivos aleatorios, ya que si queremos conocer la cantidad
de registros que tiene el archivo, debemos dividir el tamao del archivo por el tamao de la
estructura.
Ejemplo:
Prvate Type tpersonas
nombre As String * 20 apellido As String *
20
End Type
Dim cantreg As Long
Private Sub Form_Load()
cantreg = FileLen("c:\miarchivo.dat") / Len(tpersonas)
End Sub
Funcin Name
Name se utiliza para renombrar archivos y directorios. Esta funcin no se puede utilizar para
renombrar archivos abiertos.
Ejemplo:
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
ame "path del archivo viejo a renombrar" as "path y nombre nuevo del archivo"
Tambin con esta sentencia podemos mover archivos y directorios a otra ubicacin, para ello
debemos cambiar en el segundo parmetro la ruta del archivo.
Funcin GetAttr y SetAttr
La funcin Getattr permite recuperar informacin sobre los atributos de un archivo o directorio.
Ejemplo:
GetAttr "ruta del archivo"
Los valores devueltos por la funcin pueden ser los siguientes:
0 - normal
1 - solo lectura
2 - oculto
4 - archivo de sistema
16 - directorio
32 - archivo modificado
El siguiente ejemplo lo que hace es mostrar en un MsgBox los atributos de un archivo. Colocar un
TextBox llamado Text1 y un Command1.

Cdigo en el formulario:
Option Explicit
Private Sub CommandlClick()
Dim ret As Long
Dim Atributos As String
ret = GetAttr(Textl.Text)
If ret And vbNormal Then
Atributos = " Normal = Si" S vbNewLine Else
Atributos = " Normal = No" S vbNewLine End If If ret
And vbReadOnly Then
Atributos = Atributos & " Solo Lectura = Si" S vbNewLine Else
Atributos = Atributos & " Solo Lectura = No" & vbNewLine
End If
If ret And vbHidden Then
Atributos = Atributos & " Oculto = Si" & vbNewLine
Else
Atributos = Atributos & " Oculto = No" & vbNewLine
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
End If
If ret And vbSystem Then
Atributos = Atributos & " Sitema = Si" & vbNewLine
Else
Atributos = Atributos & " Sitema = No" & vbNewLine
End If
If ret And vbDirectory Then
Atributos = Atributos & " Directorio = Si" & vbNewLine Else
Atributos = Atributos & " Directorio = No" S vbNewLine End If
'Muestra los atributos del archivo elegido MsgBox Atributos,
vblnformation, " Atributos "
End Sub
La funcin SetAttr lo que hace es establecer los atributos de un archivo.
Ejemplo:
SetAttr "ruta del archivo", valores de los atributos

Funcin RmDir
RmDir elimina directorios o carpetas. Pero antes de eliminar directorios tenemos que estar seguros
que la carpeta no contiene archivos, de lo contrario nos dar un error en tiempo de ejecucin. Si
el directorio contiene archivos debemos eliminarlos previamente con la sentencia kill.
Ejemplo:
RmDir "path del directorio a remover"

Controles Filelist, Dirlist y Drivelist


Uno de los problemas que hay que resolver para leer o escribir en ficheros de disco es ser
capaces de localizar interactivamente los correspondientes ficheros, de modo anlogo a como se
realiza con los comandos File/Open o File/Save As de Word, Excel o de cualquier otra aplicacin.
Este tipo de operaciones se pueden hacer mucho ms fcilmente con los Common Dialog Controls
vistos en el Apartado 4.4, en la pgina 58, aconsejando por lo tanto su uso. A pesar de ello, aqu
se van a explicar los controles especficos de que dispone VisualBasic 6.0.
Visual Basic 6.0 dispone de tres controles que facilitan el recorrer el rbol de ficheros y de
directorios, localizando o creando interactivamente un fichero determinado. Estos controles son el
FileListBox (para ficheros), el DirListBox (para directorios) y el DriveListBox (para unidades de
disco). La Figura 37 muestra estos tres controles, junto con unas etiquetas que los identifican. Los
dos primeros son listas, mientras que el tercero es una caja de tipo ComboBox.
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos

Figura 37. Cajas DriveListBox, DirListBox y FileListBox

En principio estos controles, cuando se colocan en un formulario tal como se muestra en la


Figura 37, estn desconectados. Quiere esto decir que al cambiar la unidad de disco (drive) no se
muestran en la caja dirListBox los directorios correspondientes a la nueva unidad de disco. Por
otra parte, al cambiar de directorio tendrn que cambiar de modo acorde los ficheros en la caja
fileListBox. La dificultad de conectar estas cajas no es grande, pero s hay que saber cmo se
hace pues depende de propiedades de estas cajas que no aparecen en la ventana de propiedades
(ventana Properties) en modo de diseo, y que slo estn accesibles en modo de ejecucin.
De entre estas propiedades las ms importantes son las siguientes:
1. La DriveListBox tiene una propiedad llamada Drive que recoge la unidad seleccionada por
el usuario (puede ser una unidad fsica como el disco c:\ o una unidad lgica asignada por el
usuario a otro disco o directorio en un servidor o en otro ordenador de la red).
2. La propiedad path de la caja DirListBox determina el drive seleccionado y por tanto qu
directorios se muestran en dicha caja.
3. Finalmente, una propiedad tambin llamada path de la caja FileListBox determina el
directorio que contiene los ficheros mostrados.
Para enlazar correctamente las cajas de discos, directorios y ficheros se puede utilizar el
evento Change, de tal forma que cada vez que el usuario cambia la unidad de disco se cambia el
path del directorio y cada vez que se cambia el directorio se cambia el path de los ficheros. Esto
puede hacerse con el cdigo siguiente:
Prvate Sub dirPrueba_Change()
filPrueba.Path = dirPrueba.Path End
Sub
Prvate Sub drvPrueba_Change()
dirPrueba.Path = drvPrueba.Drive End
Sub
La caja FileListBox tiene una propiedad llamada FileName que contiene el nombre del
fichero seleccionado por el usuario. Para tener el path completo del fichero basta anteponerle la
propiedad Path de la fileListBox, que incluye el directorio y el drive, y la barra invertida (\). Si el
usuario introduce FileName incluyendo el path, Visual Basic actualiza tambin de modo
automtico la propiedad Path de FileListBox. El usuario se debe preocupar de utilizar el evento
Change para actualizar el Path de la caja DirListBox y la propiedad Drive de DriveListBox.
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
Otra propiedad importante es la propiedad Pattern, que indica los tipos de ficheros que se
mostrarn en la caja. El valor por defecto es "* *", lo cual hace que se muestren todos los ficheros.
Si su valor fuese "* doc" slo se mostraran los ficheros con esta extensin. La propiedad Pattern
admite varias opciones separadas por untos y coma ("* doc; *.dot").
T IPOS DE FICHEROS
Tanto en Windows como en Visual Basic 6.0 existen, principalmente, dos tipos de archivos:
1. Ficheros ASCII o ficheros de texto. Contienen caracteres codificados segn el cdigo ASCII
y se pueden leer con cualquier editor de texto como Notepad. Suelen tener extensin *.txt o
* bat, pero tambin otras como * m para los programas de Matlab, *.c para los ficheros fuente
de C, *.cpp para los ficheros fuente de C++ y *.java para los de Java.
2. Ficheros binarios: Son ficheros imagen de los datos o programas tal como estn en la
memoria del ordenador. No son legibles directamente por el usuario. Tienen la ventaja de que
ocupan menos espacio en disco y que no se pierde tiempo y precisin cambindolos a
formato ASCII al escribirlos y al leerlos en el disco.
Con Visual Basic 6.0 se pueden leer tanto ficheros ASCII como ficheros binarios. Adems el
acceso a un fichero puede ser de tres formas principales.
1. Acceso secuencial. Se leen y escriben los datos como si se tratara de un libro: siempre a
continuacin del anterior y sin posibilidad de volver atrs o saltar datos. Si se quiere acceder a
un dato que est hacia la mitad de un fichero, habr que pasar primero por todos los datos
anteriores. Los ficheros de texto tienen acceso secuencial.
2. Acceso aleatorio (random): Permiten acceder directamente a un dato sin tener que pasar
por todos los dems, y pueden acceder a la informacin en cualquier orden. Tienen la
limitacin de que los datos estn almacenados en unas unidades o bloques que se llaman
registros, y que todos los registros que se almacenan en un fichero deben ser del mismo
tamao. Los ficheros de acceso aleatorio son ficheros binarios.
3. Acceso binario. Son como los de acceso aleatorio, pero el acceso no se hace por registros
sino por bytes.
Antes de poder leer o escribir en un fichero hay que abrirlo por medio de la sentencia Open.
En esta sentencia hay que especificar qu tipo de acceso se desea tener, distinguiendo tambin si
es para lectura (input), escritura (output) o escritura aadida (append).

LECTURA Y ESCRITURA EN FICHEROS SECUENCIALES


Apertura y cierre de ficheros
Para poder leer o escribir en un fichero antes debe ser abierto con la sentencia Open, cuya forma
general es la siguiente:
Open filename Formodo As # fileNo
donde:
filenamees el nombre del fichero a abrir. Ser una variable string o un nombre entre dobles
comillas (" ").
modo Para acceso secuencial existen tres posibilidades: Input para leer, Output
paraescribir al comienzo de un fichero y Append para escribir al final de un fichero
ya existente. Si se intenta abrir en modo Input un fichero que no existe, se produce
un error. Si se abre para escritura en modo Output un fichero que no existe se crea,
y si ya exista se borra su contenido y se comienza a escribir desde el principio. El
modo Append es similar al modo Output, pero respeta siempre el contenido previo
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
del fichero escribiendo a continuacin de lo ltimo que haya sido escrito
anteriormente.
fileNo Es un nmero entero (o una variable con un valor entero) que se asigna a cada
ficheroque se abre. En todas las operaciones sucesivas de lectura y/o escritura se
har referencia a este fichero por medio de este nmero. No puede haber dos
ficheros abiertos con el mismo nmero. Visual Basic dispone de una funcin
llamada FreeFile que devuelve un nmero no ocupado por ningn fichero.
A continuacin puede verse un ejemplo de fichero abierto para lectura:
Open "C:\usuarios\PRUEBAl.txt" For Input as #1
Despus de terminar de leer o escribir en un fichero hay que cerrarlo. Para ello, se utilizara el
comando Close, que tiene la siguiente forma:
Close # fileNo
DondeQ\ fileNo es el nmero que se la haba asignado al abrirlo con la instruccin Open.
Lectura y escritura de datos
Sentencia Input
Existen varias formas de leer en un fichero de acceso secuencial. Por ejemplo, para leer el valor
de una o ms variables se utiliza la sentencia Input:
Input # fileNo, varNamel, varame2, varame3, ...
Donde el fileNo es el nmero asignado al archivo al abrirlo y varNamel, varName2, ... son los
nombres de las variables donde se guardarn los valores ledos en el fichero. Debe haber una
correspondencia entre el orden y los tipos de las variables en la lista, con los datos almacenados
en el fichero. No se pueden leer directamente vectores, matrices o estructuras. Si los datos del
disco han de ser escritos por el propio programa, conviene utilizar la sentencia write (mejor que
Print) para garantizar que los valores estn convenientemente separados. La sentencia Write se
ver posteriormente.

Funcin Une Input y funcin Input


La funcin Line Input # lee una lnea completa del archivo y devuelve su contenido como valor de
retorno. Su forma general es:
varString = Line Input #fileNo
Conviene recordar que en los ficheros de texto se suele utilizar el carcter return (o Intro)
para delimitar las distintas lneas. Este es el carcter ASCII n 13, que por no ser un carcter
imprimible se representa en Visual Basic 6.0 como chr(13). En muchas ocasiones (como herencia
del MS-DOS) se utiliza como delimitador de lneas una combinacin de los caracteres return y
linefeed, representada en Visual Basic 6.0 como chr(13)+chr(10). En la cadena de caracteres que
devuelve Line no se incluye el carcter de terminacin de la lnea.
Para leer todas las lneas de un fichero se utiliza un bucle for o while. Visual Basic 6.0
dispone de la funcin EOF {End of File) que devuelve True cuando se ha llegado al final del
fichero. Vase el siguiente ejemplo:
Do While Not EOF(fileNo)
miLinea = Line Input #fileNo
Loop
Tambin se puede utilizar la funcin Input, que tiene la siguiente forma general:
varString = Input(nchars, #fileNo)
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
Dondenchars es el nmero de caracteres que se quieren leer y varString es la variable donde se
almacenan los caracteres ledos por la funcin. Esta funcin lee y devuelve todos los caracteres
que encuentra, incluidos los intro y linefeed. Para ayudar a utilizar esta funcin existe la funcin
LOF (fileNo), que devuelve el n total de caracteres del fichero. Por ejemplo, para leer todo el
contenido de un fichero y escribirlo en una caja de texto se puede utilizar:
txtCaja.text = Input(LOF(fileNo), #fileNo)
Funcin Print #
Para escribir el valor de unas ciertas variables en un fichero previamente abierto en modo Output
o Append se utiliza la instruccin Print #, que tiene la siguiente forma:
Print #fileNo, vari, var2, var2, ...
Donde vari, var2,... pueden ser variables, expresiones que dan un resultado numrico o
alfanumrico, o cadenas de caracteres entre dobles comillas, tales como "El valor de x es... ".
Considrese el siguiente ejemplo:
Print #1, "El valor de la variable I es: ", I
donde / es una variable con un cierto valor que se escribe a continuacin de la cadena. Las reglas
para determinar el formato de la funcin Print # son las mismas que las del mtodo Print visto
previamente.

Funcin Write#
A diferencia de Print #, la funcin Write # introduce comas entre las variables y/o cadenas de
caracteres de la lista, adems encierra entre dobles comillas las cadenas de caracteres antes de
escribirlas en el fichero. La funcin Write # introduce un carcter newline, esto es, un return o un
return+linefeed despus del ltimo carcter de las lista de variables. Los ficheros escritos con
Write # son siempre legibles con Input #, cosa que no se puede decir de Print #. Vase el
siguiente ejemplo:
' Se abre el fichero para escritura
Open "C:\Temp\TestFile.txt" For Output As #1
Write #1, "Helio World", 234 ' Datos separados por comas
MyBool = False: MyDate = #2/12/1969# ' Valores de tipo boolean y Date
Write #1, MyBool; " is a Boolean valu"
Write #1, MyDate; " is a date"
Close #1 ' Se cierra el fichero
El fichero TestFile.txt guardado en C:\Tempcontendr:
"Helio World",234
#FALSE#," is a Boolean valu"
#1969-02-12#," is a date"
FICHEROS DE ACCESO ALEATORIO
Los ficheros de acceso aleatorio se caracterizan porque en ellos se puede leer en cualquier orden.
Los ficheros de acceso aleatorio son ficheros binarios. Cuando se abre un fichero se debe escribir
For Random, al especificar el modo de apertura (si el fichero se abre For Binary el acceso es
similar, pero no por registros sino por bytes; este modo es mucho menos utilizado).
Abrir y cerrar archivos de acceso aleatorio
Estos archivos se abren tambin con la sentencia Open, pero con modo Random. Al final se
aade la sentencia Len=longitudRegistro, en bytes. Vase el siguiente ejemplo:
fileNo = FreeFile
Instituto Universitario Politcnico
Santiago Mario Unidad V: Creacin y Manipulacin de B ases de Datos
Sede Barcelona
Tema IX. Archivos y Acceso de Bases de Datos
size = Len(unObjeto)
Open filename For Random as #fileNo Len = size
Dondefilename es una variable que almacena el nombre del archivo. Se recuerda que la funcin
FreeFile devuelve un nmero entero vlido (esto es que no est siendo utilizado) para poder abrir
un fichero. El ltimo parmetro informa de la longitud de los registros (todos deben tener la misma
longitud). Visual Basic 6.0 dispone de la funcin Len(objetoName), que permite calcular la
dimensin en bytes de cualquier objeto perteneciente a una clase o estructura.
De ordinario los ficheros de acceso directo se utilizan para leer o escribir de una vez todo un
bloque de datos. Este bloque suele ser un objeto de una estructura, con varias variables miembro.
Los ficheros abiertos para acceso directo se cierran con Close, igual que los secuenciales.
Leer y escribir en una archivo de acceso aleatorio. Funciones Get y Put
Se utilizan las funciones Get y Put. Su sintaxis es la siguiente:
Get #fileNo, registroNo, variableObjeto
Put #fileNo, registroNo, variableObjeto
La instruccin Get lee un registro del fichero y almacena los datos ledos en una variable, que
puede ser un objeto de una determinada clase o estructura. La instruccin Put escribe el
contenidode la variable en la posicin determinada del fichero. Si se omite el nmero de registro se
lee (escribe) a continuacin del registro ledo (escrito) anteriormente. Vase el siguiente ejemplo:
FileNo=FreeFile
size=Len(unObj eto)
Open filename for Random as #fileNo Len=size
Get #fileNo, 3, size
Con este ejemplo, se ha abierto el fichero filename de la misma forma que se realiz en el ejemplo
anterior, pero ahora, adems se ha ledo un registro de longitud size, y ms en concreto, el tercer
registro. Si se quisiera modificar el valor de este registro, no habra ms que asignarle el valor que
se quisiera, para a continuacin introducirlo en el fichero mediante la sentencia siguiente:
Put #fileNo, 3, size

S-ar putea să vă placă și