66091048 Fundamentos de Programaci n Con Visual Basic NET

download 66091048 Fundamentos de Programaci n Con Visual Basic NET

of 403

Transcript of 66091048 Fundamentos de Programaci n Con Visual Basic NET

Desarrollo de softwareEste texto enfoca el aprendizaje a la manera clsica de la asignatura de Fundamentos y Metodologa de Programacin, tal y como se imparte en la enseanza reglada. La nica diferencia con este enfoque es que se sustituyen lenguajes como Pascal o C, con los que habitualmente se imparte la asignatura, por Visual Basic .NET, que dispone de un entorno de desarrollo mucho ms actualizado, y que servir a quienes lean este texto en mayor medida de la que esos otros lenguajes pueden hacerlo. De modo adicional a los aspectos fundamentales del lenguaje, se realiza una introduccin a la programacin orientada a objeto, y el enfoque que de la misma se efecta desde Visual Basic .NET. Se trata de un texto ideal para los no programadores que deseen adentrarse en el mundo de la programacin.

UMLFUNDAMENTOS DE PROGRAMACIN CON VISUAL BASIC .NETLUIS MIGUEL BLANCO

ADVERTENCIA LEGALTodos los derechos de esta obra estn reservados a Grupo EIDOS Consultora y Documentacin Informtica, S.L. El editor prohbe cualquier tipo de fijacin, reproduccin, transformacin, distribucin, ya sea mediante venta y/o alquiler y/o prstamo y/o cualquier otra forma de cesin de uso, y/o comunicacin pblica de la misma, total o parcialmente, por cualquier sistema o en cualquier soporte, ya sea por fotocopia, medio mecnico o electrnico, incluido el tratamiento informtico de la misma, en cualquier lugar del universo. El almacenamiento o archivo de esta obra en un ordenador diferente al inicial est expresamente prohibido, as como cualquier otra forma de descarga (downloading), transmisin o puesta a disposicin (an en sistema streaming). La vulneracin de cualesquiera de estos derechos podr ser considerada como una actividad penal tipificada en los artculos 270 y siguientes del Cdigo Penal. La proteccin de esta obra se extiende al universo, de acuerdo con las leyes y convenios internacionales. Esta obra est destinada exclusivamente para el uso particular del usuario, quedando expresamente prohibido su uso profesional en empresas, centros docentes o cualquier otro, incluyendo a sus empleados de cualquier tipo, colaboradores y/o alumnos. Si Vd. desea autorizacin para el uso profesional, puede obtenerla enviando un e-mail [email protected] o al fax (34)-91-5017824. Si piensa o tiene alguna duda sobre la legalidad de la autorizacin de la obra, o que la misma ha llegado hasta Vd. vulnerando lo anterior, le agradeceremos que nos lo comunique al e-mail [email protected] o al fax (34)-91-5012824). Esta comunicacin ser absolutamente confidencial. Colabore contra el fraude. Si usted piensa que esta obra le ha sido de utilidad, pero no se han abonado los derechos correspondientes, no podremos hacer ms obras como sta. Luis Miguel Blanco, 2002 Grupo EIDOS Consultara y Documentacin Informtica, S.L., 2000 ISBN 84-88457-40-5

Fundamentos de programacin con Visual Basic .NETLuis Miguel BlancoResponsable editorial Paco Marn ([email protected]) Autoedicin Magdalena Marn ([email protected]) Luis Miguel Blanco ([email protected]) Grupo EIDOS C/ Tllez 30 Oficina 2 28007-Madrid (Espaa) Tel: 91 5013234 Fax: 91 (34) 5017824 www.grupoeidos.com/www.eidos.es www.LaLibreriaDigital.com Coordinacin de la edicin Antonio Quirs ([email protected])

3

ndiceNDICE .................................................................................................................................................. 5 PROGRAMACIN Y DISEO DE ALGORITMOS..................................................................... 15 LAS VENTAJAS DEL USO DE ORDENADORES ...................................................................................... 15 QU ES LA PROGRAMACIN? ........................................................................................................... 16 QU ES UN LENGUAJE DE PROGRAMACIN? .................................................................................... 16 QU ES UN PROGRAMA?................................................................................................................... 16 ETAPAS EN EL DESARROLLO DE UN PROGRAMA ................................................................................ 17 ANLISIS DEL PROBLEMA .................................................................................................................. 17 ESTUDIO DEL PROBLEMA ................................................................................................................... 18 ALGORITMOS ..................................................................................................................................... 18 Diagramas de flujo........................................................................................................................ 20 Operadores e identificadores en los diagramas de flujo............................................................... 24 Pseudocdigo ................................................................................................................................ 27 Diagramas Nassi-Schneiderman................................................................................................... 29 IMPLEMENTACIN DE PROGRAMAS EN LA PLATAFORMA MICROSOFT .NET ........ 31 IMPLEMENTACIN DEL PROGRAMA ................................................................................................... 31 TIPOS DE LENGUAJE DE PROGRAMACIN .......................................................................................... 32 Lenguajes mquina........................................................................................................................ 32 Lenguajes de bajo nivel................................................................................................................. 32 Lenguajes de alto nivel.................................................................................................................. 32 MODELOS DE PROGRAMACIN .......................................................................................................... 33 Programacin lineal...................................................................................................................... 33 Programacin procedural............................................................................................................. 34 Programacin estructurada .......................................................................................................... 35

Programacin orientada a objeto (OOP) ..................................................................................... 36 SELECCIONAR EL LENGUAJE DE PROGRAMACIN MS ADECUADO .................................................. 37 EL ARCHIVO EJECUTABLE Y SU PROCESO DE CREACIN ................................................................... 37 INTERFACES DE USUARIO .................................................................................................................. 38 LAS HERRAMIENTAS PARA LA CREACIN DE PROGRAMAS ............................................................... 38 .NET FRAMEWORK: EL ENTORNO DE EJECUCIN ............................................................................. 39 EL SDK DE .NET FRAMEWORK: LAS HERRAMIENTAS DE DESARROLLO .......................................... 39 REQUISITOS HARDWARE DE VISUAL STUDIO .NET .......................................................................... 40 EL SISTEMA OPERATIVO PARA VISUAL STUDIO .NET....................................................................... 40 RECOMENDACIONES PREVIAS A LA INSTALACIN DE VISUAL STUDIO .NET ................................... 41 PROCESO DE INSTALACIN DE VISUAL STUDIO .NET....................................................................... 41 HOLA MUNDO, DESDE VISUAL BASIC .NET...................................................................................... 48 EL COMPILADOR DE VB.NET............................................................................................................ 48 EL ENTORNO DE DESARROLLO INTEGRADO (IDE) DE VISUAL STUDIO .NET ................................... 51 PROYECTOS EN VISUAL STUDIO .NET .............................................................................................. 52 Creacin de un proyecto ............................................................................................................... 52 El editor de cdigo fuente ............................................................................................................. 53 El cdigo del programa................................................................................................................. 53 El Explorador de soluciones ......................................................................................................... 55 La estructura de archivos del proyecto ......................................................................................... 55 EL SISTEMA DE AYUDA ...................................................................................................................... 56 EL LENGUAJE. ELEMENTOS BSICOS ..................................................................................... 59 COMPONENTES DE UN LENGUAJE DE PROGRAMACIN ...................................................................... 59 DATOS ............................................................................................................................................... 60 Simples .......................................................................................................................................... 60 Numrico................................................................................................................................... 61 Carcter ..................................................................................................................................... 61 Fecha ......................................................................................................................................... 62 Lgico........................................................................................................................................ 62 Compuestos ................................................................................................................................... 62 Definidos por el programador....................................................................................................... 62 IDENTIFICADORES.............................................................................................................................. 63 PALABRAS RESERVADAS ................................................................................................................... 63 ESTRUCTURA DE UN PROGRAMA ....................................................................................................... 63 UBICACIN DEL CDIGO EN EL PROGRAMA ...................................................................................... 64 COMENTARIOS ................................................................................................................................... 65 INDENTACIN DEL CDIGO ............................................................................................................... 65 MANEJO DE LA CONSOLA DEL SISTEMA............................................................................................. 67 Visualizar informacin en la consola............................................................................................ 67 Obtener informacin de la consola ............................................................................................... 69 VARIABLES ........................................................................................................................................ 70 Declaracin................................................................................................................................... 70 Denominacin ............................................................................................................................... 71 Lugar de la declaracin ................................................................................................................ 71 Tipificacin.................................................................................................................................... 71 Declaracin mltiple en lnea ....................................................................................................... 74 Asignacin de valor....................................................................................................................... 74 Valor inicial................................................................................................................................... 76 Declaracin obligatoria ................................................................................................................ 77 Option Explicit a nivel de proyecto........................................................................................... 77 Option Explicit a nivel de fichero ............................................................................................. 78 Tipificacin obligatoria................................................................................................................. 79 AVISOS DEL IDE SOBRE ERRORES EN EL CDIGO ............................................................................. 82 GRABACIN DEL CDIGO MODIFICADO ............................................................................................. 82

