26.11.2012 Views

Visual Basic .NET - Universidad de Castilla-La Mancha

Visual Basic .NET - Universidad de Castilla-La Mancha

Visual Basic .NET - Universidad de Castilla-La Mancha

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Programación Programaci n con<br />

<strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong><br />

2 – El Lenguaje <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong><br />

Francisco Ruiz<br />

Manuel Ángel ngel Serrano<br />

Escuela Superior <strong>de</strong> Informática<br />

Inform tica<br />

<strong>Universidad</strong> <strong>de</strong> <strong>Castilla</strong>-<strong>La</strong> <strong>Castilla</strong> <strong>La</strong> <strong>Mancha</strong><br />

Programación Programaci n con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong><br />

Contenidos sesión sesi n 2<br />

• Aplicaciones <strong>de</strong> consola<br />

• Conceptos básicos b sicos<br />

�� Estructura <strong>de</strong> una Aplicación Aplicaci n<br />

�� Variables y constantes<br />

�� Arrays<br />

�� Depuración Depuraci n <strong>de</strong> Código C digo<br />

�� Operadores<br />

�� Funciones pre<strong>de</strong>finidas<br />

�� Sentencias y líneas l neas múltiples m ltiples<br />

• Procedimientos<br />

�� Tipos<br />

�� Sub<br />

�� Function<br />

�� Paso <strong>de</strong> parámetros<br />

par metros<br />

�� Sobrecarga<br />

• Estructuras <strong>de</strong> control<br />

�� Selección Selecci<br />

�� Repetición Repetici<br />

• Ámbito mbito<br />

�� De procedimientos<br />

�� De variables<br />

�� Vida <strong>de</strong> las variables<br />

• Organización Organizaci n <strong>de</strong>l código c digo<br />

�� Contenedores <strong>de</strong> código c digo<br />

�� Opciones <strong>de</strong>l VS.<strong>NET</strong><br />

• Control <strong>de</strong> errores<br />

• Práctica Pr ctica 1<br />

�� Resolver ecuación ecuaci n 2do grado<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 2


Aplicaciones <strong>de</strong> consola (i)<br />

• Se ejecutan <strong>de</strong>ntro <strong>de</strong> una ventana <strong>de</strong> línea l nea <strong>de</strong> comandos (estilo<br />

DOS).<br />

• Clase Console. Console<br />

�� Clase preconstruida <strong>de</strong>l namespaces System. System<br />

�� No es necesario crear una instancia previa.<br />

�� Métodos: todos:<br />

�� WriteLine: WriteLine:<br />

Escribir línea. l nea.<br />

– Textos, números, n meros, expresiones,<br />

Console.WriteLine(“Hola<br />

Console.WriteLine Hola “ & nombre)<br />

Console.WriteLine(5>2)<br />

Console.WriteLine(5>2)<br />

– Uso <strong>de</strong> parámetros<br />

par metros<br />

Nombre=“Luis<br />

Nombre= Luis”<br />

Console.WriteLine(“Hola Console.WriteLine Hola {0}, que tal?”, tal? , Nombre)<br />

�� Write: Write:<br />

Escribir sin salto <strong>de</strong> línea. l nea.<br />

�� Readline: Readline:<br />

Leer texto tecleado.<br />

– Sirve para esperar hasta que usuario pulsa INTRO.<br />

�� Read: Read:<br />

leer una tecla o carácter car cter tecleado.<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 3<br />

Aplicaciones <strong>de</strong> consola (ii)<br />

• Ejemplo: Mostrar código c digo y carácter car cter <strong>de</strong> las teclas<br />

pulsadas acabando al pulsar INTRO<br />

Dim CodTecla as Integer<br />

Dim NomTecla as String<br />

Console.WriteLine(“Pulsar Console.WriteLine Pulsar teclas, acabar con INTRO”) INTRO<br />

Console.WriteLine()<br />

Console.WriteLine()<br />

‘ escribe línea l nea en blanco<br />

While True<br />

CodTecla=Console.Read<br />

CodTecla Console.Read() () ‘ lee una tecla pulsada<br />

If CodTecla=13<br />

CodTecla=13<br />

