Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Lenguaje de Programación C#
Javier Segovia
2
Origen y necesidad de un nuevo lenguaje
Creadores: Anders Hejlsberg y Scott Wiltamuth Necesidad: Específico para .NET Orientado a componentes Notas: Sintaxis de C/C++/Java con facilidad de VB BCL programada en C# -> depurado y optimizado Javier Segovia
3
Características de C# Sencillez Modernidad Orientado a objetos
Autocontenido (sin IDLs, ficheros de cabecera,...) Sin elementos inneccesarios (::, macros, etc.) Tipo básicos de tamaño fijo Modernidad Tipos básicos para decimales, cadenas y lógicos Soporte extensible para colecciones Orientado a objetos Sin funciones ni variables globales Herencia simple Encapsulación con public,protected,private e internal. Redefinibildad explícita (menos errores y más eficiente) Javier Segovia
4
Características de C# Orientado a componentes Seguridad de tipos
Soporte para propiedades, atributos y eventos Seguridad de tipos Control de conversiones Control de inicialización de variables Control de índices en accesos a tablas Control de desbordamientos Control de tipos en “punteros a función” Gestión automática de memoria Recolector de basura Javier Segovia
5
Características de C# Instrucciones seguras
Sólo condiciones lógicas Sin traspasos implícitos entre casos de switch Sistema de tipos unificados Clase padre común System.Object Boxing y unboxing para homogeneidad y eficiencia Tipos básicos de tamaño fijo Extensibilidad de operadores Redefiniciones inteligentes y consistentes Indizadores Extensibilidad de tipos básicos Posibilidad de paso por referencia para eficiencia Javier Segovia
6
Hola Mundo using System;
class HolaMundo Todo el código escrito en C# se ha de escribir dentro de una definición de clase, y lo que en la línea {su definición estará comprendida en estala llave : y su correspondiente llave de cierre public static void Main() se define un método de nombre {comienzo método Console.WriteLine(“¡Hola Mundo!”); }fin método } solicita la ejecución del método WriteLine() de la clase Console definida en el espacio de nombres System pasándole como parámetro la cadena de texto con el contenido ¡Hola Mundo! Javier Segovia
7
1.SINTAXIS BASICA Case-sensitive
El lenguaje C# distingue entre mayúsculas y minúsculas, es decir, es case.sensitive En C# existe una regla a la hora de utilizar las mayúsculas y minúsculas, los métodos y las clases tienen la primera letra de cada una de sus partes en mayúscula. Los tipos simples del lenguaje C# se escriben con todas sus letras en minúscula. Javier Segovia
8
1.SINTAXIS BASICA Delimitador de setencias Comentarios
Una sentencia se delimita por un punto y coma (;). Comentarios De una única línea: // antes del texto del comentario, sin ningún indicador de fin de comentario. varias líneas, en este caso el comentario irá entre los delimitadores /* */. Javier Segovia
9
1.SINTAXIS BASICA Bloques:
C# utiliza las llaves ({} la primera de inicio y la otra de fin de bloque) para determinar los bloques dentro de un programa. Todo lo que se encuentra entre estas dos llaves se considera un bloque. Los bloques pueden y suelen anidarse Javier Segovia
10
2.DEFINICION VARIABLES Sintaxis básica: <tipo> <nombre> = <valorInicial>; Ejemplos: Persona p; int a = 5; Persona p = new Persona(“Juan”, 22); int a = 5, b, c =2; Persona p, q; Notas: Parámetros no compactables, sin <valorInicial>, separados por , y sin ; Valor defecto campos: null o cero de su tipo Valor defecto variables locales: ninguno Javier Segovia
11
2.DEFINICION VARIABLES Declaración de variables
Para declarar una variable, primero indicamos el tipo de la variable y a continuación aparece el nombre de la variable. Si la variable posee algún modificador de acceso o de otro tipo, este modificador aparecerá antes del tipo de la variable. Javier Segovia
12
Tipos básicos Manipulación especial: System.Int32 x = 123; x = x + 5;
System.Char c = ‘A’; c++; Alias: int x = 123; x = x + 5; char c = ‘A’; c++; Notas: Uso común. Muy optimizados Tamaño prefijado Javier Segovia
13
Tipos básicos sbyte (System.SByte) Enteros 8 bits con signo
Rango: [-128, 127] Valores: Literales enteros (por defecto 0) byte (System.Byte) Enteros 8 bits sin signo Rango: [0, 255] Javier Segovia
14
Tipos básicos (II) short (System.Int16) Enteros 16 bits con signo
Rango: [ , ] Valores: Literales enteros (por defecto 0) ushort (System.UInt16) Enteros 16 bits sin signo Rango: [0, ] Javier Segovia
15
Tipos básicos (III) int (System.Int32) Enteros 32 bits con signo
Rango: [ , ] Valores: Literales enteros (por defecto 0) uint (System.UInt32) Enteros 32 bits sin signo Rango: [0, ] Javier Segovia
16
Tipos básicos (IV) long (System.Int64) Enteros 64 bits con signo
Rango: [ , ] Valores: Literales enteros (por defecto 0L) ulong (System.Int64) Enteros 64 bits sin signo Rango: [0, ] Valores: Literales enteros (por defecto 0UL) Javier Segovia
17
Tipos básicos (V) float (System.Float)
Reales 32 bits con 7 dígitos de precisión Rango: [±1.5×10-45, ±3.4×1038] Valores: Literales reales (por defecto 0.0F) double (System.Double) Reales 64 bits con dígitos de precisión Rango: [±5,0×10-324, ±1,7×10308] Valores: Literales reales (por defecto 0.0D) Javier Segovia
18
Tipos básicos (VI) decimal (System.Decimal)
Reales 128 bits con dígitos de precisión Rango: [1.0×10-28, 7.9×1028] Valores: Literales reales (por defecto 0.0M) char (System.Char) Caracteres Unicode 16 bits Rango: [‘\u0000’, ‘\uFFFF’ ] Valores: Literales carácter (por defecto ‘\0’) Javier Segovia
19
Tipos básicos (VII) string (System.String) Cadenas caracteres Unicode
Rango: Cualquier longitud Valores: Literales de cadena (por defecto “”) bool (System.Boolean) Valores lógicos Rango: false, true Valores: Literales lógicos (por defecto false) Javier Segovia
20
Tipos básicos (VII) object (System.Object) Clase base
Rango: Cualquier objeto Valores: objetos (por defecto null) Javier Segovia
21
1.SINTAXIS BASICA Ambito:
El ámbito se refiere a la longevidad de las variables. Una variable existe sólo dentro del bloque donde ha sido declarada, eliminándola el compilador una vez que se sale de dicho bloque. Cuando una variable sale de ámbito, es eliminada y la memoria que ésta ocupaba es liberada por el recolector de basura (garbage collector). Javier Segovia
22
Categoría del Operador
Operadores Categoría del Operador Operadores Primarios (x), x.y, f(x), a[x], x++, x--, new, typeof, sizeof, checked, unchecked Unarios +, -, !, ~, ++x, --x, (T)x Multiplicativos *, /, % Aditivos +, - De desplazamiento <<, >> Relacionales <, >, <=, >=, is Igualdad = =
23
1.SINTAXIS BASICA Operadores AND Lógico & XOR Lógico ^ OR Lógico |
AND Condicional && OR Condicional || Condicional ?: Asignación =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=
24
1.SINTAXIS BASICA Inicialización
Para inicializar objetos se utiliza el operador de asignación (=) Javier Segovia
25
Tablas Concepto: Secuencia ordenada de objetos Características:
Índice entero e iniciado en 0 Acceso controlado OutOfBoundsException Tamaño variable (>=0) pero fijo Unidimensionales o multidimensionales Tablas dentadas Multiples tipos de objetos en tablas object Derivan de System.Array (sellada) Javier Segovia
26
Tablas (unidimensionales)
Concepto: Único índice Ejemplos definición: int[] t = new int[5] {1,2,3,4,5}; int[] t = new int[] {1,2,3,4,5}; int[] t = {1,2,3,4,5}; int[] t = new int[5]; int[] t; Ejemplos manipulación: int[] t; t = new int[100]; t[10] = 19: t[9] = t[10] + t[8]; Javier Segovia
27
Tablas (multidimensionales)
Concepto: Objetos distribuidos en varias dimensiones Ejemplos definición: int[,] t = new int[2,3] {{1,2,3}, {4.5.6}}; int[,] t = new int[,] {{1,2,3}, {4.5.6}}; int[,] t = {{1,2,3},{4,5,6}}; int[,] t = new int[2,3] int[,] t; Ejemplos manipulación: int[,] t = new int[3,3]; t[1,2]++; Javier Segovia
28
Tablas (dentadas) Concepto: Tablas de tablas Ejemplos definición:
int[][] t = new int[2][] {new int[] {1,2}, new int[] {3,4,5}}; int[][] t = new int[][] {new int[] {1,2}, new int[] {3,4,5}}; int[][] t = {new int[] {1,2}, new int[] {3,4,5}}; int[][] t = {{1,2}, {3,4,5}} // ERROR COMÚN int[][] t = {new int[2], new int[3]}; int[][] t = new int[2][] ; int[][] t = new int[2][3] // ERROR COMÚN int[][] t; Javier Segovia
29
La clase System.Array Base: System.Object Algunos miembros:
int Length // Sólo lectura int Rank; // Sólo lectura int GetLength (int dimensión) void CopyTo(Array destino, int posición) // destino ha de ser unidimensional Otros miembros: Ordenación, busquedas... Notas: Sellada Javier Segovia
30
2. INSTRUCCIONES Instrucción: Acción a realizar en el código de un método Bloque de instrucciones: Lista de instrucciones a ejecutar unas tras otra definida con la sintaxis: { <listaInstrucciones> } Notas: Variables declaradas en bloque sólo visibles en él En adelante, <instrucciones>=bloque instrucciones Javier Segovia
31
2. INSTRUCCIONES Instrucción nula: ;
Asignación: <destino> = <fuente>; Llamada: <objetoOTipo>.<método>(<valores>); Definición variable: <tipo> <nombre> = <valorInicial>; Javier Segovia
32
Instrucciones condicionales (if)
Sintaxis: if (<condición>) <instruccionesIf> else <instruccionesElse> Notas: <condición> ha de devolver bool Similar a operador ternario ? Javier Segovia
33
Instrucciones condicionales (switch)
Sintaxis: switch (<expresión>) { case <caso1>: <instrucciones1> <siguiente1> case <caso2>: <instrucciones2> <siguiente2> default: <instruccionesDefecto> <siguienteDefecto> } Javier Segovia
34
Instrucciones condicionales (switch II)
Ha de incluirse al menos un caso o default default en cualquier sitio, aunque evaluado como última alternativa <siguientei>puede ser: goto <casoi>; Seguir por el bloque case <casoi> goto default; Seguir por el bloque default break; Finalizar la ejecución del switch Fácil reordenación Casos constantes y de tipos básicos enteros, char, string o enumeraciones No vale repetir valores en casos Javier Segovia
35
Instrucciones iterativas (while)
Sintaxis: while (<condición>) <instrucciones> Notas: <instrucciones> puede ser una sola instrucción <condición> ha de devolver cierto Puede abortarse bucle con break; en <instrucciones> Puede pasarse a siguiente iteración con continue; Javier Segovia
36
Instrucciones iterativas (do while)
Sintaxis: do <instrucciones> while (<condición>) Notas: Diferencia con while: se evalúa la condición DESPUES de ejecutar las instrucciones Igual por lo demás a while Javier Segovia
37
Instrucciones iterativas (for)
Sintaxis: for (<inicialización>, <condición>, <incremento>) <instrucciones> Notas: Separar con , en <inicialización> e <incremento> <instrucciones> puede ser una única instrucción <condición> ha de ser de tipo bool Admite también break; y continue; Otros usos de <inicialización> e <incremento> Javier Segovia
38
Instrucciones iterativas (foreach)
Sintaxis: foreach(<tipo> <nombre> in <colección>) <instrucciones> Notas: <colección> == null NullReferenceException <tipo> compatible con colección <nombre> de sólo lectura Recorre tablas multidimensionales en orden Recorre objetos IEnumerable y patrón colección Javier Segovia
39
Instrucciones iterativas (foreach con IEnumerable)
interface IEnumerable { IEnumerator GetEnumerator(); } Notas: Reset() coloca antes de principio de colección MoveNext() indica si quedan más elementos interface IEnumerator { void Reset(); bool MoveNext(); object Current {get;} } Javier Segovia
40
Instrucciones iterativas (foreach con patrón colección)
Añadir GetEnumerator() que devuelva objeto con: Current: Devuelve elemento actual bool MoveNext() Devuelve bool que indica si quedan elementos Notas: Se usa patrón colección en vez de IEnumerable si se implementan ambos Código: Colecciones.cs Javier Segovia
41
Intrucciones de excepciones
Excepción: Objeto que informa de mensaje de error. Derivan de System.Exception y por convenio acaban en Exception Ejemplos: Nombre (+ Exception) Causa DivideByZero División por 0 IndexOutOfRange Índice fuera de rango InvalidCastException Conversión inválida OverflowException Desbordamiento OutOfMemory Memoria agotada StackOverflow Pila desbordada Argument Argumento mal ArgumentNull Argumento nulo ArgumentOutOfRange Argumento fuera de rango Javier Segovia
42
Instrucciones de excepción (I)
Miembros de System.Exception: string Message (virtual get;) exception InnerException {virtual get;} exception GetBaseException() string StackTrace {virtual get;} MethodBase Target {virtual get;} string HelpLink {virtual set;} Exception SetLink(string dirección) Javier Segovia
43
Intrucciones de excepción (crear nuevas excepciones)
Derivar de System.Exception Darle nombre acabado en Exception Implementar constructores de System.Exception: Exception() Exception(string msg) Exception(string msg, Exception causante) Javier Segovia
44
Instrucciones de excepción (intrucción throw)
Significado: Lanza una excepción Sintaxis: throw <objetoExcepción>; Ejemplo: throw new PruebaException(); Notas: Lanza System.NullReferenceException si es null el <objetoExcepción> especificado Relanza dentro de bloques catch <objetoExcepción> opcional en bloques catch Javier Segovia
45
Intrucciones de excepción (instrucción try)
Significado: Gestiona tratamiento excepciones Sintaxis: try <instruccionesTry> catch (<tipoExcepción1> <obj1>) <instruccionesCatch1> ... finally <instruccionesFinally> Código: Excepciones.cs Javier Segovia
46
Instrucciones de excepción (instrucción try II)
Notas: Al menos un catch o finally catch evaluados en orden No vale catch más prioritario que siguientes Si no se trata excepción en hilo se aborta hilo Si se aborta Main Fin aplicación y mensaje error Se continua tras el try que trate la excepción Finally siempre se ejecuta, tanto si se sale del try para buscar en padre como si se sale con un goto Opcionalidad elementos catch Relanzar con throw (pasando por finally) Javier Segovia
47
Instrucciones de salto
break: Finaliza bucle continue: Finaliza iteración de bucle return: Finaliza método (return; o return <valor>;) Throw: Lanza una excepción Notas: Saltos pasan por finally break, continue y return no usables para salir de finally (throw sí) Javier Segovia
48
Instrucciones de salto (goto)
Significado: Se continua ejecutando por la instrucción etiquetada con la etiqueta indicada Sintaxis goto: goto <etiqueta> Sintaxis etiquetas: <nombre> : Notas: ¡Instrucción maldita! No puede saltarse dentro de bloques internos Usable con etiquetas de switch pero sólo salto a etiquetas especiales del mismo switch Código:goto.cs Javier Segovia
49
Otras instrucciones (checked, unchecked)
Siginificado: Idem aoperadores checked y unchecked pero aplicable a bloques de instrucciones Sintaxis: checked <instrucciones> unchecked <instrucciones> Notas: Por defecto constantes checked y variables unchecked Por defecto modificable a través opción /checked de csc y de View Propety Pages Configuration Settings Build Check for overflow underflow en VS.NET Código: checked.cs Javier Segovia
50
Otras instrucciones (lock)
Significado: Asegura exclusión mutua Sintaxis: lock (<cerrojo>) <instrucciones> Equivale a: System.Threading.Monitor.Enter(<cerrojo>); try <instrucciones> finally {System.Threading.Monitor.Exit(<cerrojo>); Ejemplo: lock (typeof(Clase)) { a+=2; } Notas: lock más eficiente y compacto que equivalente <objeto> ha de ser de tipo referencia Javier Segovia
51
Otras instrucciones (using)
Significado: Asegura limpieza de recursos Sintaxis: using (<declaraciones>) <instrucciones> Ejemplo: using (R r1 = new R()) {r1.F();} Equivale a: { R r1 = new R(); try {r1.F();} finally { if (r1!=null) (IDisposable) r1).Dispose(); } Javier Segovia
52
Otras instrucciones (using)
Notas: Sólo un tipo en <declaraciones> Ha de implementar System.IDisposable: interface IDisposable { void Dispose();} Se llama a Dispose SIEMPRE, incluso al salir con goto o excepción <declaraciones> de solo lectura <declaraciones> solo visibles en <instrucciones> Varias <declaraciones> = anidado using Javier Segovia
53
¡Gracias! Javier Segovia
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.