CONTENIDO

 

PRÓLOGO.................................................................................................. XXIII

PARTE 1. PROGRAMACIÓN BÁSICA.............................     1

CAPÍTULO 1. FASES EN EL DESARROLLO DE UN PROGRAMA..... 3

QUÉ ES UN PROGRAMA..... 3

LENGUAJES DE PROGRAMACIÓN..... 4

Compiladores.. 6

Intérpretes.. 6

QUÉ ES Visual Basic .NET.... 7

¿POR QUÉ APRENDER Visual Basic?... 8

REALIZACIÓN DE UN PROGRAMA EN Visual Basic... 8

Cómo crear un programa... 9

Interfaz de línea de órdenes.. 9

¿Qué hace este programa?... 10

Guardar el programa escrito en el disco... 11

Compilar y ejecutar el programa... 11

Biblioteca de clases.. 14

Guardar el programa ejecutable en el disco... 14

Depurar un programa... 15

Entornos de desarrollo integrado... 15

EJERCICIOS RESUELTOS... 15

EJERCICIOS PROPUESTOS... 17

 

CAPÍTULO 2. INTRODUCCIÓN A Visual Basic .NET.... 19

DECLARACIÓN DE UNA VARIABLE.... 19

ASIGNAR VALORES... 22

AÑADIR COMENTARIOS... 24

MOSTRAR DATOS POR LA PANTALLA..... 24

EXPRESIONES ARITMÉTICAS... 25

EXPRESIONES CONDICIONALES... 27

ESCRIBIR NUESTROS PROPIOS PROCEDIMIENTOS... 29

EJERCICIOS PROPUESTOS... 31

 

CAPÍTULO 3. INTRODUCCIÓN A LA POO..... 33

PENSAR EN OBJETOS... 34

Clases y objetos.. 34

Mensajes y métodos.. 35

DISEÑO DE UNA CLASE DE OBJETOS... 36

Atributos.. 37

Propiedades y métodos.. 38

CONSTRUCTORES... 45

HERENCIA..... 47

EJERCICIOS RESUELTOS... 54

EJERCICIOS PROPUESTOS... 59

 

CAPÍTULO 4. ELEMENTOS DEL LENGUAJE.... 61

CARACTERES DE Visual Basic... 61

TIPOS... 62

LITERALES... 64

Literales enteros.. 64

Literales reales.. 65

Literales de un solo carácter.. 65

Literales de cadenas de caracteres.. 66

Literales de fecha y hora... 66

Literal Nothing... 67

IDENTIFICADORES... 68

PALABRAS CLAVE.... 68

DECLARACIÓN DE CONSTANTES SIMBÓLICAS... 69

¿Por qué utilizar constantes?... 70

VARIABLES... 70

CONVERSIÓN ENTRE TIPOS PRIMITIVOS... 72

OPERADORES... 74

Operadores lógicos.. 74

Operadores unitarios.. 75

Operadores a nivel de bits.. 76

Operadores de asignación... 77

Operador de concatenación... 77

PRIORIDAD Y ORDEN DE EVALUACIÓN..... 78

EJERCICIOS RESUELTOS... 79

EJERCICIOS PROPUESTOS... 81

 

CAPÍTULO 5. ESTRUCTURA DE UN PROGRAMA.... 83

ESTRUCTURA DE UN PROGRAMA Visual Basic... 83

Espacios de nombres.. 87

Protección de una clase... 90

Sentencias Option... 91

Sentencia Imports.. 91

Especificación de alias.. 92

Definiciones y declaraciones.. 93

Sentencia simple... 93

Sentencia compuesta o bloque... 94

Procedimientos.. 94

Definición de un procedimiento... 94

Procedimiento Main... 95

Crear objetos de una clase... 96

Cómo acceder a los miembros de un objeto... 97

Protección de los miembros de una clase... 98

Miembro de un objeto o de una clase... 99

