Está en la página 1de 20

Servicio Nacional de Aprendizaje SENA

Programa de formacin: Tcnico en Sistemas Versin 1 Nivel: Tcnico


Sistema de Gestin de la Calidad

Fecha: Febrero 28 de 2011 Versin 1.0 Pgina 1 de 20

GUIA DE ACTIVIDADES DE PROGRAMACIN ORIENTADA A EVENTOS

Nombre del Proyecto: ADMINISTRACIN DEL SOPORTE TCNICO EN


SISTEMAS A INSTITUCIONES EDUCATIVAS.

Duracin en meses: 18 meses

Fase del Proyecto:


CONCEPTUALIZACIN

Actividad de Proyecto
Recopilar informacin relacionada con el proyecto

Duracin en meses de la actividad 4 meses

Actividades de Aprendizaje Gua de conocimiento.

Duracin en horas de la actividad

Competencia: 220501046

APLICAR HERRAMIENTAS OFIMTICAS, REDES SOCIALES Y COLABORATIVAS DE ACUERDO CON LE PROYECTO A DESARROLLAR.

Resultados de Aprendizaje: Duracin 22050104604 APLICAR resultado:


CONTROLES Y ESTRUCTURAS BSICAS DE PROGRAMACIN DE UN LENGUAJE ORIENTADO A EVENTOS DE ACUERDO CON EL PROBLEMA A SOLUCIONAR.

en 90

horas

del

Visual Basic - Gua del Estudiante Cap. 3


BASIC DE VISUAL BASIC (y2)

Funciones de cadena
Se denomina CADENA a una sucesin de caracteres. Una cadena puede tener uno o varios caracteres alfanumricos. Una cadena es tambin una sucesin de nmeros. Ejemplo de cadenas: Curso de Visual Basic abcdefghijklmnopqrstuvwxyz1234567890 123456789 Hagamos una distincin entre una cadena que contenga nmeros y un nmero. Un nmero tiene un valor, pero tambin tiene una presentacin escrita. El valor es algo que estar en el computador como una sucesin de bits. Dependiendo de como lo hayamos declarado, tendr mas o menos bits. Pero esa informacin no es un nmero legible por el usuario. Lo que s es legible por el usuario es la representacin en numeracin decimal (u octal, o hexadecimal, o incluso en binario) de ese nmero. Esa representacin del nmero en un determinado sistema de numeracin es una cadena.
Visual Basic - Gua del Aprendiz Sena Captulo 3 Pgina

As, el nmero nueve, que en la memoria del computador ser una sucesin de bits, nos lo podr presentar como: 9 9 11 1001 En numeracin decimal En numeracin hexadecimal En numeracin octal En numeracin binaria

Esas formas de presentarnos el nmero son CADENAS de caracteres. El valor del nmero dentro del computador es un NUMERO. Para presentar un nmero en la pantalla, el computador debe convertirlo previamente a una cadena. Cuando introducimos un valor numrico por teclado o pantalla, el computador para hacer operaciones con l, debe transformarlo a un nmero. Estas consideraciones nos llevan a las dos primeras funciones con cadenas: Str (nmero) Convierte un nmero a una cadena en numeracin decimal. Obtiene el valor (el nmero) correspondiente a esa cadena.

Val

(cadena numrica)

Ejemplos Variablenumerica = Val (TextBox1.Text) Este ejemplo convierte la cadena de caracteres (numricos) que hubiese en la caja de texto TextBox1 en un nmero, y asocia este nmero a la variable Variablenumerica. Si el contenido de la caja de textos no fuesen caracteres numrico (abcd, por ejemplo), Variablenumerica tomara el valor 0.

Label1.Caption = Str (Variablenumerica) Este ejemplo pondra en la etiqueta Label1 los caracteres correspondientes al valor que tuviese la variable Variablenumerica . Nota para recordar: Siempre habr que convertir un nmero a una cadena cuando queramos presentarlo en la pantalla. Siempre habr que convertir a nmero la cadena de caracteres numricos que hayamos introducido por teclado o por pantalla, cuando queramos operar con ese nmero. Un Label, cuando tiene que presentar un nico nmero, no le pedir que se lo convierta a cadena, pues VB hace automticamente esa conversin. Sin embargo, cuando tiene que presentar un nmero, y adems un texto en el mismo Label, VB no realizar automticamente ese cambio, por lo que le dar un error. Le recomiendo que convierta los nmeros a variables de cadena siempre que los quiera presentar en un Label o TextBox. Cuando tenga mas experiencia en VB ver que esta observacin estar un poco de ms. Pero de momento, convierta cada dato segn lo vaya a necesitar. Existe una funcin mas amplia que Str. Se trata de Cstr. Esta funcin no solamente transforma un nmero a una cadena, como hace Str, sino que convierte cualquier tipo de variable a una variable tipo String (cadena).
Visual Basic Gua del Aprendiz Sena Captulo3 Pgina 2

Esta funcin transforma, por ejemplo, una variable tipo Booleana en una variable de cadena, devolviendo la cadena Verdadero si el valor de la variable booleana es True, y Falso si es False. Puede tambin transformar a una cadena de caracteres el valor de un CheckBox o de un OptionButton. En estos casos devuelve 0 y 1 para el CheckBox (Desactivado / Activado) y Verdadero Falso para el OptionButton (Activado / Desactivado) label1.Caption = CStr(booleana) Label1.Caption = Verdadero si booleana es true Label1.Caption = Falso si booleana es False Label2.Caption = 1 Label2.Caption = 0 si Check1 est activado si Check1 est desactivado

Label2 = CStr(Check1.Value)

