Objetivos
1.
2.
3.
4.
5.
6.
18/03/13
1.
2.
3.
4.
5.
6.
7.
8.
9.
Qu es .net?
Arquitectura .net
Arquitectura .net Framework
El modelo de ejecucin
Introduccin a C#
Mi primer programa con C#
Aspectos bsicos del lenguaje
Gestin de excepciones
Colecciones de datos
Qu es .Net?
18/03/13
18/03/13
C++
C#
J#
Visual
Basic
Arquitectura .
Net?
.NET Framework
18/03/13
Lenguajes de programacin
C++
C#
J#
Visual
Basic
.NET Framework
18/03/13
C#
C++
C#
J#
Visual
Basic
.NET Framework
18/03/13
18/03/13
C++
C#
J#
Visual
Basic
.NET Framework
Es el motor de ejecucin
Proporciona un conjunto de servicios comunes para los
proyectos generados en .net, con independencia del
lenguaje.
18/03/13
Extensible
Extensible
Fcil de usar por los desarrolladores
18/03/13
Arquitectura
.net
Framework
10
18/03/13
Integracin de lenguajes:
11
18/03/13
Ges,n de memoria:
12
18/03/13
System
System.Security
System.Runtime.
InteropServices
System.Net
System.Text
System.Globalization
System.Reflection
System.Threading
System.Configuration
System.IO
System.Diagnostics
System.Collections
13
18/03/13
14
18/03/13
Espacio de nombres
System
System.Collections
System.Data
System.IO
System.Net
System.Reflection
System.Runtime.Remoting
System.Security
System.Threading
Manipulacin de hilos.
System.Web.UI.WebControls
System.Winforms
System.XML
El modelo de
ejecucin
15
18/03/13
Cdigo
fuente
Cdigo
VB
VB
C#
C#
C++
C++
Compiler
Compilador
Compiler
Compilador
Compiler
Compilador
Assembly IL
Cdigo
de
Assembly IL
Cdigo
de
code
ensamblado
IL
Assembly IL
Cdigo
de
code
ensamblado
IL
code
gestionado ensamblado
IL
Unmanaged
Componente
nocomponent
gestionado
JIT compiler
Compilador
JIT
Native code
Cdigo
nativo
16
18/03/13
Programacin en C#
Introduccin
a
C#
Introduccion a C#
C#
Lenguaje
diseado
especcamente
para
.NET
Diseado
desde
cero
sin
ningn
condicionamiento
Microsoa
lo
describe
como
Sencillo
Moderno
Orientado
a
objetos
Seguro
en
cuanto
a
Fpos
Derivado
de
C
y
C++
(y
a
JAVA
aunque
Microsoa
no
lo
diga)
17
18/03/13
Introduccin a C# (II)
Ventajas
Integrado
con
modernas
herramientas
de
desarrollo
Fcil
de
integrar
con
Visual
Basic
Tiene
el
alto
rendimiento
y
permite
el
acceso
a
memoria
de
bajo
nivel
de
C++
Programacin en C#
Mi
primer
programa
con
C#
18
18/03/13
Ejercicio
1
} Escribir
un
programa
en
C#
que
muestre
un
mensaje
en
pantalla.
Demo
:
MiPrimerPrograma
using?
namespace?
Main dentro de una clase?
Main o main?
19
18/03/13
Demo : MiPrimerPrograma
20
18/03/13
La
clase:
class
Una
aplicacin
C#
es
una
coleccin
de
clases,
estructuras
y
Fpos
Una
clase
es
un
conjunto
de
datos
y
mtodos
Una
aplicacin
C#
puede
incluir
muchas
clases
Sintaxis
:
class nombre
{
...
}
System.Console.WriteLine("Hola, mundo");
using System;
Console.WriteLine("Hola, mundo");
21
18/03/13
System.Console.WriteLine("Hola, mundo");
using System;
Console.WriteLine("Hola, mundo");
Los
comentarios
Los
comentarios
son
importantes
Una
aplicacin
con
los
comentarios
adecuados
permite
a
un
desarrollador
comprender
perfectamente
la
estructura
de
la
aplicacin
22
18/03/13
namespace ConsoleApplication11
{
/// <summary>
/// La clase 1 permite mostrar mensajes
/// </summary>
class Class1
{
/// <summary>
/// Punto de entrada principal de la aplicacin.
/// </summary>
Programacin en C#
Aspectos
bsicos
del
lenguaje
23
18/03/13
Programacin en C#
7.1
Sistema
de
Tipos
Comunes
(CTS)
CTS
} Cada
variable
Fene
un
Fpo
de
datos
que
determina
los
valores
que
se
pueden
almacenar
en
ella.
} C#
es
un
lenguaje
de
especicaciones
seguras
(type-safe),
lo
que
signica
que
el
compilador
de
C#
garanFza
que
los
valores
almacenados
en
variables
son
siempre
del
Fpo
adecuado.
} El
runFme
de
lenguaje
comn
incluye
un
sistema
de
Fpos
comunes
(Common
Type
System,
CTS)
que
dene
un
conjunto
de
Fpos
de
datos
predenidos
que
se
pueden
uFlizar
para
denir
variables.
24
18/03/13
CTS
(II)
} Al
denir
una
variable
es
necesario
elegir
el
Fpo
de
datos
correcto
para
ella.
El
Fpo
de
datos
determina
los
valores
permiFdos
para
esa
variable,
los
cuales
a
su
vez
determinan
las
operaciones
que
se
pueden
efectuar
sobre
ella.
} El
CTS
es
una
parte
integral
del
runFme
de
lenguaje
comn
y
es
comparFdo
por
los
compiladores,
las
herramientas
y
el
propio
runFme.
} Es
el
modelo
que
dene
las
reglas
que
sigue
el
runFme
a
la
hora
de
declarar,
usar
y
gesFonar
Fpos.
} El
CTS
establece
un
marco
que
permite
la
integracin
entre
lenguajes,
la
seguridad
de
Fpos
y
la
ejecucin
de
cdigo
con
altas
prestaciones.
CTS
Tipo
Tipo de valor
ConFenen
sus
datos
directamente
Cada
una
Fene
su
propia
copia
de
datos
Las
operaciones
sobre
una
no
afectan
a
otra
Tipo de referencia
Almacenan
referencias
a
sus
datos
(conocidos
como
objetos)
Dos
variables
de
referencia
pueden
apuntar
al
mismo
objeto
Las
operaciones
sobre
una
pueden
afectar
a
otra
25
18/03/13
CTS
Tipo
Tipo de valor
Predefinido
Tipo de referencia
Del usuario
Entero
Decimal
Lgico
Carcter
Entero
sbyte
short
int
long
byte
ushort
uint
ulong
SByte
Int16
Int32
Int64
Byte
UInt16
UInt32
Uint64
26
18/03/13
Decimales
float
Single
double
Double
decimal
Decimal
Lgico
bool
Bool
true o false
27
18/03/13
Carcter
char
Char
Carcter Unicode
de 16 bits
CTS
Tipo
Tipo de valor
Predefinido
n
Ejemplos
Tipo de referencia
Del usuario
n
Ejemplos
int
enum
float
struct
28
18/03/13
Uso
Visualizacin
amarillo
CTS
Tipo
Tipo de valor
Predefinido
Tipo de referencia
Del string
usuario
objeto
29
18/03/13
Tipos referencia
Object
String
Asignacin
directa
Concatenacin
(+)
El
tipo
string
static void Main(string[] args){
string cadena= "Mi primera cadena";
Console.WriteLine(cadena);
}
30
18/03/13
Programacin en C#
7.2
Expresiones
y
Operadores
31
18/03/13
Expresiones.
Operadores
Smbolos
uFlizados
en
las
expresiones
Operadores
Incremento
/
decremento
AritmFcos
Relacionales
Igualdad
Lgicos
Asignacin
++
--
*
/
%
+
-
<
>
<=
>=
==
!=
&&
||
!
=
*=
/=
%=
+=
-=
Ejercicio
2
} Escribir
un
programa
en
C#
que
lea
dos
nmeros
por
teclado.
32
18/03/13
Definicin de variables
Salida por pantalla
Programacin en C#
7.3
Variables
y
Constantes
33
18/03/13
Declaracin
de
variables
Se
suelen
declarar
por
Fpo
de
dato
y
nombre
de
variable:
int
Es
pobjetoCuenta;
osible
declarar
mlFples
variables
en
una
declaracin:
--o--
!!!! El compilador C# exige que cualquier variable est inicializada antes de ser usada
34
18/03/13
} Recomendaciones
35
18/03/13
estaEsUnaVariable
int empleadoNumero;
empleadoNumero = 23;
36
18/03/13
37
18/03/13
Constantes
Un
constante
es
una
variable
que
no
puede
cambiar
su
valor
Se
denen
como
las
variables
(con
la
palabra
const)
Se
deben
inicializar
obligatoriamente
en
la
inicializacin
Constantes en C# (II)
Las constantes en C#
38
18/03/13
Programacin en C#
7.4
Entrada/Salida
Por
Consola
Entrada/salida
de
consola
Permite
acceder
a
las
secuencias
estndar
de
entrada,
salida
y
error
Slo
Fene
senFdo
para
aplicaciones
de
consola
Entrada
estndar:
teclado
Salida
estndar:
Pantalla
Error
estndar:
Pantalla
39
18/03/13
Console.Write()
Console.ReadLine()
Console.WriteLine
40
18/03/13
Formateo de salida
41
18/03/13
Precisin
Ejercicio
3
} Escribir
un
programa
en
C#
que
lea
dos
nmeros
por
teclado.
Luego
deber
mostrar
el
resultado
de
la
suma
de
ambos
y
el
cuadrado
de
dicha
suma.
42
18/03/13
Programacin en C#
7.5
Conversin
de
Tipos
43
18/03/13
Conversin
de
tipos
Implicita
int x = 2;
long l = 234;
double dob = 45.67;
dob = x;
l = x;
int x = 2;
long l = 234;
double dob = 45.67;
x = l;
l = dob;
44
18/03/13
int x = 2;
long l = 234;
double dob = 45.67;
x = (int) l;
l = (long) dob;
45
18/03/13
Conversin de datos
Programacin en C#
7.6
Estructuras
de
control
46
18/03/13
Estructuras de control
Condicional
RepeFcin
if/else
switch/case
while
do/while
for
foreach
Cambio de secuencia
return
break
conFnue
Condicional
Simple
p if
p if else if
p if
else
if (saldo > reintegro)
Console.WriteLine("OK");
else
Console.WriteLine("No OK");
47
18/03/13
SOLUCIN
if (saldo == reintegro)
Console.WriteLine(a 0");
else if (saldo < reintegro)
Console.WriteLine("No OK");
else
Console.WriteLine(OK")
Condicional
mltiple
switch (saldo)
{
case 1 : saldo *= 2;
break;
case 2 : saldo *= 3;
break;
default : saldo = 0;
break;
48
18/03/13
Error
case 2 : saldo *= 3;
break;
default : saldo = 0;
break;
SOLUCIN
switch (saldo) {
case 1 : saldo *= 2;
goto case 2;
case 2 : saldo *= 3;
break;
default : saldo = 0;
break;
Correcto
case 2 : saldo *= 3;
break;
default : saldo = 0;
break;
49
18/03/13
Estructuras
de
repeticin
p for
p do
p while
while ( i <= 10)
{
suma+= i;
i++;
}
i = 0;
do
{
suma += i;
i++;
}
while (i < 10);
50
18/03/13
Cambio
de
secuencia:return
} Return
devuelve
el
control
a
la
ruFna
llamante
a
la
actual
int
valor,
suma;
Console.Write("Introduce
un
nmero
:
");
valor
=
int.Parse(Console.ReadLine());
suma
=
0;
while
(valor
<=
10)
{
if
(valor
==
3)
return;
suma
+=
valor;
valor++;
}
Console.WriteLine("El
valor
es
"
+
suma);
51
18/03/13
Cambio
de
secuencia:break
} Break
sale
de
la
actual
estructura
de
bucle
int
valor,
suma;
Console.Write("Introduce
un
nmero
:
");
valor
=
int.Parse(Console.ReadLine());
suma
=
0;
while
(valor
<=
10)
{
if
(valor
==
3)
break;
suma
+=
valor;
valor++;
}
Console.WriteLine("El
valor
es
"
+
suma);
Cambio
de
secuencia:continue
} ConFnue:
Obliga
a
ejecutar
la
siguiente
iteracin
del
bucle
int
valor,
suma;
Console.Write("Introduce
un
nmero
:
");
valor
=
int.Parse(Console.ReadLine());
suma
=
0;
while
(valor
<=
10)
{
valor++;
if
(valor
==
3)
conFnue;
suma
+=
valor;
}
Console.WriteLine("El
valor
es
"
+
suma);
52
18/03/13
Programacin en C#
Excepciones
Excepciones
53
18/03/13
Excepciones (II)
Excepciones (III)
try
{
//
Codigo
de
ejecucin
normal
}
Catch
{
//
GesFn
de
errores
}
Finally
{
//
Liberacin
de
recursos
}
54
18/03/13
Excepciones
(IV)
} El
bloque
try
conFene
el
cdigo
que
forma
parte
del
funcionamiento
normal
del
programa
} El
bloque
catch
conFene
el
cdigo
que
gesFona
los
diversos
errores
que
se
puedan
producir
} El
bloque
nally
conFene
el
cdigo
que
libera
los
recursos.
Es
un
campo
opcional.
Excepciones (V)
55
18/03/13
Programacin en C#
Colecciones
de
datos
Colecciones
de
datos
En
.NET
Framework
existen
tres
Fpos
principales
de
colecciones:
Las
colecciones
basadas
en
ICollec,on
Las
colecciones
basadas
en
la
interfaz
IList
Las
colecciones
basadas
en
la
interfaz
IDic,onary
56
18/03/13
57
18/03/13
Coleccin
Arraylist
Esta
es
una
clase
que
representa
una
lista
de
datos.
El
ArrayList
puede
aumentar
o
disminuir
su
tamao
dinmicamente
de
una
manera
eciente.
Con
un
array
de
datos
no
era
posible
aumentar
la
capacidad
del
vector
ya
que
dicho
parmetro
es
especicado
en
el
momento
de
crear
la
instancia
del
objeto.
El
ArrayList
a
diferencia,
brinda
la
posibilidad
de
aumentar
o
disminuir
su
tamao
dinmicamente
segn
sea
necesario.
58
18/03/13
Coleccin
Arraylist
Al
igual
que
ocurre
con
los
arrays,
el
ndice
inferior
es
siempre
el
cero
y
los
elementos
se
almacenan
de
forma
consecuFva,
es
decir,
si
aadimos
dos
elementos
a
una
coleccin
de
Fpo
ArrayList
(y
a
las
que
implementen
la
interfaz
IList),
el
primero
ocupar
la
posicin
cero
y
el
segundo
la
posicin
uno.
Para
crear
una
instancia
de
este
objeto,
se
debe
uFlizar
la
clase
ArrayList
incluida
en
el
espacio
de
nombre
System.Collec,ons
como
se
muestra
a
conFnuacin.
ArrayList
arrayList=new
ArrayList();
Coleccin
Arraylist
El
constructor
de
la
clase
ArrayList
acepta
tambin
un
parmetro
Fpo
entero
que
indica
la
capacidad
inicial
del
objeto
que
se
esta
creando.
Si
es
necesario
agregar
un
objeto
a
la
coleccin,
se
debe
uFlizar
el
mtodo
Add,
el
cual
inserta
el
nuevo
elemento
en
la
lFma
posicin,
o
el
mtodo
Insert
el
cual
lo
inserta
en
la
posicin
indicada.
59
18/03/13
Coleccin Arraylist
Coleccin
Arraylist
Todos
los
objetos
almacenados
en
un
Arraylist
son
tratados
como
objetos,
por
lo
tanto
es
posible
agregar
todo
Fpo
de
datos,
es
decir,
se
puede
agregar
enteros,
cadenas
de
texto,
objetos
de
clases
propias,
etc.
Y
a
diferencia
de
los
array,
no
todos
los
elementos
deben
ser
del
mismo
,po
de
dato.
Esto
en
algunas
ocasiones
puede
ser
una
ventaja
ya
que
permite
almacenar
gran
variedad
de
informacin
en
una
sola
coleccin,
sin
embargo,
por
razones
de
rendimiento
(cast,
boxing,
unboxing;
converFr
un
Fpo
por
valor
en
uno
por
referencia
cuando
va
a
guardarlo
en
la
coleccin
(boxing),
y
el
proceso
inverso
cuando
lo
queremos
recuperar
(unboxing)),
hay
ocasiones
en
las
que
es
preferible
uFlizar
las
colecciones
genricas.
60
18/03/13
Coleccin
Arraylist
Si
es
necesario
quitar
elementos
de
la
coleccin,
se
debe
usar
el
mtodo
remove,
removeAt
o
RemoveRange,
los
cuales
eliminan
el
objeto
pasado
como
parmetro,
o
un
elemento
en
una
posicin
especica,
o
un
grupo
de
elementos
respecFvamente.
Coleccin
Arraylist
Las
propiedades
ms
uFlizadas
de
esta
coleccin
son
:
Count
y
Capacity.
La
primera
sirve
para
conocer
la
canFdad
actual
de
elementos
que
conFene
la
coleccin.
La
segunda
indica
la
capacidad
mxima
actual
de
la
coleccin
para
almacenar
elementos.
Es
necesario
tener
presente
que
la
capacidad
de
la
coleccin,
aumenta
en
caso
de
ser
necesario
al
insertar
un
elemento,
con
lo
que
se
garanFza
el
redimensionamiento
automFco.
61
18/03/13
Coleccin
Arraylist
La
capacidad
de
una
coleccin
nunca
podr
ser
menor
a
la
canFdad
total
de
elementos
contenidos,
por
lo
que
si
se
modica
manualmente
la
propiedad
Capacity
y
se
le
asigna
un
valor
menor
que
el
valor
devuelto
por
la
propiedad
Count,
obtendremos
una
excepcin
de
Fpo
ArgumentOutOfRangeExcep,on
.
62
18/03/13
Coleccin
Arraylist
Para
acceder
a
los
elementos
contenidos
por
la
coleccin
se
puede
hacer
mediante
el
uso
de
ndices
o
mediante
la
instruccin
foreach.
Cul
elegir?
Determinar
qu
Fpo
de
coleccin
usar
en
un
caso
especico,
es
tarea
del
desarrollador
y
se
debe
evaluar
las
condiciones
para
determinar
la
manera
ms
eciente
de
administrar
los
recursos.
Si
es
un
escenario
donde
no
conocemos
el
tamao
que
tendr
la
coleccin
y
si
adems
ser
muy
probable
que
el
tamao
vare,
entonces
ser
recomendable
bajo
todas
las
dems
circunstancias
usar
un
ArrayList
en
lugar
de
un
array
debido
a
que
el
ArrayList
brinda
la
posibilidad
de
redimensionarlo
automFcamente.
Sin
embargo,
para
escenarios
donde
se
conoce
de
antemano
la
canFdad
total
de
elementos
a
almacenar
y
si
todos
son
del
mismo
Fpo,
se
debe
usar
el
array
convencional
ya
que
los
objetos
son
almacenados
en
su
Fpo
de
datos
naFvo
y
no
es
necesario
hacer
conversiones.
63