You are on page 1of 25

República Bolivariana de Venezuela

Área de Computación

Curso de C #

Facilitador:
Prof. Bassam Asfur
Microsoft.NET

Microsoft.NET es el conjunto de nuevas tecnologías en las que


Microsoft ha estado trabajando durante los últimos años con el objetivo de
obtener una plataforma sencilla y potente para distribuir el software en
forma de servicios que puedan ser suministrados remotamente y que
puedan comunicarse y combinarse unos con otros de manera totalmente
independiente de la plataforma, lenguaje de programación y modelo de
componentes con los que hayan sido desarrollados. Ésta es la llamada
plataforma .NET, y a los servicios antes comentados se les denomina
servicios Web.

Para crear aplicaciones para la plataforma .NET, tanto servicios Web


como aplicaciones tradicionales (aplicaciones de consola, aplicaciones de
ventanas, servicios de Windows NT, etc.), Microsoft ha publicado el
denominado kit de desarrollo de software conocido como .NET
Framework SDK, que incluye las herramientas necesarias tanto para su
desarrollo como para su distribución y ejecución y Visual Studio.NET,
que permite hacer todo la anterior desde una interfaz visual basada en
ventanas.
Microsoft.NET
C# (leído en inglés “C Sharp” y en español “C Almohadilla”) es el nuevo lenguaje
de propósito general diseñado por Microsoft para su plataforma .NET. Sus
principales creadores son Scott Wiltamuth y Anders Hejlsberg, éste último
también conocido por haber sido el diseñador del lenguaje Turbo Pascal y la
herramienta RAD Delphi.

Aunque es posible escribir código para la plataforma .NET en muchos otros


lenguajes, C# es el único que ha sido diseñado específicamente para ser utilizado
en ella, por lo que programarla usando C# es mucho más sencillo e intuitivo que
hacerlo con cualquiera de los otros lenguajes ya que C# carece de elementos
heredados innecesarios en .NET. Por esta razón, se suele decir que C# es el
lenguaje nativo de .NET

La sintaxis y estructuración de C# es muy similar a la C++, ya que la intención de


Microsoft con C# es facilitar la migración de códigos escritos en estos lenguajes a
C# y facilitar su aprendizaje a los desarrolladores habituados a ellos. Sin embargo,
su sencillez y el alto nivel de productividad son equiparables a los de Visual Basic.

En resumen, C# es un lenguaje de programación que toma las mejores


características de lenguajes preexistentes como Visual Basic, Java o C++ y las
combina en uno solo.
Microsoft.NET

Características de C#

Sencillez: C# elimina muchos elementos que otros lenguajes incluyen y que son
innecesarios en .NET

Orientación a objetos: Como todo lenguaje de programación de propósito


general actual, C# es un lenguaje orientado a objetos

Orientación a componentes: La propia sintaxis de C# incluye elementos propios


del diseño de componentes que otros lenguajes tienen que simular mediante
construcciones más o menos complejas

Gestión automática de memoria: Como ya se comentó, todo lenguaje de .NET


tiene a su disposición el recolector de basura del CLR. Esto tiene el efecto en el
lenguaje de que no es necesario incluir instrucciones de destrucción de objetos.

Instrucciones seguras: Para evitar errores muy comunes, en C# se han impuesto


una serie de restricciones en el uso de las instrucciones de control más comunes.
Microsoft.NET
Básicamente una aplicación en C# puede verse como un conjunto de uno o más
ficheros de código fuente con las instrucciones necesarias para que la aplicación
funcione como se desea y que son pasados al compilador para que genere un
ejecutable. Cada uno de estos ficheros no es más que un fichero de texto plano escrito
usando caracteres Unicode y siguiendo la sintaxis propia de C#.

Como primer contacto con el lenguaje, nada mejor que el típico programa de
iniciación “¡Hola Mundo!” que lo único que hace al ejecutarse es mostrar por pantalla
el mensaje ¡Hola Mundo! Su código es:

1: class HolaMundo
2: {
3: static void Main()
4: {
5: System.Console.WriteLine(“¡Hola Mundo!”);
6: }
7: }

Todo el código escrito en C# se ha de escribir dentro de una definición de clase, y lo


que en la línea 1: se dice es que se va a definir una clase (class) de nombre
HolaMundo1 cuya definición estará comprendida entre la llave de apertura de la línea
2: y su correspondiente llave de cierre en la línea línea 7:
Microsoft.NET

Ya se ha dicho que el punto de entrada de una aplicación es un método de


nombre Main que contendrá el código por donde se ha de iniciar la
ejecución de la misma. Hasta ahora sólo se ha visto una versión de Main()
que no toma parámetros y tiene como tipo de retorno void, pero en realidad
todas sus posibles versiones son:

static void Main()


static int Main()
static int Main(string[] args)
static void Main(string[] args)

Como se ve, hay versiones de Main() que devuelven un valor de tipo int. Un
int no es más que un tipo de datos capaz de almacenar valor enteros
comprendidos entre –2.1471483.648 y 2.1471483.647, y el número devuelto
por Main() sería interpretado como código de retorno de la aplicación. Éste
valor suele usarse para indicar si la aplicación a terminado con éxito
(generalmente valor 0) o no (valor según la causa de la terminación
anormal).
Microsoft.NET

Conceptos de clase y objeto

C# es un lenguaje orientado a objetos puro, lo que significa que todo con lo


que vamos a trabajar en este lenguaje son objetos. Un objeto es un
agregado de datos y de métodos que permiten manipular dichos datos, y un
programa en C# no es más que un conjunto de objetos que interaccionan
unos con otros a través de sus métodos.

Una clase es la definición de las características concretas de un determinado


tipo de objetos. Es decir, de cuáles son los datos y los métodos de los que
van a disponer todos los objetos de ese tipo. Por esta razón, se suele decir
que el tipo de dato de un objeto es la clase que define las características del
mismo.
Características C#
Tipos de datos

C# contiene dos categorías generales de tipos de datos integrados: tipos


de valor y tipos de referencia. El término tipo de valor indica que esos
tipos contienen directamente sus valores.

Tipos para definir números enteros:


Características C#
Los tipos de coma flotante pueden representar números con componentes
fraccionales. Existen dos clases de tipos de coma flotante: float y double.

El tipo double es el más utilizado porque muchas funciones matemáticas


de la biblioteca de clases de C# usan valores double. Quizá, el tipo de
coma flotante más interesante de C# es decimal, dirigido al uso de cálculos
monetarios.
Características C#
Los caracteres en C# no tienen un tamaño de 8 bits como en otros muchos
lenguajes de programación, sino que usa un tamaño de 16 bits llamado
Unicode al cual se le llama char. No existen conversiones automáticas de
tipo entero a char.

Para los tipos de datos lógicos no existen conversiones automáticas de tipo


entero a boolean.
Características C#
Variables

Las variables son identificadores asociados a valores.


Se declaran indicando el tipo de dato que almacenará y su identificador.

Un identificador puede:

• empezar por "_".


• contener caracteres Unicode en mayúsculas y minúsculas (sensible a
mayúsculas y minúsculas).

Un identificador no puede:

• empezar por un número.


• empezar por un símbolo, ni aunque sea una palabra clave.
• contener más de 511 caracteres.
Características C#
Variables

Declarar una variable:

int miNumero;

// Declaramos la variable, pero no la inicializamos con ningún valor.

Para asignar un valor a una variable, se indica el identificador de la misma,


seguido del símbolo igual (=) y el valor que queremos que almacene:

miNumero = 5; // Asignamos el valor '5'.

También se puede declarar y asignar un valor al mismo tiempo:

int miNumero = 5; // Declaramos la variable, y asignamos el valor '5'.


