SlideShare ist ein Scribd-Unternehmen logo
1 von 30
LENGUAJE DE PROGRAMACIÓN C# NATALIA ECHEVERRY  JHON FREDY PÉREZ RESTREPO  TECNOLOGÍA EN ARCHIVÍSTICA  UNIVERSIDAD DE ANTIOQUIA  2011
HISTORIA DE C# C#  (leído en inglés “C Sharp” y en español “C Almohadilla”) es el lenguaje orientado a objetos 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. Apareció en: 2001. Sistema operativo: multiplataforma. C# combina los mejores elementos de múltiples lenguajes de amplia difusión como C++, Java, Visual Basic o 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++. C♯, como parte de la plataforma.NET, está normalizado por ECMA desde diciembre de 2001.  Última versión estable  4.0 (12 abril de 2010).
CONTEXTO GENERAL DE C# 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
En resumen, C# es un lenguaje de programación que toma las mejores características de lenguajes preexistentes como Visual Basic, Java o C++ y las combina en uno solo. Microsoft ha escrito la mayor parte de la BCL (Biblioteca de Clases Base) usando C#, por lo que su compilador es el más depurado y optimizado de los incluidos en el  .NET Framework SDK
CARACTERÍSTICAS DE UN C# ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
SENCILLEZ ,[object Object],[object Object],[object Object]
MODERNIDAD C# incorpora en el propio lenguaje elementos que son muy útiles para el desarrollo de aplicaciones y que Java o C++ tienen algo 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 C# es un lenguaje orientado a objetos. 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 .
Encapsulación:  contienen los 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. 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   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.
ORIENTACIÓN A COMPONENTES La propia sintaxis de C# incluye elementos propios del diseño de componentes que otros lenguajes tienen mediante construcciones más o menos complejas. Es decir, la sintaxis de C# permite definir cómodamente  propiedades  (similares a campos de acceso controlado),  eventos (asociación controlada de funciones de respuesta a notificaciones) o  atributos  (información sobre un tipo o sus miembros)
GESTIÓN AUTOMÁTICA DE MEMORIA Todo lenguaje de .NET tiene a su disposición el recolector de basura del CLR. Esto tiene el efecto en el lenguaje de que no es necesario incluir instrucciones de destrucción de objetos. Sin embargo, dado que la destrucción de los objetos a través del recolector de basura es indeterminista y sólo se realiza cuando éste se active –ya sea por falta de memoria, finalización de la aplicación o solicitud explícita en el fuente-. C# también proporciona un mecanismo de liberación de recursos determinista a través de la instrucción  using .
SEGURIDAD DE TIPOS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
INSTRUCCIONES SEGURAS Para evitar errores muy comunes, en C# se han impuesto una serie de restricciones en el uso de las instrucciones de control más comunes. Por ejemplo, la guarda de toda condición ha de ser una expresión condicional y no aritmética, con lo que se evitan errores por confusión del operador de igualdad ( == ) con el de asignación ( = ); y todo caso de un  switch  ha de terminar en un  break  o  goto  que indique cuál es la siguiente acción a realizar, lo que evita la ejecución accidental de casos y facilita su reordenación.
SISTEMA DE TIPOS UNIFICADO A diferencia de C++, en C# todos los tipos de datos que se definan siempre derivarán, aunque sea de manera implícita, de una clase base común llamada  System.Object , por lo que dispondrán de todos los miembros definidos en ésta clase (es decir, serán “objetos”)
EXTENSIBILIDAD DE TIPOS BÁSICOS C# permite definir, a través de  estructuras , tipos de datos para los que se apliquen las mismas optimizaciones que para los tipos de datos básicos. Es decir, que se puedan almacenar directamente en pila (luego su creación, destrucción y acceso serán más rápidos) y se asignen por valor y no por referencia. 
EXTENSIBILIDAD DE OPERADORES Las redefiniciones de operadores se hacen de manera inteligente, de modo que a partir de una única definición de los operadores  ++  y  --  el compilador puede deducir automáticamente como ejecutarlos de manera prefijas y postfija; y definiendo operadores simples (como  + ), el compilador deduce cómo aplicar su  versión de asignación compuesta (+=) Además, para asegurar la consistencia, el compilador vigila que los operadores con opuesto siempre se redefinan por parejas
EXTENSIBILIDAD DE MODIFICADORES C# ofrece, a través del concepto de  atributos , la posibilidad de añadir a los metadatos del módulo resultante de la compilación de cualquier fuente información adicional a la generada por el  compilador  que luego podrá ser consultada en tiempo ejecución a través de la librería de reflexión de .NET . Esto, que más bien es una característica propia de la plataforma .NET y no de C#, puede usarse como un mecanismo para definir nuevos modificadores.
VERSIONABLE C# incluye una  política de versionado  que permite crear nuevas versiones de tipos sin temor a que la introducción de nuevos miembros provoquen errores difíciles de detectar en tipos hijos previamente desarrollados y ya extendidos con miembros de igual nombre a los recién introducidos.
EFICIENTE En C# todo código incluye numerosas restricciones para asegurar su seguridad y no permite el uso de punteros. Sin embargo, y a diferencia de Java, en C# es posible saltarse dichas restricciones manipulando  objetos a través de punteros. Para ello basta marcar regiones de código como inseguras (modificador  unsafe ) y podrán usarse en ellas punteros de forma similar a cómo se hace en C++, lo que puede resultar vital para situaciones donde se necesite una eficiencia y velocidad procesamiento muy grandes.
COMPATIBLE Para facilitar la migración de programadores, C# no sólo mantiene una sintaxis muy similar a C, C++  o Java que permite incluir directamente en código escrito en C# fragmentos de código escrito en estos lenguajes,  sino que el CLR también ofrece,  a través de los llamados  PlatformInvocationServices  ( PInvoke ) También es posible acceder desde código escrito en C# a objetos COM. Para facilitar esto, el  .NET Framework SDK  incluye una herramientas llamadas  tlbimp  y regasm  mediante las que es posible generar automáticamente clases proxy que permitan, respectivamente, usar objetos COM desde .NET como si de objetos .NET se tratase y registrar objetos .NET para su uso desde COM.   Finalmente, también se da la posibilidad de usar controles ActiveX desde código .NET y viceversa. Para lo primero se utiliza la utilidad  aximp , mientras que para lo segundo se usa la ya mencionada  regasm .
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. 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.  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
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  Alerta (timbre)  Retroceso  Avance de página  Nueva línea  Retorno de carro  Tabulador horizontal  Tabulador vertical  Nulo apos; Comilla sencilla amp;quot; Comilla doble
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
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
Operadores Operador Significado Tipo >  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
VERSIONES ESTABLES DE C#
LENGUAJES DE PROGRAMACIÓN
BIBLIOGRAFÍA Y CIBERGRAFÍA ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Programacion Orientada a Eventos
Programacion Orientada a EventosProgramacion Orientada a Eventos
Programacion Orientada a Eventos
Laura
 