Clases versus módulos estándar.. 102

Referencias a objetos.. 102

Pasando argumentos a los métodos.. 105

EJERCICIOS RESUELTOS... 106

EJERCICIOS PROPUESTOS... 109

 

CAPÍTULO 6. CLASES DE USO COMÚN..... 111

ENTRADA Y SALIDA..... 111

Flujos de entrada... 113

Flujos de salida... 115

Salida con formato... 117

Excepciones.. 118

Trabajar con tipos de datos numéricos.. 120

Estructuras que encapsulan los tipos primitivos.. 120

Conversión entre tipos valor y tipos referencia... 123

Clase Leer.. 124

¿DÓNDE SE UBICAN LAS CLASES QUE DAN SOPORTE?... 126

CARÁCTER FIN DE FICHERO..... 127

CARACTERES CR+LF... 128

OTROS MÉTODOS DE LA CLASE Console... 130

Controlar la posición y los colores del texto... 131

Dimensiones de la ventana de la consola... 132

Detección de las pulsaciones del teclado... 132

MÉTODOS MATEMÁTICOS... 133

NÚMEROS ALEATORIOS... 135

EJERCICIOS RESUELTOS... 135

EJERCICIOS PROPUESTOS... 139

 

CAPÍTULO 7. SENTENCIAS DE CONTROL.... 141

SENTENCIA If.. 141

ANIDAMIENTO DE SENTENCIAS If.. 143

ESTRUCTURA Else If.. 146

SENTENCIA Select. 148

SENTENCIA While... 152

Bucles anidados.. 154

SENTENCIA Do ... Loop While... 156

SENTENCIA For.. 159

SENTENCIA For Each... 163

SENTENCIA Continue... 163

SENTENCIA GoTo... 164

SENTENCIAS Try ... Catch... 165

EJERCICIOS RESUELTOS... 166

EJERCICIOS PROPUESTOS... 171

 

CAPÍTULO 8. MATRICES... 173

INTRODUCCIÓN A LAS MATRICES... 174

MATRICES NUMÉRICAS UNIDIMENSIONALES... 175

Declarar una matriz.. 175

Crear una matriz.. 176

Iniciar una matriz.. 177

Acceder a los elementos de una matriz.. 178

Tamaño y dimensión de una matriz.. 179

Métodos de una matriz.. 179

Trabajar con matrices unidimensionales.. 180

Matriz de tipo ArrayList. 181

Añadir un elemento... 182

Insertar un elemento... 182

Modificar un elemento... 183

Obtener el valor de un elemento... 183

Tamaño... 183

Eliminar elementos.. 183

Buscar elementos.. 183

Copiar listas.. 183

Iteradores.. 184

Ejemplo... 184

Matrices asociativas.. 187

Diccionario... 189

CADENAS DE CARACTERES... 192

Clase String... 194

New(cad() As Char).. 195

ToString().. 195

CopyTo(IndFuente As Integer, destino() As Char,. 196

IndDes As Integer, nCars As Integer).. 196

Concat(str1 As String, str2 As String).. 196

CompareTo(otroString As String).. 196

Length... 198

ToLower().. 198

ToUpper().. 198

Trim().. 198

StartsWith(prefijo As String).. 198

EndsWith(sufijo As String).. 198

Substring(pos As Integer, ncars As Integer).. 199

Chars(i As Integer).. 199

IndexOf(str As String).. 199

IndexOfAny(cad() As Char).. 199

Replace(str As String, nuevaStr As String).. 200

Insert(pos As Integer, str As String).. 200

Split(seps() As Char).. 200

Clase StringBuilder.. 200

New([arg]).. 200

Length... 201

Capacity... 201

Append(x As tipo).. 201

Insert(índice As Integer, x As tipo).. 201

Remove(p As Integer, n As Integer).. 202

Replace(str As String, nuevaStr As String, p As Integer, n As Integer). 202

