Hace unas semanas atrás escribí acerca de .Net Framework, en esa ocasión te indique que el Framework no es un lenguaje sino mas bien un marco de trabajo sobre el cual podías utilizar diversos lenguajes, uno de ellos es C# (c sharp).
C# es mi lenguaje favorito si hablamos de .Net. Si nos remontamos a la historia de este lenguaje te puedo contar que nació de los laboratorios de Microsoft, para ser específicos fue diseñado por Anders Hejlsberg, Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como "…simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++".
Como sus diseñadores lo afirman, C# es un lenguaje orientado a objetos y toma las mejores prácticas de otros lenguajes como C, C++, Java y hasta de Visual Basic, por lo que a mi parecer es un lenguaje que permite crear aplicaciones modernas y sobre todo permite obtener el mayor rendimiento de la Pc dado el manejo del hardware de la máquina que posee.
De seguro te estarás preguntando cómo es este lenguaje, a que se refiere, qué sintaxis tiene, etc. Bueno, como es un lenguaje derivado de C y C++, la sintaxis es muy parecida, por lo que en este post te indicaré los principales conceptos (tipo de datos, definición de variables, constantes, estructuras de control y definición de funciones) para que empieces a descubrir el mundo con C#.
Creando un proyecto consola en C#
Para crear proyectos en C# vamos a usar Visual Studio 2008. Por lo que luego de cargar la aplicación, deberás de crear un Nuevo Proyecto de Visual C# y para este caso un Console Application.
Al presionar OK, tenemos acceso al IDE de trabajo con el código inicial que nos da Visual Studio.
El código inicial es el siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleCSharp
{
class Program
{
static void Main(string[] args)
{
}
}
}
En el código anterior apreciamos varias cosas:
- using : instrucción usada para hacer referencia a las librerías que vamos a usar en nuestra aplicación. En este caso estamos haciendo referencia a Systema, System.Collections.Generic, System.Linq y System.Text.
- namespace: nos permite declarar un ámbito de trabajo, de forma tal de ordenar el código que estamos haciendo. En esta ocasión toma el mismo nombre de nuestro proyecto.
- class: recuerda que líneas arriba mencione que C# es un lenguaje orientado a objetos, por lo que las funciones siempre estarán dentro de una clase.
- static void Main(string[] args): función principal, de la clase Program y en la cual vamos a codificar. Nota que a diferencia de C o C++, la función aqui se escribe con "M" mayúscula. En el Main se escribirán todas las instrucciones que serán necesarias para ejecutar la aplicación. En este caso escribiremos "Hola Mundo".
Ahora si, reconocido el cuerpo de nuestra aplicación empezaremos a descubrir más de este lenguaje.
Tipos de datos
Recuerda que lo tipos de datos te van a permitir guardar la información de tu aplicación, por lo que contar con tipos de datos que soporte la información que manejas te va a dar como resultado un programa muy sólido. Los tipos de datos que tiene C#, son:
| Tipo C# | Nombre para la plataforma .NET | Valores que soporta |
|---|---|---|
| bool | System.Boolean | true o false (verdadero o falso en inglés) |
| byte | System.Byte | 0 hasta 255 |
| sbyte | System.SByte | -128 hasta 127 |
| short | System.Int16 | -32.768 hasta 32.767 |
| ushort | System.Uint16 | 0 hasta 65535 |
| int | System.Int32 | -2.147.483.648 hasta 2.147.483.647 |
| uint | System.Uint32 | 0 hasta 4.394.967.395 |
| long | System.Int64 | -9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807 |
| ulong | System.Uint64 | 0 hasta 18446744073709551615 |
| float | System.Single | Aproximadamente ±1.5E-45 hasta ±3.4E38 con 7 cifras significativas |
| double | System.Double | Aproximadamente ±5.0E-324 hasta ±1.7E308 con 7 cifras significativas |
| decimal | System.Decimal | Aproximadamente ±1.0E-28 hasta ±7.9E28 con 28 ó 29 cifras significativas |
| char | System.Char | Cualquier carácter Unicode (16 bits) |
He tratado de colocar los tipos de datos básicos y como se representan estos si utilizas el .Net Framework. Recuerda que en .Net, el namespace System agrupa a las clases y a los tipos de datos principales al momento de programar, es por eso el nombre del tipo de dato.
Variables
A partir de los tipos de datos, podemos definir variables para almacenar nuestra información. Para definir variables, debemos de tomar en cuenta las siguiente consideraciones:
- Existe diferencia entre mayúscula y minúscula
- No debe de empezar con un dígito
- No deben de ser iguales a las palabras reservadas del lenguaje
- No debe de existir dos variables con el mismo nombre; en general, no debe de existir identificadores con el mismo nombre.
Aquí te doy unos ejemplos de como definir a las variables.
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleCSharp
{
class Program
{
static void Main(string[] args)
{
int valorentero; //Variable Entera
System.Char uncaracter; //Variable del tipo char.
int[] unvectordeenteros; //Declarando un vector de enteros
string[] unvectordecadenas={"casa", "home"}; //Declarando e inicializando un vector
int[,] unamatriz; //Una matriz de enteros
valorentero = 10;
uncaracter = 'A';
unvectordeenteros = new int[10]; //Asignando memoria a un vector de enteros
unamatriz=new int[5,5]; // Asignando memeria a una matriz de enteros
}
}
}
Aquí te doy algunos ejemplos de como definir a las variables. En el caso de la variable uncaracter, se pudo haber usado el tipo de dato char. En el ejemplo también puedes apreciar como se declaran los vectores y también como se les asignan memoria. Ahora porque no pude un delete, eso lo explicaré luego.
Nota Se observador y fíjate que, al igual que C o C++, C# también lleva ";" luego de cada instrucción.
Constantes
Para nombrar a las constantes las reglas son las mismas que las variables, se les debe de asignar un tipo y un nombre, pero antes del tipo se le coloca la palabra reservada const y se le debe de asignar un valor.
const int constante_entera = 10;
Estructuras Selectivas
Como C# es hija de C, las estructuras selectivas a usar son el if, switch y el operador condicional ?:, por lo que no lo voy a explicar mucho el tema, porque trabajan de la misma forma, pero si voy a poner la sintaxis de las tres estructuras:
Sintaxis – If
// Estructura if
if( condicion1 )
{
// instrucciones;
}
if( condicion2 )
{
// instrucciones;
}
else
{
// instrucciones;
}
Sintaxis – switch
//Estructura switch
switch( expresión )
{
case constante1:
// instrucciones;
break;
case constante2:
// instrucciones;
break;
...
default:
// instrucciones;
}
Sintaxis – Operador ? :
//Operador ? : variable = condicion ? valor_verdadero : valor_falso;
Estructuras Repetitivas
Si hablamos de estructuras repetitivas, tenemos el do.. while, while y el for, pero adicionalmente tenemos un foreach que nos sirve para recorrer los elementos de una lista o colección. Aquí te va la sintaxis:
Sintaxis – for
// Bucle for
for( inicialización; condición; iteración )
{
// instrucciones;
}
Sintaxis – While
// Bucle While
while( condición )
{
// instrucciones;
}
Sintaxis – do..while
// Bucle do..while
do
{
// instrucciones;
}
while( condición );
Sintaxis – foreach
// Bucle foreach
foreach( tipo in coleccion )
{
// instrucciones;
}
Operadores
Aquí te daré la lista de los principales operadores de este lenguaje, luego de apreciar la lista podras ver una gran similitud con otro lenguaje. En esta ocasión, cualquier similitud, no es pura coincidencia.
| Operador | Descripción |
|---|---|
| ++ | Operador de incremento, puede usarse como prefijo o sufijo. Es igual al que se tiene en C. |
| – | Operador de deicremento, puede usarse como prefijo o sufijo. Es igual al que se tiene en C. |
| * | Multiplicación |
| / | División |
| % | Módulo |
| == | Igualdad |
| != | Desigualdad |
| && | Operador AND |
| || | Operador OR |
| = | Operador de asignación |
Parecido a C o C++?, pues si, para ser sincero son muy pocas las diferencias.
Mi primer programa – Hola Mundo
Como manda la biblia del buen programador, al ser nuestro primer programa oficial en este nuevo lenguaje, debemos de realizar el "Hola Mundo"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleCSharp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hola Mundo");
Console.ReadKey();
}
}
}
Con la Clase Console, definida en System, tenemos acceso a imprimir mensajes en pantalla o capturar lo que se ingrese en esta. Para acceder a los métodos de la clase Console, basta con escribir el nombre y luego colocar "." antes del nombre del método.
Usando foreach
Ahora lo que haremos es realizar una aplicación donde veamos como se usa el foreach. La aplicación que voy a hacer, permitirá ingresar valores a un arreglo de enteros y luego los imprimirá en pantalla.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleCSharp
{
class Program
{
static void Main(string[] args)
{
int[] elementos; // Definición de un arreglo
elementos = new int[10]; // Definición y asignación de memoria a un arreglo
for (int i=0;i<10;i++)
{
Console.Write("Ingrese un valor : ");
elementos[i] = Int32.Parse(Console.ReadLine() ); //Conversión del dato leído a un entero
}
//Imprimimos los elementos del arreglo
foreach (int e in elementos)
{
Console.WriteLine("{0}",e);
}
Console.ReadKey();
}
}
}
Ahora el mismo ejemplo pero usando cadenas de caracteres en lugar de datos enteros.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleCSharp
{
class Program
{
static void Main(string[] args)
{
string [] elementos; //Definición de un arreglo de string (cadena de caracteres)
elementos = new string[10];
for (int i=0;i<10;i++)
{
Console.Write("Ingrese un nombre : ");
elementos[i] = Console.ReadLine() ;
}
foreach (string e in elementos) //El foreach es con cada elemento del arreglo.
{
Console.WriteLine("{0}",e);
}
Console.ReadKey();
}
}
}
Definiendo Funciones
Las funciones, al igual que en C, se deben definir antes de ser invocadas. En C#, las funciones deben de estar definidas dentro de una clase, por lo que definiré dos funciones para la clase Program, una que permita ingresar datos a un vector y otra que permita imprimirlo.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleCSharp
{
class Program
{
static void ImprimeVector (int [] vector)
{
foreach (int e in vector)
{
Console.WriteLine("{0}", e);
}
}
static void IngresarDatos(int[] vector)
{
for (int i = 0; i < 10; i++)
{
Console.Write("Ingrese un valor : ");
vector[i] = Int32.Parse(Console.ReadLine());
}
}
static void Main(string[] args)
{
int[] elementos;
elementos = new int[10];
IngresarDatos(elementos);
ImprimeVector(elementos);
Console.ReadKey();
}
}
}
Algo que debes estar preguntándote es que significa static. Static es un operador que te indica que para hacer uso de la función definida no es necesario crear una instancia de la clase que la contiene, sólo basta con hacer referencia a la clase y luego a la función. Static es utilizado tanto para variables, funciones, clases, etc. Pero eso lo podemos ver en un futuro post.
Con este post he querido hacer una introducción hacia el lenguaje C# y sobre mostrarte lo fácil que puede resultar aprenderlo si ya sabes C o C++. Aún faltan aprender más conceptos, trabajar con el .Net Framework, por lo que en futuros post te diré algo más de este lenguaje.
Ah! y recuerda C# es hija de C, no es una copia de Java ni mucho menos; es mas si sabes Java, aprende C# y verás el potencial que tiene este lenguaje.
Artículos similares
Autor: Victor Parasi
Siempre es difícil escribir sobre uno mismo, qué contar, o por donde empezar, suele ser todo un dilema al momento de presentarse. Aquí vamos. Les diré que soy peruano, Ingeniero por vocación, dedicado a la docencia y siempre en la búsqueda de programar cada vez mejor. Aunque a veces algo terco, sé que no todo en la vida es blanco o negro. Existe el Open Source, y lo respeto pero me llevo mejor con el .Net. Si me hablas de preferencias, te digo que C#, C++, una buena película, colores oscuros, escribir, leer e investigar. Para terminar les diré que amo muchísimo a una mujer espectacular y que es la dueña de mi corazón.

hola, estudio ing. informatica y no te imaginas la gran ayuda que me has sido en el manejo de c#, gracias es un magnifico resumen de como usarlo.
Muchas gracias por compartir tan valiosa y precisa información, gracias por su tiempo y vocación de enseñanza.Actualmente estudio Ingenieríade Sistemas y su artículo me ayudó a entender mejor el lenguaje de programación C#.
Gracias por tus comentarios. Bienvenido al mundo del C# y que la aventura que empiezas te lleve a muchos programas sin errores.