Вы находитесь на странице: 1из 35

La potencia sin control

Introduccin a C#
Jos Antonio Jimnez Carmona
Juan Mara La Ramos

El Seor es mi pastor, nada me falta

NDICE
Qu es .NET?
Qu es C#?
Caractersticas de C#
Variables
Clases
Operadores
Sentencias
Herencia de clases
Herencia de interfaces
Delegados y eventos
Excepciones

Qu es .NET?

Idea
- Crear y ejecutar software en cualquier
dispositivo, en cualquier lenguaje.

Qu es .NET?
Compilacin
Cdigo
fuente

Cdigo
nativo

Compilador
de lenguaje

Cdigo (IL)

Assembly
Metadatos

Compilador JIT

Ejecucin

Antes de la instalacin
o la primera vez que se
invoca a cada mtodo

Caractersticas de C#
Lenguaje de alto nivel y sencillo
Orientado a objetos, componentes, al punto.
Lenguaje moderno y seguro
Gestin automtica de la memoria
Sintaxis casi igual a la de Java
Si sabes Java, sabes C#

Estructura de un programa en C#
using System;
using System.Collections.Generic;
using System.Text;
namespace MiPrograma
{
public class Program
{
public static void Main(string[] args)
{
}
}
}

Libreras usadas

Funcin principal

Variables Clasificacin

Tipos bsicos

Tratadas por valor

Tipos enumerados
Estructuras
Clases

Tratadas por referencia

Interfaces
Arrays
Delegados

Tipos predefinidos

Predefinidos
-

Referencia
Con signo
Sin signo
Caracter
Flotantes
Lgico bool

object, string
sbyte, short, int, long
byte, ushort, uint, ulong
char
float, double, decimal

Son como un alias a los tipos definidos en


system.
int == System.Int32

Variables
Las variables por valor pueden declararse e
iniciarse:
bool bln = true;
byte byt1 = 22;
char ch1=x, ch2=\u0066; // Unicode para a
decimal dec1 = 1.23M;
double dbl1=1.23, dbl2=1.23D;
short sh = 22;
int i = 22;
long lng1 =22, lng2 =22L; // L long
sbyte sb = 22;
float f=1.23F;
ushort us1=22;
uint ui1=22, ui2=22U; // U unsigned
ulong ul1 =22, ul2=22U, ul3=22L, ul4=2UL;

Variables
Los valores por referencia son creados con la palabra
clave new:
object o = new System.Object();

Strings se pueden inicializar directamente:


string s = "Hola"; // usan caracteres Unicode de 2 bytes

C# soporta secuencias de escape como en C:


string s1 = "Hola\n"; // salto de lnea
string s2 = "Hola\tque\ttal"; // tabulador

Como las sentencias de escape comienzan con \, para


escribir este carcter hay que doblarlo, o usar @:
string s3 = "c:\\WINNT";
string s4 = @"C:\WINNT";

Variables Tipos enumerados


Un enumerado es un tipo de variable cuyos valores
posibles que puede tomar son especificados por nosotros
Definicin del tipo:
enum <nombreTipoEnumerado> { valor1, valor2, , valorN }
Declaracin de una variable:
<nombreTipoEnumerado> <nombreVariable>;
Asignacin de una variable:
<nombreVariable> = <nombreTipoEnumerado>.valor;

Variables Tipos enumerados

Ejemplo:

enum Color { azul, verde, rojo, amarillo }


Color c;
c = Color.rojo;

Expresiones y Operadores
Las expresiones en C# son muy similares a las
de C y C++
Operadores aritmticos:
-

+ , Suma unaria , +a
- , Resta unaria, -a
++, Incremento, ++a o a++
--, Decremento, --a o a-+, Suma, a+b
-, Resta, a-b
*, Multiplicacin, a*b
/, Divisin, a/b
%, Resto, a%b

Expresiones y Operadores
Operadores relacionales:
-

== , Igualdad , a==b
!= , Inigualdad, a!=b
<, Menor que, a<b
<=, Menor o igual, a<=b
>, Mayor que, a>b
>=, Mayor que o Igual a, a>=b

Los programadores de Visual Basic deben notar


que se usa == en vez de = para igualdad, !=
para desigualdad en vez de <> e = para
asignacin

Expresiones y Operadores
Operadores relacionales:
-

! , Negacin , !a
& , And binario, a&b
|, Or binario, a|b
^, Or exclusivo, a^b
~, Negacin binaria, ~a
&&, And lgico, a&&b
||, Or lgico, a||b

Operadores de manipulacin de bits:


- int i1=32;
- int i2=i1<<2; // i2==128
- int i3=i1>>3; // i3==4

Expresiones y Operadores
Operadores de asignacin (para a==3 y b==7):
-

= , a=b , 7
+= , a+=b, 10
-=, a-=b, -4
*=, a*=b, 21
/=, a/=b, 0
%=, a%=b, 3
|=, a|=b, 7
>>=, a>>=b, 0
<<=, a<<=b, 384

Operadores de manipulacin de bits:


- int i1=32;
- int i2=i1<<2; // i2==128
- int i3=i1>>3; // i3==4

Expresiones y Operadores
Otros operadores:
-

min=a<b ? a:b; // if a<b min=a else min=b;