then ‘ si pulsado INTRO<br />

Exit While<br />

End If<br />

Console.WriteLine(“código Console.WriteLine digo <strong>de</strong> tecla: {0}”, {0} , CodTecla)<br />

CodTecla<br />

NomTecla=Chr(CodTecla<br />

NomTecla Chr(CodTecla)<br />

ConsoleWriteLine (“car carácter cter <strong>de</strong> tecla: {0}”, {0} , NomTecla)<br />

NomTecla<br />

End While<br />

Console.WriteLine(“Ejemplo Console.WriteLine Ejemplo acabado”)<br />

acabado<br />

Console.ReadLine()<br />

Console.ReadLine()<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 4


Conceptos básicos b sicos <strong>de</strong> VB.<strong>NET</strong><br />

Estructura <strong>de</strong> una aplicación aplicaci<br />

Proyecto: Proyecto:<br />

ficheros <strong>de</strong> código, c digo, recursos y<br />

referencias a clases globales<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 5<br />

Conceptos básicos b sicos <strong>de</strong> VB.<strong>NET</strong><br />

Variables y constantes (i)<br />

• Declaración Declaraci n <strong>de</strong> Variables: Variables<br />

Dim MiVar As Integer<br />

�� Al comienzo <strong>de</strong>l procedimiento<br />

�� Tipos en VB.<strong>NET</strong> (equivalentes (equivalentes en en .<strong>NET</strong> .<strong>NET</strong> Framework))<br />

Framework<br />

�� Boolean, Boolean,<br />

Byte, Byte,<br />

Char, Char,<br />

Date (DateTime ( DateTime), ), Decimal, Double, Double,<br />

Integer<br />

(Int32), Long (Int64), Short (Int16), Single, String, String,<br />

�� Object [cualquier tipo, tipo por <strong>de</strong>fecto]<br />

�� Definido por el usuario<br />

�� Obligatoriedad <strong>de</strong> la <strong>de</strong>claración <strong>de</strong>claraci<br />

�� Option Explicit {Off|On Off|On}<br />

�� A Nivel <strong>de</strong> Proyecto / <strong>de</strong> Fichero<br />

�� Obligatoriedad <strong>de</strong> la tipificación tipificaci<br />

�� Option Strict {Off|On Off|On}<br />

�� A Nivel <strong>de</strong> Proyecto / <strong>de</strong> Fichero<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 6


Conceptos básicos b sicos <strong>de</strong> VB.<strong>NET</strong><br />

Variables y constantes (ii)<br />

• Asignación Asignaci<br />

MiVar = 6<br />

Dim Nombre As String = “Luis Luis”<br />

• Valor por <strong>de</strong>fecto<br />

�� 0 ; “” ; 01/01/0001 ; False ; Nothing<br />

• Declaración Declaraci n <strong>de</strong> Constantes:<br />

Constantes<br />

Const Color As String = “Azul Azul”<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 7<br />

Conceptos básicos b sicos <strong>de</strong> VB.<strong>NET</strong><br />

Arrays<br />

• Declaración:<br />

Declaraci n:<br />

Dim Colores() As String<br />

Dim Nombres(3) As String ‘crea crea 4: 0,1,2,3<br />

Dim Frutas() As String ={“Manzana<br />

={ Manzana”,”Pera Pera”}<br />

• Asignar y obtener valores:<br />

Nombres(3)=“Pepe<br />

Nombres(3)= Pepe”<br />

Var = Nombres(3)<br />

• Modificar Tamaño: Tama o:<br />

�� Perdiendo los valores anteriores<br />

ReDim Nombres(6)<br />

�� Conservándolos<br />

Conserv ndolos<br />

ReDim Preserve Nombres(6)<br />

• Saber el número n mero <strong>de</strong> elementos:<br />

UBound(Nombres<br />

UBound(Nombres)<br />

)<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 8


VS.<strong>NET</strong><br />

Depuración Depuraci n <strong>de</strong> código c digo – ejemplo<br />

• Demo con programa “PreguntarUsuario<br />

PreguntarUsuario”<br />

�� Quitar “Dim Dim Nombre As String” String y probar efecto <strong>de</strong><br />

Option Explicit {Off|On Off|On}<br />

�� Quitar sólo s lo “As As String” String y probar efecto <strong>de</strong><br />

Option Strict {Off|On Off|On}<br />

�� Dejar “Dim Dim Nombre As String” String bien<br />

�� Probar <strong>de</strong>puración <strong>de</strong>puraci n paso a paso<br />

�� Consultar valores <strong>de</strong> variables<br />

�� Ventana <strong>de</strong> comandos<br />

�� Permite ejecutar ór<strong>de</strong>nes r<strong>de</strong>nes interactivas<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 9<br />

Conceptos básicos b sicos <strong>de</strong> VB.<strong>NET</strong><br />

Operadores<br />

• Aritméticos Aritm ticos<br />

^ * / \ Mod + -<br />

• Concatenación Concatenaci n <strong>de</strong> strings<br />

&<br />

• Asignación Asignaci<br />

= abreviada: A += B equiv. equiv.<br />

A = A+B<br />

• Comparación<br />

Comparaci<br />

< >= = <br />

�� De ca<strong>de</strong>nas Option Compare {Binary|Text<br />

{ Binary|Text}<br />

�� Con patrón patr “Bonito2 Bonito2” Like “B* B*to# to#”<br />

�� Comodines: ? * # [lista [ lista] ] [!lista [! lista]<br />

�� De Objetos ObjetoA Is ObjetoB<br />

• Lógicos gicos y manejo <strong>de</strong> bits<br />

And Not Or Xor AndAlso OrElse<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 10


Conceptos básicos b sicos <strong>de</strong> VB.<strong>NET</strong><br />

Funciones pre<strong>de</strong>finidas<br />

• Códigos digos ASCII<br />

Asc Chr<br />

• Comprobación Comprobaci n <strong>de</strong> Tipos<br />

IsNumeric IsDate IsArray<br />

• Numéricas Num ricas<br />

Int Fix Randomize Rnd<br />

• Ca<strong>de</strong>nas<br />

Len Space InStr Left Right Mid Replace LTrim Rtrim<br />

Trim UCase Lcase Format StrConv<br />

• Tiempo (fecha y hora)<br />

Now DateAdd DateDiff DatePart<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 11<br />

Conceptos básicos b sicos <strong>de</strong> VB.<strong>NET</strong><br />

Sentencias y líneas l neas múltiples m ltiples<br />

• Sentencia multilínea multil nea<br />

�� Acabada en un subrayado _<br />

• Línea nea multisentencia<br />

�� Separadas por :<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 12


Procedimientos<br />

Tipos<br />

• Todo el código c digo ejecutable está est contenido en rutinas,<br />

llamadas procedimientos, <strong>de</strong> tres tipos:<br />

�� Sub (procedimientos<br />

procedimientos), ), no <strong>de</strong>vuelven valor<br />

�� Function (funciones funciones), ), <strong>de</strong>vuelven un valor<br />

�� Property (para para manejar manejar propieda<strong>de</strong>s propieda<strong>de</strong>s <strong>de</strong> <strong>de</strong> objetos) objetos<br />

• Llamada<br />

�� Sub<br />

�� Function<br />

ProcPrueba()<br />

ProcPrueba()<br />

CalcRaiz()<br />

CalcRaiz()<br />

Resultado = CalcRaiz() CalcRaiz()<br />

+ 5<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 13<br />

Procedimientos<br />

Declaración Declaraci n y código c digo<br />

• Sub<br />

[Ámbito] mbito] Sub NombreProcedimiento[(<br />

NombreProcedimiento[(ListaPar<br />

ListaParámetros metros)] )]<br />

