Buscador

Format( ) - Part 5

Lo que ha sucedido aquí es que la función Format( ) ha ido tomando cada carácter especial que entiende como sustituible y lo ha convertido al valor correspondiente. Para evitar este comportamiento, debemos preceder cada uno de estos caracteres del símbolo \ como vemos en el Código fuente 201.

Dim Fecha As Date = "18/07/2002"
Console.WriteLine(Format(Fecha, "La \fe\c\ha e\s dddd, dd \de MMMM \de yyyy"))
' Resultado
La fecha es jueves, 18 de julio de 2002
Código fuente 201

Format( ) - Part 4

El Código fuente 199 muestra algunos ejemplos de formato con caracteres especiales.

Dim MiFecha As Date
Dim MiNumero As Double
Dim ValorFormato As String
MiFecha = #7/19/2002 6:25:00 PM#
MiNumero = 16587.097
ValorFormato = Format(MiFecha, "dddd d/MMM/yyyy") ' "viernes 19/jul/2002"
ValorFormato = Format(MiFecha, "HH:mm") ' "18:25"
ValorFormato = Format(MiNumero, "#,#.00") ' "16.587,10"
Código fuente 199
Si queremos formatear las fechas de una manera todavía más elaborada, incluyendo texto adicional, podemos construir cadenas de formato empleando el carácter de escape, que en este caso es la barra
invertida ( \ ), para evitar que determinados caracteres clave de formato sean sustituidos.
Por ejemplo, tenemos la fecha 18/07/2002 y queremos formatearla de modo que se muestre la siguiente cadena: “La fecha es jueves, 18 de julio de 2002”. Con lo que sabemos hasta el momento, la cadena de formato que probablemente utilizaríamos sería la mostrada en el Código fuente 200, que nos daría un resultado incorrecto.

Dim Fecha As Date = "18/07/2002"
Console.WriteLine(Format(Fecha, "La fecha es dddd, dd de MMMM de yyyy"))
' Resultado
La 0ec12a e0 jueves, 18 18e julio 18e 2002
Código fuente 200

Format( ) - Part 3

Para los caracteres especiales, la Tabla 22 muestra un conjunto de los más habituales.

Format( ) - Part 2

El Código fuente 198 muestra algunos ejemplos de formateo con nombre

Dim MiFecha As Date
Dim MiNumero As Double
Dim ValorFormato As String
MiFecha = #7/19/2002 6:25:00 PM#
MiNumero = 1804
ValorFormato = Format(MiFecha, "Long Date") ' "viernes, 19 de julio de 2002"
ValorFormato = Format(MiFecha, "Short Date") ' "19/07/2002"
ValorFormato = Format(MiFecha, "Short Time") ' "18:25"
ValorFormato = Format(MiNumero, "Standard") ' "1.804,00"
ValorFormato = Format(MiNumero, "Currency") ' "1.804 pta"
ValorFormato = Format(MiNumero, "Percent") ' "180400,00%"

Código fuente 198

Format( ) - Part 1

' Sintaxis
Format(Expresión [,CadenaFormato] [,PrimerDíaSemana]
[,PrimeraSemanaAño])

Formatea la expresión pasada en el primer parámetro, empleando de forma opcional una cadena para especificar el tipo de formateo a realizar. Si el valor a formatear es una fecha, podemos utilizar los dos últimos parámetros para especificar el primer día de la semana y la primera semana del año; estos dos últimos parámetros son enumeraciones, cuyos valores aparecen automáticamente al asignar su valor. Consulte el lector, la documentación de ayuda para más información.
Como cadena de formato, podemos utilizar los nombres predefinidos de formato, o una serie de caracteres especiales, tanto para formateo de números como de fechas. En lo que respecta a los nombres predefinidos, la Tabla 21 muestra algunos de los utilizados.

Funciones de cadena de caracteres - XII

Join( )

' Sintaxis
Join(ArrayCad()[, Delimitador])

Esta función realiza la operación inversa a Split, toma un array de cadenas y lo transforma a una única cadena.
Si utilizamos el parámetro Delimitador, los elementos de ArrayCad se concatenarán con el carácter de dicho parámetro. Si este valor es una cadena vacía, todos los elementos se concatenarán sin separación. En el caso de no emplear Delimitador, se utiliza un espacio en blanco. Ver el Código fuente 197.