Entornos de desarrollo para móviles
Entornos de desarrollo para móvilesEntornos de desarrollo para móviles
Entornos de desarrollo para móviles
angelo4037
 

Was ist angesagt? (20)

Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION
 
Analisis Semantico
Analisis Semantico Analisis Semantico
Analisis Semantico
 
Estructura switch case
Estructura switch caseEstructura switch case
Estructura switch case
 
Codificación. Código Fuente, Objeto y Ejecutable.
Codificación. Código Fuente, Objeto y Ejecutable.Codificación. Código Fuente, Objeto y Ejecutable.
Codificación. Código Fuente, Objeto y Ejecutable.
 
Lenguaje de programacion c#
Lenguaje de programacion c#Lenguaje de programacion c#
Lenguaje de programacion c#
 
Bibliotecas de C
Bibliotecas de CBibliotecas de C
Bibliotecas de C
 
Introduccion a Visual C Sharp
Introduccion a Visual C SharpIntroduccion a Visual C Sharp
Introduccion a Visual C Sharp
 
Que es CSS? Presentacion Basica para CSS
Que es CSS? Presentacion Basica para CSSQue es CSS? Presentacion Basica para CSS
Que es CSS? Presentacion Basica para CSS
 
Analizador Léxico en C++
Analizador Léxico en C++Analizador Léxico en C++
Analizador Léxico en C++
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Paradigmas programacion
Paradigmas programacionParadigmas programacion
Paradigmas programacion
 