[CódigoEjecutable<br />

digoEjecutable]<br />

[Exit Exit Sub | Return] Return<br />

[CódigoEjecutable<br />

digoEjecutable]<br />

End Sub<br />

• Function<br />

[Ámbito] mbito] Function NombreFunción[(<br />

NombreFunci [(ListaPar ListaParámetros metros)] )] As<br />

TipoDato<br />

[CódigoEjecutable<br />

digoEjecutable]<br />

[Return Return Valor]<br />

[NombreFunci<br />

NombreFunción = Valor]<br />

[Exit Exit Function]<br />

Function<br />

[CódigoEjecutable<br />

digoEjecutable]<br />

End Function<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 14


Procedimientos<br />

Paso <strong>de</strong> parámetros<br />

par metros (i)<br />

[Optional] [ByVal|ByRef] [ParamArray] Nombre As<br />

TipoDato<br />

• Paso por Valor<br />

�� Opción Opci n por <strong>de</strong>fecto, Se crea una nueva variable<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 15<br />

Procedimientos<br />

Paso <strong>de</strong> parámetros<br />

par metros (ii)<br />

• Paso por Referencia<br />

�� Ambas variables utilizan la misma memoria.<br />

�� Los cambios afectan a la variable <strong>de</strong>l código c digo llamador.<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 16