Chars(i As Integer).. 202

ToString().. 203

MATRICES MULTIDIMENSIONALES Y DE REFERENCIAS... 203

Matrices numéricas.. 204

Matrices de cadenas de caracteres.. 210

Matrices de objetos String o StringBuilder.. 211

SENTENCIA For Each... 214

EJERCICIOS RESUELTOS... 214

EJERCICIOS PROPUESTOS... 219

 

CAPÍTULO 9. MÁS SOBRE PROCEDIMIENTOS Y COLECCIONES... 223

PASAR UNA MATRIZ COMO ARGUMENTO A UN PROCEDIMIENTO.... 223

PROCEDIMIENTO QUE RETORNA UNA MATRIZ.... 225

PASAR UN ARGUMENTO DE UN TIPO PRIMITIVO.... 228

PASAR TIPOS REFERENCIA POR REFERENCIA..... 229

PASAR ARGUMENTOS EN LA LÍNEA DE ÓRDENES... 231

PROCEDIMIENTOS RECURSIVOS... 234

PROCEDIMIENTOS SOBRECARGADOS... 236

NÚMERO VARIABLE DE PARÁMETROS... 237

LA CLASE Object. 239

Equals(Object obj).. 240

ToString().. 241

Finalize().. 241

GetHashCode().. 241

MÁS SOBRE REFERENCIAS Y OBJETOS String... 242

LA CLASE Array... 245

Clear.. 245

Sort. 245

BinarySearch... 246

Reverse... 247

COLECCIONES... 247

Crear una colección... 247

Colecciones predefinidas.. 249

Colecciones genéricas.. 249

EJERCICIOS RESUELTOS... 251

EJERCICIOS PROPUESTOS... 255

 

PARTE 2. MECANISMOS DE ABSTRACCIÓN............... 259

CAPÍTULO 10. CLASES, ESPACIOS DE NOMBRES Y ESTRUCTURAS... 261

DEFINICIÓN DE UNA CLASE.... 261

Atributos.. 263

Métodos de una clase... 264

Propiedades.. 265

Control de acceso a los miembros de la clase... 266

Acceso público... 268

Acceso privado... 268

Acceso protegido... 268

Acceso interno... 268

IMPLEMENTACIÓN DE UNA CLASE.... 269

MÉTODOS SOBRECARGADOS... 272

NÚMERO VARIABLE DE PARÁMETROS... 274

IMPLEMENTACIÓN DE UNA APLICACIÓN..... 275

CONTROL DE ACCESO A UNA CLASE.... 276

REFERENCIA Me... 277

INICIACIÓN DE UN OBJETO..... 278

Constructor.. 280

Sobrecarga del constructor.. 282

Llamar a un constructor.. 284

Asignación de objetos.. 284

Constructor copia... 286

DESTRUCCIÓN DE OBJETOS... 287

Destructor.. 287

Sentencia Using... 289

Ejecutar el recolector de basura... 290

REFERENCIAS COMO MIEMBROS DE UNA CLASE.... 291

REDEFINIR MÉTODOS HEREDADOS DE Object. 298

Método Equals.. 299

MIEMBROS SHARED DE UNA CLASE.... 300

Atributos Shared... 300

Acceder a los atributos Shared... 302

Métodos Shared... 303

DECLARACIONES PARCIALES... 305

CLASES ANIDADAS... 307

DELEGADOS... 308

Multidifusión... 311

MATRICES DE OBJETOS... 312

ESPACIO DE NOMBRES... 321

Utilizar espacios de nombres.. 322

Espacio de nombres global. 323

ESTRUCTURAS... 324

EJERCICIOS RESUELTOS... 325

EJERCICIOS PROPUESTOS... 332

 

CAPÍTULO 11. OPERADORES SOBRECARGADOS... 337

SOBRECARGAR UN OPERADOR.... 337

UNA CLASE PARA NÚMEROS RACIONALES... 343