Programacion Orientada a Eventos
Programacion Orientada a EventosProgramacion Orientada a Eventos
Programacion Orientada a Eventos
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Entornos de desarrollo para móviles
Entornos de desarrollo para móvilesEntornos de desarrollo para móviles
Entornos de desarrollo para móviles
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos
 
Polimorfismo y herencia
Polimorfismo y herenciaPolimorfismo y herencia
Polimorfismo y herencia
 
Palabras Reservadas en C++
Palabras Reservadas en C++Palabras Reservadas en C++
Palabras Reservadas en C++
 

Andere mochten auch (6)

Lenguaje de programacion C++ 2
Lenguaje de programacion C++ 2Lenguaje de programacion C++ 2
Lenguaje de programacion C++ 2
 
Lenguaje de-programacion-c++
Lenguaje de-programacion-c++Lenguaje de-programacion-c++
Lenguaje de-programacion-c++
 
Lenguaje de programacion c++ basico 2da parte instalación del compilador
Lenguaje de programacion c++ basico 2da parte instalación del compiladorLenguaje de programacion c++ basico 2da parte instalación del compilador
Lenguaje de programacion c++ basico 2da parte instalación del compilador
 
Lenguaje de Programación PHP
Lenguaje de Programación PHPLenguaje de Programación PHP
Lenguaje de Programación PHP
 
Lenguajes de Programación
Lenguajes de ProgramaciónLenguajes de Programación
Lenguajes de Programación
 
Diagramas de flujo, especificaciones y diseño de procesos
Diagramas de flujo, especificaciones y diseño de procesosDiagramas de flujo, especificaciones y diseño de procesos
Diagramas de flujo, especificaciones y diseño de procesos
 

Ähnlich wie Lenguaje de programacion c#

Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#
José García
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
josegonzalo130
 
Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharp
uccvirtual
 
C# documento de texto junto con mapa conceptual
C# documento de texto junto con mapa conceptualC# documento de texto junto con mapa conceptual
C# documento de texto junto con mapa conceptual
Fernando Jose
 
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Fidel_Angel
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
monty19
 

Ähnlich wie Lenguaje de programacion c# (20)

C++
C++C++
C++
 
Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#
 
Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)Reporte de visual c#(jose gonzalo estrada lopez)
Reporte de visual c#(jose gonzalo estrada lopez)
 
Características de c sharp
Características de c sharpCaracterísticas de c sharp
Características de c sharp
 
Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#
 
C# documento de texto junto con mapa conceptual
C# documento de texto junto con mapa conceptualC# documento de texto junto con mapa conceptual
C# documento de texto junto con mapa conceptual
 