CONSTANTES ..................................................................................................................................... 83 INTRODUCCIN A LOS ARRAYS. OPERADORES................................................................... 87 DEPURACIN DEL CDIGO EN EJECUCIN ......................................................................................... 87 ARRAYS ............................................................................................................................................. 90 Declaracin................................................................................................................................... 90 Asignacin y obtencin de valores ................................................................................................ 91 Modificacin de tamao................................................................................................................ 92 Recorrer un array.......................................................................................................................... 92 Arrays multidimensionales ............................................................................................................ 93 OPERADORES ..................................................................................................................................... 95 OPERADORES ARITMTICOS .............................................................................................................. 95 Potenciacin: ^............................................................................................................................. 95 Multiplicacin: * .......................................................................................................................... 95 Divisin real: /.............................................................................................................................. 96 Divisin entera: \.......................................................................................................................... 96 Resto: Mod ................................................................................................................................... 96 Suma: + ........................................................................................................................................ 97 Resta: - ......................................................................................................................................... 98 OPERADORES DE CONCATENACIN: &, + ........................................................................................ 98 OPERADORES ABREVIADOS DE ASIGNACIN ..................................................................................... 99 Potencia: ^= ................................................................................................................................. 99 Multiplicacin: *= ....................................................................................................................... 99 Divisin real: /=......................................................................................................................... 100 Divisin entera: \= ..................................................................................................................... 100 Suma: += ................................................................................................................................... 100 Resta: -=..................................................................................................................................... 101 Concatenacin: &=.................................................................................................................... 101 OPERADORES DE COMPARACIN ..................................................................................................... 102 Comparacin de cadenas ............................................................................................................ 102 La funcin Asc( ) ......................................................................................................................... 104 La funcin Chr( )......................................................................................................................... 104 Comparacin de cadenas en base a un patrn. El operador Like .............................................. 105 Comparacin de objetos. El operador Is .................................................................................... 107 OPERADORES LGICOS Y A NIVEL DE BIT ........................................................................................ 109 And .............................................................................................................................................. 109 Uso de parntesis para mejorar la legibilidad de expresiones ................................................... 110 Not ............................................................................................................................................... 111 Or ................................................................................................................................................ 112 Xor............................................................................................................................................... 113 AndAlso ....................................................................................................................................... 114 OrElse.......................................................................................................................................... 115 PRIORIDAD DE OPERADORES ........................................................................................................... 115 Prioridad entre operadores del mismo grupo. ............................................................................ 115 Prioridad entre operadores de distintos grupos. ........................................................................ 117 USO DE PARNTESIS PARA ALTERAR LA PRIORIDAD DE OPERADORES ............................................ 117 PROCEDIMIENTOS........................................................................................................................ 119 DIVISIN DE UNA LNEA DE CDIGO................................................................................................ 119 ESCRITURA DE VARIAS SENTENCIAS EN LA MISMA LNEA............................................................... 120 PROCEDIMIENTOS ............................................................................................................................ 120 Sintaxis de un procedimiento Sub................................................................................................ 121 Llamada a un procedimiento Sub................................................................................................ 122 Sintaxis de un procedimiento Function ....................................................................................... 122 Llamada a un procedimiento Function ....................................................................................... 1247

Paso de parmetros a procedimientos ........................................................................................ 125 Protocolo de llamada o firma de un procedimiento.................................................................... 125 Tipo de dato de un parmetro ..................................................................................................... 125 Modos de paso de parmetros a un procedimiento..................................................................... 126 Paso por valor (ByVal)............................................................................................................ 126 Paso por referencia (ByRef) .................................................................................................... 127 Paso de parmetros por posicin y por nombre ......................................................................... 128 Parmetros opcionales................................................................................................................ 129 Array de parmetros ................................................................................................................... 130 Sobrecarga de procedimientos.................................................................................................... 131 LISTA DESPLEGABLE NOMBRE DE MTODO, EN EL EDITOR DE CDIGO ...................................... 135 ESTRUCTURAS DE CONTROL ................................................................................................... 137 SELECCIN ...................................................................................................................................... 137 If...End If...................................................................................................................................... 137 Decisin simple ....................................................................................................................... 138 Decisin simple en una lnea................................................................................................... 139 Decisin doble......................................................................................................................... 140 Decisin doble en una lnea..................................................................................................... 140 Decisin mltiple .................................................................................................................... 141 La funcin IIf( ) ........................................................................................................................... 142 Select Case...End Select .............................................................................................................. 143 REPETICIN ..................................................................................................................................... 145 While...End While........................................................................................................................ 145 Do...Loop..................................................................................................................................... 145 Condicin al principio ............................................................................................................. 146 Condicin al final .................................................................................................................... 146 Sin condicin........................................................................................................................... 147 For...Next..................................................................................................................................... 147 For Each...Next ........................................................................................................................... 149 ANIDACIN DE ESTRUCTURAS DE CONTROL ................................................................................... 150 Anidacin de estructuras de seleccin ........................................................................................ 150 Anidacin de estructuras de repeticin....................................................................................... 150 Anidacin de estructuras de distinto tipo y a varios niveles ....................................................... 151 Anidacin incorrecta de estructuras ........................................................................................... 152 CONSTRUCCIONES DERIVADAS DE LAS ESTRUCTURAS DE CONTROL .............................................. 152 Contadores .................................................................................................................................. 152 Acumuladores.............................................................................................................................. 153 Interruptores................................................................................................................................ 153 BIFURCACIONES INCONDICIONALES CON GOTO .............................................................................. 154 ORGANIZACIN Y MBITO DE LOS ELEMENTOS DEL LENGUAJE ............................. 157 ARCHIVOS Y MDULOS DE CDIGO EN UN PROGRAMA ................................................................... 157 Agregar un nuevo mdulo (y archivo) de cdigo........................................................................ 159 Crear un nuevo mdulo dentro de un fichero existente............................................................... 160 Cambiar el nombre de un fichero de cdigo ............................................................................... 161 Aadir al proyecto un fichero de cdigo existente...................................................................... 161 Lista desplegable Nombre de clase, en el editor de cdigo.................................................... 162 Excluir y eliminar ficheros de cdigo del proyecto..................................................................... 163 REGLAS DE MBITO ......................................................................................................................... 163 mbito de procedimientos ........................................................................................................... 164 Pblico..................................................................................................................................... 164 Privado .................................................................................................................................... 166 mbito de variables..................................................................................................................... 167 mbito a nivel de procedimiento ............................................................................................ 167