Dim Palabras() As String = {"Esto", "es", "una", "prueba"}
Dim Resultado As String
Resultado = Join(Palabras) ' Esto es una prueba
Código fuente 197

Funciones de cadena de caracteres - XI

Split( )
' Sintaxis
Split(Cadena [, Delimitador] [, Subcadenas] [, TipoComparación])

Toma el contenido de Cadena y crea un array de cadenas, utilizando el carácter contenido en Delimitador para calcular la cantidad de elementos que contendrá el array. Si no se utiliza
Delimitador, se emplea el espacio en blanco como delimitador por defecto.
El parámetro Subcadenas nos permite indicar cuántas subcadenas va a contener el array, pudiendo determinar cómo se va a realizar la comparación mediante TipoComparación.
Veamos un ejemplo en el Código fuente 196.

Dim Cadena As String
Dim SubCad() As String
Dim Elemento As String
Cadena = "Coche azul, deportivo, turbo inyección"
SubCad = Split(Cadena, ",")
For Each Elemento In SubCad
Console.WriteLine(Elemento)
Next
Código fuente 196

Funciones de cadena de caracteres - X

StrConv( )
' Sintaxis
StrConv(Cadena, TipoConversión [,IDLocal])

Realiza una conversión de la cadena pasada como parámetro, utilizando algunos de los valores de la enumeración TipoConversión. Opcionalmente podemos pasar también un valor correspondiente al identificador local del sistema. Ver el Código fuente 195.

Dim MiCadena As String
Dim Conversion As String
MiCadena = "el tren llegó puntual"
' convertir a mayúscula
Conversion = StrConv(MiCadena, VbStrConv.UpperCase)
' convertir a minúscula
Conversion = StrConv(MiCadena, VbStrConv.LowerCase)
' convertir a mayúscula la primera letra
' de cada palabra
Conversion = StrConv(MiCadena, VbStrConv.ProperCase)
Código fuente 195

Funciones de cadena de caracteres - IX

UCase( ), LCase( )

' Sintaxis
UCase(Cadena)
LCase(Cadena)

Estas funciones, convierten la cadena pasada como parámetro a mayúsculas y minúsculas respectivamente. Ver el Código fuente 194.

Dim Cadena As String
Dim CadMay As String
Dim CadMin As String
Cadena = "Vamos a Convertir En Mayúsculas Y MinúscuLAS"
CadMay = UCase(Cadena) ' VAMOS A CONVERTIR EN MAYÚSCULAS Y MINÚSCULAS
CadMin = LCase(Cadena) ' vamos a convertir en mayúsculas y minúsculas
Console.WriteLine("Conversión a mayúsculas: {0}", CadMay)
Console.WriteLine("Conversión a minúsculas: {0}", CadMin)
Código fuente 194

Funciones de cadena de caracteres - VIII

LTrim( ), RTrim( ), Trim( )
' Sintaxis
LTrim(Cadena)
RTrim(Cadena)
Trim(Cadena)

Estas funciones eliminan los espacios en blanco de una cadena. La eliminación será a la izquierda en el caso de LTrim( ), a la derecha en el caso de RTrim(), y a ambos lados con Trim( ). Ver el Código fuente 193.

Dim CadEspacios As String
Dim CadResultante As String
CadEspacios = " Barco "
CadResultante = LTrim(CadEspacios) ' "Barco "
CadResultante = RTrim(CadEspacios) ' " Barco"
CadResultante = Trim(CadEspacios) ' "Barco"
Código fuente 193

Funciones de cadena de caracteres - VII

Replace( )

' Sintaxis
Replace(Cadena,CadOrigen,CadNueva [,Inicio] [,Sustituciones]
[,TipoComparación])

Esta función toma la cadena situada en el primer parámetro y busca la cadena CadOrigen, sustituyendo las ocurrencias encontradas por la cadena CadNueva. Opcionalmente, el parámetro Inicio especifica la posición en la que comenzará la sustitución; el parámetro Sustituciones indica el número de sustituciones a realizar; y TipoComparación indica como se realizarán las comparaciones (texto, binaria). Veamos unos ejemplos en el Código fuente 192.

