19
.NET 4.5.1 Fundamentals Developer Visual Studio 2013 con C# Revisión de Conceptos de Programación Tipos y Conversión de Datos Al finalizar el capítulo, el alumno: Identifica los tipos de datos en el NET Framework distinguiendo su empleo. Declara variables y constantes estableciendo su ámbito de acción. Emplea los diversos operadores para resolver reglas de negocio determinadas. Identifica herramientas para conversión de datos. Temas 1. Tipos de datos en el CLR 2. Variables 3. Constantes 4. Operadores 5. Conversión de Datos

Capitulo 7 - Tipos y Conversión de Datos - C#

Embed Size (px)

DESCRIPTION

*

Citation preview

Page 1: Capitulo 7 - Tipos y Conversión de Datos - C#

.NET 4.5.1 Fundamentals Developer Visual Studio 2013 con C#

Revisión de Conceptos de Programación Tipos y Conversión de Datos

Al finalizar el capítulo, el alumno:

Identifica los tipos de datos en el NET Framework distinguiendo su empleo.

Declara variables y constantes estableciendo su ámbito de acción.

Emplea los diversos operadores para resolver reglas de negocio determinadas.

Identifica herramientas para conversión de datos.

Temas

1. Tipos de datos en el CLR

2. Variables

3. Constantes

4. Operadores

5. Conversión de Datos

Page 2: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 84

1. Tipos de datos en el CLR

1.1 Clasificación de datos Un tipo de dato determina la naturaleza del dominio de valores que puede tomar una variable, las operaciones en que puede participar y el espacio de memoria que necesita. Las siguientes tablas muestran los tipos de datos que maneja VB.NET y C#.

Tipo de Visual Basic Estructura de

tipo CLR

Asignación de almacenamiento

nominal Intervalo de valores

Boolean Boolean En función de la plataforma de implementación

True o False

Byte Byte 1 byte 0 a 255 (sin signo)

Char (caracter individual)

Char 2 bytes 0 a 65535 (sin signo)

Date DateTime 8 bytes 0:00:00 (medianoche) del 1 de enero de 0001 a 11:59:59 p.m. del 31 de diciembre de 9999.

Decimal Decimal 16 bytes

0 a +/-79.228.162.514.264.337.593.543.950.335 (+/-7,9... E+28)

† sin separador decimal; 0 a

+/-7,9228162514264337593543950335 con 28 posiciones a la derecha del decimal; el número distinto de cero más pequeño es +/-0,0000000000000000000000000001 (+/-1E-28)†

Page 3: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 85

Tipo de Visual Basic Estructura de

tipo CLR

Asignación de almacenamiento

nominal Intervalo de valores

Double (punto flotante de precisión doble)

Double 8 bytes

-1,79769313486231570E+308 a -4,94065645841246544E-324

† para los

valores negativos; 4,94065645841246544E-324 a 1,79769313486231570E+308 † para los valores positivos

Integer Int32 4 bytes -2.147.483.648 a 2.147.483.647 (con signo)

Long (entero largo) Int64 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9,2...E+18

†)

(con signo)

Objeto Object (clase)

4 bytes en plataforma de 32 bits 8 bytes en plataforma de 64 bits

Cualquier tipo puede almacenarse en una variable de tipo Object

SByte SByte 1 byte -128 a 127 (con signo)

Short (entero corto) Int16 2 bytes -32.768 a 32.767 (con signo)

Single (punto flotante de precisión sencilla)

Single 4 bytes

-3,4028235E+38 a -1,401298E-45 † para los

valores negativos 1,401298E-45 a 3,4028235E+38 † para los valores positivos

String (longitud variable)

String (clase) En función de la plataforma de implementación

0 a 2.000 millones de caracteres Unicode aprox.

UInteger UInt32 4 bytes 0 a 4.294.967.295 (sin signo)

ULong UInt64 8 bytes 0 a 18.446.744.073.709.551.615 (1,8...E+19 ) (sin signo)

User-Defined(estructura)