mbito a nivel de bloque ........................................................................................................ 168 mbito a nivel de mdulo ....................................................................................................... 169 mbito a nivel de proyecto ..................................................................................................... 170 PERIODO DE VIDA O DURACIN DE LAS VARIABLES ........................................................................ 171 VARIABLES STATIC ......................................................................................................................... 171 CONVENCIONES DE NOTACIN ........................................................................................................ 172 Variables ..................................................................................................................................... 173 Constantes ................................................................................................................................... 174 FUNCIONES DEL LENGUAJE ..................................................................................................... 175 LA FUNCIN COMO ELEMENTO DE SOPORTE AL PROGRAMADOR .................................................... 175 FUNCIONES DE COMPROBACIN DE TIPOS DE DATOS ...................................................................... 175 IsNumeric( )................................................................................................................................. 176 IsDate( )....................................................................................................................................... 177 IsArray( ) ..................................................................................................................................... 177 FUNCIONES NUMRICAS .................................................................................................................. 178 Int( ), Fix( ).................................................................................................................................. 178 Randomize( )................................................................................................................................ 178 Rnd( )........................................................................................................................................... 178 FUNCIONES DE CADENA DE CARACTERES ....................................................................................... 180 Len( ) ........................................................................................................................................... 180 Space( )........................................................................................................................................ 180 InStr( ) ......................................................................................................................................... 180 InStrRev( ) ................................................................................................................................... 181 StrComp( ) ................................................................................................................................... 181 Left( ) ........................................................................................................................................... 181 Right( )......................................................................................................................................... 182 Mid( )........................................................................................................................................... 182 Replace( ) .................................................................................................................................... 183 LTrim( ), RTrim( ), Trim( ) .......................................................................................................... 183 UCase( ), LCase( )....................................................................................................................... 184 StrConv( ) .................................................................................................................................... 184 Split( ).......................................................................................................................................... 185 Join( ) .......................................................................................................................................... 185 Format( ) ..................................................................................................................................... 186 FUNCIONES DE FECHA Y HORA ........................................................................................................ 189 Now( ) .......................................................................................................................................... 189 DateAdd( ) ................................................................................................................................... 189 DateDiff( ) ................................................................................................................................... 189 DatePart( ) .................................................................................................................................. 189 CONFIGURAR EL PUNTO DE ENTRADA AL PROGRAMA ..................................................................... 190 MLTIPLES ENTRADAS AL PROGRAMA MEDIANTE DISTINTOS MAIN( ) .......................................... 192 TCNICAS Y DEPURACIN ........................................................................................................ 195 TCNICAS DE PROGRAMACIN ........................................................................................................ 195 RECURSIVIDAD ................................................................................................................................ 195 BSQUEDA....................................................................................................................................... 196 Bsqueda lineal ........................................................................................................................... 196 Bsqueda binaria ........................................................................................................................ 197 ORDENACIN ................................................................................................................................... 198 Ordenacin por intercambio ....................................................................................................... 198 Ordenacin por insercin ........................................................................................................... 199 Ordenacin por seleccin ........................................................................................................... 200 Ordenacin rpida ...................................................................................................................... 200 Ordenacin rpida con valor de referencia central.................................................................. 2019

Ordenacin rpida con valor de referencia al comienzo ......................................................... 201 FUSIN ............................................................................................................................................. 203 EL DEPURADOR ................................................................................................................................ 204 MODO DE DEPURACIN ................................................................................................................... 204 MODO DE INTERRUPCIN ................................................................................................................ 204 FORMAS DE EJECUCIN DEL CDIGO EN EL DEPURADOR ................................................................ 205 PUNTOS DE INTERRUPCIN .............................................................................................................. 206 Insercin...................................................................................................................................... 206 Propiedades................................................................................................................................. 207 Punto de interrupcin a nivel de procedimiento ......................................................................... 208 Habilitar y deshabilitar ............................................................................................................... 209 Eliminar....................................................................................................................................... 210 La ventana Puntos de interrupcin ............................................................................................. 210 INSPECCIONES.................................................................................................................................. 211 VENTANAS ADICIONALES EN EL IDE PARA LA DEPURACIN .......................................................... 212 VENTANA LOCALES ......................................................................................................................... 212 VENTANA INMEDIATO ..................................................................................................................... 213 VENTANA PILA DE LLAMADAS ........................................................................................................ 213 VENTANA MDULOS ....................................................................................................................... 214 VENTANA RESULTADOS .................................................................................................................. 214 VENTANA DESENSAMBLADOR ........................................................................................................ 214 PROGRAMACIN ORIENTADA A OBJETO (OOP)................................................................ 217 LAS VENTAJAS DE LA PROGRAMACIN ORIENTADA A OBJETO ....................................................... 217 DEL ENFOQUE PROCEDURAL AL ENFOQUE ORIENTADO A OBJETO .................................................. 217 ABORDANDO UN PROBLEMA MEDIANTE PROGRAMACIN PROCEDURAL ........................................ 217 LOS FUNDAMENTOS DE LA PROGRAMACIN ORIENTADA A OBJETO ............................................... 219 OBJETOS .......................................................................................................................................... 220 CLASES ............................................................................................................................................ 220 INSTANCIAS DE UNA CLASE ............................................................................................................. 221 CARACTERSTICAS BSICAS DE UN SISTEMA ORIENTADO A OBJETO ............................................... 221 Abstraccin.................................................................................................................................. 222 Encapsulacin ............................................................................................................................. 222 Polimorfismo ............................................................................................................................... 223 Herencia ...................................................................................................................................... 223 JERARQUAS DE CLASES .................................................................................................................. 224 RELACIONES ENTRE OBJETOS .......................................................................................................... 224 Herencia ...................................................................................................................................... 224 Pertenencia.................................................................................................................................. 225 Utilizacin ................................................................................................................................... 225 REUTILIZACIN ............................................................................................................................... 225 ANLISIS Y DISEO ORIENTADO A OBJETOS .................................................................................... 225 CREACIN DE CLASES...................................................................................................................... 226 ORGANIZACIN DE CLASES EN UNO O VARIOS FICHEROS DE CDIGO ............................................. 227 CDIGO DE CLASE Y CDIGO CLIENTE ............................................................................................ 228 REGLAS DE MBITO GENERALES PARA CLASES............................................................................... 228 INSTANCIACIN DE OBJETOS ........................................................................................................... 228 MIEMBROS DE LA CLASE ................................................................................................................. 229 DEFINIR LA INFORMACIN DE LA CLASE ......................................................................................... 229 CREACIN DE CAMPOS PARA LA CLASE .......................................................................................... 230 CREACIN DE PROPIEDADES PARA LA CLASE .................................................................................. 231 VENTAJAS EN EL USO DE PROPIEDADES .......................................................................................... 232 ENCAPSULACIN A TRAVS DE PROPIEDADES ................................................................................ 232 PROPIEDADES DE SLO LECTURA O SLO ESCRITURA..................................................................... 234 PROPIEDADES VIRTUALES ............................................................................................................... 236