. para acceso a miembros, e.j. args.Length
() para conversin de tipos
[] como ndice de arrays, punteros, propiedades y
atributos
new para crear nuevos objetos
typeof para obtener el tipo de un objeto
is para comparar el tipo de un objeto en runtime
sizeof para obtener el tamao de un tipo en bytes

Precedencia de operadores, asociatividad y uso de ()

Clases

Una clase es la definicin de las


caractersticas concretas de un
determinado tipo de objetos
Un objeto es un conjunto de datos y
de mtodos que permiten manipular
dichos datos

Clases
Clase A

Clase B

Clase C

Clase D

Persona

Feligres

Catequista

Jose

Manolo

Juanma

Clases parciales
// Demo.Part3.cs
// Demo.Part1.cs

// Error!

public class Demo


using System;
{
public partial class Demo
{
// Error!
public Demo()
{
private int i;
Console.Write( "P1" );
}
}
// OK
private int j;
// Demo.Part2.cs

public void Test()

public partial class Demo

private int i;
}

// Error!
Console.Write( "P3" );

Variables - Propiedades

Una propiedad es una mezcla entre el


concepto de atributo y el concepto de
mtodo.
Externamente es accedida como si de un
atributo normal se tratase, pero
internamente es posible asociar cdigo a
ejecutar en cada asignacin o lectura de su
valor.

Variables - Estructuras

Una estructura es lo mismo que una clase,


pero con tres diferencias principalmente:
- Se trata como variable por valor
- Es ms rpida y ocupa menos memoria
- No tiene herencia

Variables Interfaces

Una interfaz especifica un contrato que


una clase debe cumplir
- Contiene las cabeceras de los mtodos y
propiedades que debe tener dicha clase

Una clase puede implementar 1 ms


interfaces

Sentencias
IF
WHILE
DO WHILE
FOR
FOREACH
SWITCH.

Sentencias en C#
continue, se usa para saltar el resto de la iteracin y
comenzar la siguiente
for (int i=1; i<=5; i++) {
if (i==3)
continue;
System.Console.WriteLine(i);
}

break se usa para salir de un bucle:


for (int i=1; i<=5; i++) {
if (i==3)
break;
System.Console.WriteLine(i);
}

Sentencias en C#
Sirve para seleccionar entre mltiples opciones posibles
uint i=2;
switch(i) {
case 0:
goto case 2; // para permitir varios casos usar goto
case 1:
goto case 2;
case 2:
System.Console.WriteLine("i<3");
break; // el uso de goto o break es obligatorio
case 3:
System.Console.WriteLine("i==3"),
break;
default:
System.Console.WriteLine("i>3");
break;
}

Herencia
Permite definir nuevas clases a partir de otras ya definidas
Si una clase A hereda de otra clase B, el compilador
incluye en A el contenido de B
Una clase no puede heredar de ms de 1 clase

<modificador> class <nombreClaseHija> : <nombreClasePadre>


{
<miembrosHija>
}

Herencia
Modificadores
- Controlan la visibilidad de los atributos y mtodos de
una clase
- Modificadores ms importantes:
public:
private :
protected:

Visible fuera de la clase


Visible slo dentro de la clase
Visible dentro de la clase y de sus clases
hijas

Herencia de clases (3)


Redefinicin de mtodos
- El mtodo a redefinir se precede de virtual
- El nuevo mtodo se precede de override

Herencia de interfaces
Permite definir nuevas interfaces a partir de otras ya
definidas
Si una interfaz A hereda de otra interfaz B, el compilador
incluye en A el contenido de B
Una interfaz puede heredar de 1 ms interfaces

<modificador> interface <nombreInterfazHija> : <nombreInterfazPadre>


{
<miembrosHija>
}

Excepciones

Una excepcin es un objeto que


representa un error
Surgen al haber un error, pero podemos
provocarlas nosotros mismos
Podemos crear nuestras propias
excepciones

Delegados

Tipo que representa a una funcin


Por tanto podemos crear variables de ese
tipo.
Dicha variable es una representacin de
esa funcin.

Recordando a Devis
C++ es (era?) como el Ajedrez
- Un juego en el que no se gana, sino que pierde quien primero se
distrae, por la complejidad de las opciones y la obvia necesidad de
concentracin a ultranza que requiere.

Java es como las Damas


- Sus movimientos son simples y gana, simplemente, el ms listo

C# es como las Damas... con fichas de Ajedrez!


- Los movimientos son como en el juego aqul, pero las fichas... ay!
Las fichas son ms bonitas, ms verstiles, pero... no me ayudan!
De hecho, tan slo sirven para confundirme y pensar que tengo
ms posibilidades.
En definitiva... Me hacen Pensar!

Enlaces de inters
Club .NET Sevilla:
- http://sevilla.dotnetclubs.com

Recursos del club:


- http://recursos.dotnetclubs.com/sevilla

Foros:
- http://foros.dotnetclubs.com

MSDN:
- http://www.msdn.com

Desarrolla con msdn


- http://www.desarrollaconmsdn.com

Zenkiu!!
om
c
.
l
mai
g
@
a
mon
r
a
c
aj
jose

(GRACIAS)

juan
lao@
gmai
l.co
m

Вам также может понравиться