C#
C#C#
C#
 
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
Trabajo programación (caracteristicas, versiones y desarrolladores de c#)
 
C sharp
C sharpC sharp
C sharp
 
Que es visual c# eduardo sorto
Que es visual c# eduardo sortoQue es visual c# eduardo sorto
Que es visual c# eduardo sorto
 
Csharp
CsharpCsharp
Csharp
 
Visual basic .NET
Visual basic .NETVisual basic .NET
Visual basic .NET
 
Resumen lenguajes c#
Resumen lenguajes c#Resumen lenguajes c#
Resumen lenguajes c#
 
Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017
 
Introducción al c#
Introducción al c#Introducción al c#
Introducción al c#
 
Unmsm02 2008
Unmsm02 2008Unmsm02 2008
Unmsm02 2008
 
Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky Bonilla
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
Programacion en C#
Programacion en C#Programacion en C#
Programacion en C#
 

Kürzlich hochgeladen

editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
ssusere34b451
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
EdwinGarca59
 

Kürzlich hochgeladen (20)

innovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 bloginnovacion banking & warehouse 2024 blog
innovacion banking & warehouse 2024 blog
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
avancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayudaavancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayuda
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
Electricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docxElectricidad Libro compendio de temas estudiados.docx
Electricidad Libro compendio de temas estudiados.docx
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 

Lenguaje de programacion c#

  • 1. LENGUAJE DE PROGRAMACIÓN C# NATALIA ECHEVERRY JHON FREDY PÉREZ RESTREPO TECNOLOGÍA EN ARCHIVÍSTICA UNIVERSIDAD DE ANTIOQUIA 2011
  • 2. HISTORIA DE C# C#  (leído en inglés “C Sharp” y en español “C Almohadilla”) es el lenguaje orientado a objetos 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. Apareció en: 2001. Sistema operativo: multiplataforma. C# combina los mejores elementos de múltiples lenguajes de amplia difusión como C++, Java, Visual Basic o Delphi.
  • 3. 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++. C♯, como parte de la plataforma.NET, está normalizado por ECMA desde diciembre de 2001. Última versión estable 4.0 (12 abril de 2010).
  • 4. CONTEXTO GENERAL DE C# 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
  • 5. En resumen, C# es un lenguaje de programación que toma las mejores características de lenguajes preexistentes como Visual Basic, Java o C++ y las combina en uno solo. Microsoft ha escrito la mayor parte de la BCL (Biblioteca de Clases Base) usando C#, por lo que su compilador es el más depurado y optimizado de los incluidos en el  .NET Framework SDK
  • 6.
  • 7.
  • 8. MODERNIDAD C# incorpora en el propio lenguaje elementos que son muy útiles para el desarrollo de aplicaciones y que Java o C++ tienen algo 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.
  • 9. ORIENTACIÓN A OBJETOS C# es un lenguaje orientado a objetos. 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 .
  • 10. Encapsulación: contienen los 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. 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   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.
  • 11. ORIENTACIÓN A COMPONENTES La propia sintaxis de C# incluye elementos propios del diseño de componentes que otros lenguajes tienen mediante construcciones más o menos complejas. Es decir, la sintaxis de C# permite definir cómodamente  propiedades  (similares a campos de acceso controlado),  eventos (asociación controlada de funciones de respuesta a notificaciones) o  atributos  (información sobre un tipo o sus miembros)
  • 12. GESTIÓN AUTOMÁTICA DE MEMORIA Todo lenguaje de .NET tiene a su disposición el recolector de basura del CLR. Esto tiene el efecto en el lenguaje de que no es necesario incluir instrucciones de destrucción de objetos. Sin embargo, dado que la destrucción de los objetos a través del recolector de basura es indeterminista y sólo se realiza cuando éste se active –ya sea por falta de memoria, finalización de la aplicación o solicitud explícita en el fuente-. C# también proporciona un mecanismo de liberación de recursos determinista a través de la instrucción  using .
  • 13.
  • 14. INSTRUCCIONES SEGURAS Para evitar errores muy comunes, en C# se han impuesto una serie de restricciones en el uso de las instrucciones de control más comunes. Por ejemplo, la guarda de toda condición ha de ser una expresión condicional y no aritmética, con lo que se evitan errores por confusión del operador de igualdad ( == ) con el de asignación ( = ); y todo caso de un  switch  ha de terminar en un  break  o  goto  que indique cuál es la siguiente acción a realizar, lo que evita la ejecución accidental de casos y facilita su reordenación.
  • 15. SISTEMA DE TIPOS UNIFICADO A diferencia de C++, en C# todos los tipos de datos que se definan siempre derivarán, aunque sea de manera implícita, de una clase base común llamada  System.Object , por lo que dispondrán de todos los miembros definidos en ésta clase (es decir, serán “objetos”)
  • 16. EXTENSIBILIDAD DE TIPOS BÁSICOS C# permite definir, a través de  estructuras , tipos de datos para los que se apliquen las mismas optimizaciones que para los tipos de datos básicos. Es decir, que se puedan almacenar directamente en pila (luego su creación, destrucción y acceso serán más rápidos) y se asignen por valor y no por referencia. 
  • 17. EXTENSIBILIDAD DE OPERADORES Las redefiniciones de operadores se hacen de manera inteligente, de modo que a partir de una única definición de los operadores  ++  y  --  el compilador puede deducir automáticamente como ejecutarlos de manera prefijas y postfija; y definiendo operadores simples (como  + ), el compilador deduce cómo aplicar su  versión de asignación compuesta (+=) Además, para asegurar la consistencia, el compilador vigila que los operadores con opuesto siempre se redefinan por parejas
  • 18. EXTENSIBILIDAD DE MODIFICADORES C# ofrece, a través del concepto de  atributos , la posibilidad de añadir a los metadatos del módulo resultante de la compilación de cualquier fuente información adicional a la generada por el  compilador  que luego podrá ser consultada en tiempo ejecución a través de la librería de reflexión de .NET . Esto, que más bien es una característica propia de la plataforma .NET y no de C#, puede usarse como un mecanismo para definir nuevos modificadores.
  • 19. VERSIONABLE C# incluye una  política de versionado  que permite crear nuevas versiones de tipos sin temor a que la introducción de nuevos miembros provoquen errores difíciles de detectar en tipos hijos previamente desarrollados y ya extendidos con miembros de igual nombre a los recién introducidos.
  • 20. EFICIENTE En C# todo código incluye numerosas restricciones para asegurar su seguridad y no permite el uso de punteros. Sin embargo, y a diferencia de Java, en C# es posible saltarse dichas restricciones manipulando  objetos a través de punteros. Para ello basta marcar regiones de código como inseguras (modificador  unsafe ) y podrán usarse en ellas punteros de forma similar a cómo se hace en C++, lo que puede resultar vital para situaciones donde se necesite una eficiencia y velocidad procesamiento muy grandes.
  • 21. COMPATIBLE Para facilitar la migración de programadores, C# no sólo mantiene una sintaxis muy similar a C, C++  o Java que permite incluir directamente en código escrito en C# fragmentos de código escrito en estos lenguajes, sino que el CLR también ofrece, a través de los llamados  PlatformInvocationServices  ( PInvoke ) También es posible acceder desde código escrito en C# a objetos COM. Para facilitar esto, el  .NET Framework SDK  incluye una herramientas llamadas  tlbimp  y regasm  mediante las que es posible generar automáticamente clases proxy que permitan, respectivamente, usar objetos COM desde .NET como si de objetos .NET se tratase y registrar objetos .NET para su uso desde COM.   Finalmente, también se da la posibilidad de usar controles ActiveX desde código .NET y viceversa. Para lo primero se utiliza la utilidad  aximp , mientras que para lo segundo se usa la ya mencionada  regasm .
  • 22. 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. 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
  • 23. 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. 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
  • 24. 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 Alerta (timbre) Retroceso Avance de página Nueva línea Retorno de carro Tabulador horizontal Tabulador vertical Nulo apos; Comilla sencilla amp;quot; Comilla doble
  • 25. 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
  • 26. 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
  • 27. Operadores Operador Significado Tipo >  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
  • 30.