NOMBRES DE PROPIEDAD MS NATURALES .................................................................................... 237 PROPIEDADES PREDETERMINADAS .................................................................................................. 238 MTODOS Y ESPACIOS DE NOMBRE ...................................................................................... 241 CREACIN DE MTODOS PARA LA CLASE ........................................................................................ 241 CUNDO CREAR UNA PROPIEDAD Y CUNDO UN MTODO? .......................................................... 245 LA ESTRUCTURA WITH...END WITH ................................................................................................ 247 RESULTADOS DISTINTOS EN OBJETOS DE LA MISMA CLASE ............................................................ 247 USO DE ME PARA LLAMAR A LOS MIEMBROS DE LA PROPIA CLASE ................................................ 248 SOBRECARGA DE MTODOS O POLIMORFISMO, EN UNA MISMA CLASE ........................................... 249 ENLACE (BINDING) DE VARIABLES A REFERENCIAS DE OBJETOS .................................................... 251 Enlace temprano.......................................................................................................................... 251 Enlace tardo ............................................................................................................................... 252 ESPACIOS DE NOMBRES (NAMESPACES) .......................................................................................... 254 LIBRERAS DE CDIGO (BIBLIOTECAS) Y ENSAMBLADOS EXTERNOS ..................... 259 LA REUTILIZACIN DEL CDIGO ...................................................................................................... 259 LOS INICIOS DE LAS LIBRERAS ........................................................................................................ 260 LIBRERA CON FORMATO DE ENLACE DINMICO............................................................................. 261 LIBRERAS DE CLASES ..................................................................................................................... 262 EL ENSAMBLADO COMO PIEZA DE CONSTRUCCIN DE APLICACIONES ........................................... 263 CREACIN DE LIBRERAS DE CLASES DESDE VB.NET .................................................................... 263 LLAMADAS A UNA LIBRERA DESDE UN EJECUTABLE ..................................................................... 265 CREAR ESPACIOS DE NOMBRES ADICIONALES EN UNA LIBRERA .................................................... 266 FACILITAR EL DESARROLLO A TRAVS DE UNA SOLUCIN MULTIPROYECTO ................................. 267 CONSTRUCTORES Y HERENCIA............................................................................................... 269 MTODOS CONSTRUCTORES ............................................................................................................ 269 HERENCIA ........................................................................................................................................ 271 TODAS LAS CLASES NECESITAN UNA CLASE BASE .......................................................................... 272 REGLAS DE MBITO ESPECFICAS PARA CLASES ............................................................................. 273 Protected ..................................................................................................................................... 274 Friend .......................................................................................................................................... 275 Protected Friend.......................................................................................................................... 276 HERENCIA Y SOBRECARGA DE MTODOS ........................................................................................ 276 MYBASE, ACCESO A LOS MTODOS DE LA CLASE BASE .................................................................. 278 HERENCIA Y SOBRE-ESCRITURA DE MTODOS ................................................................................ 278 DIFERENCIAS ENTRE SOBRECARGA Y SOBRE-ESCRITURA EN BASE AL TIPO DE ENLACE ................. 281 LA PALABRA CLAVE MYCLASS ....................................................................................................... 283 OCULTAMIENTO DE MIEMBROS DE UNA CLASE ............................................................................... 284 HERENCIA Y MTODOS CONSTRUCTORES........................................................................................ 288 CLASES SELLADAS O NO HEREDABLES ............................................................................................ 289 CLASES ABSTRACTAS O NO INSTANCIABLES ................................................................................... 290 ELEMENTOS COMPARTIDOS E INTERFACES...................................................................... 293 COMPROBACIN DEL TIPO DE UN OBJETO Y MOLDEADO (CASTING) ............................................... 293 MIEMBROS COMPARTIDOS (SHARED) DE UNA CLASE ...................................................................... 296 DEFINIR UNA CLASE COMO PUNTO DE ENTRADA DE LA APLICACIN .............................................. 298 INTERFACES ..................................................................................................................................... 299 ESTRUCTURAS ................................................................................................................................. 304 Creacin y manipulacin de estructuras..................................................................................... 304 Estructuras o clases, cul debemos utilizar? ............................................................................ 306 La estructura del sistema DateTime............................................................................................ 307 ENUMERACIONES ............................................................................................................................ 308 TIPOS DE DATOS COMO OBJETOS. EVENTOS ..................................................................... 31311

LOS TIPOS DE DATOS TAMBIN SON OBJETOS .................................................................................. 313 MANIPULACIN DE CADENAS CON LA CLASE STRING..................................................................... 314 CONVERSIN DE TIPOS CON LA CLASE CONVERT............................................................................ 318 LA ESTRUCTURA CHAR ................................................................................................................... 319 EL TIPO DATE (FECHA) .................................................................................................................... 320 OPERACIONES ARITMTICAS, LA CLASE MATH............................................................................... 320 FORMATEO DE VALORES ................................................................................................................. 321 EVENTOS. QU ES UN EVENTO?..................................................................................................... 325 EVENTOS EN VB.NET ..................................................................................................................... 325 PROGRAMACIN ESTRICTAMENTE PROCEDURAL ............................................................................ 325 UN ESCENARIO DE TRABAJO SIN EVENTOS ...................................................................................... 325 PROGRAMACIN BASADA EN EVENTOS ........................................................................................... 326 ESQUEMA BSICO DE UN SISTEMA ORIENTADO A EVENTOS ............................................................ 327 EL EMISOR DE EVENTOS .................................................................................................................. 327 EL RECEPTOR DE EVENTOS .............................................................................................................. 328 CONEXIN DE UN EMISOR DE EVENTOS CON UN MANIPULADOR DE EVENTOS ................................ 329 ENLACE ESTTICO DE EVENTOS ...................................................................................................... 329 ENLACE DINMICO DE EVENTOS ..................................................................................................... 331 ARRAYS ............................................................................................................................................ 333 ASPECTOS BSICOS ......................................................................................................................... 333 LA CLASE ARRAY ............................................................................................................................ 334 DECLARACIN ................................................................................................................................. 334 ASIGNACIN Y OBTENCIN DE VALORES ........................................................................................ 335 RECORRER EL CONTENIDO .............................................................................................................. 336 PASO DE ARRAYS COMO PARMETROS, Y DEVOLUCIN DESDE FUNCIONES................................... 337 CLONACIN ..................................................................................................................................... 338 COPIA............................................................................................................................................... 339 INICIALIZACIN DE VALORES .......................................................................................................... 340 ORDENACIN ................................................................................................................................... 341 BSQUEDA....................................................................................................................................... 342 ARRAYS MULTIDIMENSIONALES ..................................................................................................... 343 MANIPULACIN DE ERRORES.................................................................................................. 345 ERRORES Y EXCEPCIONES................................................................................................................ 345 MANIPULADORES DE EXCEPCIONES ................................................................................................ 345 TIPOS DE TRATAMIENTO DE ERROR EN VB.NET............................................................................. 346 MANIPULACIN ESTRUCTURADA DE ERRORES ............................................................................... 346 La estructura Try...End Try......................................................................................................... 346 La clase Exception....................................................................................................................... 348 Captura de excepciones de diferente tipo en el mismo controlador de errores.......................... 350 Establecer una condicin para un manipulador de excepciones ................................................ 351 La influencia del orden de los manipuladores de excepciones ................................................... 353 Forzar la salida de un controlador de errores mediante Exit Try .............................................. 354 Generacin manual de excepciones ............................................................................................ 355 MANIPULACIN NO ESTRUCTURADA DE ERRORES .......................................................................... 356 El objeto Err................................................................................................................................ 356 On Error...................................................................................................................................... 356 On Error Goto Etiqueta .............................................................................................................. 356 On Error Resume Next ................................................................................................................ 357 Creacin de errores con el objeto Err ........................................................................................ 358 On Error Goto 0.......................................................................................................................... 358 MANIPULACIN DE ARCHIVOS ............................................................................................... 361 QU ES UN ARCHIVO? .................................................................................................................... 361

