Sunteți pe pagina 1din 10

¿Qué es C#?

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.

Un lenguaje que hubiese sido ideal utilizar para estos menesteres es Java, pero
debido a problemas con la empresa creadora del mismo -Sun-, Microsoft ha tenido
que desarrollar un nuevo lenguaje que añadiese a las ya probadas virtudes de
Java las modificaciones que Microsoft tenía pensado añadirle para mejorarlo aún
más y hacerlo un lenguaje orientado al desarrollo de componentes. 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.
El hecho de ser relativamente reciente no implica que sea inmaduro, pues
Microsoft ha escrito la mayor parte de la BCL usándolo, por lo que su compilador
es el más depurado y optimizado de los incluidos en el .NET Framework SDK

Con la idea de que los programadores más experimentados puedan obtener una
visión general del lenguaje, a continuación se recoge de manera resumida las
principales características de C# Alguna de las características aquí señaladas no
son exactamente propias del lenguaje sino de la plataforma .NET en general. Sin
embargo, también se comentan aquí también en tanto que tienen repercusión
directa en el lenguaje, aunque se indicará explícitamente cuáles son este tipo de
características cada vez que se toquen:

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

El código escrito en C# es autocontenido, lo que significa que no necesita de


ficheros adicionales al propio fuente tales como ficheros de cabecera o ficheros
IDL
El tamaño de los tipos de datos básicos es fijo e independiente del compilador,
sistema operativo o máquina para quienes se compile (no como en C++), lo que
facilita la portabilidad del código.

No se incluyen elementos poco útiles de lenguajes como C++ tales como


macros, herencia múltiple o la necesidad de un operador diferente del punto (.)
acceder a miembros de espacios de nombres (::)

Modernidad: C# incorpora en el propio lenguaje elementos que a lo largo de los


años ha ido demostrándose son muy útiles para el desarrollo de aplicaciones y
que en otros lenguajes como Java o C++ hay que simular, como un tipo básico
decimal que permita realizar operaciones de alta precisión con reales de 128 bits
(muy útil en el mundo financiero), la inclusión de una instrucción foreach que
permita recorrer colecciones con facilidad y es ampliable a tipos definidos por el
usuario, la inclusión de un tipo básico string para representar cadenas o la
distinción de un tipo bool específico para representar valores lógicos.

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


general actual, C# es un lenguaje orientado a objetos, aunque eso es más bien
una característica del CTS que de C#. Una diferencia de este enfoque orientado
a objetos respecto al de otros lenguajes como C++ es que el de C# es más puro
en tanto que no admiten ni funciones ni variables globales sino que todo el
código y datos han de definirse dentro de definiciones de tipos de datos, lo que
reduce problemas por conflictos de nombres y facilita la legibilidad del código.

C# soporta todas las características propias del paradigma de programación


orientada a objetos: encapsulación, herencia y polimorfismo.

En lo referente a la encapsulación es importante señalar que aparte de los típicos


modificadores public, private y protected, C# añade un cuarto modificador
llamado internal, que puede combinarse con protected e indica que al elemento
a cuya definición precede sólo puede accederse desde su mismo ensamblado.

Respecto a la herencia -a diferencia de C++ y al igual que Java- C# sólo admite


herencia simple de clases ya que la múltiple provoca más quebraderos de
cabeza que facilidades y en la mayoría de los casos su utilidad puede ser
simulada con facilidad mediante herencia múltiple de interfaces. De todos modos,
esto vuelve a ser más bien una característica propia del CTS que de C#.

Por otro lado y a diferencia de Java, en C# se ha optado por hacer que todos los
métodos sean por defecto sellados y que los redefinibles hayan de marcarse con
el modificador virtual (como en C++), lo que permite evitar errores derivados de
redefiniciones accidentales. Además, un efecto secundario de esto es que las
llamadas a los métodos serán más eficientes por defecto al no tenerse que
buscar en la tabla de funciones virtuales la implementación de los mismos a la
que se ha de llamar. Otro efecto secundario es que permite que las llamadas a
los métodos virtuales se puedan hacer más eficientemente al contribuir a que el
tamaño de dicha tabla se reduzca.