SOBRECARGA DE OPERADORES BINARIOS... 345

Sobrecarga de operadores asignación... 345

Sobrecarga de operadores aritméticos. . 346

Aritmética mixta... 347

Sobrecarga de operadores de relación... 348

Métodos adicionales.. 349

SOBRECARGA DE OPERADORES UNARIOS... 351

Operadores unarios/binarios.. 352

CONVERSIONES PERSONALIZADAS... 352

Conversiones implícitas.. 354

Conversiones explícitas.. 354

INDEXACIÓN..... 355

EJERCICIOS RESUELTOS... 358

EJERCICIOS PROPUESTOS... 365

 

CAPÍTULO 12. CLASES DERIVADAS E INTERFACES... 367

CLASES DERIVADAS Y HERENCIA..... 368

DEFINIR UNA CLASE DERIVADA..... 371

Control de acceso a los miembros de las clases.. 373

Qué miembros hereda una clase derivada... 374

ATRIBUTOS CON EL MISMO NOMBRE.... 379

REDEFINIR MÉTODOS DE LA CLASE BASE.... 380

CONSTRUCTORES DE LAS CLASES DERIVADAS... 382

COPIA DE OBJETOS... 385

DESTRUCTORES DE LAS CLASES DERIVADAS... 387

JERARQUÍA DE CLASES... 388

REFERENCIAS A OBJETOS DE UNA CLASE DERIVADA..... 395

Conversiones implícitas.. 396

Conversiones explícitas.. 398

INFORMACIÓN DE TIPOS DURANTE LA EJECUCIÓN..... 399

MÉTODOS VIRTUALES... 399

Constructores virtuales.. 405

Destructores virtuales.. 408

POLIMORFISMO..... 408

MÉTODOS EN LÍNEA.... 417

CLASES Y MÉTODOS ABSTRACTOS... 418

CLASES Y MÉTODOS FINALES... 420

INTERFACES... 420

Definir una interfaz.. 420

Un ejemplo: la interfaz IFecha... 421

Utilizar una interfaz.. 422

Clase abstracta frente a interfaz.. 425

Utilizar una interfaz como un tipo... 426

Interfaces frente a herencia múltiple... 428

Para qué sirve una interfaz.. 428

Implementar múltiples interfaces.. 429

EJERCICIOS RESUELTOS... 429

EJERCICIOS PROPUESTOS... 433

 

CAPÍTULO 13. TIPOS Y MÉTODOS GENÉRICOS... 435

DEFINICIÓN DE CLASES GENÉRICAS... 436

Valor predeterminado para una variable de tipo T.... 438

Parámetros de tipos genéricos.. 439

Herencia... 440

MÉTODOS GENÉRICOS... 441

DELEGADOS GENÉRICOS... 443

Delegado genérico Predicate... 445

EJERCICIOS RESUELTOS... 446

EJERCICIOS PROPUESTOS... 448

 

CAPÍTULO 14. EXCEPCIONES... 451

EXCEPCIONES DE Visual Basic... 452

MANEJAR EXCEPCIONES... 454

Lanzar una excepción... 455

Capturar una excepción... 455

Excepciones derivadas.. 457

Capturar cualquier excepción... 458

Relanzar una excepción... 459

BLOQUE DE FINALIZACIÓN..... 459

CREAR EXCEPCIONES... 461

FLUJO DE EJECUCIÓN..... 463

CUÁNDO UTILIZAR EXCEPCIONES Y CUÁNDO NO..... 466

EJERCICIOS RESUELTOS... 466

EJERCICIOS PROPUESTOS... 472

 

CAPÍTULO 15. FLUJOS... 473

VISIÓN GENERAL DE LOS FLUJOS DE E/S... 475

ABRIENDO FICHEROS PARA ACCESO SECUENCIAL.... 476

Flujos de bytes.. 476

FileStream..... 476

Flujos de caracteres.. 482