SYSTEM.IO, EL PUNTO DE PARTIDA PARA EL MANEJO DE ARCHIVOS.............................................. 361 OBJETOS STREAM ............................................................................................................................ 362 LA CLASE STREAMWRITER ............................................................................................................. 362 LA CLASE STREAMREADER ............................................................................................................. 364 LA CLASE FILESTREAM ................................................................................................................... 366 MANIPULACIN DE ARCHIVOS MEDIANTE LAS CLASES FILE Y FILEINFO ....................................... 367 MANIPULACIN DE DIRECTORIOS MEDIANTE LAS CLASES DIRECTORY Y DIRECTORYINFO ........... 369 LA CLASE PATH ............................................................................................................................... 371 FORMULARIOS WINDOWS......................................................................................................... 373 INTERFACES DE VENTANA. FORMULARIOS Y CONTROLES .............................................................. 373 SYSTEM.WINDOWS.FORMS ............................................................................................................. 373 HOLA MUNDO DESDE UN FORMULARIO WINDOWS ......................................................................... 374 FORMULARIOS ................................................................................................................................. 374 CONTROLES ..................................................................................................................................... 377 LABEL .............................................................................................................................................. 377 EJECUTANDO LA APLICACIN ......................................................................................................... 379 EL CDIGO DEL FORMULARIO ......................................................................................................... 380 CAMBIANDO EL NOMBRE DEL FORMULARIO ................................................................................... 381 INICIAR EL FORMULARIO DESDE MAIN( ) ........................................................................................ 382 OTROS CONTROLES BSICOS ........................................................................................................... 384 BUTTON ........................................................................................................................................... 384 CODIFICACIN DE LOS EVENTOS DE CONTROLES ............................................................................ 385 TEXTBOX ......................................................................................................................................... 388 CHECKBOX ...................................................................................................................................... 390 RADIOBUTTON ................................................................................................................................ 391 GROUPBOX ...................................................................................................................................... 392 LISTBOX .......................................................................................................................................... 393 COMBOBOX ..................................................................................................................................... 394 MENS ............................................................................................................................................. 396 Controles de tipo men................................................................................................................ 396 Diseo de mens.......................................................................................................................... 396 Codificacin de mens ................................................................................................................ 398 BIBLIOGRAFA Y RECURSOS .................................................................................................... 401 BIBLIOGRAFA ................................................................................................................................. 401 RECURSOS EN INTERNET ................................................................................................................. 401

13

Programacin y diseo de algoritmosLas ventajas del uso de ordenadoresTodas aquellas personas que hayan tenido acceso a un ordenador o computador, habrn podido comprobar cmo estas mquinas permiten realizar trabajos que incluyen una elevada y compleja cantidad de clculos, de forma efectiva, y a una gran velocidad de proceso. Para que un ordenador pueda realizar operaciones y resolver problemas necesita, adems de sus componentes fsicos, un elemento lgico que es el que permite realizar dichas tareas, dicho elemento es el programa, que al ser ejecutado por el ordenador, lleva a cabo las operaciones pertinentes, proporcionando el resultado correspondiente, a una velocidad infinitamente superior que si hubiramos tenido que realizarlas de forma manual. La creacin de un programa para ordenador no es una labor trivial, requiere un adiestramiento en una disciplina: la programacin, y en sus herramientas informticas: los lenguajes de programacin, que nos permitirn su diseo y creacin La descripcin de las tcnicas de programacin, y de un lenguaje de programacin en concreto: Visual Basic .NET (VB.NET, como tambin lo denominaremos a lo largo del texto), son los objetivos perseguidos en este texto, cuya finalidad es la de mostrar al lector las fases de creacin de una aplicacin informtica, y de iniciarle en el apasionante arte de la programacin.

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Qu es la programacin?La programacin de ordenadores es aquella rama de las tecnologas de la informacin, encargada del diseo y escritura de las instrucciones o sentencias que un ordenador debe ejecutar para completar una operacin o resolver un problema. Al conjunto de operaciones que lleva a cabo un ordenador para proporcionar un determinado resultado se le denomina proceso, el conjunto de varios procesos que realizan tareas comunes, conformando de esta manera una nica entidad, la denominamos programa. Por ejemplo, un proceso puede ser la suma de los importes que componen las lneas de una factura; otro, el clculo de los impuestos a aplicar sobre el importe de la factura; la obtencin de los datos del cliente al que vamos a enviar la factura sera otro proceso; si todos estos procesos y otros similares los juntamos, tendramos un programa de facturacin. Adicionalmente, si tenemos un proceso que calcula las rutas y distancias de los vehculos de una empresa de transportes, podramos aadirlo al programa anterior, aunque la lgica nos indica que no tendra mucho sentido, por lo cual, este proceso y los que tengan que ver con la logstica de una empresa de transporte, deberan ubicarse en otro programa diferente. De este modo conseguiremos un conjunto de programas mejor organizados, enfocados a resolver tareas concretas, con un mayor rendimiento en ejecucin.

Qu es un lenguaje de programacin?Un lenguaje de programacin es la principal herramienta de las utilizadas por el programador para la creacin de programas. Todo lenguaje se compone de un conjunto ms o menos extenso de palabras claves y smbolos, que forman la denominada sintaxis del lenguaje, y una serie de normas o reglas para el correcto uso y combinacin de tales palabras y smbolos.

Qu es un programa?Como describimos en una definicin anterior, un programa (o aplicacin, como tambin lo denominaremos) es un conjunto de instrucciones escritas en un lenguaje de programacin, que pueden llevar a cabo uno o mltiples procesos, normalmente relacionados, aunque sin ser esto obligatorio, y que en definitiva nos permiten resolver uno o ms problemas. A las instrucciones o cdigo que forman parte de un programa se le denomina cdigo fuente. Como hemos mencionado anteriormente, para crear un programa debemos conocer los elementos del lenguaje a emplear y sus normas de utilizacin. Por ejemplo, el lenguaje Visual Basic .NET dispone de las palabras clave Dim e Integer para declarar variables, y los smbolos = y + para asignar valores y realizar operaciones (no se preocupe el lector si todava no comprende estos conceptos, sern explicados en un tema posterior). Para poder crear una variable y realizar una operacin con ella, no basta saber cules son las palabras claves y smbolos a utilizar, sino que tambin debemos saber cmo utilizar estos elementos. El Cdigo fuente 1 muestra una forma incorrecta y otra correcta de crear una variable y asignar una operacin de suma a la misma.

' incorrecto Integer MiDato Dim MiDato + 50 = 700

16

Grupo EIDOS

1. Programacin y diseo de algoritmos

' correcto Dim MiDato As Integer MiDato = 50 + 700 Cdigo fuente 1

En el primer caso, si intentamos ejecutar el cdigo incorrecto se producir un error, ya que no se atiene a las normas de escritura de cdigo del lenguaje, cosa que s sucede en el caso siguiente.

Etapas en el desarrollo de un programaNo existen una serie de normas absolutas en el proceso de creacin de un programa, ya que como comentamos en un apartado anterior, la programacin es una actividad creativa, en la que confluyen, por un lado, los requerimientos del problema a afrontar, las capacidades que nos proporciona el lenguaje empleado por otro, y la pericia e inventiva del programador para resolver dicho problema. No obstante, s podemos establecer unas pautas generales a seguir, en lo que se puede llamar ciclo de desarrollo del programa, y que podemos dividir en dos grandes etapas, compuestas a su vez cada una de una serie de pasos. A continuacin se muestran los puntos constituyentes de este proceso. Anlisis del problema. o o o Estudio del problema. Desarrollo del algoritmo. Comprobacin del algoritmo.

Implementacin del programa. o o o o Escritura del programa en base a los resultados obtenidos del algoritmo. Ejecucin del programa Depuracin del programa. Documentacin del programa.

En los siguientes apartados y temas del texto iremos realizando una descripcin ms detallada de los puntos ms importantes de este esquema.

Anlisis del problemaEsta etapa consiste en investigar el problema a resolver, y desarrollar los procesos necesarios para ello. Tras estudiar el problema, deberemos disear un algoritmo que lo solvente satisfactoriamente, y realizar diversas comprobaciones para verificar su correcto funcionamiento. Los siguientes apartados describen los principales puntos a desarrollar durante la fase de anlisis.