Label3 = CStr(Option1.Value)

Label3.Caption = Verdadero si Check1 est activado Label3.Caption = Falso si Check1 est desactivado

Si se aplica Cstr a una variable tipo Fecha/Hora devuelve la fecha / Hora en formato corto. Vea mas adelante la coleccin de funciones Cxx Mas funciones de cadena: Left (cadena, n) Extrae los n primeros caracteres de una cadena, comenzando por la izquierda. Si cadena = Curso de Visual Basic Resultado = Left (cadena, 10) Right (cadena, n) (Para todos los ejemplos) ----> Resultado = Curso de V

Extrae lo n ltimos caracteres de la cadena ----> Resultado = sual Basic

Resultado = Right (cadena, 10) Mid (cadena, m, n)

Extrae n caracteres de la cadena, siendo el primer carcter extrado el que ocupa el lugar m.

(Vea Instruccin Mid mas abajo) Resultado = Mid (cadena, 3, 10) ----> Resultado = rso de Vis

LCase (cadena)

Devuelve otra cadena igual, pero con todos los caracteres en minsculas. (LCase = Lower Case) ----> Resultado = curso de visual basic

Resultado = Lcase (cadena)

UCase (cadena)

Devuelve otra cadena igual, pero con todos los caracteres en maysculas. (UCase = Upper Case) ----> Resultado = CURSO DE VISUAL BASIC

Resultado = UCase (cadena)

Visual Basic Gua del Aprendiz Sena

Captulo3

Pgina 3

Len (cadena)

Devuelve la longitud de la cadena ----> Resultado = 21

Resultado = Len (cadena) LenB (Cadena)

Devuelve el nmero de Bytes empleados para almacenar la cadena. Sorprndase, es el doble que Len (Cadena) Devuelve una cadena de n caracteres como el indicado ----> ----> ----> Resultado = aaaaaaaa Resultado = AAAAAAAA Resultado = AAAAAAAA

String (n, carcter)

Resultado = String (8, "a") Resultado = String (8, Chr(65)) Resultado = String (8, 65) Space (n)

Devuelve una cadena formada por n espacios. ----> Resultado = A B

Resultado = "A" + Space (6)+ "B"

LTrim

Elimina los posibles espacios que tenga una cadena por Su izquierda. Elimina los posibles espacios que tenga una cadena por Su derecha. Elimina los espacios que tenga una cadena, tanto por su izquierda como por su derecha. (No elimina los espacios centrales de la cadena)

Rtrim

Trim

Estas tres funciones se emplean para quitar los posibles espacios que pueden resultar de una entrada de datos. Tienen especial importancia cuando se toman los datos de un archivo o base de datos, donde fueron introducidos por otro programa. La funcin Trim hay que usarla cada vez que convertimos un nmero a cadena de caracteres. Cuando usamos Str(Nmero), la funcin Str introduce un espacio al comienzo de la cadena que, en la mayor parte de los casos, produce un error cuando lo vamos a comparar, a introducir en una base de datos, etc.

No se pone ningn ejemplo de estas funciones, pues sera difcil verlo impreso. InStr (cadena, cadena1) Busca la cadena1 dentro de cadena y devuelve el nmero de orden dentro de cadena donde se encuentra la primera letra de cadena1 Resultado = InStr (cadena, "sua") ----> Resultado = 12

StrConv

Convierte una cadena de caracteres en otra, segn las instrucciones que le sigan. Puede sustituir a UCase o LCase si la instruccin es UpperCase o LowerCase respectivamente, o poner la primera letra de todas las palabras de la cadena en maysculas, si la instruccin es ProperCase.
Captulo3 Pgina 4

Visual Basic Gua del Aprendiz Sena

Resultado = StrConv (cadena, UpperCase)

----> Resultado = CURSO DE VISUAL BASIC ----> Resultado = curso de visual basic ----> Resultado = Curso De Visual Basic

Resultado = StrConv (cadena, LowerCase)

Resultado = StrConv (cadena, ProperCase)

Instruccin Mid
Mid puede usarse tambin para cambiar el contenido de una cadena. Observe la sutileza entre Mid como Funcin de cadena y Mid como Instruccin. La Instruccin Mid reemplaza un nmero especificado de caracteres en una variable de cadena con caracteres de otra cadena. Sintaxis Mid(cadena1, inicio[, longitud]) = cadena2 ---- > Resultado = Curso AB Visual Basic

Mid (cadena, 7,2)=AB

Si la cadena que vamos a introducir tuviera ms caracteres, tomar solamente los primeros Mid (cadena, 7,2)=ABCDE ---- > Resultado = Curso AB Visual Basic

Funciones Asc y Chr


Estas funciones se utilizan para obtener el nmero ASCII de un carcter, y para, sabiendo el nmero ASCII, hallar el carcter correspondiente.

Funcin Asc
Devuelve el cdigo de carcter correspondiente a la primera letra de una cadena de caracteres. Sintaxis MiVariable = Asc (Cadena)

Cadena es cualquier expresin de cadena vlida. Si la cadena no contiene caracteres, ocurrir un error en tiempo de ejecucin. Ejemplo : Label1 = Asc (ABCD) Label1 presentar 65

Nota Hay otra funcin (AscB) que puede usarse con bytes contenidos en una cadena. En lugar de devolver el cdigo del carcter para el primer carcter, AscB devuelve el primer byte.

Funcin Chr
Devuelve el carcter asociado con el cdigo de carcter especificado. Sintaxis Chr (CdigoCarcter)

El argumento CdigoCarcter es un nmero en el intervalo de 0 a 255, inclusive, que identifica


