Upload
mauricio-flores
View
222
Download
0
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);
}}
}