17

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Estudio del problemaEl primer paso en todo anlisis para el desarrollo de un programa, consiste en estudiar cuidadosamente el problema planteado, e identificar, por un lado, la informacin de que disponemos para resolverlo, y por otro, el resultado a obtener. La datos disponibles se denominan informacin de entrada, mientras que el resultado se denomina informacin de salida. Pongamos el siguiente ejemplo: "Una empresa de desarrollo de software recibe el encargo de realizar un programa. Dicha empresa cobra la hora de programacin a 30 euros, empleando 45 horas en desarrollar el programa. Al importe total de horas trabajadas se aplicar un impuesto del 16%. Averiguar el importe total a pagar antes y despus de impuestos y la cantidad de impuesto aplicado". La informacin obtenida tras este enunciado sera la siguiente: Entrada: o o o Salida: o o o Total antes de impuestos: 1350 euros. Impuestos: 216 euros. Total despus de impuestos: 1566 euros. Importe/hora: 30 euros. Horas trabajadas: 45. Impuesto a aplicar: 16%.

Es muy importante para resolver el problema, el disponer de la suficiente informacin, ya que sin ella, no podremos obtener los datos que constituirn el resultado del planteamiento. Supongamos este otro problema: "Una oficina compra cartuchos para sus impresoras. Obtener el importe total a pagar y el porcentaje de impuesto correspondiente". En este caso no podemos resolver el problema, ya que tras analizarlo, falta la informacin de entrada como el nmero de cartuchos comprados, importe por cartucho y el porcentaje de impuesto a aplicar, por lo que resulta imposible obtener los datos de salida.

AlgoritmosUn algoritmo se puede definir como el conjunto de acciones a realizar para resolver un determinado problema. El modo de afrontar la creacin de un algoritmo, pasa por descomponer el problema planteado en problemas ms pequeos y fciles de resolver independientemente. Una vez resueltos los problemas independientes, se unirn todos, obteniendo de esta forma el correspondiente algoritmo. El proceso indicado por un algoritmo debe ser claro y tener sus pasos bien definidos, de forma que si realizamos dicho proceso varias veces, empleando siempre los mismos valores en el algoritmo,18

Grupo EIDOS

1. Programacin y diseo de algoritmos

deberemos obtener el mismo resultado. De igual forma, en un algoritmo deben distinguirse las siguientes fases: entrada, proceso y salida. Para comenzar a familiarizarnos con el diseo y escritura de algoritmos tomemos el siguiente ejemplo: desarrollar el algoritmo para escuchar un CD de msica. El Cdigo fuente 2 muestra los pasos a seguir para confeccionar este algoritmo.

1. 2. 3. 4. 5. 6.

Inicio Tomar un CD Introducirlo en el reproductor Pulsar el botn de comienzo Escuchar la msica Fin Cdigo fuente 2

Observemos cmo los datos de entrada seran el CD a reproducir; el proceso estara representado por los pasos dados con el reproductor para ponerlo en funcionamiento; mientras que la salida sera la msica reproducida que escucharamos. Cuando finalicemos la escritura de un algoritmo, es muy conveniente realizar una ejecucin de prueba para el mismo, empleando datos reales para comprobar que el resultado es el adecuado. En el caso de que obtengamos resultados no esperados, o bien, consideremos que es posible optimizar el proceso de ejecucin del algoritmo, modificaremos las partes que consideremos necesarias para mejorarlo; este proceso se denomina depuracin o refinamiento. Tomando este concepto de depuracin, y aplicndolo al anterior algoritmo para escuchar un CD, podramos refinar el proceso aadiendo los elementos adicionales que se muestran en el Cdigo fuente 3.

1. Inicio 2. Tomar un CD 3. Pulsar el botn de encendido del reproductor 4. Abrir la bandeja del reproductor 5. Introducir el CD en la bandeja 6. Cerrar la bandeja 7. Ajustar el volumen 8. Pulsar el botn de comienzo 9. Escuchar la msica 10. Fin Cdigo fuente 3

De esta manera tenemos en cuenta otros factores como el hecho de que el reproductor pueda estar apagado o el volumen de reproduccin no sea el adecuado. Una vez que hemos realizado el anlisis del algoritmo, necesitamos un elemento que nos permita representarlo. Si bien no existe una tcnica nica para la representacin de algoritmos, disponemos de algunas que, dadas sus caractersticas, nos facilitan dicha tarea, por lo que son mayormente utilizadas. Entre los medios para la creacin de algoritmos, tenemos los diagramas de flujo, el pseudocdigo, y los diagramas Nassi-Schneiderman.

19

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Diagramas de flujoUn diagrama de flujo consiste en una representacin grfica, basada en smbolos, de los pasos que debe realizar un algoritmo. Estos smbolos pueden clasificarse, de mayor a menor importancia, en: Bsicos. o Terminador. Indica el principio o fin de un algoritmo, o bien una pausa. Ver Figura 1.

Figura 1. Terminador.

o

Datos. Contiene informacin de entrada o salida, que ser utilizada por el algoritmo para obtener un resultado. Ver Figura 2.

Figura 2. Datos.

o

Proceso. Indica una o ms operaciones a realizar durante la ejecucin del algoritmo. Ver Figura 3.

Figura 3. Proceso.

o

Decisin. Contiene una operacin que da como resultado un valor lgico, en funcin de la cual, el flujo del algoritmo se bifurcar en una determinada direccin. Ver Figura 4.

Figura 4. Decisin.

o

Direccin. Indica el camino seguido por el flujo del algoritmo. Tambin suelen utilizarse lneas simples para conectar smbolos en el diagrama. Ver Figura 5.

20

Grupo EIDOS

1. Programacin y diseo de algoritmos

Figura 5. Direccin.

Principales. o Decisin mltiple. Variante del smbolo de decisin, en la que el resultado de la operacin que contiene puede ser uno de varios posibles, en lugar del simple verdadero o falso de la decisin sencilla. Ver Figura 6.

Figura 6. Decisin mltiple.

o

Conectores. Unen dos puntos de un diagrama. El circulo indica una conexin dentro de la misma pgina, y el conector de direccin entre pginas diferentes del diagrama. Ver Figura 7.

Figura 7. Conectores.

o

Rutina. Indica una llamada a un procedimiento que es externo al algoritmo actual. Una vez procesado dicho procedimiento, el flujo del proceso volver a este punto y continuar con el siguiente paso del algoritmo. Ver Figura 8.

Figura 8. Rutina.

Complementarios. o Teclado. Indica una accin de entrada de datos en el algoritmo. Ver Figura 9.

21

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Figura 9. Teclado.

o

Pantalla. Indica una accin de salida de datos en el algoritmo. Ver Figura 10

Figura 10. Pantalla.

o

Impresora. Indica una accin de salida de datos en el algoritmo. Ver Figura 11.

Figura 11. Impresora.

En el proceso de diseo de un diagrama de flujo, se indicarn las operaciones mediante el smbolo correspondiente, introduciendo dentro del smbolo si es necesario, o este lo requiere, una nota con la operacin que va a realizarse. Un algoritmo no sirve nica y exclusivamente para ser aplicado en la resolucin de problemas informticos, es posible emplear algoritmos para resolver los ms variados tipos de problema, incluso tareas simples. Como ejemplo ilustrativo de esta situacin, vamos a mostrar un diagrama con el algoritmo de un problema tan natural como abrir una puerta con una llave. Ver Figura 12. Anteriormente hemos mencionado la depuracin, como la tcnica que nos permite corregir o mejorar el proceso desarrollado por un algoritmo o programa; dicho sistema puede ser aplicado a este algoritmo que acabamos de representar en forma de optimizacin. El anterior ejemplo slo contempla la posibilidad de una llave para abrir la puerta, pero normalmente suele ocurrir que tenemos varias llaves, entre las que hemos de elegir la correcta. Teniendo este aspecto en cuenta, depuremos el anterior algoritmo tal y como se muestra en la Figura 13, de manera que nos sirva para introducir de paso un elemento de decisin.