Visual Basic Gua del Aprendiz Sena Captulo3 Pgina 5

a un carcter. Ejemplo Label1 = Chr (65) Label1 contendr el carcter A

Como ejemplos de nmeros de caracteres algo especiales se debe sealar el carcter 10 (avance de lnea) y el carcter 13 (Retroceso de carro). La tecla ENTER produce ambos caracteres cada vez que se pulsa. Otros caracteres importantes son, el Backspace (carcter 8), y el espacio (carcter 32) Nota Se proporciona otra funcin (ChrB) para su uso con datos de byte incluidos en una cadena. En lugar de devolver un carcter, que puede ser de uno o de dos bytes, ChrB siempre devuelve un solo byte. FUNCIONES CON NUMEROS _________________________ Visual Basic puede operar con nmeros tal como lo hara cualquier persona. Conoce las 4 reglas, y puede utilizar parntesis de la misma forma que los escribimos sobre el papel. Los operadores que utiliza para las operaciones bsicas son: + * / \ Mod ^ Suma Resta Multiplicacin Divisin Divisin sin decimales Resto de una divisin Eleva a un exponente

Ejemplos Resultado = 12 + 15 Resultado = 15 - 12 Resultado = 15 * 12 Resultado = 15 / 12 Resultado = 15 \ 12 Resultado = 15 Mod 12 Resultado = 12 ^ 2 resultado = ( ( 4 * 3 ) / 2 ) ^ 2 ----> ----> ----> ----> ----> ----> ----> ----> Resultado = 27 Resultado = 3 Resultado = 180 Resultado = 1.25 Resultado = 1 resultado = 3 Resultado = 144 Resultado = 36

Estos operadores se denominan Operadores aritmticos. Existen otras operaciones que se pueden realizar con nmeros: comparaciones. Los operadores que realizan comparaciones se denominan Operadores relacionales. El resultado de las operaciones realizadas con estos operadores solamente admiten dos resultados: True (Cierto) o False (Falso) Estos operadores son: = <> < <= > >= Igual que No igual que Menor que Menor o igual que Mayor que Igual o mayor que
Captulo3 Pgina 6

Visual Basic Gua del Aprendiz Sena

Estos operadores se suelen utilizar en estructuras de programa donde se tome una decisin. El operador = puede usarse tambin para comparar cadenas o fechas. Operadores Lgicos Estos operadores podemos usarlos con variables Booleanas, es decir, aquellas que solamente pueden tomar los valores cero y uno, y con caracteres (un carcter = 1 Byte = 8 bits) realizando la operacin correspondiente bit a bit con los 8 bits de cada carcter. Pero en este caso, los parmetros deben introducirse en decimal. Por ejemplo, si quiere realizar la funcin And entre el carcter 15 (00001111) y el 131 (10000011) , debe ponerlo de la forma Resultado = 15 And 132. El resultado de esta operacin ser el byte 00000011, pero como Ud. ya se habr dado cuenta, le devolver el valor 3. En el ejercicio Cap11 puede ver un ejemplo muy explicativo Operador And Or Xor Devuelve True si A=True y B=True A=True o B=True A=True y B=False A=False y B=True A=True y B=True A=False y B=False A=True y B=True A=False y B=True A=False y B=False A=False A=True Devuelve False si Cualquier otro caso A=False y B=False A=True y B=True A=False y B=False A=True y B=False A=False y B=True A=True y B=False

Eqv

Imp

Not Like

A=True A=False

Otras Funciones con nmeros Int , Fix Devuelven la parte entera de un nmero con decimales

Int y Fix eliminan la fraccin de un nmero y devuelven el valor entero resultante. La diferencia entre Int y Fix es que si el nmero es negativo, Int devuelve el primer entero negativo menor o igual a nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero. Por ejemplo, Int convierte -8,4 en -9, y Fix convierte -8,4 en -8. Abs Sgn Sqr Exp Devuelve el valor absoluto de un nmero Devuelve el signo de un nmero Devuelve la raz cuadrada de un nmero Devuelve el nmero elevado al exponente indicado Devuelve el logaritmo natural de ese nmero
Captulo3 Pgina 7

Log
Visual Basic Gua del Aprendiz Sena

Trigonomtricas Sin Devuelve el valor del seno de un ngulo (Expresado en radianes) Devuelve el coseno de un ngulo (En radianes) Devuelve la tangente de un ngulo Devuelve un arco cuya tangente sea el nmero (Angulo en radianes)

Cos Tan Atn

Funciones para el Cambio de Base de Numeracin


Funcin Hex
Sintaxis Devuelve una cadena, es decir, un string, que representa el valor hexadecimal de un nmero. VariabledeCadena = Hex (nmero)

Si nmero no es un nmero entero, se redondea al nmero entero ms cercano antes de ser evaluado. Mediante esta funcin se puede convertir un nmero de hasta ocho caracteres hexadecimales. Se pueden representar nmeros hexadecimales directamente, anteponiendo &H. Por ejemplo, &H10 representa al decimal 16 en la notacin hexadecimal.

Funcin Oct
Sintaxis

Devuelve la cadena (String) que representa el valor octal de un nmero. VariabledeCadena = Oct (nmero)

Si nmero no es entero, se redondea al nmero entero ms cercano antes de ser evaluado. Puede realizarse la conversin hasta el valor de 11 caracteres octales. Se pueden representar nmeros octales directamente, anteponiendo &O a nmeros en el intervalo apropiado. Por ejemplo, &O10 representa a 8 en base diez en la notacin octal. Recuerde que estas dos funciones devuelven una Cadena de caracteres, no un nmero. El resultado deber tratarlo como una cadena de caracteres.