StreamWriter.. 482

StreamReader.. 484

Clases File, Directory y Path... 485

Flujos de datos de tipos primitivos.. 487

BinaryWriter.. 488

BinaryReader.. 489

Un ejemplo de acceso secuencial. 491

Escribir en un fichero... 491

Leer de un fichero... 494

ABRIENDO FICHEROS PARA ACCESO ALEATORIO..... 496

Propiedades y métodos para acceso aleatorio... 496

Position... 496

Length... 497

Seek... 497

La clase CPersona... 499

La clase CListaTfnos.. 500

Constructor de CListaTfnos.. 501

Escribir un registro en el fichero... 503

Añadir un registro al final del fichero... 504

Leer un registro del fichero... 504

Eliminar un registro del fichero... 505

¿Hay registros marcados para eliminar?... 506

Buscar un registro en el fichero... 506

Un ejemplo de acceso aleatorio a un fichero... 507

Modificar un registro... 509

Actualizar el fichero... 510

UTILIZACIÓN DE DISPOSITIVOS ESTÁNDAR.... 511

SERIACIÓN DE OBJETOS... 516

EJERCICIOS RESUELTOS... 518

EJERCICIOS PROPUESTOS

 

... 524

PARTE 3. DISEÑO Y PROGRAMACIÓN......................... 527

CAPÍTULO 16. ESTRUCTURAS DINÁMICAS... 529

LISTAS LINEALES... 530

Listas lineales simplemente enlazadas.. 530

Operaciones básicas.. 533

Inserción de un elemento al comienzo de la lista... 534

Buscar en una lista un elemento con un valor x... 536

Inserción de un elemento en general. 536

Borrar un elemento de la lista... 537

Recorrer una lista... 538

Borrar todos los elementos de una lista... 538

UNA CLASE PARA LISTAS LINEALES... 539

Clase genérica para listas lineales.. 543

Alternativas al método Obtener.. 553

LISTAS CIRCULARES... 554

Clase CListaCircularSE(Of T).. 555

PILAS... 559

COLAS... 561

EJEMPLO..... 562

LISTA DOBLEMENTE ENLAZADA..... 564

Lista circular doblemente enlazada... 565

Clase CListaCircularDE(Of T).. 566

Ejemplo... 571

ÁRBOLES... 573

Árboles binarios.. 574

Formas de recorrer un árbol binario... 575

ÁRBOLES BINARIOS DE BÚSQUEDA..... 577

Clase CArbolBinB(Of T).. 578

Buscar un nodo en el árbol. 581

Insertar un nodo en el árbol. 582

Borrar un nodo del árbol. 583

Utilización de la clase CArbolBinB(Of T).. 586

ÁRBOLES BINARIOS PERFECTAMENTE EQUILIBRADOS... 589

Clase CArbolBinE(Of T).. 590

Utilización de la clase CArbolBinE(Of T).. 595

EJERCICIOS RESUELTOS... 597

EJERCICIOS PROPUESTOS... 611

 

CAPÍTULO 17. ALGORITMOS... 615

RECURSIVIDAD..... 615

ORDENACIÓN DE DATOS... 622

Método de la burbuja... 623

Método de inserción... 625

Método quicksort. 627

Comparación de los métodos expuestos.. 631

BÚSQUEDA DE DATOS... 631

Búsqueda secuencial. 631

Búsqueda binaria... 631

Búsqueda de cadenas.. 633

ORDENACIÓN DE FICHEROS EN DISCO..... 636

Ordenación de ficheros. Acceso secuencial. 636

Ordenación de ficheros. Acceso aleatorio... 643

ALGORITMOS HASH..... 646

Matrices hash... 646

Método hash abierto... 648

Método hash con desbordamiento... 649

Eliminación de elementos.. 650

Clase CHashAbierto... 650

Un ejemplo de una matriz hash... 654

EJERCICIOS RESUELTOS... 657

