SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
C Sharp                                                                                                                     1



    C Sharp
          El título de este artículo se muestra incorrectamente debido a limitaciones técnicas. El título correcto es C#.

                                                                      C#

                                                                      C#

             Paradigma:               Multiparadigma: Orientado a Objetos, estructurada, imperativa, genérica, funcional

             Apareció en:             2001

             Diseñado por:            Microsoft Corporation

             Última versión estable: 4.0 (12 de abril 2010)

             Tipo de dato:            Fuerte, Estático

             Implementaciones:        Visual Studio .NET, Mono, SharpDevelop, DotGNU

             Influido por:            Java, C++, Lenguaje C, Delphi, Eiffel

             Ha influido a:           Vala, Nemerle, Boo, F#, D, Java 5

             Sistema operativo:       Multiplataforma

             Web:                                                         [1]
                                      http:/ / www. microsoft. com/ net


    C♯ o C# (pronunciado ci sharp en inglés) es un lenguaje de programación orientado a objetos desarrollado y
    estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la
    ECMA e ISO.
    Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET, similar al de Java aunque
    incluye mejoras derivadas de otros lenguajes (entre ellos Delphi).
    El nombre C Sharp fue inspirado por la notación musical, donde ♯ (sostenido, en inglés sharp) indica que la nota (C
    es la nota do en inglés) es un semitono más alta, sugiriendo que C♯ es superior a C/C++. Además el signo de # viene
    de dos + pegados.[2]
    C♯, como parte de la plataforma.NET, está normalizado por ECMA desde diciembre de 2001 (C# Language
    Specification [3] "Especificación del lenguaje C♯"). El 7 de noviembre de 2005 salió la versión 2.0 del lenguaje, que
    incluía mejoras tales como tipos genéricos, métodos anónimos, iteradores, tipos parciales y tipos anulables. El 19 de
    noviembre de 2007 salió la versión 3.0 de C#, destacando entre las mejoras los tipos implícitos, tipos anónimos y
    LINQ (Language Integrated Query -consulta integrada en el lenguaje).
    Aunque C♯ forma parte de la plataforma.NET, ésta es una interfaz de programación de aplicaciones (API), mientras
    que C♯ es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. Ya
    existe un compilador implementado que provee el marco de DotGNU - Mono que genera programas para distintas
    plataformas como Win32, UNIX y Linux.


    Historia
    Durante el desarrollo de la plataforma .NET, las bibliotecas de clases fueron escritas originalmente en el lenguaje
    compilador Simple Managed C. En 1999, Anders Hejlsberg formó un equipo con la misión de desarrollar un nuevo
    lenguaje de programación llamado Cool (C Orientado a Objetos). Este nombre tuvo que ser cambiado debido a
    problemas de marca, pasando a llamarse C#, aunque habitualmente se escribe C#.[4] La biblioteca de clases de la
    plataforma .NET fue migrada entonces al nuevo lenguaje.
    Hejlsberg lideró el proyecto de desarrollo de C#. Anteriormente, ya participó en el desarrollo de otros lenguajes
    como Turbo Pascal, J++ y Borland Delphi.
C Sharp                                                                                                                             2


    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.
    C# define ocho tipos de enteros, a saber:

                                                            Tipo de datos de enteros

                  Tipo   Ancho en bits                               Rango                                        Significado

                 byte    8                De 0 a 255                                                       Entero sin signo

                 sbyte   8                De -128 a 127                                                    Entero con signo

                 short   16               De -32.768 a 32.767                                              Entero corto con signo

                 ushort 16                De 0 a 65.535                                                    Entero corto sin signo

                 int     32               De -2.147.483.648 a 2.147.483.647                                Entero medio con signo

                 uint    32               De 0 a 4.294.967.295                                             Entero medio sin signo

                 long    64               De -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 Entero largo con signo

                 ulong   64               De 0 a 18.446.744.073.709.551.615                                Entero largo sin signo


    Los tipos de punto flotante pueden representar números con componentes fraccionales. Existen dos clases de tipos de
    punto 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 flotante más interesante de C# es decimal, dirigido al
    uso de cálculos monetarios. La aritmética de punto flotante normal está sujeta a una variedad de errores de redondeo
    cuando se aplica a valores decimales. El tipo decimal elimina estos errores y puede representar hasta 28 lugares
    decimales.

                                                       Tipo de datos de punto flotante

                                  Tipo      Ancho en bits            Rango                   Significado

                                float      32                De 1,5E-45 a 3,4E+38      Punto flotante corto

                                double     64                De 5E-324 a 1,7E+308 Punto flotante largo

                                decimal 128                  De 1E-28 a 7,9E+28        Punto flotante monetario


    Los caracteres en C# no son cantidades de 8 bits como en otros muchos lenguajes de programación. Por el contrario,
    C# usa un tipo de caracteres de 16 bits llamado Unicode al cual se le llama char. No existen conversiones
    automáticas de tipo entero a char.

                                                          Tipo de datos de caracteres

                                   Tipo     Ancho en bits                Rango                   Significado

                                  char     16                 De 0 a 65.535 (código Unicode) Carácter
C Sharp                                                                                                                      3


                                                             Tipo de datos lógicos

                     Tipo   Ancho en bits                                Rango                                Significado

                     bool   1               true or false, no se usa 1 ó 0 ya que no hay conversión definida true or false


    No existe una conversión definida entre bool y los valores enteros (1 no se convierte a verdadero ni 0 se convierte a
    falso).


    Constantes
    Las constantes en C# se denominan literales. Todas las constantes tienen un tipo de dato, en caso de ser una
    constante entera se usa la de menor tamaño que pueda alojarla, empezando por int. En caso de punto flotante se
    considera como un double. Sin embargo se puede especificar explícitamente el tipo de dato que una constante
    deberá usar, por medio de los sufijos:

                                                    Sufijo     Tipo de dato     Ejemplo

                                                    L          long             12L

                                                    UL         ulong            68687UL

                                                    F          float            10,19F

                                                    M          decimal          9,95M


    En ocasiones, resulta más sencillo usar un sistema numérico basado en 16 en lugar de 10, para tal caso C♯ permite
    especificar constantes enteras en formato hexadecimal, y se hace empezando con 0x. Por ejemplo: 0xFF equivale a
    255 en decimal.
    C# tiene caracteres denominados secuencias de escape para facilitar la escritura con el teclado de símbolos que
    carecen de representación visual. Estos son:

                                                Secuencia de escape           Descripción

                                               a                        Alerta (timbre)

                                               b                        Retroceso

                                               f                        Avance de página

                                               n                        Nueva línea

                                               r                        Retorno de carro

                                               t                        Tabulador horizontal

                                               v                        Tabulador vertical

                                               0                        Nulo

                                               '                        Comilla sencilla

                                               "                        Comilla doble

                                                                       Diagonal invertida


    C#, al igual que C++, es compatible con el tipo de constante cadena de caracteres. Dentro de la cadena de caracteres
    se pueden usar secuencias de escape. Una cadena de caracteres puede iniciarse con el símbolo @ seguido por una
    cadena entre comillas, en tal caso, las secuencias de escape no tienen efecto y además la cadena puede ocupar dos o
    más líneas.
