Variables .Net c#

Embed Size (px)

Citation preview

  • 7/24/2019 Variables .Net c#

    1/9

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    PRCTICA 3. VARIABLESPgina | 1

    Tipos de datos en C#

    Los tipos de datos en C# se clasifican en:tipos valorytipos referencia. Una variable de tipo valoralmacena directamente un valor (datos simples), mientras que una variable de un tipo referenciapermite almacenar una referencia a un objeto.

    Resumiendo podemos decir que los datos por valorson variables en las que accedemos a suvalor de manera directa. Este tipo de variables no afectan sobre otras variables ya que cadavariable accede a un nico registro en memoria.

    Para declarar un tipo de dato por valor seguimos la sintaxis:Tipo_de_dato nom bre_ident i f icador ;

    Ejemplos

    int i;float x; chara=b;string=Hola;

    Los datos por referenciason aquellos en las que accedemos a su valor de manera indirecta,mediante su referencia a un registro de la memoria. En este caso si dos variables tienen la mismareferencia estarn apuntando al mismo valor.

    Para declarar las variables por referencia utilizamos la palabra reservada new:

    Sintaxis:

    Tipo_de_dato nombre_dentificador= new tipo_de_dato([constructor]); //Creacin de unobjeto

    Ejemplo: alumnoA1=newalumno( );

    Class Program()

    {static voidMain(string[] args){

    //Creacin de una referencia a un objeto a la clase ProgramProgrammiObjetoProgram = newProgram();

    //Creacin de una referencia a un objeto a la clase alumno

    alumnomiObjetoAlumno = newalumno();}

    }

    Class alumno{

    Stringnombre;Intedad;

    }

    A diferencia de los tipos de referencia, los tipos de valor no pueden incluir el valornull.

  • 7/24/2019 Variables .Net c#

    2/9

    PRCTICA 3. VARIABLESPgina | 2

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    Conversiones implcitas y explcitas

    C# permite convertir un valor de un tipo en un valor de otro tipo. Puede trabajar con conversionesimplcitas y explcitas. Las conversiones implcitas son conversiones directas, que se realizansiempre que mismos tipos puedan hacerlo, siempre funcionan y nunca pierden informacin (porejemplo, puede convertir un int en un long sin perder ningn dato porque un long es mayor que unint.Las conversiones explcitas son conversiones en la que debemos forzar la conversin, stas

    pueden producir prdida de datos (por ejemplo, convertir un long en un int puede producir prdidade datos porque un long puede contener valores mayores que un int). Debe escribir un operadorcast(que se representa por anteponer el tipo de variable al que se quiere convertir cerrado entreparntesis) en el cdigo para que se produzca una conversin explcita.Ejemplo:

    int x;double y = 345.35;

    //Conversin implcitax= y;

    //Conversin explcitay=(int)x;

    Existen otros mtodos que nos permiten hacer conversiones de una cadena a cualquierotro tipo de dato : Convert() y Parse

    Alias c# Mtodo Convert Mtodo Parseshort Convert.ToInt16 Int16.Parse()

    int Convert.ToInt32 Int32.Parse()

    long Convert.ToInt64 Int64.Parse()

    string Convert.ToString Noaplica

    char Convert.ToChar Char.Parse()

    float Convert.ToSingle Single.Parse()

    double Convert.ToDouble Double.Parse()

    decimal Convert.ToDecimal Decimal.Parse()

    Ejemplo:

    float MiFlotante;string cadFlotante;

    cadFlotante=3.1416;MiFlotante= Convert.ToSingle(cadFlotante);MiFlotante=Single.Parse(cadFlotante);

    Al final de la prctica se anexan las tablas de conversiones vlidas entre los distintos tiposde datos.

  • 7/24/2019 Variables .Net c#

    3/9

    PRCTICA 3. VARIABLESPgina | 3

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    mbito de una variable

    El mbito de una variable se refiere a la parte del programa donde es declarada; determina suaccesibilidad desde otras partes del programa. As como la duracin que tiene la variable duranteel tiempo que est en ejecucin.

    Ejemplo:class Program{

    staticmi_variable;

    static voidMain(string[] args){

    int X, Y;Console.WriteLine(variable={0},mi_variable);

    Ambito deX y Y

    Ambito de

    mi_variable}

    }class Otra_clase{

    public void metodo1(){

    int Z;Console.WriteLine(variable={0},Program.mi_variable);

    Ambitode Z

    }

    }

    Visibilidad de una variable

    Si una clase contiene elementos que son privados (private), stos son slo visibles para los otroselementos dentro de la misma clase, pero no para otros objetos de otras clases. Por el contrario, si laclase contiene elementos pblicos (public), stos pueden ser visibles desde instancias de otras clases.En el caso de las clases, al no explicitar nada, se asume que son public. Por el contrario, en el caso delos elementos de una clase, como atributos o mtodos, al no explicitar nada, se asumen como private.

    Tenemos adicionalmente otros tipos de acceso a las variables que nos van a permitir controlar el accesoa las mismas, estos son:

    protected. Solo pueden acceder a esta variable aquellos objetos de su clase y los objetos de subclases.

    internal.Se accede a ella desde cualquier clase contenida dentro del mismo espacio de nombre.

    protected internal. Se accede a ellas desde la clase, subclases y las clases que se encuentren dentrodel mismo espacio de nombre.

  • 7/24/2019 Variables .Net c#

    4/9

    PRCTICA 3. VARIABLESPgina | 4

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    Duracin de una variable

    La duracin de la variable la podemos modificar anteponiendo unstatic.

    Por ejemplo una variable declarada dentro de un mtodo tiene como mbito ese bloque de cdigoy su duracin como el tiempo desde que se declara dentro del mtodo hasta que salimos de l.

    Todas las variables declaradas como staticmantendrn invariablemente su espacio reservado enmemoria durante toda la ejecucin del programa.

    La variablestaticexiste durante toda la ejecucin del programa, slo existe una copia de la mismasin necesidad de crear un objeto, no afecta su visibilidad.

    Ejemplo:class Program{

    staticmi_variable;

    static voidMain(string[] args){

    }

    }class Otra_clase{

    int X, Y;Console.WriteLine(variable={0},mi_variable);

    public void metodo1()

    {

    }}

    Constantes

    int Z;Console.WriteLine(variable={0},Program.mi_variable);

    Las constantes son valores que se conocen en tiempo de compilacin y no cambian. Las

    constantes se declaran como campo utilizando la palabra claveconstantes del tipo del campo.Las constantes se deben inicializar tal como se declaran. Este tipo de variables nunca cambian de

    valor y se consideran implcitamente static. Por ejemplo:

    class calendario{public const int meses = 12;

    }

    class hora

    {public const int minutos = 60;

    }

    class circulo{

    public float const PI=3.1416F;}

  • 7/24/2019 Variables .Net c#

    5/9

    PRCTICA 3. VARIABLESPgina | 5

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    De Para

    sbyte byte,ushort,uint,ulongochar

    byte Sbyteochar

    short sbyte,byte,ushort,uint,ulongochar

    ushort sbyte,byte,shortochar

    int sbyte,byte,short,ushort,uint,ulongochar

    uint sbyte,byte,short,ushort,intochar

    long sbyte,byte,short,ushort,int,uint,ulongochar

    ulong sbyte,byte,short,ushort,int,uint,longochar

    char sbyte,byteoshort

    float sbyte,byte,short,ushort,int,uint,long,ulong,charodecimal

    double sbyte,byte,short,ushort,int,uint,long,ulong,char,floatodecimal

    decimal sbyte,byte,short,ushort,int,uint,long,ulong,char,floatodouble

    Anexo 1

    Tabla de conversiones numricas explcitas

    Tabla de conversiones numricas implcitas

    De A

    sbyte short,int,long,float,doubleodecimal

    byte short,ushort,int,uint,long,ulong,float,doubleodecimal

    short int,long,float,doubleodecimal

    ushort int,uint,long,ulong,float,doubleodecimal

    int long,float,doubleodecimaluint long,ulong,float,doubleodecimal

    long float,doubleodecimal

    char ushort,int,uint,long,ulong,float,doubleodecimal

    float double

    ulong float,doubleodecimal

  • 7/24/2019 Variables .Net c#

    6/9

    PRCTICA 3. VARIABLESPgina | 6

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    Anexo 2

    Ejemplo variables por valor y referencia

    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;

    namespacereferencia_valor

    {classProgram

    {intx;static voidMain(string[] args){

    intvar_valor, nuevo_valor;Programvar_referencia1 =newProgram();Programvar_referencia2;var_valor = 10;nuevo_valor = var_valor;Console.WriteLine("\n**********POR VALOR *************\n");Console.WriteLine("Variablepor valor {0}, nuevo valor {1}", var_valor, nuevo_valor);nuevo_valor = 5;Console.WriteLine("Variablepor valor {0}, nuevo valor {1}", var_valor, nuevo_valor);

    /**********************************************************************************************************/Console.WriteLine("\n**********POR REFERENCIA *************\n");var_referencia1.x = 7;var_referencia2 = var_referencia1;Console.WriteLine("Variablepor referencia1 {0}, variable por referencia2 {1}",

    var_referencia1.x, var_referencia2.x);var_referencia2.x = 100;Console.WriteLine("Variablepor referencia1 {0}, variable por referencia2 {1}",

    var_referencia1.x, var_referencia2.x);}

    }}

  • 7/24/2019 Variables .Net c#

    7/9

    PRCTICA 3. VARIABLESPgina | 7

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    Ejemplo visibilidad de variables

    usingSystem;usingSystem.Collections.Generic;usingSystem.Text;/* Programa ejemplo para visibilidad de variables */namespacevisibilidad_variables{

    classProgram{

    public intEntero1 = 5;private intEntero2 = 10;

    static voidMain(string[] args)

    {intEntero3 = 15;ProgramMiObjeto =newProgram();

    Console.WriteLine("Imprimiendodesde el mtodo Main()");Console.WriteLine("{0}, {1}, {2}", MiObjeto.Entero1,MiObjeto.Entero2, Entero3);

    MiObjeto.Auxiliar();

    simpleMiSimple =newsimple();MiSimple.Enumera();

    }public voidAuxiliar(){

    Console.WriteLine("Imprimiendodesde el mtodo Auxiliar() de la clase Program");Console.WriteLine("{0}, {1}", Entero1, Entero2);

    }}

    classsimple{

    private intEntero4 = 20;

    public voidEnumera()

    {Console.WriteLine("Imprimiendodesde el mtodo Enumera() de la clase simple");Console.WriteLine("{0}", Entero4);

    }}

    }

  • 7/24/2019 Variables .Net c#

    8/9

    PRCTICA 3. VARIABLESPgina | 8

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    Ejemplo de vida de variables

    usingSystem;usingSystem.Collections.Generic;usingSystem.Text;

    namespacevida_variables

    {classProgram

    {byteValor_simple;static byteValor_estatico;static voidMain(string[] args)

    {byteContador;for(Contador = 1; Contador

  • 7/24/2019 Variables .Net c#

    9/9

    PRCTICA 3. VARIABLESPgina | 9

    TEMA1. ESTRUCTURAS DE DATOS BSICAS

    Ejemplo de conversiones

    usingSystem;usingSystem.Collections.Generic;usingSystem.Text;

    namespaceconversiones{

    classProgram{

    static voidMain(string[] args)

    {floatmiFlotante = 3.18F, Flotante;

    charmiCaracter =a, Caracter;intmiEntero = 6, Entero;decimalmiDecimal = 8.99999M, Decimal;doublemiDoble = 35.99, Doble;longmiLong = 3545678788, Largo;stringmiCadena1 ="45.678", miCadena2="9";Console.WriteLine("Mis variables iniciales son: ");Console.WriteLine("Entero: {0}, Entero largo = {1}, Flotante: {2}, Doble: {3}, Decimal: {4},

    Caracter: {5}, Cadena1: {6}, Cadena2: {7} ",miEntero,miLong,miFlotante,miDoble,miDecimal,miCaracter,miCadena1,miCadena2);

    Flotante = miEntero;Entero = miCaracter;Largo = miEntero;Doble = miFlotante;Console.WriteLine("Conversiones implicitas:");Console.WriteLine("Flotante: {0}, Entero = {1}, Largo: {2}, Doble: {3}", Flotante, Entero,

    Largo, Doble);Entero = (int)miFlotante;Flotante = (float)miDecimal;Decimal = (decimal)miLong;Console.WriteLine("Conversiones explcitas:");Console.WriteLine("Flotante:{0}, Entero = {1}, Decimal: {2}", Flotante, Entero, Decimal);Flotante =Convert.ToSingle(miEntero);Entero =Convert.ToInt16(miCaracter);Caracter =Convert.ToChar(miEntero);Console.WriteLine("Conversiones con la funcion Convert:");Console.WriteLine("Flotante:{0}, Entero = {1}, Caracter: {2}", Flotante, Entero, Caracter);

    Flotante =float.Parse(miCadena1);Entero =int.Parse(miCadena2); Caracter =char.Parse(miCadena2);Console.WriteLine("Conversiones con el metodo Parse:");Console.WriteLine("Flotante:{0}, Entero = {1}, Caracter = {2}", Flotante, Entero, Caracter);

    }}

    }