EJERCICIOS PROPUESTOS... 661

 

CAPÍTULO 18. HILOS... 663

CONCEPTO DE PROCESO..... 663

HILOS... 668

Estados de un hilo... 670

Cuándo se debe crear un hilo... 671

PROGRAMAR CON HILOS... 671

Clase Thread... 672

Resumen de los métodos y propiedades de Thread... 672

CREACIÓN Y DESTRUCCIÓN DE HILOS... 673

Parámetros del método que ejecuta el hilo... 676

Un ejemplo... 677

Espera activa y pasiva... 681

Finalizar un hilo... 681

Hilos en segundo plano... 684

Ciclo de vida de un hilo... 685

Preparado... 686

Bloqueado... 687

Dormido... 687

Esperando... 688

SINCRONIZACIÓN DE HILOS... 689

Mecanismos de sincronización. . 689

Objetos de sincronización... 690

Secciones críticas.. 692

Ejemplo que implementa una sección crítica... 694

Exclusión mutua... 698

Monitor reentrante... 700

Utilizar Wait y Pulse/PulseAll. 701

¿Por qué los métodos Almacenar y Obtener utilizan un bucle?... 708

Objeto Mutex... 709

Objeto Semaphore... 711

Problema del productor-consumidor.. 712

Controladores de espera... 718

Detener un hilo de forma controlada... 723

Interbloqueo... 725

GRUPO DE HILOS... 725

PLANIFICACIÓN DE HILOS... 726

Asignar prioridades a los hilos.. 727

EJERCICIOS RESUELTOS... 731

EJERCICIOS PROPUESTOS... 737

 

CAPÍTULO 19. INTERFACES GRÁFICAS Y APLICACIONES PARA INTERNET.... 739

INTERFACES GRÁFICAS... 740

Crear un nuevo proyecto... 741

El formulario... 745

Dibujar los controles.. 746

Borrar un control. 750

Propiedades de los objetos.. 751

Bloquear la posición de todos los controles.. 753

Icono de la aplicación... 753

Escribir los controladores de eventos.. 753

Guardar la aplicación... 756

Verificar la aplicación... 756

Propiedades del proyecto... 758

Crear soluciones de varios proyectos.. 759

ADO.NET.... 760

Componentes de ADO.NET.... 761

ACCEDER A LA WEB.... 762

Crear un nuevo formulario Web... 762

Agregar controles y texto a la página... 765

Ciclo de vida de una página... 767

Crear controladores de eventos para los controles.. 768

Generar la aplicación Web y ejecutarla... 771

 

PARTE 4. APÉNDICES....................................................... 773

A. ENTORNOS DE DESARROLLO..... 775

VISUAL STUDIO 2005... 775

Ediciones Visual Studio 2005 Express.. 775

Visual Studio 2005 Standard Edition... 776

Visual Studio 2005 Professional Edition... 776

Visual Studio 2005 Tools para Microsoft Office System..... 776

Visual Studio 2005 Team System..... 776

APLICACIÓN DE CONSOLA..... 777

DEPURAR UNA APLICACIÓN..... 780

ARGUMENTOS EN LA LÍNEA DE ÓRDENES... 781

VISUAL WEB DEVELOPER.... 782

 

B. .NET PARA LINUX.... 783

INSTALACIÓN DE MONO..... 784

EJECUTAR UN PROGRAMA Visual Basic... 784

ENTORNO DE DESARROLLO DE MONO..... 785

 

C. CÓDIGOS DE CARACTERES... 787

UTILIZACIÓN DE CARACTERES ANSI CON WINDOWS... 787

JUEGO DE CARACTERES ANSI.. 788

UTILIZACIÓN DE CARACTERES ASCII.. 789

JUEGO DE CARACTERES ASCII.. 790

JUEGO DE CARACTERES UNICODE.... 791

 

ÍNDICE.......................................................................................................... 793