lunes, 8 de septiembre de 2008

Introduccion a C#

INTRODUCCION

En el año 2000, Microsoft anuncio el lenguaje de programación de C#, este lenguaje se diseño especificamente para la plataforma .NET
Es un lenguaje que permite a los programadores a migrar con facilidad hacia .NET
C# es un lenguaje orientado a objetos y contiene una biblioteca de clases, la cual permite a los programadores desarrollar aplicaciones en poco tiempo, ya que tiene componentes preconstruidos.


C# se compila por medio de un lenguaje intermedio llamado MSIL (MicroSoft Intermediate Languaje), este no es binario, ya que dependería de la plataforma, sino que se ejecuta sobre una maquina virtual que provee el CLR (Common Language Runtime).
El CLR es un entorno de ejecución , capaz de ejecutar aplicaciones codificadas en un lenguaje intermedio llamado MSIL.
La ventaja de este lenguaje intermedio es que las aplicaciones que se ejecutan sobre el CLR son portables, puesto que no dependen de una máquina específica , solo se necesita para ejecutarse sobre cualquier máquina que el CLR este instalado.

El primer programa en C#


using System;
using System.Collections.Generic;
using System.Text;

namespace primer_programa
{
/* Practica 1
fecha: 8 de septiembre 2008 */

class Program
{
static void Main(string[] args)
{
// Ejemplo No. 1
// Este programa imprime un mensaje

Console.WriteLine(" Bienvenido a C#");

}
}
}

En C# todo el código debe estar dentro de una o varias clases.

Este primer ejemplo tiene una sola clase Program y a su vez un método (Main) es un conjunto de instrucciones que seran ejecutadas una a una. Este método Main es el punto de entrada de un programa en C# , es el método que se ejecuta en primer lugar .

System es el namespace (espacio de nombres) de la librería donde esta la clase Console. Para no tener que escribir System.Console cada vez que se desee llamar a esta clase, se importa el espacio de nombres System en la aplicación con la directiva using. C# proprciona varios espacios de nombre y tambien el programador construye sus propios espacios de nombre como por ejemplo namespace primer_programa .
C# es un conjunto de clases predefinidas, que se pueden usar facilmente,todas las clases se organizan bajo espacios de nombres (namespace) que es directorio lógico dentro de la librería .NET donde se incluye código relacionado entre sí. Es importante ir creando namespace propios donde se incluyan las clases personales.


COMENTARIOS

Los comentarios son observaciones que se hacen dentro de un programa. La computadora ignora todos los comentarios y pueden ser muy utiles para explicar un proceso dentro de un programa.

Tipos de comentarios

a)Comentario de línea
Un comentario de linea empieza con dos diagonales // y continúa hasta el final de la linea. Por ejemplo
Los simbolos // no deben tener espacios en blanco entre ellos, indican el inicio de un comentario de linea. El fin de la línea, en el cual el comentario está escrito, indica el fin del comentario

// programa dos
// codificado por Angela Colunga

b)Comentarios de Bloque
Es un comentario que abarcan dos o mas lineas. Estos comentarios empiezan con el simbolo /* y terminan con el simbolo */
por ejemplo

/* Practica #1
fecha: 8 de septiembre 2008 */

El objetivo de los comentarios es documentar el programa para que exista mayor comprension, se recomienda que no sean extensos los comentarios.

Identificadores

Un identificador es el nombre que se utiliza para nombrar etiquetar o identificar una variable, una clase, un método, etc.

C# es sensible a las mayusculas. esto es que si una variable X1 se declara int y despues al utilizar escribes con minuscula el nombre x1, será otra variable difente que tiene que estar declarada.

Los identificadores deben comenzar por una letra o por guión bajo y se puede utilizar cualquier carácter UNICODE o número en dicho identificador. se puede utilizar como nombre una letra ñ o usar el acento .

Las palabras claves (palabras reservadas en C#) no se pueden utilizar como identificadores.

Ejemplo de identificadores válidos

resultado
total_mes_1
resumen44
plan99

identificadores invalidos
resultado%
plan$99
99plan


Literales

Los literales son los valores que pueden almacenar los tipos de datos básicos del lenguaje.

a)enteros
b)reales
c)booleanos
d)caracteres
e)cadenas de caracteres o string
f)null. indica que una referencia no apunta a ningun objeto.

Tipos de Valor

los tipos simples pueden clasificarse del siguiente modo.

Tipo Entero
con signo
sbyte 1 byte -128 a 127
short 2 byte -32768 a 32767
int 4 byte -2147483648 a 2147483647
long 8 byte -9223372036854775808 a +9223372036854775807

sin signo

byte 1 byte 0 a 255
ushort 2 byte 0 a 65535
uint 4 byte 0 a 4294967295
ulong 8 byte 0 a 18446744073709551615


Tipo Flotante

float 4 byte +/- 3.4028235E+38
double 8 byte +/- 1.79769313486231570E+308

