Visual Basic .NET - Universidad de Castilla-La Mancha
Visual Basic .NET - Universidad de Castilla-La Mancha
Visual Basic .NET - Universidad de Castilla-La Mancha
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