Pasos para crear un programa en C#

1. Iniciar Visual Studio.

2. En la barra de menús, elegir Archivo, Nuevo, Proyecto.

Aparece el cuadro de diálogo Nuevo proyecto.

3. Expanda Instalado, Plantillas, Visual C# y, luego, elija Aplicación de


consola.
4. En el cuadro Nombre, escriba un nombre para el proyecto y, después, elija el
botón Aceptar.

El proyecto nuevo aparece en el Explorador de soluciones.

5. Si Program.cs no está abierto en el Editor de código, abra el menú


contextual de Program.cs en el Explorador de soluciones y elija Ver
código

6. Nos aparecerán las siguientes líneas de código como en la siguiente


imagen:
7. Dentro de los corchetes que están en static void main(String [ ] args)
{
}

Escribiremos la siguiente línea de código:

Console.WriteLine(“Hola, bienvenidos a nuestra primera aplicación en consola”);

Console.ReadKey();

Quedando de la siguiente manera:

El Console.WriteLine(“ ”); nos permite mostrar en pantalla mientras que


Console.ReadKey(); detiene el programa en espera de que el usuario presione una
tecla para que la aplicación termine o arroje una ventana de información adicional.
VARIABLES.

Una variable puede verse simplemente como un almacén de objetos de un


determinado tipo al que se le da un cierto nombre. Por tanto, para definir una
variable sólo hay que decir cuál será el nombre que se le dará y cuál será el
tipo de datos que podrá almacenar, lo que se hace con la la siguiente sintaxis:

<tipoVariable> <nombreVariable>;

Una variable puede ser definida dentro de una definición de clase, en cuyo
caso se correspondería con el tipo de miembro que hasta ahora hemos
denominado campo. También puede definirse como un variable local a un
método, que es una variable definida dentro del código del método a la que
sólo puede accederse desde dentro de dicho código. Otra posibilidad es
definirla como parámetro de un método, que son variables que almacenan los
valores de llamada al método y que, al igual que las variables locales, sólo
puede ser accedida desde código ubicado dentro del método. El siguiente
ejemplo muestra cómo definir variables de todos estos casos:

class A
{

int x, z; int y;

void F(string a, string b)

Persona p;

En este ejemplo las variables x, z e y son campos de tipo int, mientras que p
es una variable local de tipo Persona y a y b son parámetros de tipo string.
Como se muestra en el ejemplo, si un método toma varios parámetros las
definiciones de éstos se separan mediante comas (carácter ,), y si queremos
definir varios campos o variables locales (no válido para parámetros) de un
mismo tipo podemos incluirlos en una misma definición incluyendo en
<nombreVariable> sus nombres separados por comas.

TIPOS DE DATOS.

Los tipos de datos básicos son ciertos tipos de datos tan comúnmente
utilizados en la escritura de aplicaciones que en C# se ha incluido una sintaxis
especial para tratarlos. Por ejemplo, para representar números enteros de 32
bits con signo se utiliza el tipo de dato System.Int32 definido en la BCL,
aunque a la hora de crear un objeto a de este tipo que represente el valor 2 se
usa la siguiente sintaxis:

System.Int32 a = 2;

Como se ve, no se utiliza el operador new para crear objeto System.Int32, sino
que directamente se indica el literal que representa el valor a crear, con lo que
la sintaxis necesaria para crear entero de este tipo se reduce
considerablemente. Es más, dado lo frecuente que es el uso de este tipo
también se ha predefinido en C# el alias int para el mismo, por lo que la
definición de variable anterior queda así de compacta:

int a = 2;

System.Int32 no es el único tipo de dato básico incluido en C#. En el espacio


de nombres System se han incluido todos estos:

Tipo Descripción Bits Rango de valores Alias


SByte Bytes con signo 8 -128 – 127 sbyte
Byte Bytes sin signo 8 0 – 255 byte
Int16 Enteros cortos con signo 16 [-32.768, 32.767] short

UInt16 Enteros cortos sin signo 16 [0, 65.535] ushort


Int32 Enteros normales 32 [-2.147.483.648, int
2.147.483.647]
UInt32 Enteros normales sin signo 32 [0, 4.294.967.295] uint
Int64 [-
Enteros largos 64 9.223.372.036.854.775 long
.808,
9.223.372.036.854.7
75.807]
UInt64 Enteros largos sin signo 64 [0- ulong
18.446.744.073.709.551
.615]
Single Reales con 7 dígitos de 32 [1,5×10-45 - 3,4×1038] float
precisión
Doubl Reales de 15-16 dígitos de 64 [5,0×10-324 - 1,7×10308] double
e precisión
Decim Reales de 28-29 dígitos de 128 [1,0×10-28 - 7,9×1028] decima
al precisión l
Boole Valores lógicos 32 true, false bool
an
Char Caracteres Unicode 16 [‘\u0000’, ‘\uFFFF’] char
String Cadenas de caracteres Variab El permitido por la string
le memoria
Object Cualquier objeto Variab Cualquier objeto object
le

Pese a su sintaxis especial, en C# los tipos básicos son tipos del mismo nivel
que cualquier otro tipo del lenguaje. Es decir, heredan de System.Object y
pueden ser tratados como objetos de dicha clase por cualquier método que
espere un System.Object, lo que es muy útil para el diseño de rutinas genéricas
que admitan parámetros de cualquier tipo y es una ventaja importante de C#
frente a lenguajes similares como Java donde los tipos básicos no son
considerados objetos.

El valor que por defecto se da a los campos de tipos básicos consiste en poner a
cero todo el área de memoria que ocupen. Esto se traduce en que los campos de
tipos básicos numéricos se inicializan por defecto con el valor 0, los de tipo bool lo
hacen con false, los de tipo char con ‘\u0000’, y los de tipo string y object con
null.

CONSTANTES

Es similar a la variable, tiene un tipo de datos, un identificador, pero a diferencia de


la variable, una vez asignado un valor este no cambiara nunca durante la ejecución
del programa, y se debe asignar un valor en su declaración

Para su declaración se hace uso de la palabra reservada const. la cual le dice al


compilador que esto será una constante.

const double PI = 3.14;


const char SUBFIJO = '$';

También las constantes deben escribirse en mayúsculas (no obligatorio, pero


permite establece diferencia entre variables y constante en otras partes del
código).

ARREGLOS Y SUS DIFERENTES TIPOS

En C# un array es un dato de tipo referencia. Un array es una estructura de datos


que contiene variables (elementos) a los que se accede a través de índices.

Todos los elementos de un array son del mismo tipo. Se dice entonces que ése
es el tipo del array. Así, se habla por ejemplo, de un array de enteros o un array
de string, etc, dependiendo de que los elementos del array sean de un tipo o de
otro.

Un array puede tener más de una dimensión. Por cada dimensión de un array se
necesita un nivel de índices para acceder a sus elementos.

C# soporta arrays simples –de una dimensión-, multidimensionales y arrays de


arrays.

ARRAYS MULTIDIMENSIONALES

Los arrays multidimensionales tiene dos tipos: los arrays rectangulares y los
arrays dentados.

Un array bidimensional rectangular es aquel en el cual todas sus filas tienen el


mismo número de columnas. En general son sencillos de declarar, inicializar y
manejar.
Un array bidimensional dentado, es un array en el que cada fila tinen un
número diferente de columnas. Aunque evidentemente proporciona una mayor
flexibilidad que el array rectangular, sin embargo son más complicados de
declarar e inicializar. Para crear un array dentado, básicamente lo que se hace es
crear un array de arrays:

Ejemplo:

string[,] unaMatriz = new string[5,4]; int[,,]


otraMatriz = new int[4,5,3];

ARRAYS UNIDIMENSIONALES

Los arreglos unidimensionales son colecciones lineales, que nos pueden ayudar a
representar una secuencia numérica, letras del alfabeto o un cromosoma dentro de
un programa de algoritmos genéticos, entre muchas otras.

Los arreglos unidimensionales también conocidos como vectores o listas

Estos se reconocen de inmediato porque tienen un único índice o subíndice y que


sirve para acceder a cada elemento del arreglo (array), este índice siempre
comienza en cero.

Este índice siempre va a representar la posición en la cual se encuentra un


elemento.

Para declarar un vector en C# se usa la siguiente sintaxis:

Tipo_dato[ ] nombre_vector=new tipo_dato[tamaño];

Ejemplo:

int[]unArray = new int[5];

ARRAYS DE ARRAY

Estos son arrays que pueden contener otros arrays. ¿Y para qué queremos meter
un array dentro de otro? ¿No nos basta con los arrays multidimensionales? Pues
realmente podría bastarnos, en efecto, pero habría ocasiones en las que
tendríamos que hacer bastantes cabriolas con el código por no usar los arrays de
arrays. Imaginemos un programa en el que el usuario tiene que manejar
simultáneamente múltiples objetos de distintas clases derivadas de una clase
base, por ejemplo, triángulos y cuadrados derivados de la clase figura. Si
solamente pudiéramos usar arrays unidimensionales o multidimensionales
tendríamos que declarar un array distinto para cada tipo de objeto (uno para
triángulos y otro para cuadrados). La dificultad viene ahora: ¿Qué ocurre si hay
que redibujar todos los objetos, ya sean cuadrados o triángulos? Evidentemente,
habría que escribir un bucle para cada uno de los arrays para poder invocar los
métodos redibujar de cada uno de los elementos. Sin embargo, si metemos todos
los arrays dentro de un array de arrays nos bastaría con escribir un par de bucles
anidados para recorrer todos los objetos y dejar el resto en manos del
polimorfismo. Ciertamente, aún no hemos estudiado a fondo ninguno de los
mecanismos de la herencia. No obstante, con lo que sabemos hasta ahora,
podemos poner un ejemplo sobre los arrays de arrays, aunque probablemente no
se aprecie realmente la ventaja. Veamos el ejemplo, y luego lo comentamos. Eso
sí, presta especial atención a la sintaxis, tanto en la declaración como en las
instanciaciones:

Ejemplo:

byte[][]arrayDeBytes = new byte[5][];

for (int x = 0; x < arrayDeBytes.Length; x++)

{
arrayDeBytes [x] = new byte[4];

FUNCIONES DEL PROGRAMADOR

 Analiza programas de baja y mediana complejidad.

 Diseña programas de baja y mediana complejidad.

 Elabora programas de baja y mediana complejidad.

 Mantiene programas de baja y mediana complejidad.

 Implanta programas de baja y mediana complejidad.

 Documenta los programas de computación de acuerdo con las normas

establecidas.

 Recolecta información del usuario sobre sus necesidades.

 Asiste a usuarios finales en el uso de los programas.

 Diseña pruebas de validación para los programas.

 Ejecuta pruebas de validación para los programas.

 Realiza respaldo de la información bajo su responsabilidad.


 Documenta los trabajos realizados.

 Participa en reuniones técnicas.

 Cumple con las normas, lineamientos y estándares establecidos por la

unidad para el desarrollo de programas de computación.

 Cumple con las normas y procedimientos en materia de seguridad integral,

establecidos por la organización.

 Mantiene en orden equipo y sitio de trabajo, reportando cualquier anomalía.

 Elabora informes periódicos de las actividades realizadas.

 Realiza cualquier otra tarea afín que le sea asignada.

S-ar putea să vă placă și