Características C#
Las conversiones de tipo de variables en C# se representan en la siguiente
tabla en donde la fila es el origen y la columna el destino.

Toda conversión implícita no


ocasiona pérdida de
información, truncamientos o
redondeos.

Es posible (mas no siempre


ocurre) que en una conversión
explícita haya pérdida de
información, truncamientos o
redondeos.

En toda conversión implícita el La conversión explícita se realiza indicando el


tipo de dato destino es mayor tipo de dato al que se quiere convertir entre
que el tipo de dato origen. paréntesis, seguido del valor
Características C#
Constantes

Las constantes son valores inmutables, y por tanto no se pueden cambiar.

const
Cuando se declara una constante con la palabra clave const, también se debe
asignar el valor. Tras esto, la constante queda bloqueada y no se puede
cambiar.

Son implícitamente estáticas (static).

const double PI = 3.1415;


Características C#

Operadores

•El resultado de los operadores relacionales y


lógicos es un valor de tipo bool.

•Los operadores de cortocircuito evalúan el


segundo operando solo cuando es necesario.

•Los operadores a nivel de bits no se pueden


aplicar a tipos bool, float, double o decimal.

•Los operadores aritméticos funcionan igual que


en C y C++.
Características C#

Estructuras de control

Las instrucciones if-else, for, while, do-while, switch, return, break,


continue son, básicamente, iguales que en C, C++ y Java.

La instrucción foreach, al igual que en Java, realiza un ciclo a través


de los elementos de una matriz o colección.

En este ciclo se recorre la colección y la variable recibe un elemento


de dicha colección en cada iteración.

La instrucción goto se sigue utilizando en C# a pesar de la polémica


sobre su uso.
Características C#

Métodos

Todo método debe ser parte de una clase, no existen métodos


globales (funciones).
Por defecto, los parámetros se pasan por valor.
El modificador ref fuerza a pasar los parámetros por referencia en vez
de pasarlos por valor.
Un método puede devolver cualquier tipo de dato, incluyendo tipos de
clase.
Ya que en C# las matrices se implementan como objetos, un método
también puede devolver una matriz (algo que se diferencia de C++ en
que las matrices no son válidas como tipos de valores devueltos).
C# implementa sobrecarga de métodos, dos o más métodos pueden
tener el mismo nombre siempre y cuando se diferencien por sus
parámetros.
El método Main es un método especial al cual se refiere el punto de
partida del programa.
Características C#
Arreglos

Un arreglo contiene variables a las cuales se accede a través de


índices, todas las variables contenidas en el arreglo son referidos
como elementos los cuales deben ser del mismo tipo, por lo que el
tipo del arreglo.

Los arreglos en C# son referencias a objetos. El valor inicial de un


arreglo es null, un arreglo de objetos es creado utilizando new.
Cuando un arreglo es creado inicialmente contiene los valores por
default para los tipos que este contendrá.

Sintaxis:
tipo[] identificador;

Note que para definir un arreglo se utilizan los corchetes [] después


del tipo del arreglo.
Características C#
Arreglos

Ejemplo:
string[] aPersonas;

Es posible inicializar un arreglo al momento de crearlo:


string[] asPersonas =

Durante la inicialización es posible omitir new tipo[x] y el compilador


podría determinar el tamaño de almacenamiento para el arreglo del
número de items en la lista de inicialización:

string[] asPersonas = new string[] {“Jose",”Maria",”Pedro",”Manuel”};

Cada elemento de un arreglo de ints es un int con el valor 0:


int[] aiNumeros = new int[5];

Cada elemento de un arreglo de strings es un string con el valor null:


string[] asNombres = new string[5];
Características C#
Clase Array

La clase Array provee entre otras, funciones de búsqueda y


ordenamiento.

En el siguiente ejemplo se muestra como es ordenado un arreglo de


strings:
using System;
class App{
public static void Main(){
string[] aLenguajes = {"Java", "Pascal", "ActionScript", "PHP",
"C#", "SQL", "JavaScript", "C", "Java", "Prolog", "Visual Basic",
"C++"};
Array.Sort(aLenguajes);

for(int elemento = 0; elemento < aLenguajes.Length; elemento++)


Console.WriteLine("Elemento [" + elemento + "] = " +
aLenguajes[elemento]);
}// fin del main
}
Características C#

Clases y objetos

Una variable de objeto de cierta clase no almacena los valores del


objeto sino su referencia (al igual que Java).

El operador de asignación no copia los valores de un objeto, sino la


referencia al mismo (al igual que Java).

Un constructor tiene el mismo nombre que su clase y es


sintácticamente similar a un método. Un constructor no devuelve
ningún valor.

Al igual que los métodos, los constructores también pueden ser


sobrecargados.

Si no se especifica un constructor en una clase, se usa uno por


defecto que consiste en asignar a todas las variables el valor 0, null o
false según corresponda.
Características C#

Clases y objetos

Cuando un objeto no es referenciado por ninguna variable, el


recolector de basura ejecuta el destructor de dicha clase y libera la
memoria utilizada.

El destructor de una clase no se llama cuando un objeto sale del


ámbito. Todos los destructores se llamarán antes de que finalice un
programa.

La palabra clave this es una referencia al mismo objeto en el cual se


usa.

La palabra clave static hace que un miembro pertenezca a una clase


en vez de pertenecer a objetos de dicha clase.

Se puede tener acceso a dicho miembro antes de que se cree


cualquier objeto de su clase y sin referencias a un objeto.
Características C#

Clases y objetos

Un método static no tiene una referencia this.

Un método static puede llamar sólo a otros métodos static.

Un método static sólo debe tener acceso directamente a datos static.

Un constructor static se usa para inicializar atributos que se aplican a


una clase en lugar de aplicarse a una instancia.

C# permite la sobrecarga de operadores (+, -, *, etc.) con la palabra


clave operator.

Al comparar objetos (==, !=, <, >, <=, >=) se comprueba si hacen
referencia al mismo objeto.
Características C#

Cadenas de caracteres

•El tipo de dato para las cadenas de caracteres es string.

•Realmente la palabra clave string es un alias de la clase System.String de la


plataforma .NET.

•En C# las cadenas son objetos y no una matriz de caracteres, aun así, se puede
obtener un carácter arbitrario de una cadena por medio de su índice (mas no
modificarlo).

•Las cadenas son inmutables, una vez creadas no se pueden modificar, solo se
pueden copiar total o parcialmente.

•El operador == determina si dos referencias hacen referencia al mismo objeto, pero
al usar dicho operador con dos variables tipo string se prueba la igualdad del
contenido de las cadenas y no su referencia. Sin embargo, con el resto de los
operadores relacionales, como < y >=, sí se comparan las referencias.

•Se pueden concatenar (unir) dos cadenas mediante el operador +.

•Las cadenas se pueden usar en las instrucciones switch.


Características C#
Cadenas de caracteres
Declarar una cadena de caracteres (como si fuera una variable de un tipo de dato
como int o double):
string texto = "Cadena de caracteres";
string texto = new System.String("Cadena de caracteres"); // Equivalente al anterior

Longitud de una cadena:


string texto = "Cadena de caracteres"; int i = texto.Length; // Retornará '20'

Comparar dos cadenas:


bool b = "texto" == "texto"; // Retornará 'true', si que ambas cadenas son inguales

Concatenar cadenas:
string texto = "Cadena de" + " caracteres"; // Nótese el espacio antes de "caracteres",

La clase System.String, y una instancia de la misma, string, poseen algunos métodos


para trabajar con cadenas, como:

static string Copy(string str): devuelve una copia de str.

string texto1 = "abc";


string texto2 = "xyz";
string texto2 = System.String.Copy(texto1); // 'texto2' ahora contiene "abc"

You might also like