C Sharp                                                                                                                     4


    Variables
    Toda variable se debe declarar antes de ser utilizada. La forma en que se declara una variable en C# es la siguiente:
    tipo nombre_variable;
    Para asignar un valor a una variable:
    nombre_variable = valor
    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. Los significados de las letras son: A (Conversión automática o implícita), E (Conversión
    explícita), I (Conversión incompatible).

                                                      Conversiones de tipo de datos

                                 byte sbyte short ushort int uint long ulong float double decimal char bool

                        byte          E     A     A       A   A     A     A      E    E    E       E     I

                        sbyte    E          A     E       A   E     A     A      E    E    E       E     I

                        short    E    E           E       A   A     A     A      E    E    E       E     I

                        ushort   E    E     E             A   A     A     A      E    E    E       E     I

                        int      E    E     E     E           E     A     A      E    E    E       E     I

                        uint     E    E     E     E       E         A     A      E    E    E       E     I

                        long     E    E     E     E       E   E           E      E    E    E       E     I

                        ulong    E    E     E     E       E   E     E            E    E    E       E     I

                        float    E    E     E     E       E   E     E     E           A    E       I     I

                        double   E    E     E     E       E   E     E     E      E         E       I     I

                        decimal E     E     E     E       E   E     E     E      E    E            I     I

                        char     E    E     E     A       A   A     A     A      A    A    A             I

                        bool     I    I     I     I       I   I     I     I      I    I    I       I


    • 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 tipo de dato destino es mayor que el tipo de dato origen.
    • La conversión explícita se realiza de la siguiente forma: (tipo-destino) expresion.
    Además de realizarse dentro de una asignación, las conversiones de tipos también tienen lugar dentro de una
    expresión, pues en cada operación ambos operandos deben de ser del mismo tipo. Si la conversión es del tipo
    implícito se efectúa el siguiente algoritmo en dicho orden:
    1.    Si un operando es decimal, el otro operando se transforma a decimal.
    2.    Si un operando es double, el otro operando se transforma a double.
    3.    Si un operando es float, el otro operando se transforma a float.
    4.    Si un operando es ulong, el otro operando se transforma a ulong.
    5.    Si un operando es long, el otro operando se transforma a long.
    6.    Si un operando es uint, y si el otro operando es de tipo sbyte, short o int, los dos se transforman a long.
    7.    Si un operando es uint, el otro operando se transforma a uint.
    8.    Si ninguno de los casos anteriores, los dos operandos se transforman a int.
C Sharp                                                                                                     5


    Operadores
    C♯ tiene cuatro clases generales de operadores: aritméticos, a nivel de bit, relacionales y lógicos.

                                                                   Operadores

                                        Operador              Significado                 Tipo

                                    +              Suma                          Aritmético

                                    -              Resta                         Aritmético

                                    *              Producto                      Aritmético

                                    /              División                      Aritmético

                                    %              Módulo (residuo entero)       Aritmético

                                    ++             Incremento                    Aritmético

                                    --             Decremento                    Aritmético

                                    ==             Igual que                     Relacional

                                    !=             Distinto de                   Relacional

                                    >              Mayor que                     Relacional

                                    <              Menor que                     Relacional

                                    >=             Mayor o igual que             Relacional

                                    <=             Menor o igual que             Relacional

                                    &              AND                           Lógico y a nivel de bits

                                    |              OR                            Lógico y a nivel de bits

                                    ^              XOR y de nivel de bits        Lógico

                                    ||             OR de cortocircuito           Lógico

                                    &&             AND de cortocircuito          Lógico

                                    !              NOT                           Lógico

                                    ~              Complemento a uno             A nivel de bits

                                    <<             Desplazamiento a la izquierda A nivel de bits

                                    >>             Desplazamiento a la derecha   A nivel de bits


    •   Los operadores aritméticos funcionan igual que en C y C++.
    •   El resultado de los operadores relacionales y lógicos es un valor bool.
    •   Los operadores de cortocircuito evalúan el segundo operando solo cuando es necesario.
    •   Los operadores a nivel de bit no se pueden aplicar a tipos bool, float, double o decimal.