22

Grupo EIDOS

1. Programacin y diseo de algoritmos

Figura 12. Diagrama de flujo para el algoritmo de abrir una puerta con llave.

Figura 13. Diagrama para el algoritmo de apertura de puerta, incluyendo depuracin.

23

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Operadores e identificadores en los diagramas de flujoDentro de los elementos de un diagrama de flujo, es frecuente la necesidad de realizar operaciones para obtener diversos resultados. En funcin de la accin o partcula de la accin a representar, emplearemos un conjunto de smbolos en mayor o menor medida generalizados, de los cuales pasamos a describir los ms comunes. Cuando necesitemos indicar una operacin aritmtica, emplearemos los siguientes smbolos: + Suma. - Resta. * Multiplicacin. / Divisin. \ Divisin entera. ^ Potenciacin.

Para establecer una comparacin utilizaremos estos smbolos: > Mayor que. >= Mayor o igual que. < Menor que. = = Menor que Menor o igual que Mayor que Mayor o igual que Igual a Distinto de El resultado es Verdadero cuando ExpresinA < ExpresinB ExpresinA ExpresinB ExpresinA >= ExpresinB ExpresinA = ExpresinB ExpresinA ExpresinBTabla 4. Operadores de comparacin.

El resultado es Falso cuando ExpresinA >= ExpresinB ExpresinA > ExpresinB ExpresinA = 100 120 = 220 5 58 ' ' ' ' ' ' devuelve: devuelve: devuelve: devuelve: devuelve: devuelve: True True False False False True Cdigo fuente 67

Comparacin de cadenasPodemos utilizar los operadores de comparacin antes descritos para comparar tambin cadenas de caracteres. La instruccin Option Compare, junto a sus modificadores Binary/Text, nos permite definir el modo en que se realizarn las comparaciones entre expresiones que contengan cadenas. Option Compare Binary. Las comparaciones se realizan en base a los valores binarios internos de los caracteres. Esta es la opcin por defecto. Option Compare Text. Las comparaciones se realizan en base a los valores textuales de los caracteres.

Podemos configurar Option Compare a nivel de proyecto y de fichero de cdigo. En el caso de configurar a nivel de proyecto, deberemos abrir la ventana de propiedades del proyecto, y en su apartado Generar, establecer el valor correspondiente en la lista desplegable. Ver Figura 65.102

Grupo EIDOS

4. Introduccin a los arrays. Operadores

Figura 65. Configuracin de Option Compare.

Si configuramos a nivel de fichero de cdigo, escribiremos esta instruccin en la cabecera del fichero con el modificador oportuno. Consulte el lector el apartado sobre declaracin obligatoria de variables, para un mayor detalle sobre el acceso a esta ventana de propiedades del proyecto. En el Cdigo fuente 68 tenemos un ejemplo de comparacin de cadenas utilizando Option Compare Binary.

Option Compare Binary Module Module1 Sub Main() Dim Resultado As Boolean Resultado Resultado Resultado Resultado End Sub End Module Cdigo fuente 68 = = = = "A" "M" "M" "F" = "a" < "Z" > "m" "f" ' ' ' ' devuelve: devuelve: devuelve: devuelve: False True False True

El motivo de que la comparacin A con a devuelva falso, o de que M no sea mayor que m se debe a que lo que se comparan son los valores binarios, o cdigos que sirven para representar a cada carcter. Por ejemplo, el cdigo de M es 77, mientras que el de m es 109, por lo que al ser este ltimo mayor, la comparacin realizada en el fuente de ejemplo devuelve False.103

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Si a continuacin, cambiamos la configuracin de Option Compare a Text y realizamos las mismas comparaciones, en algunos casos obtendremos resultados diferentes. Ver Cdigo fuente 69.

Option Compare Text Module Module1 Sub Main() Dim Resultado As Boolean Resultado Resultado Resultado Resultado End Sub End Module Cdigo fuente 69 = = = = "A" "M" "M" "F" = "a" < "Z" > "m" "f" ' ' ' ' devuelve: devuelve: devuelve: devuelve: True True False False

En esta ocasin A y a si son iguales, debido a que se comparan sus valores como texto y no como los cdigos internos utilizados para representar los caracteres. De igual forma, se devuelve falso en la expresin que comprueba si F y f son distintos, ya que bajo esta configuracin, ambos caracteres se consideran iguales.

La funcin Asc( )Cuando realizamos comparaciones entre cadenas, basadas en los valores binarios de los caracteres, es til en ocasiones conocer el cdigo de dichos caracteres. Para averiguar cul es el cdigo correspondiente a un determinado carcter, el lenguaje nos proporciona la funcin Asc( ). Esta funcin recibe como parmetro una cadena, y devuelve un valor numrico de tipo Integer, con el cdigo correspondiente al primer carcter de la cadena. El Cdigo fuente 70 nos muestra algunos ejemplos.

Dim CodigoCar As Integer CodigoCar CodigoCar CodigoCar CodigoCar CodigoCar CodigoCar = = = = = = Asc("A") Asc("a") Asc("M") Asc("F") Asc("f") Asc("hola") ' ' ' ' ' ' devuelve: devuelve: devuelve: devuelve: devuelve: devuelve: 65 97 77 70 102 104 Cdigo fuente 70

La funcin Chr( )Si nos encontramos en la situacin inversa a la descrita en el apartado anterior, es decir, tenemos el cdigo de un carcter y queremos saber a cul corresponde, la funcin Chr( ) recibe un nmero como parmetro y devuelve el carcter al que pertenece como un dato de tipo Char, aunque tambin podemos asignar el resultado a una variable String. Veamos unos ejemplos en el Cdigo fuente 71.104

Grupo EIDOS

4. Introduccin a los arrays. Operadores

Dim MiCaracter As Char Dim MiCadena As String MiCaracter MiCaracter MiCadena = MiCadena = = Chr(65) = Chr(70) Chr(77) Chr(102) ' ' ' ' devuelve: devuelve: devuelve: devuelve: "A" "F" "M" "f" Cdigo fuente 71

Comparacin de cadenas en base a un patrn. El operador LikeEl operador Like permite realizar una comparacin entre dos cadenas, en base a un patrn establecido en una de ellas. El formato de uso se muestra en el Cdigo fuente 72.

Resultado = Cadena Like Patrn Cdigo fuente 72

Resultado. Valor lgico con el resultado de la comparacin. Verdadero indica que hay una coincidencia de Cadena con Patrn. Falso indica que no se ha producido coincidencia de Cadena con Patrn. Cadena. Cadena de caracteres que se compara con el patrn de coincidencia. Patrn. Cadena de caracteres en donde se especifican los caracteres especiales que sirven de patrn de coincidencia respecto al valor de Cadena. La Tabla 5 muestra los caracteres y convenciones de uso establecidas por el lenguaje para el uso de patrones de comparacin. Carcter del patrn Coincidencia en la cadena a buscar ? * # [ListaCaracteres] [!ListaCaracteres] Cualquier nico carcter Varios caracteres o ninguno Cualquier nico nmero Cualquier nico carcter que se encuentre dentro de la lista. Cualquier nico carcter que no se encuentre dentro de la listaTabla 5. Caracteres patrn del operador Like.

Debemos tener en cuenta que los resultados obtenidos en expresiones que utilicen este operador estarn condicionadas por la configuracin establecida mediante Option Compare. Revise el lector el apartado sobre comparacin de cadenas en donde se describe esta instruccin.

105

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Cuando utilicemos los corchetes para establecer una lista de caracteres a comparar, debemos emplear el guin ( - ) como separador de rangos. Si necesitamos que alguno de los caracteres patrn estn entre los que vamos a buscar, debemos encerrarlo entre corchetes. El Cdigo fuente 73 muestra algunos ejemplos de uso de este operador.