Funciones Cxxx para conversin del tipo de datos.


Son un tipo de funciones que convierten un dato o expresin a un tipo de datos determinado

Funcin Cbool
Sintaxis

Convierte una expresin al tipo de datos Boolean.

VariableBooleana = Cbool (expresin)


Captulo3 Pgina 8

Visual Basic Gua del Aprendiz Sena

El argumento expresin es cualquier expresin numrica o expresin de cadena vlida. Si expresin es cero, se devuelve False; de lo contrario, se devuelve True Si la expresin no se puede interpretar como un valor numrico, ocurrir un error de tiempo de ejecucin.

Funcin CByte Funcin CCur Funcin CLng

Convierte una expresin al tipo de datos Byte. Convierte una expresin al tipo de datos Currency. (Moneda) Convierte un dato a un tipo Long.

CLng se diferencia de las funciones Fix e Int en que trunca, en vez de redondear, la parte fraccionaria de un nmero. Cuando la parte fraccionaria es exactamente 0,5, la funcin CLng siempre la redondea al nmero par ms cercano. Por ejemplo, 0,5 se redondea a 0 y 1,5 a 2.

Funcin CInt

Convierte un dato a un tipo Integer.

CInt se diferencia de las funciones Fix y Int en que trunca, en vez de redondear, la parte fraccionaria de un nmero. Cuando la parte fraccionaria es exactamente 0,5, la funcin CInt siempre la redondea al nmero par ms cercano. Por ejemplo, 0,5 se redondea a 0 y 1,5 a 2.

Funcin CDbl Funcin CSng

Convierte una expresin al tipo de datos Double. Convierte una expresin a un tipo de datos Single.

Debe usar las funcin CByte, CCur, CLng, CInt en lugar de Val para proporcionar conversiones que reconozcan las variantes internacionales, cuando se convierte de cualquier otro tipo de datos. Por ejemplo, los diferentes separadores decimales se reconocen adecuadamente, dependiendo de la configuracin de la informacin local de su PC. Si la expresin a convertir queda fuera del intervalo aceptable para el tipo de datos a obtener, ocurrir un error.

Funcin CStr

Convierte una expresin a un tipo de datos String.

Debe usar la funcin CStr en lugar de Str para proporcionar conversiones que reconozcan las variantes internacionales, cuando se convierte de cualquier otro tipo de datos a String. Por ejemplo, los diferentes separadores decimales se reconocen adecuadamente, dependiendo de la configuracin de la informacin local de su sistema. Dependiendo del tipo de dato que se va a convertir, CStr devuelve: Boolean Date Null Empty Error Numrico String conteniendo True o False. String conteniendo una fecha en el formato de fecha corta de su sistema. Un error de tiempo de ejecucin. String de longitud cero (""). String conteniendo la palabra Error seguida del nmero de error. String conteniendo el nmero. Convierte una expresin a un tipo de datos Variant. Convierte una expresin al tipo de datos Date. (Fecha / Hora)

Funcin Cvar Funcin Cdate

Visual Basic Gua del Aprendiz Sena

Captulo3

Pgina 9

Nota curiosa y a tener muy en cuenta


En algunas ocasiones (no siempre, misterios del VB) cuando hacemos una operacin entre nmeros, cuyas variables que los contienen se han declarado de distinto tipo, puede ocurrir que d un error. Por ejemplo, queremos obtener una suma que debe ser un Long, a partir de varios nmeros tipo Byte. Declaramos las variables de la siguiente forma: Dim Suma as Long, I1 As Byte, I2 As Byte, I3 As Byte, I3 As Byte, I5 As Byte Suma = I1 + I2 + I3 + I4 + i5 El resultado de esta operacin es que da un error, pues no entiende que sumando varios Byte (nmeros comprendidos entre 0 y 255) puedan dar un nmero de otro tipo. Dar seguramente el error 6, Overflow. Para que esto no suceda, haremos el truco de convertir el primero de los nmeros que forman parte en la operacin matemtica a un Long, y de esta forma, VB ya se da cuenta que el resultado de esa operacin es un Long: Suma = CLng(I1) + I2 + I3 + I4 + I5 Tenga en cuenta esa observacin inicial que NO ocurre en todas las ocasiones. (Y me parece que era un fallo de los muchos que tena VB5)

Otras Funciones
Una funcin curiosa Timer Tiempo acumulado Devuelve el tiempo (en segundos) que ha pasado desde las 12 de la noche.

Generacin de nmeros aleatorios Randomize (Numero) Inicia el generador aleatorio tomando como dato de partida el Numero. Devuelve el resultado en una variable llamada Rnd. NOTA MUY IMPORTANTE para versiones de VB anteriores a la 6.- Los nmeros aleatorios generados de esta forma son siempre iguales, eso s, dependiendo del nmero que se le introduzca como parmetro. Esta generacin de nmeros no produce nmeros aleatorios pues como se dijo, dependen del numero que se meta como parmetro, y si este se repite, se repite la sucesin de nmeros que nos crea el generador aleatorio. (Afortunadamente lo han corregido en la versin 6) La forma de obtener nmeros realmente aleatorios es introducir como parmetro un nmero que sea variable con el tiempo. Ese nmero no puede ser otro que el nmero timer visto antes. Y siempre con la precaucin de que medie mas de un segundo entre dos instrucciones Randomize. La funcin toma entonces la forma: Randomize Timer La funcin Randomize devuelve una variable Rnd con un nmero comprendido entre 0 y 1 (Nunca ser 0 ni 1) Leyendo el valor de la variable sucesivas veces, se puede obtener una sucesin de nmeros aleatorios. No es necesario ejecutar la instruccin Randomize Timer cada vez que se quiera obtener un dato de la variable Rnd. Un ejemplo. Generador de nmeros para la Lotera Primitiva
Visual Basic Gua del Aprendiz Sena