C Sharp                                                                                                                       6


    Instrucciones de control
    • La instrucción if-else es básicamente igual que en C, C++ y Java.
    • La diferencia de la instrucción switch con la versión de C, C++ y Java es que todo cuerpo perteneciente a un case
      debe de toparse con un break o un goto antes de toparse con otro case, a menos que dicho cuerpo esté vacío.
    • La instrucción for es básicamente igual que en C, C++ y Java.
    • La instrucción while es básicamente igual que en C, C++ y Java.
    • La instrucción do-while es básicamente igual que en C, C++ y Java.
    • La instrucción foreach realiza un ciclo a través de los elementos de una colección (grupo de objetos). El formato
      de esta instrucción es: foreach(tipo variable in coleccion) instruccion;. En este ciclo se recorre la colección y la
      variable recibe un respectivo elemento de dicha colección en cada iteración.
    • Al igual que en C y C++, la instrucción break permite forzar la salida de un ciclo omitiendo el código restante en
      el cuerpo del ciclo.
    • Al igual que en C y C++, la instrucción continue permite forzar la repetición temprana de un ciclo omitiendo el
      código restante en el cuerpo del ciclo.
    • La instrucción return es básicamente igual que en C, C++. Se utiliza para devolver un valor y salir de un método.
    • La instrucción goto se sigue utilizando en C# a pesar de toda la polémica que esto conlleva.


    Métodos
    •   Todo método debe ser parte de una clase, no existen métodos globales.
    •   De forma predeterminada, los parámetros se pasan por valor (se copia dicho valor).
    •   El modificador ref fuerza a pasar los parámetros por referencia en vez de pasarlos por valor.
    •   El modificador out es similar al modificador ref con una excepción: sólo se puede utilizar para pasar un valor
        fuera de un método. El método debe asignar un valor al parámetro antes de que el método finalice.
    •   Cuando ref y out modifican un parámetro de referencia, la propia referencia se pasa por referencia.
    •   El modificador params sirve para definir un número variable de argumentos los cuales se implementan como una
        matriz. Ejemplo: public int maxVal(params int[] nums){...}; esta función podría ser invocada así:
        maxVal(23,3,a,-12);.
    •   Un método debe tener como máximo un único parámetro params y éste debe ser el último.
    •   Un método puede devolver cualquier tipo de datos, 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. Tiene la siguiente
        sintaxis: public static int Main(string[] args){...}.


    Clases y objetos
    Varios puntos a tener en cuenta en C# con respecto a clases y objetos son los siguientes:
    •   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 su referencia a él (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 de 0, null o false según corresponda.
    • Para crear un nuevo objeto se utiliza la siguiente sintaxis: variable = new nombre_clase();.
C Sharp                                                                                                                   7


    • Un destructor se declara como un constructor, aunque va precedido por un signo de tilde ~.
    • Se emplea una desasignación de memoria de objetos no referenciados (recolección de basura), y cuando esto
      ocurre se ejecuta el destructor de dicha clase.
    • 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 un apuntador 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.
    • 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 con la palabra clave operator


    Matrices
    • En C# las matrices se implementan como objetos.
    • Para crear una matriz se utiliza el siguiente formato: tipo[] nombre_matriz = new tipo[tamaño];
    • Se puede crear una matriz inicializada así: tipo[] nombre_matriz = { val1 , val2 , val3 , ... , valN };
    • Los índices de las matrices comienzan en 0.
    • Para crear una matriz bidimensional se utiliza el siguiente formato: tipo[,] nombre_matriz = new
      tipo[filas,columnas]
    • Para referirse a un elemento de una matriz bidimensional no se usa la forma matriz[fila][columna] (la cual usa
      C++), si no matriz[fila,columna].
    • Ya que C# implementa matrices como objetos, cada matriz tiene asociada una propiedad Length que contiene el
      número de elementos que puede alojar cada matriz.


    Cadenas de caracteres
    • El tipo de dato cadena se llama 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).
    • La forma más común de construir una cadena es por medio de una literal o constante: string str = "Una cadena";
    • El operador == determina si dos referencias hacen referencia al mismo objeto, pero al usar dicho operador con
      dos operandos 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 < o >= se comparan las referencias.
    • Se pueden concatenar (unir) dos cadenas mediante el operador +.
    • Las cadenas son inmutables, una vez creadas no se pueden modificar, solo se pueden copiar total o parcialmente.
    • Las cadenas se pueden usar en las instrucciones switch.
C Sharp                                                                                                                                                 8


                                                      Métodos comunes de control de cadenas

              Método                                                                Descripción

   static string Copy(string   Devuelve una copia de str.
   str)

   int CompareTo(string        Devuelve menor que cero si la cadena que llama es menor que str, mayor que cero si la cadena que llama es mayor que
   str)                        str, y cero si las cadenas son iguales.

   int IndexOf(string str)     Busca en la cadena que llama la subcadena especificada por str. Devuelve el índice de la primera coincidencia, o -1 en
                               caso de error.

   int LastIndexOf(string      Busca en la cadena que llama la subcadena especificada por str. Devuelve el índice de la última coincidencia, o -1 en
   str)                        caso de error.

   string ToLower              Devuelve una versión en minúsculas de la cadena que llama.

   string ToUpper              Devuelve una versión en mayúsculas de la cadena que llama.




    Ejemplos
    · Crear una variable del tipo string y mostrarla en un mensaje

          using System;
          public void ejemplo()
          {
             string Var1 = "Hola";
             MessageBox.Show(Var1);
          }

    Usar Sumas:

    using System;
    using System.Text;
    using System.Windows.Forms;



    public void Main()
       {
          int i = 10;
          int x = 20;
          int resultado = x + i;


               MessageBox.Show(resultado);
          }