' ejemplos con el operador Like Dim Resultado As Boolean ' -------------------------------' patrn ? ' devuelve True - El patrn coincide con la cadena ' al hacer la sustitucin de un carcter Resultado = "HOLA" Like "HO?A" ' devuelve True - El patrn coincide con la cadena ' al hacer la sustitucin de dos caracteres Resultado = "MONITOR" Like "MO?ITO?" ' devuelve False - El patrn no coincide con la cadena ' al hacer la sustitucin de un carcter Resultado = "ROEDOR" Like "R?DEO" ' -------------------------------' patrn * ' devuelve True - El patrn coincide con la cadena ' al hacer la sustitucin de varios caracteres con ' espacio en blanco a ambos lados Resultado = "La gran llanura" Like "La * llanura" ' devuelve True - El patrn coincide con la cadena ' al hacer la sustitucin de dos grupos de caracteres Resultado = "La gran llanura" Like "La*llanu*" ' devuelve False - El patrn no coincide con la cadena ' al hacer la sustitucin de un grupo de caracteres , ' puesto que en el patrn falta una palabra que s ' se halla en la cadena Resultado = "La gran llanura" Like "La llanu*" ' -------------------------------' patrn # ' devuelve True - El patrn coincide con la cadena ' al hacer la sustitucin de dos nmeros Resultado = "Ha ganado 128 millones" Like "Ha ganado ##8 millones" ' devuelve False - El patrn no coincide con la cadena, ' ya que en el patrn se especifican ms dgitos de los ' existentes en la cadena Resultado = "Ha ganado 128 millones" Like "Ha ganado ###8 millones" ' devuelve False - El patrn no coincide con la cadena, ' ya que en el patrn se utilizan caracteres de sustitucin ' de dgitos incorrectamente Resultado = "Ha ganado 128 millones" Like "Ha ganado 128 ##llones" ' -------------------------------' patrn [Lista] ' devuelve True - El carcter de la cadena se encuentra ' dentro del rango en la lista del patrn Resultado = "H" Like "[A-M]"

106

Grupo EIDOS

4. Introduccin a los arrays. Operadores

' devuelve False - El carcter de la cadena no se encuentra ' dentro del rango en la lista del patrn Resultado = "h" Like "[A-M]" ' devuelve True - El carcter de la cadena se encuentra ' dentro del rango en la lista del patrn Resultado = "h" Like "[a-m]" ' devuelve True - El carcter de la cadena no se encuentra ' dentro del rango en la lista del patrn Resultado = "D" Like "[!P-W]" ' devuelve False - El carcter de la cadena se encuentra ' dentro del rango en la lista del patrn Resultado = "R" Like "[!P-W]" ' -------------------------------' combinacin de varios caracteres patrn ' devuelve True - Todas las sustituciones del patrn son correctas Resultado = "Faltan 48 horas para llegar a destino" Like _ "Fal* ## * para ll[a-g]gar ? des*" ' devuelve False - Las sustituciones de caracteres nmericos son incorrectas Resultado = "Faltan 48 horas para llegar a destino" Like _ "Fal## * para ll[a-g]gar ? des*" ' -------------------------------' comparacin utilizando caracteres patrn ' dentro de la expresin ' devuelve True - El carcter de cierre de interrogacin ' se sustituye correctamente al encerrarse entre corchetes Resultado = "Ha llegado Ana?, bienvenida" Like "Ha*Ana[?], bienvenida" ' -------------------------------' comparacin de dos cadenas vacas ' devuelve True Resultado = "" Like "" Cdigo fuente 73

Comparacin de objetos. El operador IsEl operador Is permite comparar si dos variables que contienen objetos apuntan o no a la misma referencia o instancia del objeto. Para conceptos bsicos sobre objetos, consulte el lector los temas dedicados a la programacin orientada a objetos en este mismo texto. El Cdigo fuente 74 muestra el formato de uso para este operador.

Resultado = ObjetoA Is ObjetoB Cdigo fuente 74

107

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

Para probar este operador podemos crear una aplicacin de tipo Windows y aadir un mdulo en el que escribiramos un procedimiento Main( ). Despus de configurar el proyecto para que se inicie por este procedimiento, escribiremos las lneas que se muestran en el Cdigo fuente 75.

Public Sub Main() ' declarar dos variables que ' contendran objetos de la clase Form Dim VentanaUno As Form Dim VentanaDos As Form Dim Resultado As Boolean ' crear dos instancias de la clase Form ' asignando cada uno de los objetos ' a las variables VentanaUno = New Form() VentanaDos = New Form() ' la expresin de comparacin con Is devuelve ' False ya que las variables tienen referencias ' a objetos diferentes, aunque sean de la misma clase Resultado = VentanaUno Is VentanaDos End Sub Cdigo fuente 75

Como hemos podido comprobar, al comparar las variables del anterior fuente con Is, el resultado es False, ya que ambos objetos son instancias diferentes, aunque pertenezcan a la misma clase: Form. La creacin de formularios ser abordada en un tema posterior. Si por el contrario, creamos una nica instancia de un objeto y la asignamos a las dos variables, el resultado ser muy diferente. En este caso el operador Is devolver True ya que ambas variables contienen el mismo objeto. Ver Cdigo fuente 76.

Public Sub Main() ' declarar dos variables que ' contendran objetos de la clase Form Dim VentanaUno As Form Dim VentanaDos As Form Dim Resultado As Boolean ' crear una nica instancia de la clase Form, ' el objeto resultante se asigna a una variable VentanaUno = New Form() ' despus el mismo objeto que ya est ' en una variable se asigna a la otra variable VentanaDos = VentanaUno ' ambas variables contienen una referencia ' al mismo objeto, por lo que la expresin ' de comparacin Is devuelve True Resultado = VentanaUno Is VentanaDos End Sub Cdigo fuente 76

108

Grupo EIDOS

4. Introduccin a los arrays. Operadores

Operadores lgicos y a nivel de bitLos operadores lgicos devuelven un valor de tipo Boolean (True o False), en base a una condicin establecida entre los operandos de la expresin. En expresiones que impliquen el uso de operadores lgicos, es habitual que los operandos sean a su vez expresiones, como veremos en los prximos ejemplos con este tipo de operadores. El Cdigo fuente 77 muestra el formato de uso para estos operadores.

Resultado = ExpresinA OperadorLogico ExpresinB Cdigo fuente 77

Cuando los operandos que forman parte de la expresin son numricos, la evaluacin de la expresin se realiza a nivel de bit, es decir, comparando los bits de las posiciones equivalentes de ambos nmeros y obteniendo igualmente, un valor numrico como resultado.

AndA nivel lgico, este operador realiza una conjuncin entre dos expresiones. La Tabla 6 muestra los diferentes resultados obtenidos con el uso de este operador en funcin de los valores que tengan sus expresiones. Cuando la devuelve True True False False ExpresinA Y la ExpresinB El resultado es devuelve True False True False True False False False

Tabla 6. Tabla de valores lgicos del operador And.

El Cdigo fuente 78 muestra algunos ejemplos a nivel lgico con este operador.

Dim Resultado As Boolean Resultado Resultado Resultado Resultado = = = = 58 > 20 And "H" = "H" "H" = "H" And 720 < 150 8 8 And 62 < 115 "W" > "b" And "Q" = "R" ' ' ' ' devuelve: devuelve: devuelve: devuelve: True False False False

Cdigo fuente 78

109

Fundamentos de programacin con Visual Basic .NET

Grupo EIDOS

A nivel de bit, And realiza las operaciones mostradas en la Tabla 7. Cuando el bit de ExpresinA es 0 0 1 1 Y el bit de ExpresinB