Tipo Caracter

char 2 byte 0 a 65535

Tipo Booleano

bool true y false


Tipo Decimal
decimal 16 byte +/-79228162514264337593543950335 o +/- 7.9228162514264337593543950335E+28

Tipo object

object 4 byte cualquier tipo puede ser almacenado en una variable object



VARIABLES

Una variable es una localidad de memoria o espacio de almacenamiento que contiene un valor. Se pueden considerar las variables como cajas que contiene datos temporalmente. Toda variable de un programa debe poseer un nombre único. Se utiliza el nombre de la variable para hacer referencia al valor que contiene.

Una variable de tipo valor contiene y almacena un tipo de dato (int,float,double...etc)

Ejemplo

int numero=10;
double valor1=33.78;


Todos los tipo valor heredan de la clase System.Object (es la clase raiz de la jerarquia de herencia en C#).
Todas las variables en C# son objetos y tiene los miembros que heredan de object.


Entradas y salidas

La clase Console proporciona algunos métodos de entrada /salida por consola.

WriteLine()

Muestra por la consola o línea de comandos la cadena que pasa como parametro, seguido de un retorno de carro y un salto de línea al final.

public static void WriteLine(string, params object[]);


Si no se desea realizar el salto de línea ni el retorno de carro se puede utilizar otro método de la clase Console llamado Write().
Ejemplo:


string cadena="Bienvenido a C#";
Console.WriteLine("Mi frase es {0} ",cadena);

int valor1=100;
double valor2=89.45;
Console.WriteLine(" Valor1={0} , Valor2={1} ",valor1,valor2);

Console.Write(" Cual es tu nombre ? ");


ReadLine()

La clase Console proporciona dos métodos básicos para introducir datos por teclado desde la consola. Estos métodos son
int Read()
string ReadLine()

Cuando el programa llega a la línea que contiene Read() o ReadLine(), espera que el usuario introduzca una cadena y pulse enter.




using System;
using System.Collections.Generic;
using System.Text;

namespace Programa2
{
/* Practica 2
fecha: 9 de septiembre 2008 */

class Program
{
static void Main(string[] args)
{
// Ejemplo con ReadLine()
Console.Write("Cual es tu nombre ? ");
string cadena=Console.ReadLine();
Console.WriteLine(" {0} Bienvenido a C#", cadena);

}
}
}

using System;
using System.Collections.Generic;
using System.Text;

namespace primer_programa
{
/* Practica 3
fecha: 9 de septiembre 2008 */

class Program
{
static void Main(string[] args)
{
// Ejemplo No. 2
Console.Write(" Introduzca el radio del circulo : ");
int radio=Console.Read();
float area=Math.PI*radio*radio;
Console.WriteLine("El radio del circulo de radio {0} es {1} ",radio,area);
}
}
}


Declaracion de variables

Las variables son localidades de memoria que pueden contener un valor. El lenguaje C# procesa diferentes tipos de datos (ver la tabla de los tipos de datos).
Cuando se declara una varable se debe indicar el tipo de dato, que va almacenar.
El tipo y el nombre de una variable se declara en una instruccion declaración.

int valor; //la variable valor almacenará un dato de tipo entero
double totalMes,productos;
string nombre; //variable nombre almacenara un conjunto
// de caracteres


La declaración de una variable puede realizarse a nivel de la clase (las variables o atributos que definen las caracteristicas de un objeto), a nivel método (cuando se define un método en una clase), o a nivel de un bloque de código. Dependiendo donde se declara la variable, su uso estará limitado a la clase, al método , o al bloque de código. Se denomina ámbito de la variable al espacio donde queda situada una variable.
Si una variable es un dato miembro de una clase se declara en cualquier parte de la clase, fuera de todo método y de esta forma estará disponible para todo el código de esa clase, es decir que cualquier método la puede utilizar.

Si una varible se declara dentro de un método es una variable local. Los parametros de un método son variables locales del método, y solo se utilizará dentro del conjunto de instrucciones que se definen en el método.

Si una variable se declara en un bloque corresponde a una variable local de ese bloque. Cada vez que se ejecuta el bloque que la contiene, esta variable local se define nuevamente , y cuando finaliza la ejecución del bloque, la variable local deja de existir.

Las variables miembro de una clase son inicializadas siempre por el compilador , para objeto que se declare ; las variable numericas con 0, los caracteres con '\0' y las referencias de cadenas y las referencias con otros objetos con null.

Las variables locales no son iniciadas por el compilador, es necesario inicilizarlas, pues el compilador envia un aviso para que esas variables locales sean inicializadas.

Operador de Asignación

El simbolo = es el operador de asignación, el cual asigna el valor de la derecha a la variable de su izquierda
int valor;
//la variable valor recibe el dato por el teclado
valor=int.Parse(Console.ReadLine());
double totalMes;
totalMes=1000.99; //dato double asignado (1000.99) a la variable totalMes
string nombre;
//la variable nombre recibe los caracteres por el teclado
nombre=Console.ReadLine();

Nota: Cuando una variable se declara se debe asignar un valor antes de ser utilizada

ejemplo

int ganancias;
//Existe un error porque ganancias solo se declaro y no tiene un valor asignado
Console.WriteLine("Las ganacias del mes de agosto son {0} ",ganacias);


Variaciones a la asignación
La expresion de asignación x=x+10 es correcta esta no es una ecuación algebraica , sino una expresión que se evaluará; primero consiste en calcular el valor x+10. El segundo paso es guardar el valor calculado de x.
ejemplo:
int x=25;
Console.WriteLine(" El valor de x= {0}",x);
x=x+10;
Console.WriteLine(" El nuevo valor de x={0} ",x);
x=x+15;
Console.WriteLine(" ahora el valor de x={0} ",x);



Operadores

Los operadores son símbolos que indican como son manejados los datos. Se clasifican de la siguiente forma:

Operadores aritméticos

operador Operación expresión algebraica expresión en C#

+ Suma a+7 a+7
- Resta a-b a-b
* Multiplicación a.b a*b
/ División a/b a/b
% Residuo a MOD b a%b




Precedencia de los operadores aritmeticos

Operador Operación(es) Orden de evaluación
Se evalua primero
* multiplicación Si existen varios operadores de este tipo, se evalua de izquierda a derecha
/ División
% Residuo

Después se evalúa
+ Suma Si existen varios operadores de este tipo, se evalua de izquierda a derecha
- Resta Si existen varios operadores de este tipo, se evalua de izquierda a derecha



Operadores relacionales

Operador Operación(es) Expresion en C# significado


== igualdad a==b a es igual a b
!= diferente a!= b a no es igual a b
> mayor que a > b a es mayor que b
< menor que a < b a es menor que b
>= mayor o igual que a >= b a es mayor o igual a b
<= menor o igual que a <= b a es menor o igual a b



Precedencia de los operaciones aritmeticos y relacionales

Operadores Asociatividad Tipo

* / % izquierda a derecha multiplicativa

+ - izquierda a derecha aditiva

< <= > >= izquierda a derecha relacional

== != izquierda a derecha igualdad


= derecha a izquierda asignación




Operadores Lógicos
El resultado de una operacion lógica es un valor verdadero (true) o falso (false).


Operador Operación

&& AND. El resultado es verdadero (true) si al evaluar cada uno de los operandos su resultado es verdadero (true) . Si uno de ellos es falso (false), el resultado es falso (false). Si el primer operando es falso (false), el segundo no es evaluado.

Primer operando operador segundo operando Resultado

Verdadero && Verdadero Verdadero
Verdadero && Falso Falso
Falso && Verdadero Falso
Falso && Falso Falso





|| OR. El resultado es falso (false) si al evaluar cada uno de los operandos el resultado es falso (false). Si uno de ellos verdadero (true), el resultado es verdadero es verdadero (true). Si se utiliza || y el primer operando es verdadero (true), el segundo operando no será evaluado.


Primer operando operador segundo operando Resultado

Verdadero || Verdadero Verdadero
Verdadero || Falso Verdadero
Falso || Verdadero Verdadero
Falso || Falso Falso



! NOT. Al aplicar el operador niega la expresion. Si la expresion es verdadera al negarla es false, en caso contrario si la expresión es falsa al negarla es verdadera

^ XOR. Si al evaluar cada uno de los operandos el resultados de uno es verdadero (true)y el del otro falso (false), el resultado es verdadero (true). en otro caso el resultado es falso (false).

primer operando operador segundo operando Resultado

Verdadero ^ Verdadero Falso
Verdadero ^ Falso Verdadero
Falso ^ Verdadero Verdadero
Falso ^ Falso Falso



Operador condicional

El operador condicional (?) , llamado operador ternario, se utiliza en expresiones condicionales, que tienen la forma siguiente:

operador1 ? operando2 : operando3

La expresion operando1 debe ser una expresión booleana. Si el resultado de la evaluación de operando1 es verdadero (true), el resultado de la expresión condicional es operando2. Si el resultado de la evaluación de operando1 es falso(false), el resultado de la expresión condicional es operando3.

double a=10.2 , b=20.5 , mayor=0;
mayor= (a > b) ? a : b;



Operadores unitarios

~ Complemento a 1 ( cambiar ceros por unos y unos por ceros). El operando debe de ser de un tipo int, uint, long o ulong.

- Cambia de signo al operando ( esto es, se calcula el complemento a dos que es el complemento a 1 más 1). El operando puede ser de un tipo numérico.






Operadores de bits


operador operación

& AND a nivel bits

| OR a nivel bits

^ XOR a nivel bits

<< Desplazamiento a la izquierda rellenando con ceros a la derecha
>> Desplazamiento a la derecha rellenando con el bit de signo por la izquierda.