Procedimientos<br />

Paso <strong>de</strong> parámetros<br />

par metros (iii)<br />

• Asociación Asociaci n entre los parámetros par metros escritos en la llamada y<br />

los escritos en la <strong>de</strong>claración <strong>de</strong>claraci n <strong>de</strong>l procedimiento<br />

�� Por posición posici<br />

Prueba (Importe, DiaHoy) DiaHoy<br />

�� Por nombre<br />

Prueba (Fecha:=DiaHoy<br />

(Fecha:= DiaHoy, , Cantidad:=Importe)<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 17<br />

Procedimientos<br />

Sobrecarga<br />

• Varias versiones <strong>de</strong> un procedimiento (mismo nombre), pero con<br />

listas <strong>de</strong> parámetros par metros diferenciadas en su número, n mero, or<strong>de</strong>n o tipo.<br />

Overloads Sub Datos()<br />

' código c digo <strong>de</strong>l procedimiento<br />

' ............<br />

End Sub<br />

Overloads Sub Datos(ListaParametrosA)<br />

Datos(ListaParametrosA<br />

' código c digo <strong>de</strong>l procedimiento<br />

' ............<br />

End Sub<br />

Overloads Function Datos(ListaParametrosB) Datos(ListaParametrosB)<br />

As<br />

TipoDatoRetorno<br />

' código c digo <strong>de</strong>l procedimiento<br />

' ............<br />

End Function<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 18


Estructuras <strong>de</strong> Control<br />

• Permiten cambiar el flujo <strong>de</strong> ejecución ejecuci n a formas no<br />

secuenciales.<br />

• Tipos<br />

�� Selección Selecci n (<strong>de</strong>cisióón/selecci<br />

(<strong>de</strong>cisi n/seleccióón) n)<br />

�� If ... Then ... End If<br />

�� Select ... Case ... End Select<br />

n (bucle/iteracióón)<br />

(bucle/iteraci n)<br />

�� Repetición Repetici<br />

�� While ... End While<br />

�� Do ... Loop<br />

�� For ... Next<br />

�� For Each ... Next<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 19<br />

Estructuras <strong>de</strong> Control<br />

Selección Selecci<br />

• If Simple<br />

• If Doble<br />

n (i)<br />

If Expresión<br />

Expresi n Then<br />

Código digo<br />

End If<br />

If Expresión<br />

Expresi n Then Instrucción<br />

Instrucci<br />

If Expresión<br />

Expresi n Then<br />

Código digo<br />

Else<br />

Código digo<br />

End If<br />

If Expresión<br />

Expresi n Then Instrucción1<br />

Instrucci n1 Else Instrucción2<br />

Instrucci n2<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 20


Estructuras <strong>de</strong> Control<br />

Selección Selecci<br />

• If Múltiple ltiple<br />

n (ii)<br />

If Expresión1<br />

Expresi n1 Then<br />

Código digo<br />

ElseIf Expresión2<br />

Expresi n2 Then<br />

Código digo<br />

...<br />

[ElseIf ElseIf ExpresiónN<br />

Expresi nN Then] Then<br />

Código digo<br />

Else<br />

Código digo<br />

End If<br />

• Select ... Case<br />

Select Case Expresión<br />

Expresi n<br />

Case Lista1<br />

Código digo<br />

[Case Case Lista2]<br />

Código digo<br />

[Case Case Else] Else<br />

Código digo<br />

End Select<br />

• ListaN: ListaN<br />

�� Expresión Expresi<br />

�� Expr1 To Expr2<br />

�� Is OpComparación OpComparaci Expresión Expresi<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 21<br />

Estructuras <strong>de</strong> Control<br />

Repetición Repetici<br />

n (i)<br />

• While ... End While<br />

While Expresión<br />

Expresi<br />

Código digo<br />

End While<br />

• For ... Next<br />

For contador = inicio To fin [Step [ Step incremento]<br />

Código digo<br />

[Exit Exit For] For<br />

Código digo<br />

Next<br />

For Each elemento In Colección/<br />

Colecci n/Array Array<br />

Código digo<br />

[Exit Exit For] For<br />

Código digo<br />

Next<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 22


Estructuras <strong>de</strong> Control<br />

Repetición Repetici<br />

• Do ... Loop<br />

n (ii)<br />

�� Condición Condici n al principio<br />

Do { While | Until } Expresión<br />

Expresi<br />

Código digo<br />

[Exit Exit Do] Do<br />

Código digo<br />

Loop<br />

�� Condición Condici n al final => => se se ejecuta ejecuta al al menos menos 1 1 vez vez<br />

Do<br />

Código digo<br />

[Exit Exit Do] Do<br />

Código digo<br />

Loop { While | Until } Expresión<br />

Expresi<br />

�� Sin Condición Condici<br />

�� Peligro <strong>de</strong> bucle infinito<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 23<br />

Ámbito mbito<br />

Procedimientos<br />

• Capacidad <strong>de</strong> po<strong>de</strong>r llamar a un procedimiento <strong>de</strong>s<strong>de</strong><br />

un punto dado <strong>de</strong>l código. c digo.<br />

�� Depen<strong>de</strong> <strong>de</strong>l nivel <strong>de</strong> acceso indicado en la <strong>de</strong>claración <strong>de</strong>claraci n <strong>de</strong>l<br />

Sub/Function<br />

Sub Function:<br />

Ámbito mbito { Sub | Function } Nombre ([Parámetros])<br />

([Par metros])<br />

�� Public: Public:<br />

Público P blico<br />

�� Pue<strong>de</strong> ser llamado <strong>de</strong>s<strong>de</strong> cualquier módulo m dulo <strong>de</strong>l proyecto.<br />

Private: : Privado<br />

�� Private<br />

�� Sólo lo pue<strong>de</strong> ser llamado <strong>de</strong>s<strong>de</strong> el módulo m dulo en que se ha <strong>de</strong>clarado.<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 24


Ámbito mbito<br />

Variables (i)<br />

• Capacidad <strong>de</strong> po<strong>de</strong>r usar una variable <strong>de</strong>s<strong>de</strong> un punto<br />

dado <strong>de</strong>l código. c digo.<br />

�� Depen<strong>de</strong> <strong>de</strong>l nivel <strong>de</strong> acceso indicado en la <strong>de</strong>claración <strong>de</strong>claraci n <strong>de</strong> la<br />

variable y <strong>de</strong>l lugar don<strong>de</strong> está est dicha <strong>de</strong>claración:<br />

<strong>de</strong>claraci n:<br />

Ámbito mbito [Dim Dim] ] Nombre As TipoDato<br />

�� A nivel <strong>de</strong> procedimiento (sub sub/function function)<br />

�� Dim Nombre ...<br />

�� A nivel <strong>de</strong> bloque (estructura <strong>de</strong> control)<br />

�� Dim Nombre ...<br />

�� A nivel <strong>de</strong> módulo m dulo (module)<br />

�� Private Nombre ...<br />

�� A nivel <strong>de</strong> proyecto (module)<br />

�� Public Nombre ...<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 25<br />

Ámbito mbito<br />

Variables (ii)<br />

Module A<br />

Public V1 As String<br />

Private V2 As Integer<br />

Public Sub Main()<br />

Dim V3 As Char<br />

...<br />

End Sub<br />

Private Sub Proc1()<br />

If V2>5 then<br />

Dim V4 as string<br />

...<br />

End If<br />

End Sub<br />

End Module<br />

Module B<br />

Public Sub Proc2()<br />

...<br />

End Sub<br />

End Module<br />

V1<br />

V2 V3 V2 V3<br />

ámbito mbito <strong>de</strong> proyecto<br />

ámbito mbito ámbito mbito <strong>de</strong> procedimiento<br />

<strong>de</strong> módulo m dulo<br />

V4<br />

ámbito mbito <strong>de</strong> bloque<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 26


Vida <strong>de</strong> las variables<br />

• El periodo <strong>de</strong> vida (cuando está est activa) <strong>de</strong>pen<strong>de</strong> <strong>de</strong> su<br />

ámbito mbito:<br />

�� De bloque: bloque:<br />

<strong>de</strong>s<strong>de</strong> que se <strong>de</strong>claran hasta que acaba la ejecución ejecuci n<br />

<strong>de</strong>l bloque.<br />

�� De procedimiento: procedimiento:<br />

<strong>de</strong>s<strong>de</strong> que se <strong>de</strong>claran hasta que termina la<br />

ejecución ejecuci n <strong>de</strong>l procedimiento.<br />

�� De módulo dulo o proyecto: proyecto:<br />

ejecución ejecuci n <strong>de</strong> la aplicación. aplicaci n.<br />

• Variables Static<br />

�� Retienen su valor al finalizar el procedimiento/bloque don<strong>de</strong> se<br />

<strong>de</strong>claran.<br />

Static [Dim Dim] ] Nombre As TipoDato<br />

�� Su periodo <strong>de</strong> vida es el <strong>de</strong> ejecución ejecuci n <strong>de</strong> la aplicación aplicaci<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 27<br />

Organización Organizaci n <strong>de</strong>l código c digo<br />

• Contenedores <strong>de</strong><br />

código digo<br />

�� Físicos sicos: : archivos .VB<br />

�� Lógicos gicos: : elementos<br />

con <strong>de</strong>claraciones y<br />

procedimientos<br />

�� Módulos, dulos, Clases,<br />

Interfaces,<br />

Estructuras, ...<br />

�� Namespaces<br />

(metacontenedores<br />

metacontenedores)<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 28


Organización Organizaci n <strong>de</strong>l código c digo - <strong>de</strong>mo<br />

• Probar opciones <strong>de</strong> VS.<strong>NET</strong> para organizar el código: c digo:<br />

1. Listas <strong>de</strong>splegables <strong>de</strong>l editor <strong>de</strong> código c digo:<br />

�� De Clases, Clases,<br />

para elegir el módulo/clase.<br />

m dulo/clase.<br />

�� De Métodos todos, , para elegir el procedimiento/método.<br />

procedimiento/m todo.<br />

2. Agregar nuevo módulo m dulo (y fichero).<br />

3. Crear módulo m dulo <strong>de</strong>ntro <strong>de</strong> un fichero existente.<br />

4. Cambiar nombre <strong>de</strong> un fichero.<br />

5. Excluir un fichero <strong>de</strong> código. c digo.<br />

6. Añadir adir un fichero <strong>de</strong> código c digo ya existente.<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 29<br />

Manejo <strong>de</strong> Errores<br />

• 2 conceptos relacionados<br />

�� Error: Error:<br />

Evento que se produce durante el funcionamiento <strong>de</strong> un<br />

programa, provocando una interrupción interrupci n en su flujo <strong>de</strong><br />

ejecución. ejecuci n. Al producirse esta situación, situaci n, el error genera un<br />

objeto excepción. excepci n.<br />

�� Excepción: Excepci : Un objeto generado por un error, que contiene<br />

información informaci n sobre las características caracter sticas <strong>de</strong>l error que se ha<br />

producido.<br />

• 2 técnicas t cnicas <strong>de</strong> gestión gesti n <strong>de</strong> errores:<br />

�� Estructurada: Estructurada:<br />

mediante excepciones y una estructura <strong>de</strong><br />

control para <strong>de</strong>tectar las excepciones producidas.<br />

�� No estructurada: estructurada:<br />

mediante <strong>de</strong>tección <strong>de</strong>tecci n y captura <strong>de</strong> errores y<br />

saltos no estructurados (GO TO) en el código. c digo.<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 30


Manejo <strong>de</strong> Errores<br />

Estructurado (i)<br />

Estructurado<br />

Try<br />

Código digo sensible a errores<br />

[Exit Exit Try] Try<br />

Código digo sensible a errores<br />

[Catch Catch [Excepción [Excepci n [As [ As Tipo1]] [When [ When Expresión]<br />

Expresi n]<br />

Código digo respuesta a error <strong>de</strong> tipo 1<br />

[Exit Exit Try]] Try]]<br />

...<br />

[Catch Catch [Excepción [Excepci n [As [ As TipoN]] TipoN]]<br />

[When [ When Expresión]<br />

Expresi n]<br />

Código digo respuesta a error <strong>de</strong> tipo N<br />

[Exit Exit Try]] Try]]<br />