Captulo3

Pgina 10

Supongamos que tenemos un formulario con una etiqueta de nombre Label1, un botn de comando de nombre Command1. Cuando hagamos click sobre el botn de comando deber generar un nmero comprendido entre el 1 y el 49. En el procedimiento click de Command1 pondremos el siguiente cdigo: Private Sub Command1.click Randomize Timer A = Rnd * 100 A = CInt(A) Do While A > 49 A = A - 49 Loop Do While A < 1 A = A + 49 Loop Label1.caption = A End Sub Realice este pequeo programa, con la instruccin Randomize Timer y sin ella.

Funciones con fechas.


Las fechas son cadenas especiales. Visual Basic sabe obtener y tratar la informacin relativa a la fecha y la hora. Dispone para ello de una declaracin de variable: Date. Una variable declarada como date puede contener una fecha, una fecha y una hora o una hora solamente. Date Time Now WeekDay Day Month Year Hour Minute Second DateAdd DateDiff DatePart DateSerial Devuelve la fecha de hoy. Esta fecha la toma del reloj del computador. Devuelve la hora actual. Devuelve la fecha y hora actual. Devuelve el da de la semana (En nmero, 1=Domingo, 2=Lunes,...) Obtiene el da, a partir de una fecha Obtiene el mes a partir de una fecha. Obtiene el ao a partir de una fecha. Obtiene la hora a partir de una hora Obtiene el minuto a partir de una hora. Obtiene el segundo a partir de una hora. Aade un intervalo de tiempo a una fecha Obtiene el intervalo de tiempo entre dos fechas Devuelve una parte de una fecha (semana, trimestre, etc.) Compone una fecha a partir de parmetros relativos
Captulo3 Pgina 11

Visual Basic Gua del Aprendiz Sena

TimeSerial DateValue

Compone una hora a partir de parmetros relativos. Devuelve una fecha a partir de un dato que se le parezca y VB pueda obtener de l una fecha vlida

Mediante estas instrucciones podemos obtener el dato necesario de una fecha u hora. Por ejemplo, para obtener el da de hoy solamente: Da = Day (Now) Da ser un nmero

El da de la semana lo obtendramos Diasemana = WeekDay (Now) Diasemana ser un nmero

DateValue, una instruccin que le sacar mucho provecho Fecha = DateValue (12-07-96) Fecha = DateValue (12 07 96)

Fecha =12/07/96

La funcin DatePart merece estudio aparte. Con esta funcin podemos averiguar el mes, trimestre, semana, da del ao, etc. La sintaxis de esta funcin es : VariableNumrica = DatePart (Intervalo, fecha[, primerdasemana[, primerasemanaao]]) Valor para Intervalo q m y d w ww h n s Obtendremos el Trimestre Mes Da del ao Da Da de la semana Semana Hora Minuto Segundo

El parmetro Primerdasemana puede ser un nmero o una constante (veremos a lo largo de todo el curso, que VB usa constantes que son palabras reservadas por VB que generalmente comienzan por vb) que indica que da es para nosotros el primero de la semana Constante vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday Nmero 1 2 3 4 5 6 7 Primer da de la semana Domingo (predeterminado) Lunes Martes Mircoles Jueves Viernes Sbado

Para el parmetro primerasemanaao podemos emplear uno de los siguientes nmeros o constantes: Constante Valor Descripcin
Captulo3 Pgina 12

Visual Basic Gua del Aprendiz Sena

vbFirstJan1 vbFirstFourDays cuatro vbFirstFullWeek completamente en

1 2

Empieza con la semana en la que se encuentra el 1 de enero (predeterminado). Empieza con la primera semana que tenga al menos das en el ao nuevo. (Standard ISO 8086) Empieza con la primera semana contenida el ao nuevo.

Por ejemplo, y tomando como referencia para todos los ejemplos el da 22 de Septiembre de 1998, fecha en la que se ha escrito este texto, (Now = 22/09/1998), tenemos : Variable = DatePart (m, Now) variable = DatePart ("q", Now) variable = DatePart ("d", Now) variable = DatePart ("y", Now) variable = DatePart ("w", Now) Variable = 10 Variable = 3 Variable = 22 Variable = 265 Variable = 3 (Martes, pues el primer da de la semana era el domingo - Predeterminado) variable = DatePart ("w", Now, vbMonday) Variable = 2 (Primer da semana = lunes) variable = DatePart ("ww", Now, vbMonday, vbFirstFourDays) Variable = 39, que indica el nmero de la semana dentro del ao. Cuidado con como se escriben las fechas. Una posibilidad es la usada en los ejemplos, pero solamente vale para el da de hoy. Puede expresar la fecha metindola entre dos signos #, pero en ese caso debe estar expresada en el formato mm/dd/yy (mes/da/ao). Ejemplo : variable = DatePart("ww", #9/22/98#, vbMonday, vbFirstFourDays) Pero lo mas fcil para el formato de fecha usado en Espaa es meter la fecha entre comillas dobles, y usar el formato especificado para el pas : variable = DatePart("ww", "22/9/98", vbMonday, vbFirstFourDays) Con las comillas dobles puede incluso no poner el ao. En este caso le pone por defecto, el ao en curso. variable = DatePart("ww", "22/9", vbMonday, vbFirstFourDays) Estas tres formas de expresar la fecha funcionan perfectamente, al igual que cuando lo hacamos con Now, y el resultado sigue siendo 39.