Dim MiCadena As String
Dim CadSustituida As String
MiCadena = "Este coche es especial"
CadSustituida = Replace(MiCadena, "es", "xx")
' resultado: Este coche xx xxpecial
Console.WriteLine("Resultado del reemplazo en la cadena: {0}", CadSustituida)
' en el anterior ejemplo los dos primeros caracteres
' no se sustituyen porque no se ha especificado el tipo
' de comparación, que a continuación sí indicaremos
CadSustituida = Replace(MiCadena, "es", "xx", , , CompareMethod.Text)
' resultado: xxte coche xx xxpecial
' ahora sí se han sustituido todas las ocurrencias de "es"
Console.WriteLine("Resultado del reemplazo en la cadena: {0}", CadSustituida)
Código fuente 192

Funciones de cadena de caracteres - VI

Mid( )

Mid tiene dos formas de uso, como función y como instrucción.
' Sintaxis (función)
Mid(Cadena, Inicio [, Longitud])

Mid utilizado como función, extrae de Cadena, comenzando en la posición Inicio, una subcadena. Opcionalmente podemos utilizar el parámetro Longitud, para indicar el tamaño de la subcadena. En caso de no utilizar este último parámetro, la subcadena se obtendrá hasta el final. Ver Código fuente 190.

Dim MiCadena As String
Dim SubCadena As String
MiCadena = "El bosque encantado"
SubCadena = Mid(MiCadena, 6)
Console.WriteLine("Subcadena hasta el final: {0}", SubCadena) ' sque encantado
SubCadena = Mid(MiCadena, 6, 3)
Console.WriteLine("Subcadena de 3 caracteres: {0}", SubCadena) ' squ
Código fuente 190
' Sintaxis (instrucción)
Mid(Cadena, Inicio [, NumCarReemplazar]) = CadenaReemplazo

Mid utilizado como instrucción función, reemplaza en Cadena, comenzando por la posición Inicio, la cadena asignada en CadenaReemplazo. Podemos opcionalmente, indicar cuántos caracteres a reemplazar en NumCarReemplazar. Ver el Código fuente 191.

Dim Cadena As String
Cadena = "El bosque encantado"
Mid(Cadena, 4, 5) = "teclado" ' Cadena contiene 􀃆 "El teclae encantado"
Código fuente 191

Funciones de cadena de caracteres - V

Left( )

' Sintaxis
Left(Cadena, Longitud)
Esta función extrae, comenzando por la parte izquierda de Cadena, una subcadena con el número de caracteres indicado por el parámetro Longitud.

Right( )
' Sintaxis
Right(Cadena, Longitud)
Esta función extrae, comenzando por la parte derecha de Cadena, una subcadena con el número de caracteres indicado por el parámetro Longitud.
El Código fuente 189 muestra ejemplos de Left( ) y Right( ).

Dim CadIzquierda As String
Dim CadDerecha As String
CadIzquierda = Left("Especial", 3)
Console.WriteLine("Resultado de la función Left(): {0}", CadIzquierda) ' Esp
CadDerecha = Right("Especial", 3)
Console.WriteLine("Resultado de la función Right(): {0}", CadDerecha) ' ial
Código fuente 189

Funciones de cadena de caracteres - IV

StrComp( )

' Sintaxis
StrComp(Cadena1, Cadena [, TipoComparación])

Compara dos cadenas devolviendo un valor numérico identificativo del resultado. Los valores posibles son los siguientes:

• 0. Las dos cadenas son iguales
• -1. Los valores (códigos de carácter) de Cadena1 son menores que los de Cadena2
• 1. Los valores (códigos de carácter) de Cadena1 son mayores que los de Cadena2

Los resultados pueden variar en función de si utilizamos una comparación textual o binaria mediante el último parámetro de la función. Ver el Código fuente 188.

Dim Resultado As Integer
Resultado = StrComp("hola", "hola") ' 0
Resultado = StrComp("HOLA", "hola") ' -1
Resultado = StrComp("hola", "HOLA") ' 1
Código fuente 188

Funciones de cadena de caracteres - III

InStrRev( )

' Sintaxis
InStrRev(CadenaBuscar, CadenaBuscada [, Inicio] [, TipoComparación])

Al igual que InStr( ), esta función busca dentro de CadenaBuscar la subcadena del parámetro CadenaBuscada, pero comenzando en este caso por el final. Ver el Código fuente 187.