...<br />

[Finally Finally<br />

Código digo posterior al control <strong>de</strong> errores]<br />

End Try<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 31<br />

Manejo <strong>de</strong> Errores<br />

Estructurado (ii)<br />

Estructurado<br />

• Clase Exception<br />

�� Message: Message:<br />

<strong>de</strong>scripción <strong>de</strong>scripci n <strong>de</strong>l error.<br />

�� Source: Source:<br />

objeto/aplicación objeto/aplicaci n que originó origin el error.<br />

�� StackTrace: StackTrace:<br />

Ruta o traza <strong>de</strong>l código c digo don<strong>de</strong> se produjo el error.<br />

�� ToString(): ToString():<br />

Devuelve información informaci n <strong>de</strong>tallada en un string. string<br />

• Captura<br />

Try<br />

x=x/y<br />

Catch ex As OverFlowException When y=0<br />

MsgBox(ex.<br />

MsgBox(ex.toString<br />

toString)<br />

Catch ex As Exception<br />

Console.Writeline(ex.Message)<br />

Console.Writeline(ex.Message<br />

Console.Writeline(ex.Source)<br />

Console.Writeline(ex.Source<br />

End Try<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 32


Manejo <strong>de</strong> Errores<br />

No Estructurado<br />

• Objeto Err<br />

�� Proporciona información informaci n sobre los errores que se producen.<br />

�� Number<br />

�� Description<br />

�� Clear() Clear()<br />

inicializa inicializa el el objeto objeto<br />

�� Raise() Raise()<br />

genera genera un un error error provocado provocado<br />

• Captura<br />

On Error GoTo EtiquetaLínea<br />

EtiquetaL nea<br />

On Error Resume Next<br />

• Reanudación<br />

Reanudaci<br />

Resume [Next Next]<br />

• Desactivación<br />

Desactivaci<br />

On Error GoTo 0<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 33<br />

Práctica Pr ctica 1<br />

Resolver ecuación ecuaci n 2 do<br />

grado (i)<br />

do grado<br />

• Mostrar un formulario para preguntar los tres coeficientes <strong>de</strong> una una<br />

ecuación ecuaci n <strong>de</strong> segundo grado:<br />

A*x^2 + B*x + C = 0<br />

�� Preguntar cada coeficiente en un control <strong>de</strong> tipo TextBox<br />

• Añadir adir un botón bot n “Calcular Calcular” para obtener las soluciones invocando<br />

al procedimiento <strong>de</strong> igual nombre.<br />

�� Indicar si las soluciones son reales o imaginarias con un control control<br />

CheckBox. CheckBox<br />

�� Mostrar las 2 soluciones en un control control etiqueta “Soluci Solución” con texto<br />

azul si son reales y rojo si son imaginarias.<br />

�� Ejemplo formato 2 soluciones reales: “2’45 45 y 78’23 78 23”<br />

�� Ejemplo formato 1 solución soluci n real: “-9’06 06”<br />

�� Ejemplo formato 2 soluciones imaginarias: “1’48+2 48+2’1i 1i y 0’63 0 63-1’86i 86i”<br />

• Añadir adir un botón bot n “Salir Salir” para acabar.<br />

UCLM-ESI. Programación con <strong>Visual</strong> <strong>Basic</strong> .<strong>NET</strong> 1. 34

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!