Nota para recordar de las variables tipo Date


(No se extrae que esta explicacin la encuentre solamente en esta Gua del Estudiante) Visual Basic trata las fechas como nmeros. Y precisamente como un nmero Double. Emplea por lo tanto 8 bytes para representar una fecha. Por ejemplo, al da 12 de Julio de 1999, (Fecha en la que el autor de este libro alcanz la respetable edad de #9 aos) le corresponde el valor de 36563. Ese es el nmero de das transcurridos desde el origen de tiempos tomado por VB (Y por muchas otras aplicaciones de Microsoft y de otras marcas) hasta ese fatdico da. Cual es ese origen del tiempo? El 30 diciembre 1899. Que porqu ese da?. No lo s. Pero es fcil intuir que motivos prcticos para que cualquier fecha del siglo XX tuviese un nmero positivo. Porque las anteriores a ese da las trata como nmeros
Visual Basic Gua del Aprendiz Sena Captulo3 Pgina 13

negativos. Por ejemplo, el da 12 de Octubre de 1492, VB lo trata como el da nmero 148.732. Ese numero puede conocerlo utilizando la funcin CDbl sobre una variable tipo Date. Puede verlo en el ejercicio Cap12 del disco. Una hora tambin es una variable tipo Date. Y una composicin Da / Hora tambin. Que como trata los minutos dentro de una variable Date? Pues como decimales de ese nmero Double. Por ejemplo, la hora 12:00:00 del da 12 de julio de 1999 es para VB 36.563,5 Es decir, la parte decimal representa la fraccin de da transcurrido desde el comienzo del da (medianoche) hasta la hora en cuestin. No debemos confundir esta fraccin del da (0,5 para las 12:00:00) con el valor de la funcin Timer para ese instante (45.000)) que representa el nmero de segundos transcurridos desde la 12 de la noche de ese da. Cuando se tratan variables tipo Date, VB que es un lenguaje inteligente, interpreta como tipo de datos Date determinados datos que no lo son. Por ejemplo, 12 Julio 1999 es tal y como puede verse, una sucesin de caracteres. Si ejecutamos el cdigo: Dim Pepe as Date Pepe = 12 Julio 1999 A partir de ahora, Pepe contendr el valor 36.563 Para ver ese valor basta con hacer Label1.Caption = CDbl (Pepe) Al estar Pepe declarada como variable tipo Date, VB busca todas las posibilidades de extraer una fecha (o una hora) del dato que le estamos metiendo. Otra cosa ocurrira si la declarsemos como String o Variant. En cualquiera de estos casos, Pepe contendra el literal introducido, es decir, 12 Julio 1999 De lo anterior se desprende una cosa, dado que la fecha la guarda como un nmero, no importa en que formato le introduzcamos una fecha. Si ponemos que Fecha1 = 12/7/99 es idntico a poner fecha1 = 12/07/1999 Fecha1 = 1999-07-12. Eso s, debe reconocer el formato, y luego, el dato, lo tratar como un nmero Double. Lo volveremos a ver cuando estudiemos las bases de datos. Access trata las fechas de idntica forma.

Funcin FORMAT
Esta funcin permite presentar cadenas numricas o fechas de una determinada forma. Permite establecer el Formato de esa cadena. Si recurre a la ayuda de VB acerca de esta funcin se va a enterar muy poco de lo que puede dar de s. La sintaxis que presenta es : Format(expresin[, formato[, primerdadesemana[, primerasemanadelao]]]) Lo mejor que puede hacer con esta definicin de la sintaxis de Format es olvidarla. No le aclara mucho lo que se puede hacer con Format. La funcin Format se usa para poner una fecha en un determinado formato. Con la expresin : FechadeHoy = Format (Now, yyyy-mm-dd) la variable FechadeHoy tendr el valor 1998-05-21, que se refiere al da 21 de mayo de 1998, segn el formato recomendado por la norma ISO-8601 para la presentacin de fechas. Si
Visual Basic Gua del Aprendiz Sena Captulo3 Pgina 14

hubisemos puesto la expresin FechadeHoy = Format (Now, dd/mm/yy) , la variable FechadeHoy contendra el valor 21/05/98 referido al da citado. Las posibilidades de Format llegan tambin al campo de las cadenas numricas. Por ejemplo la cifra 123456 se transformar en las siguientes expresiones, segn como empleemos la funcin Format Variable = Format(123456, "Currency") Variable = Format(123456, "Standard") Variable = 123.456 Pts Variable = 123.456,00

Veamos ahora con un poco mas de conocimiento la sintaxis de Format Variable = Format (expresin[, formato[, firstdayofweek[, firstweekofyear]]]) No se complique la vida con el tema del primer da de la semana ni la primera semana del ao. No lo usar con frecuencia. Centrmonos mas en el parmetro Formato. Puede tomar muchos valores. Veamos los principales. Primero para nmeros Observe que usamos la expresin Variable = Format (1234567,Formato) para todos los ejemplos de nmeros. Para poner los nmeros separados por millares : Variable = Format(1234567, "##,###,###") Variable = 1.234.567

