Documente Academic
Documente Profesional
Documente Cultură
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.
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
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.
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.
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.
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 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
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
Leer:
nombre, horas,
precios
Calcular:
Bruto= horas*precios
Calcular:
neto= bruto-0,10*bruto
Escribir:
nombre, horas,
bruto, neto
Fin
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 [ ...].
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
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.
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
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.
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.
Tipos de datos
Los tipos de datos que maneja Visual Basic se especifican en el cuadro 2:
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.
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.
+ 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.
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
Ejemplo:
Considrese la siguiente frmula matemtica
La expresin aritmtica equivalente en Visual Basic es Z = (abs( x -3) + srq(x)) / x^2
InputBox
Un InputBox es una ventana donde se le solicita informacin al usuario, tal como puede verse en el
siguiente ejemplo:
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")
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
Ejemplo 3: La instruccin
MsgBox ("lnea 1" &Chr(10) & "lnea 2")
Muestra el cuadro de mensaje de la figura 5.
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)
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)
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
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
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
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.
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.
Instrucciones
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
Instrucciones Instrucciones
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
Falsa Verdadera
Expresin
Lgica
Instrucciones
Instrucciones Instrucciones
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 %
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
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
Variable o
Expresin
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
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:
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.
Repetir Para
variable = Vi hasta Vf
Instrucciones
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 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 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.
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
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
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.
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
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.
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.
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
Puntero PictureBox
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.
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
27. Tipos de cuadros combinados (ComboBox)
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.
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
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
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
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
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
Formulario FormEntrada
Formulario FormResultados
Nombre de los controles usados en el cdigo:
Formulario FormEntrada
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
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
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().
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.
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:
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.
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
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.
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.
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
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:
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"
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