Dim CadBuscar As String
Dim Posicion As Integer
CadBuscar = "El castillo del bosque"
Posicion = InStrRev(CadBuscar, "el") ' 14
Código fuente 187

Funciones de cadena de caracteres - II

InStr( )
' Sintaxis
InStr([Comienzo, ]CadenaBuscar, CadenaBuscada [, TipoComparación])

Busca dentro de CadenaBuscar la cadena contenida en el parámetro CadenaBuscada. Opcionalmente podemos establecer en Comienzo, la posición en la que comienza la búsqueda y el tipo de comparación (texto, binaria) en el parámetro TipoComparación. Ver el Código fuente 186.

Dim CadBuscar As String
Dim CadBuscada As String
Dim PosComienzo As Integer
CadBuscar = "El castillo del bosque"
PosComienzo = InStr(CadBuscar, "tillo")
Console.WriteLine("La posición de comienzo de la cadena encontrada es: {0}", _
PosComienzo) ' 7
Código fuente 186

Funciones de cadena de caracteres - I

Len( )
' Sintaxis
Len(Cadena)

Devuelve un número con la longitud de la cadena pasada como parámetro. Ver el Código fuente 184.

Dim Longitud As Integer
Longitud = Len("comprobar cuantos caracteres hay")
Console.WriteLine("La cadena tiene {0} caracteres", Longitud) ' 32
Código fuente 184
Space( )
' Sintaxis
Space(Número)

Devuelve una cadena de espacios en blanco, de una longitud igual al número pasado como parámetro. Ver el Código fuente 185.

Dim ConEspacios As String
ConEspacios = "Hola" & Space(7) & "a todos"
Console.WriteLine("La cadena con espacios tiene el valor:" & _
ControlChars.CrLf & ConEspacios) ' Hola a todos
Código fuente 185

Rnd( ) - Part 3

Si necesitamos que el número aleatorio esté comprendido en un intervalo de números enteros, utilizaremos la fórmula que vemos en el Código fuente 182 para generarlo.

Int((LímiteSuperior - LímiteInferior + 1) * Rnd() + LímiteInferior)
Código fuente 182

El ejemplo del Código fuente 183 crea números aleatorios comprendidos entre el intervalo de los números 7 y 12.

Dim Contador As Integer
Dim Aleatorio As Single
Randomize()
For Contador = 1 To 10
Aleatorio = Int((12 - 7 + 1) * Rnd() + 7)
Console.WriteLine("Número generado: {0}", Aleatorio)
Next
Console.ReadLine()
Código fuente 183

Rnd( ) - Part 2

Figura 82. Generación de números aleatorios con Rnd( ).
El anterior código produce una salida similar a la mostrada en la Figura 82.

Rnd( ) - Part 1

' Sintaxis
Rnd([Número])

Devuelve un número aleatorio de tipo Single, que será menor que 1, pero mayor o igual a cero. Podemos, opcionalmente, variar el modo de generación del número pasando un valor al parámetro de esta función. En función de si el parámetro es mayor, menor de cero, o cero, el comportamiento de Rnd( ) a la hora de generar el número será diferente. Ver el Código fuente 181.

Dim Contador As Integer
Dim Aleatorio As Single
Randomize()
For Contador = 1 To 10
Aleatorio = Rnd()
Console.WriteLine("Número generado: {0}", Aleatorio)
Next
Console.ReadLine()
Código fuente 181

Randomize( )

' Sintaxis
Randomize([Número])

Inicializa el generador de números aleatorios, que utilizaremos posteriormente en la función Rnd( ). Opcionalmente recibe un número como parámetro que sirve al generador como valor inicial o semilla para la creación de estos números.

Funciones numéricas

Int( ), Fix( )
' Sintaxis
Int(Número)
Fix(Número)

 Estas funciones devuelven la parte entera del parámetro Número. La diferencia entre ambas reside en que cuando el parámetro pasado es negativo, Int( ) devuelve el entero negativo menor o igual que Número, mientras que Fix( ) devuelve el entero negativo mayor o igual que Número. Ver el Código fuente 180.

Dim Resultado As Integer
Resultado = Int(66.87) ' 66
Resultado = Fix(66.87) ' 66
Resultado = Int(-66.87) ' -67
Resultado = Fix(-66.87) ' –66
Código fuente 180