(Cada carcter # indica que ah va un nmero. El separador debe ser una coma, no un punto, aunque esto depende del idioma que est usando) Puede poner una de estas expresiones, eso si, siempre entre comillas dobles : General Number Currency Fixed Standard Percent Scientific . Muestra el nmero tal como lo tecle En formato de la moneda de su sistema operativo Sin separador de millar y dos decimales (1234567,00) Con separador de millares y dos decimales (1.234.567,00) Multiplica el nmero por cien y lo presenta cono porcentaje(123456700,00%) Usa notacin cientfica (1,23E+06)

Para fechas (Observe que usamos el ejemplo Format(Now, Formato) siendo Now la fecha y hora actual (21/07/98 a las 22:16:00 ) General Date Long Date Medium Date Short Date yyyy-mm-dd yy-mm-dd Long Time Medium Time Short Time hh :mm :ss hh :mm 21/07/98 22:16:00 martes 21 de julio de 1998 21-jul-98 21/07/98 1998-05-21 98-07-21 22:19:53 10:20 PM 22:20 22 :21 :29 22 :21

RECOMENDACIN ISO 8601


Visual Basic Gua del Aprendiz Sena Captulo3 Pgina 15

Va como cultura general. Esta recomendacin dice que el formato de fecha debe ponerse de la forma yyyy-mm-dd (p.e. 1998-10-05 para referirse al 5 de Octubre de 1998). Para este formato, pondremos : FechaISO8601 = Format (Now, yyyy-mm-dd) Tenga presente esta recomendacin. La Administracin Espaola est obligada a exigir su cumplimiento en todas aquellas aplicaciones que realicen intercambios de fecha y hora. Format dispone de mas opciones. Sera muy largo explicarlas aqu. Para mas informacin, en la WEB de Microsoft (www.microsoft.com) puede encontrar mas formatos posibles. Pero vamos a volver con el tema de las variables tipo Date. Cuando realizamos el Format sobre una fecha, esta fecha puede ser un literal (un string), o una variable tipo fecha Si en Text1 tenemos la expresin 12 Julio 1999, y queremos convertir esa fecha al formato ISO 8601, podemos hacerlo de cualquiera de estas dos formas:

Private Sub LFormat1_Click() Dim Pepe As Date Pepe = Text1.Text LFormat1 = Format(Pepe, "yyyy-mm-dd") End Sub Private Sub LFormato2_Click() LFormato2 = Format(Text1.Text, "yyyy-mm-dd") End Sub La funcin Format es suficientemente inteligente para darse cuenta que con el formato yyyymm-dd le estamos pidiendo una fecha. Si le metemos una fecha no hay problema (caso de meterle Pepe, variable declarada como Date). Pero si le metemos una cadena de caracteres (caso de Text1.Text) intenta obtener de esa cadena una fecha vlida. Si lo consigue lo presenta. Si no lo consigue, dar un error.

Visual Basic Gua del Aprendiz Sena

Captulo3

Pgina 16

MATRICES __________ Cuando utilizamos varias variables que tienen un significado similar para nosotros, pero que son distintas (Por ejemplo, el nombre de los alumnos de una clase) podemos utilizar una matriz. Esta matriz est formada por tantos elementos como alumnos tenga la clase. El nombre asociado a cada uno de los elementos de la matriz puede ser: Alumno (n) Donde n es el nmero por orden de lista de ese alumno.

Las matrices normalmente comienzan a numerar por el nmero 0. Este comienzo puede no ser el mas apropiado para la variable que estamos planteando, pues ningn alumno tiene el nmero de orden 0. Para hacer que una matriz comience a numerar por el 1 se debe definir mediante la instruccin: Option Base 1 que debe colocarse al comienzo del mdulo o formulario donde declaremos la matriz. Para declarar la matriz se hace como con todas las variables, especificando entre parntesis el nmero de elementos que componen la matriz: Dim Alumno (25) as String Hemos declarado que la variable alumno es una cadena, y que hay 25 elementos en esa matriz. Una matriz tambin se puede declarar de la siguiente forma : Dim Alumno(1 To 25) as String Donde le decimos que la variable Alumno tiene 25 elementos, que el primero tiene el ndice 1 y el ltimo tiene el ndice 25. Pero imaginemos que queremos meter en la misma matriz el nombre, primer apellido y segundo apellido del alumno. Necesitaremos declarar una matriz de 25 por 3. Como todos los elementos sern cadenas de caracteres, podemos declararla de la siguiente forma: Dim Alumno (1 To 25, 1 To 3) As String De esta forma, el primer apellido del alumno que ocupa el puesto nmero 15 de la clase, ser el elemento: Alumno (15, 2) Podemos definir matrices de dimensin superior a dos. Podemos llegar a un mximo de 60 dimensiones. Una matriz de 5 dimensiones se declarara: Dim Variable ( 1 To N, 1 To M, 1 To P, 1 To Q, 1 To R) entendiendo que hay N, M, P, Q y R elementos en cada una de las dimensiones respectivamente. Una variable ya declarada como una matriz puede redimensionarse a lo largo del programa mediante la instruccin ReDim

Visual Basic Gua del Aprendiz Sena

Captulo3

Pgina 17

ReDim Alumno (1To 25) Mediante esta instruccin, estamos ReDimensionando una matriz ya declarada. No se puede redimensionar una matriz inexistente. Mediante la declaracin 1 To 25 le estamos diciendo que el primer elemento de la matriz es el 1, independientemente de lo que hayamos puesto en OPTION BASE. Si se redimensiona simplemente con el nmero de elementos : ReDim (25) le estamos diciendo que tiene 25 elementos, pero que el primero sea el 0 el 1 depende de haber puesto OPTION BASE 0 u OPTION BASE 1. Una matriz puede redimensionarse cuantas veces se quiera a lo largo de la aplicacin, pero esa redimensin no puede afectar al nmero de dimensiones de la matriz. Si redimensionamos la matriz perder la informacin existente. Para evitar perder la informacin presente en la matriz, debe utilizar la sentencia ReDim Preserve. Si usa la palabra clave Preserve en matrices de dimensin superior a 1, va a encontrarse con comportamientos no esperados. Como podr ver en la Ayuda de VB, usando ReDim Preserve slo puede cambiar el tamao de la ltima dimensin de matriz y no puede modificar en ningn momento el nmero de dimensiones. NO es cierto del todo. S lo podr hacer una sola vez. Respecto a cambiar el nmero de dimensiones, si ha declarado la matriz con unas dimensiones determinadas, ya no podr cambiar las dimensiones ni con ReDim ni con ReDim Preserve. Le saldr un error que dice que las dimensiones de la matriz ya han sido declaradas. Pero si ha declarado la matriz sin dimensiones : Dim MiMatriz() puede cambiar las dimensiones y volver a cambiarlas ReDim MiMatriz (1 To 5, 1 To 9) ReDim MiMatriz (1 To 8, 1 To 15, 1 To 6)

Observe que no solamente la hemos cambiado dos veces de dimensiones (la primera a 2 y la segunda a 3), sino que tambin hemos cambiado el nmero de elementos en cada dimensin. Si hubisemos utilizado ReDim Preserve solamente podramos haber usado la primera de las dos lneas anteriores : ReDim Preserve MiMatriz (1 To 5, 1 To 9) pero ya no podramos volver a cambiar el nmero de dimensiones con la segunda lnea. Nos dara un error. Con ReDim podemos cambiar el nmero de elementos de cada dimensin cuantas veces queramos. Por ejemplo, podemos redimensionar MiMatriz de las siguiente forma : ReDim MiMatriz (1 To 5, 1 To 9) ReDim MiMatriz (1 To 15, 1 To 20) ReDim MiMatriz (1 To 25, 1 To 30) ........................... Si hubisemos empleado ReDim Preserve, podramos cambiar los elementos de todas las
Visual Basic Gua del Aprendiz Sena Captulo3 Pgina 18

dimensiones de la matriz una vez : ReDim Preserve (1 To 5, 1 To 9) a partir de ahora, solamente podemos cambiar los elementos de la ltima dimensin : ReDim Preserve (1 To 5, 1 To 20) ReDim Preserve (1 To 5, 1 To 30) es decir, no podremos hacer esto : ReDim Preserve (1 To 10, 1 To 30) donde se seala en negrita el error.

Esto no causa ningn error en una matriz de una dimensin, ya que si la matriz tiene slo una dimensin, puede cambiar el tamao de esa dimensin porque es la nica y la ltima. Cuando a lo largo de la aplicacin se va redimensionando una matriz, podemos llegar la circunstancia de que, en un momento determinado, no sepamos las dimensiones de esa matriz. Para conocer el ndice mximo y mnimo de una matriz se usan las funciones UBound y LBound. UBound devuelve el mayor subndice disponible para la dimensin indicada de una matriz. Sintaxis UBound(nombredelamatriz[, dimensin])

LBound devuelve el mayor subndice disponible para la dimensin indicada de una matriz. Sintaxis LBound(nombredelamatriz[, dimensin])

Ejemplo Tengamos una matriz llamada Mimatriz, de tres dimensiones. En un momento de la aplicacin se ejecut la siguiente instruccin vlida : ReDim Mimatriz (1 To 100, 0 To 3, 5 To 20) En otro momento queremos tener el control de los ndices de esa matriz, y queremos averiguar el ndice menor y mayor de cada una de sus dimensiones : (IID1= Indice Inferior Dimensin 1, ISD 1 = Indice Superior Dimensin 1, etc. ) IID 1= LBound (Mimatriz, 1) ISD1 = UBound (Mimatriz, 1) IID 2= LBound (Mimatriz, 2) ISD2 = UBound (Mimatriz, 2) IID 1= LBound (Mimatriz, 3) ISD1 = UBound (Mimatriz, 3) IID1 = 1 ISD1 = 100 IID1 = 0 ISD1 = 3 IID1 = 5 ISD1 = 20

Funcin Split
Una vez visto lo que es una matriz, vamos a ver una funcin interesante para el tratamiento de cadenas de caracteres. La funcin Split Descripcin

Visual Basic Gua del Aprendiz Sena

Captulo3

Pgina 19

Esta funcin toma una cadena de caracteres compuesta varias subcadenas, separadas entre ellas mediante un separador, y devuelve una matriz de una dimensin, que contiene esas subcadenas. Sintaxis Donde: Expresion es la variable que contiene la cadena de caracteres de entrada Delimitador. Contiene el carcter o caracteres que se usan de delimitador entre subcadenas Contar es un nmero donde indicamos el nmero de subcadenas que queremos extraer. Si no se pone nada, extrae todas las cadenas. Si se pone un valor, extrae el nmero de cadenas que le indiquemos. En este caso, en la ltima cadena, mete el resto de subcadenas que quedaban sin meter. Comparar es un valor numrico que nos da cuatro opciones de comparacin para comparar las subcadenas. Este parmetro es solamente para alumnos avanzados Split (expresin[, delimitador[, contar[, comparar]]])

Ejemplo.
En el siguiente ejemplo veremos como separar distintos datos que estn dentro de un TextBox (Text1) separados entre ellos por una coma. Private Sub Command1_Click() Dim MiVariable() As String Dim I As Integer MiVariable = Split(Text1.Text, ",") For I = 0 To UBound(MiVariable) List1.AddItem MiVariable(I) Next I End Sub Declaramos una matriz (MiVariable) del tipo String Declaramos una variable auxiliar como numrica Ejecutamos la funcin Split Ejecutamos un bucle para introducir las subcadenas en un ListBox

Visual Basic Gua del Aprendiz Sena

Captulo3

Pgina 20

También podría gustarte