C Sharp                                                                                                                                      9


    Compiladores
    En la actualidad existen los siguientes compiladores para el lenguaje C♯:
    • Microsoft.NET framework SDK [5] incluye un compilador de C♯, pero no un IDE.
    • Microsoft Visual Studio, IDE por excelencia de este lenguaje, versión 2002, 2003, 2005, 2008 y 2010.
    • #develop, es un IDE libre para C♯ bajo licencia LGPL, muy similar a Microsoft Visual C#.
    • Mono, es una implementación GPL de todo el entorno .NET desarrollado por Novell. Como parte de esta
      implementación se incluye un compilador de C♯.
    • Delphi 2006, de Borland Software Corporation.
    • dotGNU Portable.NET, de la Free Software Foundation.


    Metas del diseño del lenguaje
    El estándar ECMA lista las siguientes metas en el diseño para C♯:
    • Lenguaje de programación orientado a objetos simple, moderno y de propósito general.
    • Inclusión de principios de ingeniería de software tales como revisión estricta de los tipos de datos, revisión de
      límites de vectores, detección de intentos de usar variables no inicializadas, y recolección de basura automática.
    • Capacidad para desarrollar componentes de software que se puedan usar en ambientes distribuidos.
    • Portabilidad del código fuente
    • Fácil migración del programador al nuevo lenguaje, especialmente para programadores familiarizados con C y
      C++.
    • Soporte para internacionalización
    • Adecuación para escribir aplicaciones de cualquier tamaño: desde las más grandes y sofisticadas como sistemas
      operativos hasta las más pequeñas funciones.
    • Aplicaciones económicas en cuanto a memoria y procesado.


    Referencias
    [1] http:/ / www. microsoft. com/ net
    [2] Kovacs, James (7 de septiembre de 2007). « C#/.NET History Lesson (http:/ / www. jameskovacs. com/ blog/ CNETHistoryLesson. aspx)»
        (en inglés). Consultado el 5 de febrero de 2011.
    [3] http:/ / www. ecma-international. org/ publications/ standards/ Ecma-334. htm
    [4] Visual C# Developer Center, Frequently Asked Questions About Visual C# .NET 2003 (http:/ / msdn. microsoft. com/ en-us/ vcsharp/
        aa336779. aspx)
    [5] http:/ / www. microsoft. com/ downloads/ details. aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC& displaylang=en



    Enlaces externos

    En castellano
    • Programación con C# (http://www.pedrov.info/index.php)
    • Ejemplo de c# manejando Oracle y Sql, Desktop y Web (http://informatica-easy.webcindario.com/)
    • Centro de desarrolladores de Visual C# (http://msdn.microsoft.com/es-es/vcsharp/default.aspx)
    • Desarrollo de Software en C# (http://www.gruposyahoo.com.ar/group/DesarrolloCSharp) Comunidad virtual
      para el intercambio de información en castellano sobre desarrollo de software en C# para profesionales
      practicantes, docentes y estudiantes.
    • Blog sobre C♯ (http://www.puntopeek.com) Ejercicios resueltos y más.
    • Geeks.ms (http://geeks.ms) Blogs sobre desarrolladores en plataforma.Net y C♯
    • C# Online.NET (http://es.csharp-online.net/) - su enciclopedia libre de C♯ y.NET en español.
C Sharp                                                                                                           10


    • Kit de desarrollo de software (SDK) de Microsoft.NET Framework 2.0 (x86) (http://www.microsoft.com/
      downloads/details.aspx?displaylang=es&FamilyID=fe6f2099-b7b4-4f47-a244-c96d69c35dec), (x64) (http://
      www.microsoft.com/downloads/details.aspx?displaylang=es&
      FamilyID=1AEF6FCE-6E06-4B66-AFE4-9AAD3C835D3D) e (IA64) (http://www.microsoft.com/downloads/
      details.aspx?displaylang=es&FamilyID=F4DD601B-1B88-47A3-BDC1-79AFA79F6FB0)
    • webprogramacion.com (http://www.webprogramacion.com/csharp.aspx) Artículos, ejemplos, fragmentos de
      código...
    Wikilibros
    •     Wikilibros alberga un libro o manual sobre C sharp NET.


    En inglés
    • Standard ECMA-334 (http://www.ecma-international.org/publications/standards/Ecma-334.htm) -
      especificación del lenguaje C♯ en inglés
    • C# Language Specification (http://en.csharp-online.net/CSharp_Language_Specification) (Especificación del
      lenguaje C#) - versión en inglés.
    • C# Online.NET (http://en.csharp-online.net/) - su enciclopedia libre de C♯ y.NET en inglés.
    • Csharp University (http://www.csharpuniversity.com/) Programación con C#
    •   Mejoras de C#3.0 (http://spellcoder.com/blogs/bashmohandes/archive/2006/12/08/4027.aspx)
    •   Baltie - C♯ IDE for children and young Baltie (http://www.sgpsys.com)
    •   Microsoft.NET (http://www.microsoft.com/net/)
    •   Proyecto Mono (http://www.mono-project.com/)
    •   #develop (http://www.icsharpcode.net/OpenSource/SD/)
    •   Visual C# 2005 Express Edition (http://www.microsoft.com/spanish/msdn/vstudio/express/VCS/default.
        mspx)
    •   Borland Delphi (http://www.borland.com/delphi/)
    •   Proyecto DotGNU (http://www.gnu.org/projects/dotgnu/)
    •   Especificación del C♯3.0 (http://download.microsoft.com/download/9/5/0/
        9503e33e-fde6-4aed-b5d0-ffe749822f1b/csharp 3.0 specification.doc)
    •   C Sharp Tutorial for beginners (http://www.referencedesigner.com/tutorials/csharp/csharp_1.php)
    •   C♯ School (http://www.programmersheaven.com/2/CSharpBook) - inglés.
    •   C Sharp Tutorial (http://www.meshplex.org/wiki/C_Sharp_Tutorial)
    •   Calculadora de potencias (http://answers.oreilly.com/topic/2306-a-powers-calculator-c/)
Fuentes y contribuyentes del artículo                                                                                                                                                              11



     Fuentes y contribuyentes del artículo
     C Sharp  Fuente: http://es.wikipedia.org/w/index.php?oldid=46870787  Contribuyentes: ATW-KOD, Abece, AbelNightroad26, Adryitan, Amgc56, AngelDrup, Anonimato1990, Ascánder,
     Biasoli, Bifus, Bigsus, CF, Cad, CamiloAndres, Chien, Cobalttempest, Damosu, Danmol10, DarK AnImA, Developer, Diegusjaimes, Dodo, Dreitmen, Eber.irigoyen, Elabra sanchez, Eldavan,
     Emijrp, Fefudito, Ferto, Gnovaro, Gorpik, Gothmog, Interwiki, Ivan rome, Jesuja, JoaquinFerrero, JorSol, Jotego, Juancri, Kadellar, Kn, Krlo, Krous, Kuanto, Locovich, ManuelGR, Manuelt15,
     Matdrodes, Moriel, Murven, Nerefis, Netito777, Obelix83, Oscar ., Pablo.cl, Pablo323, PabloCastellano, Patriciocs, Pedrovicenterosero, PoLuX124, Poco a poco, Rafael1193, Ranagha,
     Renacimiento, Rindokenzaki, Rufflos, Sabbut, Sanbec, Savh, Scmbg, Shooke, Slady, Super braulio, Superzerocool, Suruena, Tirithel, Tomatejc, Tostadora, Tripy, Vrrivaro, XalD, Yamaneko,
     ZackBsAs, 211 ediciones anónimas




     Fuentes de imagen, Licencias y contribuyentes
     Image:Wikibooks-logo.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Wikibooks-logo.svg  Licencia: logo  Contribuyentes: User:Bastique, User:Ramac et al.




     Licencia
     Creative Commons Attribution-Share Alike 3.0 Unported
     http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/

Weitere ähnliche Inhalte

Was ist angesagt?

Lenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II PunterosLenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II Punterossirfids
 
Introduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion cIntroduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion cFreivys Paredes
 
Lenguaje C para Administradores de Red / Script III - Memoria
Lenguaje C para Administradores de Red / Script III - MemoriaLenguaje C para Administradores de Red / Script III - Memoria
Lenguaje C para Administradores de Red / Script III - Memoriasirfids
 
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOSPRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOSRoxa1190
 
Clasificación de los Lenguajes de programación
Clasificación de los Lenguajes de programaciónClasificación de los Lenguajes de programación
Clasificación de los Lenguajes de programaciónMaryElizabeth07
 

Was ist angesagt? (15)

Presentación de c #
Presentación de c #Presentación de c #
Presentación de c #
 
Lenguaje c 1
Lenguaje c 1Lenguaje c 1
Lenguaje c 1
 
Actividades 1 7
Actividades 1 7Actividades 1 7
Actividades 1 7
 
Actividades 1-7
Actividades 1-7Actividades 1-7
Actividades 1-7
 
Lenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II PunterosLenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II Punteros
 
Lenguaje de programación C
Lenguaje de programación CLenguaje de programación C
Lenguaje de programación C
 
Manual de c c++
Manual de c c++Manual de c c++
Manual de c c++
 
Cesar ivan lenguaje_c
Cesar ivan lenguaje_cCesar ivan lenguaje_c
Cesar ivan lenguaje_c
 
Introduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion cIntroduccion al lenguaje de programacion c
Introduccion al lenguaje de programacion c
 
Manual basico de_lenguje_c
Manual basico de_lenguje_cManual basico de_lenguje_c
Manual basico de_lenguje_c
 
Lenguaje C para Administradores de Red / Script III - Memoria
Lenguaje C para Administradores de Red / Script III - MemoriaLenguaje C para Administradores de Red / Script III - Memoria
Lenguaje C para Administradores de Red / Script III - Memoria
 
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOSPRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
 
Lenguaje C (pdf)
Lenguaje C (pdf)Lenguaje C (pdf)
Lenguaje C (pdf)
 
Clasificación de los Lenguajes de programación
Clasificación de los Lenguajes de programaciónClasificación de los Lenguajes de programación
Clasificación de los Lenguajes de programación
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 

Ähnlich wie Intro a c sharp

Ähnlich wie Intro a c sharp (20)

C# Diferencias
C# DiferenciasC# Diferencias
C# Diferencias
 
Castillo
CastilloCastillo
Castillo
 
Moviles
MovilesMoviles
Moviles
 
Moviles
MovilesMoviles
Moviles
 
Introduccion del Lenguaje C
Introduccion del Lenguaje CIntroduccion del Lenguaje C
Introduccion del Lenguaje C
 
Actividades 1 7
Actividades 1 7Actividades 1 7
Actividades 1 7
 
Actividades 1 7
Actividades 1 7Actividades 1 7
Actividades 1 7
 
Lenguaje de programacion c#
Lenguaje de programacion c#Lenguaje de programacion c#
Lenguaje de programacion c#
 
ELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdfELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdf
 
tposdedatosc-200924033657.pptx
tposdedatosc-200924033657.pptxtposdedatosc-200924033657.pptx
tposdedatosc-200924033657.pptx
 
Tpos de datos c#
Tpos de datos c#Tpos de datos c#
Tpos de datos c#
 
Tipos de datos ok
Tipos de datos okTipos de datos ok
Tipos de datos ok
 
Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacion
 
Diapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en JavaDiapositivas curso programación orientada a objetos en Java
Diapositivas curso programación orientada a objetos en Java
 
Manual c++01
Manual c++01Manual c++01
Manual c++01
 
Republica bolivariana de venezuela
Republica bolivariana de venezuelaRepublica bolivariana de venezuela
Republica bolivariana de venezuela
 
Tipos de datos_de_virtual_c_
Tipos de datos_de_virtual_c_Tipos de datos_de_virtual_c_
Tipos de datos_de_virtual_c_
 
Punteros y funciones abril agosto 2016
Punteros y funciones abril agosto 2016Punteros y funciones abril agosto 2016
Punteros y funciones abril agosto 2016
 
Tipos de datos para C++
Tipos de datos para C++Tipos de datos para C++
Tipos de datos para C++
 
Guia de ejercioccios de estudio c#.pptx
Guia de ejercioccios de estudio   c#.pptxGuia de ejercioccios de estudio   c#.pptx
Guia de ejercioccios de estudio c#.pptx
 

Kürzlich hochgeladen

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 

Kürzlich hochgeladen (20)

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 

Intro a c sharp

  • 1. C Sharp 1 C Sharp El título de este artículo se muestra incorrectamente debido a limitaciones técnicas. El título correcto es C#. C# C# Paradigma: Multiparadigma: Orientado a Objetos, estructurada, imperativa, genérica, funcional Apareció en: 2001 Diseñado por: Microsoft Corporation Última versión estable: 4.0 (12 de abril 2010) Tipo de dato: Fuerte, Estático Implementaciones: Visual Studio .NET, Mono, SharpDevelop, DotGNU Influido por: Java, C++, Lenguaje C, Delphi, Eiffel Ha influido a: Vala, Nemerle, Boo, F#, D, Java 5 Sistema operativo: Multiplataforma Web: [1] http:/ / www. microsoft. com/ net C♯ o C# (pronunciado ci sharp en inglés) es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA e ISO. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET, similar al de Java aunque incluye mejoras derivadas de otros lenguajes (entre ellos Delphi). El nombre C Sharp fue inspirado por la notación musical, donde ♯ (sostenido, en inglés sharp) indica que la nota (C es la nota do en inglés) es un semitono más alta, sugiriendo que C♯ es superior a C/C++. Además el signo de # viene de dos + pegados.[2] C♯, como parte de la plataforma.NET, está normalizado por ECMA desde diciembre de 2001 (C# Language Specification [3] "Especificación del lenguaje C♯"). El 7 de noviembre de 2005 salió la versión 2.0 del lenguaje, que incluía mejoras tales como tipos genéricos, métodos anónimos, iteradores, tipos parciales y tipos anulables. El 19 de noviembre de 2007 salió la versión 3.0 de C#, destacando entre las mejoras los tipos implícitos, tipos anónimos y LINQ (Language Integrated Query -consulta integrada en el lenguaje). Aunque C♯ forma parte de la plataforma.NET, ésta es una interfaz de programación de aplicaciones (API), mientras que C♯ es un lenguaje de programación independiente diseñado para generar programas sobre dicha plataforma. Ya existe un compilador implementado que provee el marco de DotGNU - Mono que genera programas para distintas plataformas como Win32, UNIX y Linux. Historia Durante el desarrollo de la plataforma .NET, las bibliotecas de clases fueron escritas originalmente en el lenguaje compilador Simple Managed C. En 1999, Anders Hejlsberg formó un equipo con la misión de desarrollar un nuevo lenguaje de programación llamado Cool (C Orientado a Objetos). Este nombre tuvo que ser cambiado debido a problemas de marca, pasando a llamarse C#, aunque habitualmente se escribe C#.[4] La biblioteca de clases de la plataforma .NET fue migrada entonces al nuevo lenguaje. Hejlsberg lideró el proyecto de desarrollo de C#. Anteriormente, ya participó en el desarrollo de otros lenguajes como Turbo Pascal, J++ y Borland Delphi.
  • 2. C Sharp 2 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. C# define ocho tipos de enteros, a saber: Tipo de datos de enteros Tipo Ancho en bits Rango Significado byte 8 De 0 a 255 Entero sin signo sbyte 8 De -128 a 127 Entero con signo short 16 De -32.768 a 32.767 Entero corto con signo ushort 16 De 0 a 65.535 Entero corto sin signo int 32 De -2.147.483.648 a 2.147.483.647 Entero medio con signo uint 32 De 0 a 4.294.967.295 Entero medio sin signo long 64 De -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 Entero largo con signo ulong 64 De 0 a 18.446.744.073.709.551.615 Entero largo sin signo Los tipos de punto flotante pueden representar números con componentes fraccionales. Existen dos clases de tipos de punto 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 flotante más interesante de C# es decimal, dirigido al uso de cálculos monetarios. La aritmética de punto flotante normal está sujeta a una variedad de errores de redondeo cuando se aplica a valores decimales. El tipo decimal elimina estos errores y puede representar hasta 28 lugares decimales. Tipo de datos de punto flotante Tipo Ancho en bits Rango Significado float 32 De 1,5E-45 a 3,4E+38 Punto flotante corto double 64 De 5E-324 a 1,7E+308 Punto flotante largo decimal 128 De 1E-28 a 7,9E+28 Punto flotante monetario Los caracteres en C# no son cantidades de 8 bits como en otros muchos lenguajes de programación. Por el contrario, C# usa un tipo de caracteres de 16 bits llamado Unicode al cual se le llama char. No existen conversiones automáticas de tipo entero a char. Tipo de datos de caracteres Tipo Ancho en bits Rango Significado char 16 De 0 a 65.535 (código Unicode) Carácter
  • 3. C Sharp 3 Tipo de datos lógicos Tipo Ancho en bits Rango Significado bool 1 true or false, no se usa 1 ó 0 ya que no hay conversión definida true or false No existe una conversión definida entre bool y los valores enteros (1 no se convierte a verdadero ni 0 se convierte a falso). Constantes Las constantes en C# se denominan literales. Todas las constantes tienen un tipo de dato, en caso de ser una constante entera se usa la de menor tamaño que pueda alojarla, empezando por int. En caso de punto flotante se considera como un double. Sin embargo se puede especificar explícitamente el tipo de dato que una constante deberá usar, por medio de los sufijos: Sufijo Tipo de dato Ejemplo L long 12L UL ulong 68687UL F float 10,19F M decimal 9,95M En ocasiones, resulta más sencillo usar un sistema numérico basado en 16 en lugar de 10, para tal caso C♯ permite especificar constantes enteras en formato hexadecimal, y se hace empezando con 0x. Por ejemplo: 0xFF equivale a 255 en decimal. C# tiene caracteres denominados secuencias de escape para facilitar la escritura con el teclado de símbolos que carecen de representación visual. Estos son: Secuencia de escape Descripción a Alerta (timbre) b Retroceso f Avance de página n Nueva línea r Retorno de carro t Tabulador horizontal v Tabulador vertical 0 Nulo ' Comilla sencilla " Comilla doble Diagonal invertida C#, al igual que C++, es compatible con el tipo de constante cadena de caracteres. Dentro de la cadena de caracteres se pueden usar secuencias de escape. Una cadena de caracteres puede iniciarse con el símbolo @ seguido por una cadena entre comillas, en tal caso, las secuencias de escape no tienen efecto y además la cadena puede ocupar dos o más líneas.
  • 4. C Sharp 4 Variables Toda variable se debe declarar antes de ser utilizada. La forma en que se declara una variable en C# es la siguiente: tipo nombre_variable; Para asignar un valor a una variable: nombre_variable = valor 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. Los significados de las letras son: A (Conversión automática o implícita), E (Conversión explícita), I (Conversión incompatible). Conversiones de tipo de datos byte sbyte short ushort int uint long ulong float double decimal char bool byte E A A A A A A E E E E I sbyte E A E A E A A E E E E I short E E E A A A A E E E E I ushort E E E A A A A E E E E I int E E E E E A A E E E E I uint E E E E E A A E E E E I long E E E E E E E E E E E I ulong E E E E E E E E E E E I float E E E E E E E E A E I I double E E E E E E E E E E I I decimal E E E E E E E E E E I I char E E E A A A A A A A A I bool I I I I I I I I I I I I • 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 tipo de dato destino es mayor que el tipo de dato origen. • La conversión explícita se realiza de la siguiente forma: (tipo-destino) expresion. Además de realizarse dentro de una asignación, las conversiones de tipos también tienen lugar dentro de una expresión, pues en cada operación ambos operandos deben de ser del mismo tipo. Si la conversión es del tipo implícito se efectúa el siguiente algoritmo en dicho orden: 1. Si un operando es decimal, el otro operando se transforma a decimal. 2. Si un operando es double, el otro operando se transforma a double. 3. Si un operando es float, el otro operando se transforma a float. 4. Si un operando es ulong, el otro operando se transforma a ulong. 5. Si un operando es long, el otro operando se transforma a long. 6. Si un operando es uint, y si el otro operando es de tipo sbyte, short o int, los dos se transforman a long. 7. Si un operando es uint, el otro operando se transforma a uint. 8. Si ninguno de los casos anteriores, los dos operandos se transforman a int.
  • 5. C Sharp 5 Operadores C♯ tiene cuatro clases generales de operadores: aritméticos, a nivel de bit, relacionales y lógicos. Operadores Operador Significado Tipo + Suma Aritmético - Resta Aritmético * Producto Aritmético / División Aritmético % Módulo (residuo entero) Aritmético ++ Incremento Aritmético -- Decremento Aritmético == Igual que Relacional != Distinto de Relacional > Mayor que Relacional < Menor que Relacional >= Mayor o igual que Relacional <= Menor o igual que Relacional & AND Lógico y a nivel de bits | OR Lógico y a nivel de bits ^ XOR y de nivel de bits Lógico || OR de cortocircuito Lógico && AND de cortocircuito Lógico ! NOT Lógico ~ Complemento a uno A nivel de bits << Desplazamiento a la izquierda A nivel de bits >> Desplazamiento a la derecha A nivel de bits • Los operadores aritméticos funcionan igual que en C y C++. • El resultado de los operadores relacionales y lógicos es un valor bool. • Los operadores de cortocircuito evalúan el segundo operando solo cuando es necesario. • Los operadores a nivel de bit no se pueden aplicar a tipos bool, float, double o decimal.
  • 6. C Sharp 6 Instrucciones de control • La instrucción if-else es básicamente igual que en C, C++ y Java. • La diferencia de la instrucción switch con la versión de C, C++ y Java es que todo cuerpo perteneciente a un case debe de toparse con un break o un goto antes de toparse con otro case, a menos que dicho cuerpo esté vacío. • La instrucción for es básicamente igual que en C, C++ y Java. • La instrucción while es básicamente igual que en C, C++ y Java. • La instrucción do-while es básicamente igual que en C, C++ y Java. • La instrucción foreach realiza un ciclo a través de los elementos de una colección (grupo de objetos). El formato de esta instrucción es: foreach(tipo variable in coleccion) instruccion;. En este ciclo se recorre la colección y la variable recibe un respectivo elemento de dicha colección en cada iteración. • Al igual que en C y C++, la instrucción break permite forzar la salida de un ciclo omitiendo el código restante en el cuerpo del ciclo. • Al igual que en C y C++, la instrucción continue permite forzar la repetición temprana de un ciclo omitiendo el código restante en el cuerpo del ciclo. • La instrucción return es básicamente igual que en C, C++. Se utiliza para devolver un valor y salir de un método. • La instrucción goto se sigue utilizando en C# a pesar de toda la polémica que esto conlleva. Métodos • Todo método debe ser parte de una clase, no existen métodos globales. • De forma predeterminada, los parámetros se pasan por valor (se copia dicho valor). • El modificador ref fuerza a pasar los parámetros por referencia en vez de pasarlos por valor. • El modificador out es similar al modificador ref con una excepción: sólo se puede utilizar para pasar un valor fuera de un método. El método debe asignar un valor al parámetro antes de que el método finalice. • Cuando ref y out modifican un parámetro de referencia, la propia referencia se pasa por referencia. • El modificador params sirve para definir un número variable de argumentos los cuales se implementan como una matriz. Ejemplo: public int maxVal(params int[] nums){...}; esta función podría ser invocada así: maxVal(23,3,a,-12);. • Un método debe tener como máximo un único parámetro params y éste debe ser el último. • Un método puede devolver cualquier tipo de datos, 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. Tiene la siguiente sintaxis: public static int Main(string[] args){...}. Clases y objetos Varios puntos a tener en cuenta en C# con respecto a clases y objetos son los siguientes: • 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 su referencia a él (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 de 0, null o false según corresponda. • Para crear un nuevo objeto se utiliza la siguiente sintaxis: variable = new nombre_clase();.
  • 7. C Sharp 7 • Un destructor se declara como un constructor, aunque va precedido por un signo de tilde ~. • Se emplea una desasignación de memoria de objetos no referenciados (recolección de basura), y cuando esto ocurre se ejecuta el destructor de dicha clase. • 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 un apuntador 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. • 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 con la palabra clave operator Matrices • En C# las matrices se implementan como objetos. • Para crear una matriz se utiliza el siguiente formato: tipo[] nombre_matriz = new tipo[tamaño]; • Se puede crear una matriz inicializada así: tipo[] nombre_matriz = { val1 , val2 , val3 , ... , valN }; • Los índices de las matrices comienzan en 0. • Para crear una matriz bidimensional se utiliza el siguiente formato: tipo[,] nombre_matriz = new tipo[filas,columnas] • Para referirse a un elemento de una matriz bidimensional no se usa la forma matriz[fila][columna] (la cual usa C++), si no matriz[fila,columna]. • Ya que C# implementa matrices como objetos, cada matriz tiene asociada una propiedad Length que contiene el número de elementos que puede alojar cada matriz. Cadenas de caracteres • El tipo de dato cadena se llama 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). • La forma más común de construir una cadena es por medio de una literal o constante: string str = "Una cadena"; • El operador == determina si dos referencias hacen referencia al mismo objeto, pero al usar dicho operador con dos operandos 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 < o >= se comparan las referencias. • Se pueden concatenar (unir) dos cadenas mediante el operador +. • Las cadenas son inmutables, una vez creadas no se pueden modificar, solo se pueden copiar total o parcialmente. • Las cadenas se pueden usar en las instrucciones switch.
  • 8. C Sharp 8 Métodos comunes de control de cadenas Método Descripción static string Copy(string Devuelve una copia de str. str) int CompareTo(string Devuelve menor que cero si la cadena que llama es menor que str, mayor que cero si la cadena que llama es mayor que str) str, y cero si las cadenas son iguales. int IndexOf(string str) Busca en la cadena que llama la subcadena especificada por str. Devuelve el índice de la primera coincidencia, o -1 en caso de error. int LastIndexOf(string Busca en la cadena que llama la subcadena especificada por str. Devuelve el índice de la última coincidencia, o -1 en str) caso de error. string ToLower Devuelve una versión en minúsculas de la cadena que llama. string ToUpper Devuelve una versión en mayúsculas de la cadena que llama. Ejemplos · Crear una variable del tipo string y mostrarla en un mensaje using System; public void ejemplo() { string Var1 = "Hola"; MessageBox.Show(Var1); } Usar Sumas: using System; using System.Text; using System.Windows.Forms; public void Main() { int i = 10; int x = 20; int resultado = x + i; MessageBox.Show(resultado); }
  • 9. C Sharp 9 Compiladores En la actualidad existen los siguientes compiladores para el lenguaje C♯: • Microsoft.NET framework SDK [5] incluye un compilador de C♯, pero no un IDE. • Microsoft Visual Studio, IDE por excelencia de este lenguaje, versión 2002, 2003, 2005, 2008 y 2010. • #develop, es un IDE libre para C♯ bajo licencia LGPL, muy similar a Microsoft Visual C#. • Mono, es una implementación GPL de todo el entorno .NET desarrollado por Novell. Como parte de esta implementación se incluye un compilador de C♯. • Delphi 2006, de Borland Software Corporation. • dotGNU Portable.NET, de la Free Software Foundation. Metas del diseño del lenguaje El estándar ECMA lista las siguientes metas en el diseño para C♯: • Lenguaje de programación orientado a objetos simple, moderno y de propósito general. • Inclusión de principios de ingeniería de software tales como revisión estricta de los tipos de datos, revisión de límites de vectores, detección de intentos de usar variables no inicializadas, y recolección de basura automática. • Capacidad para desarrollar componentes de software que se puedan usar en ambientes distribuidos. • Portabilidad del código fuente • Fácil migración del programador al nuevo lenguaje, especialmente para programadores familiarizados con C y C++. • Soporte para internacionalización • Adecuación para escribir aplicaciones de cualquier tamaño: desde las más grandes y sofisticadas como sistemas operativos hasta las más pequeñas funciones. • Aplicaciones económicas en cuanto a memoria y procesado. Referencias [1] http:/ / www. microsoft. com/ net [2] Kovacs, James (7 de septiembre de 2007). « C#/.NET History Lesson (http:/ / www. jameskovacs. com/ blog/ CNETHistoryLesson. aspx)» (en inglés). Consultado el 5 de febrero de 2011. [3] http:/ / www. ecma-international. org/ publications/ standards/ Ecma-334. htm [4] Visual C# Developer Center, Frequently Asked Questions About Visual C# .NET 2003 (http:/ / msdn. microsoft. com/ en-us/ vcsharp/ aa336779. aspx) [5] http:/ / www. microsoft. com/ downloads/ details. aspx?familyid=FE6F2099-B7B4-4F47-A244-C96D69C35DEC& displaylang=en Enlaces externos En castellano • Programación con C# (http://www.pedrov.info/index.php) • Ejemplo de c# manejando Oracle y Sql, Desktop y Web (http://informatica-easy.webcindario.com/) • Centro de desarrolladores de Visual C# (http://msdn.microsoft.com/es-es/vcsharp/default.aspx) • Desarrollo de Software en C# (http://www.gruposyahoo.com.ar/group/DesarrolloCSharp) Comunidad virtual para el intercambio de información en castellano sobre desarrollo de software en C# para profesionales practicantes, docentes y estudiantes. • Blog sobre C♯ (http://www.puntopeek.com) Ejercicios resueltos y más. • Geeks.ms (http://geeks.ms) Blogs sobre desarrolladores en plataforma.Net y C♯ • C# Online.NET (http://es.csharp-online.net/) - su enciclopedia libre de C♯ y.NET en español.
  • 10. C Sharp 10 • Kit de desarrollo de software (SDK) de Microsoft.NET Framework 2.0 (x86) (http://www.microsoft.com/ downloads/details.aspx?displaylang=es&FamilyID=fe6f2099-b7b4-4f47-a244-c96d69c35dec), (x64) (http:// www.microsoft.com/downloads/details.aspx?displaylang=es& FamilyID=1AEF6FCE-6E06-4B66-AFE4-9AAD3C835D3D) e (IA64) (http://www.microsoft.com/downloads/ details.aspx?displaylang=es&FamilyID=F4DD601B-1B88-47A3-BDC1-79AFA79F6FB0) • webprogramacion.com (http://www.webprogramacion.com/csharp.aspx) Artículos, ejemplos, fragmentos de código... Wikilibros • Wikilibros alberga un libro o manual sobre C sharp NET. En inglés • Standard ECMA-334 (http://www.ecma-international.org/publications/standards/Ecma-334.htm) - especificación del lenguaje C♯ en inglés • C# Language Specification (http://en.csharp-online.net/CSharp_Language_Specification) (Especificación del lenguaje C#) - versión en inglés. • C# Online.NET (http://en.csharp-online.net/) - su enciclopedia libre de C♯ y.NET en inglés. • Csharp University (http://www.csharpuniversity.com/) Programación con C# • Mejoras de C#3.0 (http://spellcoder.com/blogs/bashmohandes/archive/2006/12/08/4027.aspx) • Baltie - C♯ IDE for children and young Baltie (http://www.sgpsys.com) • Microsoft.NET (http://www.microsoft.com/net/) • Proyecto Mono (http://www.mono-project.com/) • #develop (http://www.icsharpcode.net/OpenSource/SD/) • Visual C# 2005 Express Edition (http://www.microsoft.com/spanish/msdn/vstudio/express/VCS/default. mspx) • Borland Delphi (http://www.borland.com/delphi/) • Proyecto DotGNU (http://www.gnu.org/projects/dotgnu/) • Especificación del C♯3.0 (http://download.microsoft.com/download/9/5/0/ 9503e33e-fde6-4aed-b5d0-ffe749822f1b/csharp 3.0 specification.doc) • C Sharp Tutorial for beginners (http://www.referencedesigner.com/tutorials/csharp/csharp_1.php) • C♯ School (http://www.programmersheaven.com/2/CSharpBook) - inglés. • C Sharp Tutorial (http://www.meshplex.org/wiki/C_Sharp_Tutorial) • Calculadora de potencias (http://answers.oreilly.com/topic/2306-a-powers-calculator-c/)
  • 11. Fuentes y contribuyentes del artículo 11 Fuentes y contribuyentes del artículo C Sharp  Fuente: http://es.wikipedia.org/w/index.php?oldid=46870787  Contribuyentes: ATW-KOD, Abece, AbelNightroad26, Adryitan, Amgc56, AngelDrup, Anonimato1990, Ascánder, Biasoli, Bifus, Bigsus, CF, Cad, CamiloAndres, Chien, Cobalttempest, Damosu, Danmol10, DarK AnImA, Developer, Diegusjaimes, Dodo, Dreitmen, Eber.irigoyen, Elabra sanchez, Eldavan, Emijrp, Fefudito, Ferto, Gnovaro, Gorpik, Gothmog, Interwiki, Ivan rome, Jesuja, JoaquinFerrero, JorSol, Jotego, Juancri, Kadellar, Kn, Krlo, Krous, Kuanto, Locovich, ManuelGR, Manuelt15, Matdrodes, Moriel, Murven, Nerefis, Netito777, Obelix83, Oscar ., Pablo.cl, Pablo323, PabloCastellano, Patriciocs, Pedrovicenterosero, PoLuX124, Poco a poco, Rafael1193, Ranagha, Renacimiento, Rindokenzaki, Rufflos, Sabbut, Sanbec, Savh, Scmbg, Shooke, Slady, Super braulio, Superzerocool, Suruena, Tirithel, Tomatejc, Tostadora, Tripy, Vrrivaro, XalD, Yamaneko, ZackBsAs, 211 ediciones anónimas Fuentes de imagen, Licencias y contribuyentes Image:Wikibooks-logo.svg  Fuente: http://es.wikipedia.org/w/index.php?title=Archivo:Wikibooks-logo.svg  Licencia: logo  Contribuyentes: User:Bastique, User:Ramac et al. Licencia Creative Commons Attribution-Share Alike 3.0 Unported http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/