(hereda de ValueType)

En función de la plataforma de implementación

Cada miembro de la estructura tiene un intervalo de valores determinado por su tipo de datos y es independiente de los intervalos de valores correspondientes a los demás miembros.

UShort UInt16 2 bytes 0 a 65.535 (sin signo)

Page 4: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 86

C# Type .NET Framework Type

bool System.Boolean

byte System.Byte

sbyte System.SByte

char System.Char

decimal System.Decimal

double System.Double

float System.Single

int System.Int32

uint System.UInt32

long System.Int64

ulong System.UInt64

object System.Object

short System.Int16

ushort System.UInt16

string System.String

Referencia

Extraído del siguiente URL:

http://msdn.microsoft.com/en-

us/library/47zceaw7(v=vs.110).aspx?sentenceguid=5fc732311905cb27e82d67f4f65

11f7f

http://msdn.microsoft.com/en-us/library/ya5y69ds(v=vs.110).aspx

Page 5: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 87

2. Variables

Las variables se utilizan para almacenar valores temporalmente durante la ejecución de una aplicación. Las variables tienen un nombre (palabra que se utiliza para referirse al valor que contiene la variable) y un tipo de dato (que determina la clase de dato que la variable puede almacenar).

2.1 Declaración de Variables En Visual Basic, declarar una variable es indicar al programa algo de antemano. Se declara una variable mediante la instrucción Dim proporcionando un nombre a la variable según la siguiente sintaxis:

Dim <nombre-variable> [As tipo]

Dim <nombre-variable> [As tipo] = <valor>

Page 6: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 88

Ejemplos

Dim sNombre as String

Dim iFactorial as Integer =0

Dim dFechaIni, dFechaFin as Date

Dim sDireccion, sRUC, sRSocial as String

En C#, se emplea el tipo de dato a definir y el nombre de la variable, opcionalmente puede dársele un valor de inicio.

<tipo de dato> <nombre-variable>;

<tipo de dato> <nombre-variable> = <valor>;

Ejemplos

float fSueldo;

int iNota = 0;

string sNombre = “”;

string sCodigo = “XXX”;

bool bSw = true;

Recuerde

Las variables que se declaran en un procedimiento solo existen mientras se

ejecuta el procedimiento. Cuando termina el procedimiento, desaparece el valor

de la variable. Además, el valor de una variable de un procedimiento es local a

dicho procedimiento; es decir, no puede tener acceso a una variable de un

procedimiento desde otro procedimiento. Estas características le permiten

utilizar los mismos nombres de variables en distintos procedimientos sin

preocuparse por posibles conflictos o modificaciones accidentales.

Page 7: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 89

2.2 Nombres de variable El nombre de una variable debe cumplir con los siguientes requisitos:

Debe comenzar con una letra.

