lenguajes de programación: tutorial csharp

Download Lenguajes de Programación: Tutorial csharp

Post on 13-Jan-2017

50 views

Category:

Design

4 download

Embed Size (px)

TRANSCRIPT

  • Pontificia Universidad Catlica del Ecuador

    Mtr. Luis Fernando Aguas B.

    Tutorial Csharp

    Variables y Constantes

    Una variable o una constante representan un posicin de memoria ocupada por un tipo de

    dato. Una varible puede ser local, el parmetro de un mtodo, el elemento de un array, un

    campo de una instancia de un objeto o un campo esttico de un objeto, y su valor puede ser

    modificado, en cambio, el valor de una constante siempre es el mismo.

    string saludo = "hola";

    const double pi = 3.1415;

    Dado que C# es fuertemente tipificado todas las variables y constantes tienen asociado un

    tipo que define los posibles valores que puede tomar.

    En C# a todas las variables y constantes se les debe asignar un valor antes de poder utilizarlas.

    Esta asignacin de valor puede ser tanto explcita como automtica a travs de la asignacin

    del valor por defecto para un tipo. Estos son los valores por defecto para los diferentes tipos:

    Tipo Valor por defecto

    tipos numricos 0

    bool false

    char '\0'

    enumeraciones 0

    referencias null

    Cuando intentamos utilizar una variable sin asignarle un valor se producir un error como

    sucede con el siguiente ejemplo:

    // variable.cs

    using System;

    public class Variable

    {

    int v;

  • Pontificia Universidad Catlica del Ecuador

    Mtr. Luis Fernando Aguas B.

    public Variable() {} // v = valor por

    defecto

    public Variable(int a) { v = a; } // v = a

    static void Main()

    {

    Variable[] variable = new Variable[2]; // declaramos un array

    Console.WriteLine(variable[1]); // ok, valor por defecto

    Variable v;

    console.WriteLine(v); // error, v sin asignar

    }

    }

    Espacios de nombres

    En C# se podemos utilizar espacios de nombres para agrupar de forma lgica ciertas

    porciones de cdigo de forma que se les asocia un nombre para su uso. Si no utilizamos

    explcitamente ningn espacio de nombres estaremos utilizando el espacio de nombres

    global, como se hace en el primer ejemplo holamundo.cs. Veamos ahora como utilizar

    explcitamente el espacio de nombres System en holamundo2.cs de forma que no tengamos

    que escribir System. cada vez que nos queramos referir a alguna variable, clase, ... que est

    definida en su interior. Para ello deberemos emplear using.

    // holamundo2.cs

    using System; // espacio de nombres que usaremos

    public class HolaMundo2

    {

    public static void Main()

    {

    Console.WriteLine("Hola, Mundo!");

    }

    }

    Para definir un espacio de nombres deberemos utilizar la palabra namespace. En el siguiente

    ejemplo se definen dos clases llamadas Prueba en dos espacios de nombres diferentes. Los

    nombres completos de estas clases sern Espacio1.Prueba y Espacio2.Prueba. Para poder

    utilizarlos empleando solamente Prueba deberemos especificar en que espacio de nombres

    est dicha clase utilizando previamente using.

    // espacios.cs

    using System; // usaremos el espacio de nombres System

  • Pontificia Universidad Catlica del Ecuador

    Mtr. Luis Fernando Aguas B.

    namespace Espacio1 // declaracin del espacio de nombres

    Espacio1

    {

    public class Prueba

    {

    public Prueba()

    {

    Console.WriteLine("Espacio1.Prueba");

    }

    }

    }

    namespace Espacio2 // declaracin del espacio de nombres Espacio2

    {

    public class Prueba

    {

    public Prueba()

    {

    Console.WriteLine("Espacio2.Prueba");

    }

    }

    }

    using Espacio2; // usaremos el espacio de nombres Espacio2

    public class Namespace

    {

    public static void Main()

    {

    Prueba p = new Prueba();

    }

    }

    Espacios de nombres anidados

    Los espacios de nombres pueden anidarse, es decir, definirse dentro de otros espacios de

    nombres. Para ello no tendremos ms que encerrara la declaracin de un espacio de nombres

    dentro de la de otro espacio de nombres. Para referirnos a las declaraciones del espacio

    interior habremos de utilizar la clausula using seguida de todos los espacios de nombres

    unidos mediante un punto o referirnos a un tipo empleando su nombre completo.

    // anidado.cs

    using System;

    namespace Exterior

    {

    namespace Interior

    {

    class Hola

  • Pontificia Universidad Catlica del Ecuador

    Mtr. Luis Fernando Aguas B.

    {

    public Hola() { Console.WriteLine("Hola!"); }

    }

    }

    }

    using Exterior.Interior;

    class EspacioNombresAnidado

    {

    public static void Main()

    {

    Hola hola = new Hola();

    // alternativamente se podra haber utilizado:

    // Exterior.Interior.Hola hola = new Exterior.Interior.Hola();

    }

    }

    Alias

    En C# se pueden crear alias de tipos y espacios de nombres, con lo que podremos referirnos

    a ciertos tipos y espacios de nombres utilizando otro nombre distinto al que tienen en su

    declaracin.

    // alias.cs

    using sys = System; // alias de espacio de nombres

    using cadena = System.String; // alias de tipo

    class Alias

    {

    public static void Main()

    {

    cadena c = "Hola, mundo!";

    sys.Console.WriteLine(c); // hola, mundo!

    sys.Console.WriteLine(c.GetType()); // System.String

    }

    }

    Identificadores y palabras clave

    Los identificadores son los nombre que elegimos para nuestros variables, clases, etc. Un

    identificador debe ser una palabra completa compuesta de caracteres unicode y que comience

    por una letra o un guin bajo (_) y que no sea igual que una palabra clave del lenguaje. Como

    un caso especial podremos utilizar @ como prefijo de un identificador si queremos que este

  • Pontificia Universidad Catlica del Ecuador

    Mtr. Luis Fernando Aguas B.

    se llame igual que una palabra reservada por el lenguaje, pero sin que

    se considere parte de l. As las variables x y @x son iguales. Las letras maysculas y

    minsculas crean identificadores diferentes.

    Las palabras clave de C# son:

    abstract event new struct as explicit null switch

    base extern object this bool false operator throw

    break finally out true byte fixed override try

    case float params typeof catch for private uint

    char foreach protected ulong checked goto public unchecked

    class if readonly unsafe const implicit ref ushort

    continue in return using decimal int byte virtual

    default interface sealed volatile delegate internal short void

    do is sizeof while double lock stackalloc else

    long static enum namespace string

    Tipos predefinidos

    Los tipos predefinidos en C# son alias de tipos en el espacio de nombres System. Aqu

    podemos ver la lista completa de los mismos:

    Tipo C# Clase System

    Bool System.Boolean

    Byte System.Byte

    Sbyte System.SByte

    Char System.Char

    Decimal System.Decimal

    Doubl System.Double

    Tipo C# Clase System

    int System.Int32

    uint System.UInt32

    long System.Int64

    ulong System.UInt64

    object System.Object

    short System.Short

  • Pontificia Universidad Catlica del Ecuador

    Mtr. Luis Fernando Aguas B.

    Float System.Single

    ushort System.UShort

    string System.String

    A todos estos tipos, salvo object y string, se les denomina tipos simples. Todos los tipos y

    sus alias pueden utilizarse indistintamente. De esta forma podemos declarar un entero

    utilizando tanto int como System.Int32:

    int x = 123;

    System.Int32 x = 123;

    Para mostrar el nombre de cualquier tipo C# podemos utilizar el mtodo GetType() o el

    operador typedef.

    Console.WriteLine(x.GetType());

    Tipos valor y tipos referencia

    Todos los tipos en C# pertenecen a una de las siguientes tres categoras, cuya diferencia

    fundamental entre estas tres categorias es la forma en que son tratados en memoria.

    Tipos valor: enum, struct

    Tipos referencia: array, class, delegate, interface

    Tipo puntero

    Tipos valor

    Estos tipos son los ms sencillos de comprender. Directamente contienen los datos, por

    ejemplo, un tipo int contiene su valor, o un tipo bool vale true o false. Una de sus

    caractersticas es que cuando se asignan el valor de una variable a otra, se crea una copia de

    dicho valor.

    // valor.cs

    using System;

    class Valor

    {

    static void Main()

    {

    int x = 3;

    int y = x; // y es una copia de x

  • Pontificia Universidad Catlica del Ecuador

    Mtr. Luis Fernando Aguas B.

    ++x; // incrementa x a 4

    Console.WriteLine("x = {0} y = {1}", x, y);

    }

    }

    Este ejemplo crea dos variables de tipo int, x e y. Inicialmente x vale 3 e y pasa a ser una

    copia de x. Al incrementar el valor de x, el valor de y no cambia puesto que ambos valores

    son copias independientes en memoria.

    Todos los tipos simples y sus combinaciones a travs de structs pertenecen a esta categora.

    Tipos referencia

    Los tipos referencia son algo ms complejos. En un tipo referencia hemos de diferenciar entre

    un objeto y una referencia a un objeto. Veamos con un ejemplo cada un