IsArray( )

Esta función devuelve un valor lógico indicando si la expresión que pasamos como parámetro contiene un array. Ver el Código fuente 179.

Public Sub Main()
Dim Colores() As String = {"Verde", "Azul", "Rojo"}
Verificar(Colores)
Verificar("prueba")
Console.ReadLine()
End Sub
Public Sub Verificar(ByVal ValorPasado As Object)
' comprobar si el parámetro contiene un array
If IsArray(ValorPasado) Then
Console.WriteLine("El parámetro pasado es un array")
Else
Console.WriteLine("El parámetro pasado no es un array")
End If
End Sub
Código fuente 179

IsDate( )

Esta función devuelve un valor lógico indicando si la expresión que pasamos como parámetro contiene una fecha o una cadena que pueda ser convertida a fecha. Ver el Código fuente 178.

Public Sub Main()
Dim Valor As Object
Dim UnaFecha As Date
Console.WriteLine("Introducir una fecha")
Valor = Console.ReadLine()
If IsDate(Valor) Then
UnaFecha = Valor
Console.WriteLine("La fecha es: {0}", UnaFecha)
Else
Console.WriteLine("El valor introducido no es una fecha")
End If
Console.ReadLine()
End Sub
Código fuente 178

IsNumeric( )

Esta función devuelve un valor lógico indicando si la expresión que pasamos como parámetro contiene un número o una cadena que pueda ser convertida a número. Ver el Código fuente 177.

Public Sub Main()
Dim Valor As Object
Dim Total As Integer
Console.WriteLine("Introducir un número")
Valor = Console.ReadLine()
If IsNumeric(Valor) Then
Total = Valor + 100
Console.WriteLine("Resultado: {0}", Total)
Else
Console.WriteLine("El valor introducido no es numérico")
End If
Console.ReadLine()
End Sub
Código fuente 177

Funciones de comprobación de tipos de datos - III

El mensaje de error en tiempo de ejecución sería como el que muestra la Figura 81. 
Para este tipo de situaciones, en las que necesitamos comprobar si determinada variable o expresión contienen un valor numérico, fecha, etc., el lenguaje nos proporciona algunas funciones, con las que podemos comprobar el tipo de dato, para evitar posibles errores.

Funciones de comprobación de tipos de datos - II

Sin embargo, si en el anterior ejemplo, la variable de cadena contuviera un valor que el compilador no pudiera convertir a número, se produciría un error de tipos. Ver el Código fuente 176.
.

Dim UnaCadena As String
Dim MiNum As Integer
UnaCadena = "prueba"
MiNum = UnaCadena
Código fuente 176

UNA PROPUESTA PARA LA ESTRUCTURA DE LA TESIS DE GRADO EN INGENIERÍA INFORMÁTICA