No puede incluir un punto o un carácter de declaración de tipo ($,&,!,%,#,@).

No debe exceder de 255 caracteres.

Debe ser única en el mismo ámbito que es el intervalo desde el que se puede hacer

referencia a la variable (un procedimiento, formulario, etc.)

De ser posible, utilice prefijos para identificar mejor el tipo de datos de una variable.

2.3 Ámbito de las Variables El alcance de una variable define en qué partes del código son reconocidas. Cuando declara una variable en un procedimiento, solo el código de dicho procedimiento puede tener acceso o modificar el valor de la variable; tiene un alcance local al procedimiento. A veces, sin embargo, se necesita utilizar una variable con un alcance más general como aquella cuyo valor está disponible para todos los procedimientos del mismo módulo o incluso para todos los procedimientos de toda la aplicación. Visual Basic y C# le permiten especificar el alcance de una variable cuando la declara. Dependiendo de cómo se declara, una variable tiene como alcance un procedimiento (local) o un módulo (clase en C#). Esto se detalla a continuación:

Visual Basic .Net C# Descripción del ámbito

Private Private Accesible dentro del mismo módulo, clase o estructura.

Friend Internal Accesible desde dentro del mismo proyecto, pero no desde fuera de él.

Protected Protected Accesible desde dentro de la misma clase o desde una clase derivada de ella.

Protected Friend protected internal Accesible desde clases derivadas o desde dentro del mismo proyecto, o ambos.

Public public

Accesible desde cualquier parte del mismo proyecto, desde otros proyectos que hagan referencia al proyecto, y desde un ensamblado generado a partir del proyecto.

2.3.1 Variables utilizadas en un procedimiento

En VB, las variables al nivel de procedimiento, sólo se reconocen en el procedimiento en el que se han declarado. Se les conoce también como variables locales. Se declaran mediante la palabra clave Dim o Static.

Ejemplo Dim intTemp As Integer ‘ó

Static intContador As Integer

Page 8: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 90

Los valores de variables locales declaradas con Static existen mientras se ejecuta la aplicación, mientras que las variables declaradas con Dim solo existen mientras se ejecuta el procedimiento. En C#, se da el mismo caso que en VB. Se puede emplear la palabra reservada private, el cual es el ámbito por defecto. Si desea establecer una variable de alcance público, puede emplear la palabra reservada public.

Ejemplo

int Cantidad=0;

prívate float Promedio;

bool Miflag=true;

public int Contador=0;

2.3.2 Variables utilizadas en un módulo

De forma predeterminada, una variable al nivel de módulo (o clase en C#) está disponible para todos los procedimientos del módulo, pero no para el código de otros módulos. Cree variables a nivel de módulo declarándolas con la palabra reservada Private al principio del módulo. Ejemplos En VB

Private intTemp As Integer

En C#

prívate int intNota1,intNota2;

A nivel de módulo, no hay diferencia entre Private y Dim, pero es preferible usar Private porque contrasta con Public y hace que el código sea más fácil de comprender.

2.3.3 Variables utilizadas por todos los módulos

Para hacer que una variable al nivel de módulo esté disponible para otros módulos, utilice la palabra clave Public para declararlas. Los valores de las variables públicas están disponibles para todos los procedimientos de la aplicación. Al igual que todas las variables a nivel del módulo, las variables públicas se declaran al principio del módulo.

Page 9: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 91

Ejemplo En VB

Public intTemp As Integer

En C#

Public int intVeces=0;

Recuerde

No puede declarar variables públicas en un procedimiento asociado a un

evento, solo puede hacerlo en la sección de declaraciones de un módulo o

clase.

Page 10: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 92

3. Constantes

A menudo verá que el código contiene valores constantes que reaparecen una y otra vez. O puede que el código dependa de ciertos números que resulten difíciles de recordar (números que, por sí mismos, no tienen un significado obvio). En estos casos, puede mejorar mucho la legibilidad del código y facilitar su mantenimiento si utiliza constantes. Una constante es un nombre significativo que sustituye a un número o una cadena que no varía. Aunque una constante recuerda ligeramente a una variable, no puede modificar una constante o asignarle un valor nuevo como ocurre con una variable. Hay dos orígenes para las constantes:

Constantes intrínsecas o definidas por el sistema, proporcionadas por Visual Basic.

Las constantes simbólicas o definidas por el usuario se declaran mediante la

instrucción Const.

3.1 Declaración de constantes La sintaxis para declarar una constante es la siguiente:

‘En Visual Basic

[Public|Private] Const <nombre_constante> [As tipo] = <valor>

// En C#

[public|private] const <tipo> <nombre_constante> = <valor>;

Recuerde que en C# los delimitadores de acceso Private y Public se deben escribir en minúsculas, es decir private y public. Del mismo modo la palabra reservada Const en VB, en C# se debe escribir como const.

Page 11: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 93

El argumento nombre_constante es un nombre simbólico válido (las reglas son las mismas que para crear nombres de variable) y la expresión está compuesta por constantes y operadores de cadena o numéricos; sin embargo, no puede utilizar llamadas a funciones en expresión. Una instrucción Const puede representar una cantidad matemática o de fecha y hora:

Const Pi = 3.14159265358979

Public Const IGV As Single = 0.18

Const FechaSalida = #1/1/95#

Se puede utilizar también la instrucción Const para definir constantes de cadena.

Public Const Version = “ 07.10.A”

Const RazonSocial = “Empresa Orion S.A.”

Puede colocar más de una declaración de constante en una única línea si las separa con comas.

Public Const Pi=3.14, MaxPlanetas=9, PobMundial=6E+09

A menudo, la expresión del lado derecho del signo igual (=) es un número o cadena literal, pero también puede ser una expresión que dé como resultado un número o una cadena (aunque la expresión no puede contener llamadas a funciones). Puede incluso definir constantes en términos de constantes previamente definidas.

Const conPi2 = conPi * 2

Una vez que defina las constantes, puede colocarlas en el código para hacerlo más legible. Ejemplo

If numPersonas > conPopMundial Then

A continuación, se muestran algunos ejemplos en C#.

const int meses = 12;

const int semanas = 52;

const int dias = 365;

private const double diasPorSemana = dias / semanas;

public const double diasPorMes = dias / meses;

Page 12: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 94

3.2 Alcance de las constantes definidas por el usuario Una instrucción Const tiene igual alcance que una declaración de variable y se le aplican las mismas reglas como las siguientes:

Para crear una constante que solo exista en un procedimiento, declárela dentro del

procedimiento.

Para crear una constante disponible para todos los procedimientos de un módulo,

pero no para el código que está fuera del módulo, declárela en la sección inicial del

módulo.

Para crear una constante disponible en toda la aplicación, declare la constante en la

parte inicial de un módulo estándar y coloque delante de Const la palabra clave

Public. No se pueden declarar las constantes públicas en una clase o en un

formulario.

Page 13: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 95

4. Operadores

En Visual Studio 2012, como en otros entornos de programación se manejan operadores para elaborar expresiones matemáticas o lógicas. Estos son los siguientes:

4.1 Aritméticos

En VB

^ Potencia

* Multiplicación

/ División

Mod Residuo entero (Ejm: A Mod B)

+ Suma

- Resta

& Concatenación de cadenas

En C#

Math Pow(valor, potencia)

* Multiplicación

/ División

% Residuo entero (Ejm: A % B)

+ Suma o Concatenación de cadenas

- Resta

Page 14: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 96

4.2 Comparación o Relación

En VB

= Igual

<> Distinto

< Menor que

> Mayor que

<= Menor o igual

>= Mayor o igual

Like Compara dos cadenas:

* Cero o más caracteres (Ejm: cad Like “ma*”)

? Cualquier caracter

# Cualquier dígito (0-9)

[lista] Cualquier caracter en lista

[¡lista] Cualquier caracter que no está en lista

Is Usado para comparar dos variables de referencia a objetos

En C#

== Igual

!= Distinto

< Menor que

> Mayor que

<= Menor o igual

>= Mayor o igual

Page 15: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 97

4.3 Lógicos

En VB

And “Y” lógico

AndAlso Evalúa por medio del operador And 2 condiciones, pero si la primera de ellas no se cumple, ya no evalúa la segunda.

Or “O” lógico

OrElse Evalúa 2 condiciones por medio del operador Or, pero si la primera de ellas se cumple, ya no evalúa la segunda.

Xor “O” exclusivo

Not Negación

En C#

& Y lógico

&& Y condicional

| O lógico

|| O condicional

^ O exclusivo

! Negación

Page 16: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 98

5. Conversión de Datos

Podemos utilizar funciones de conversión para forzar el resultado de una operación a un tipo de datos particular en lugar del tipo de datos por defecto. Por ejemplo, podemos convertir un valor de tipo cadena a un valor entero. Las funciones de conversión permiten convertir explícitamente un valor de un tipo de datos a otro.

5.1 Funciones de conversión Visual Basic ofrece una amplia lista de funciones y clases de conversión, incluyendo las descritas en la siguiente tabla:

Función de Conversión

Convierte en Tipo de Dato

Tipos de datos para conversión permitidos

CStr String Cualquier tipo numérico, Boolean, Char, Date, Objetc, etc.

Cint Integer Cualquier tipo numérico, Boolean, Char, Date, Objetc, etc.

CDbl Double Cualquier tipo numérico, Boolean, Char, Date, Objetc, etc.

Cdate Date String, Object

Ctype Tipo Especificado El mismo tipo que el permitido para la función de conversión correspondiente.

System.Convert Tipo Especificado Permite convertir datos de un tipo a otro.

Page 17: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 99

El código siguiente muestra cómo utilizar varias funciones de conversión:

' Conversión de un entero en cadena

Dim myVariable As Integer

myVariable = 1234

MessageBox.Show(myVariable)

MessageBox.Show(CStr(myVariable) & "1")

‘ Conversión de un entero en doble

Dim myVariable As Double

myVariable = 567.9894

MessageBox.Show(myVariable)

MessageBox.Show(CInt(myVariable))

' Conversión de cadena a fecha

Dim myVariable As String

myVariable = "February 12, 1992"

MessageBox.Show(myVariable)

MessageBox.Show(CDate(myVariable))

El siguiente ejemplo muestra cómo utilizar las funciones de conversión CStr y CDbl para escribir código que convierte pies y pulgadas a metros.

Dim pies As Double, pulgadas As Double

Dim milimetros As Double, metros As Double

‘ Extraemos los valores desde las cajas de texto

‘La propiedad Text de las cajas son cadenas y usando CDbl() las convertiremos a Double

pies = CDbl(PiesTextBox.Text)

pulgadas = CDbl(IPulgadasTextBox.Text)

‘Ahora convertiremos pies y pulgadas en milímetros.

Page 18: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 100

milimetros = (pulgadas * MilimetrosPorPulgadas) + _

(Pies * MilimetrosPorPulgadas * PulgadasPorPie)

‘ Conversión de milímetros a metros.

metros = milimetros / 1000

‘Mostramos el resultado en un label, cuya propiedad Text es una cadena, por lo

‘que usaremos la función CStr().

Resultado.Text = CStr(metros)

Para el ejemplo, las variables MilimetrosPorPulgadas y PulgadasPorPie, se asumen que ya se les han asignado sus valores des un módulo. Para el caso de C# e incluso el mismo VB, se sugiere emplear la clase Convert. Ambos lenguajes reconocen esta clase, dado que es abastecida por la propia plataforma .Net Framework y no es una función nativa del lenguaje (vea la nota al final de este tema). Esta clase permite convertir valores a diferentes tipos de dato, obviamente si se mantiene la congruencia del caso. En el siguiente segmento de código se emplea la clase Convert: En VB

Dim dNumero As Double

dNumero = 23.15

Try

'Este ejemplo convierte a entero el valor 23.15

Dim iNumber As Integer

iNumber = System.Convert.ToInt32(dNumber)

' Y a cadena el valor 23.15

Dim strNumber As String

strNumber = System.Convert.ToString(dNumber)

Catch exp As Exception

Messagebox.show (ex.message)

End Try

Page 19: Capitulo 7 - Tipos y Conversión de Datos - C#

Tipos y Conversión de Datos 101

En C#

double dNumero;

dNumero = 23.15;

try

{

//Este ejemplo convierte a entero el valor 23.15

int iNumber;

iNumber = System.Convert.ToInt32(dNumber);

// Y a cadena el valor 23.15

string strNumber;

strNumber = System.Convert.ToString(dNumber);

}

catch (Exception ex)

{

Messagebox.show (ex.message);

}

Funcionalmente Convert y CType en Visual Basic trabajan igual, pero se recomienda emplear la clase Convert dado que se puede emplear en cualquier aplicación desarrollada en NET Framework en cualquiera de los lenguajes de la plataforma, no así CType que es una función propia del lenguaje Visual Basic.