ESTRUCTURA BÁSICA DE LA TESIS La Estructura Básica de Tesis es la siguiente: 1. Introducción 2. Estado de la cuestión 3. Definición del problema 4. Solución propuesta 5. Resultados o verificación experimental 6. Conclusiones y futuras líneas de investigación 7. Bibliografía 8. Anexos 1. INTRODUCCIÓN Este capítulo debe reflejar a modo de resumen y presentación, todos los aspectos de relevancia que contiene la tesis. El lector ha de apreciar las razones que justifican la originalidad y la importancia del tema, y además hacerse una idea del carácter metódico del trabajo. Debe cubrir como mínimo los siguientes puntos: · Breve descripción del problema y su importancia. · Carácter del problema. · Motivación para abordarlo, resaltando la importancia de resolverlo. · Qué pasos se realizarán. · Criterios de éxito. 2. ESTADO DE LA CUESTIÓN Este capítulo debe reflejar la información recogida que se utilizó para establecer la situación actual de los trabajos en investigación y desarrollo sobre el área particular en la que se plantea y relaciona el problema. Deben quedar absolutamente establecidos y documentados a través de referencias y citas bibliográficas, los siguientes puntos: · Antecedentes relacionados con el problema. · Fundamentos teóricos y prácticos que cimientan las soluciones escogidas. · Que trabajos del tipo propuesto han sido o están siendo realizados (si existen). · Desarrollo actual de las técnicas, herramientas, etc., que sean requeridos en el tratamiento del problema. · Conjunto de referencias que amparan el problema. · Documentación del problema, citas bibliográficas. · Temas pendientes. 3. DEFINICIÓN DEL PROBLEMA En este capítulo debe responderse con toda precisión a las siguientes preguntas: ¿ Cuál es el problema que se pretende resolver? ¿Por qué este problema y no otro? ¿Cuál es su importancia en el contexto de estudio? Declarar los propósitos y objetivos, y justificar lo expresado. Para facilitar estas acciones se recomienda guiarse por las siguientes pautas: · Definir exactamente el problema. · Objetivos. · Restricciones o límites de trabajo. · Especificaciones aplicables. · Recursos. 4. SOLUCIÓN PROPUESTA En este capítulo debe responderse con toda precisión a la pregunta ¿Cómo se ha resuelto el problema? Constituye la parte central de la Tesis, por lo que su estructura y su contenido dependerán de cada caso, aunque en general debe incluir los siguientes aspectos: · Establecer y justificar la solución aportada. · Destacar el contenido de los conocimientos aportados. · Constatar la metodología y los métodos utilizados en la búsqueda de la solución. · Incluir las justificaciones teóricas que amparen la solución. 5. RESULTADOS O VERIFICACIÓN EXPERIMENTAL En este capítulo se debe poner: · Los experimentos y las pruebas realizadas, que corroboren la veracidad de lo propuesto. · Los resultados obtenidos, así como su grado de desvío respecto a los resultados esperados. · La calidad de los resultados en comparación con otras soluciones similares. · Una evaluación general de procedimientos, recursos y facilidades utilizados, anotar aciertos, errores, debilidades. · Dificultades no previstas encontradas y sus soluciones. 6. CONCLUSIONES Y FUTURAS LÍNEAS DE INVESTIGACIÓN En este capítulo se debe hacer hincapié en la contribución realizada a la solución del problema, y en la experiencia adquirida. Cuando ello sea procedente, es deseable que la Tesis abra o sugiera trabajos de investigación o desarrollos subsiguientes. Dichos trabajos deberán ser descritos, muy brevemente en este apartado. 7. BIBLIOGRAFIA Lista ordenada de todos los libros, revistas, etc., que han sido utilizados en el trabajo. 8. ANEXOS En los anexos, y separado por temas, se incluirá todo aquel material importante que no contribuya directamente a la presentación de la tesis o que, por su extensión, distraiga al lector de la línea principal de desarrollo de la misma. A manera de ejemplo, a continuación se muestra una lista de documentos que pueden ser incorporados a este nivel. · Test de evaluación realizados · Resultados de pruebas Herramientas utilizadas · Guía de usuario · Instrucciones de Operación · Etc.

Funciones de comprobación de tipos de datos - I

Si tenemos desactivada la comprobación de tipos con Option Strict, al realizar asignaciones de valores a variables, el propio compilador es quien se encarga de realizar las conversiones oportunas a los tipos de datos adecuados. En el ejemplo del Código fuente 175, al asignar una cadena que contiene un número a una variable Integer, se realiza automáticamente la conversión a dicho tipo numérico.

Dim UnaCadena As String
Dim MiNum As Integer
UnaCadena = "125"
MiNum = UnaCadena
Código fuente 175

Funciones del lenguaje

La función como elemento de soporte al programador 
Cada lenguaje dispone de un grupo de funciones de apoyo, para ayudar al programador en su trabajo cotidiano. Las versiones anteriores de Visual Basic contenían un gran número de funciones para realizar operaciones aritméticas, manipular cadenas, fechas, etc. VB.NET también tiene funciones para las operaciones antes comentadas. 
No obstante, debido a la orientación a objetos sobre la que está construida la plataforma .NET, la gran potencia a la hora de resolver cualquier situación la encontraremos en el gran número de objetos proporcionados por el entorno para resolver las más variadas situaciones, y que veremos en los temas dedicados a programación orientada a objeto. Siendo recomendado en la medida de lo posible, el uso de los objetos de .NET Framework en detrimento de las funciones, ya que el rendimiento en ejecución será más óptimo al emplear objetos. 
En este tema y organizadas por categorías, vemos una pequeña muestra de las funciones disponibles en VB.NET. Consulte el lector la documentación de la plataforma, para obtener información más detallada de todas las funciones disponibles.