Introducción a C# Ing. Faustino Vázquez Camporro.

1 Introducción a C# Ing. Faustino Vázquez Camporro ...
Author: María Mercedes Márquez Vidal
0 downloads 2 Views

1 Introducción a C# Ing. Faustino Vázquez Camporro

2 Contenido ● Elementos del Lenguaje ● Estructura de un Programa ● Clases de uso común ● Sentencias de Control ● Arreglos ● Ficheros

3 COMENTARIOS ● Comentario tradicional /* La ejecución del programa comienza con el método main() la llamada al constructor de la calse no tiene lugar a menos que se cree un objeto del tipo 'CelementosJava' */ ● Comentario de una sola línea // Agregar aquí el código de iniciación

4 Elementos del Lenguaje ● Caracteres permitidos en C# ● Letras, dígitos y otros – Letras mayúsculas del alfabeto (A – Z) – Letras minúsculas del alfabeto (a – z) – Dígitos (0.. 9) ● Espacios en blanco ● Caracteres especiales y signos de puntuación,. ; : ? ' “ ( ) [ ] { }

5 IDENTIFICADORES ● Un identificador consta de uno o más caracteres ● El primer caracter debe ser una letra ó el carácter de subrayado o el carácter de pesos. ● A partir del segundo carácter puede ser letras, dígitos, carácter de subrayado ó carácter de pesos. ● Las letras mayúsculas o minúsculas son caracteres diferentes para C#. ● Ejemplos: ● Suma ● $ordenar ● Calculo_Numeros_Primos

6 PALABRAS CLAVE Abstractasbasebool breakbytecase CatchCharCheckedclassconst continuedecimal Defaultdelegatedodouble elseenum Eventexplicitexternfalsefinally fixedfloat Forforeachgotoif implicitinint Interfaceinternallockis longnamespacenew Nullobjectoperatorout overrideparamsprivate Protectedpublicreadonlyref returnsbytesealed Shortsizeofstackallocstaticstring structswitch Thisthrowtruetry typeofuintulong Uncheckedunsafeushortusingvirtual voidwhile

7 LITERALES ● Literales enteros – 4326constante entera int – 4326Lconstante entera long – 0x100número decimal int en hexadecimal (precedido por 0x) ● Literales reales – -17.24una constante real tiene siempre tipo double – 0.008e3 – 17.24Fconstante real de tipo float – 17.24Dconstante real de tipo double

9 LITERALES ● Literales lógicos ● Los únicos literales lógicos válidos son true y false, que respectivamente representan los valores lógicos cierto y falso. ● Literales nulos ● El literal nulo es un valor especial que se representa en C# con la palabra reservada null y se usa como valor de las variables de objeto no inicializadas para así indicar que contienen referencias nulas.

10 Secuencias de Escape

11 OPERADORES ● Operadores aritméticos

12 OPERADORES ● Operadores de relación

13 OPERADORES ● Operadores lógicos

14 OPERADORES ● Operadores de asignación

15 OPERADORES ● Operaciones con cadenas ● Para realizar operaciones de concatenación de cadenas se puede usar el mismo operador que para realizar sumas, ya que en C# se ha redefinido su significado para que cuando se aplique entre operandos que sean cadenas o que sean una cadena y un carácter lo que haga sea concatenarlos. – Por ejemplo: ● ″Hola″+″ mundo″ devuelve ″Hola mundo″ ● ″Hola mund″ + ′o′ devuelve “Hola mundo”

16 OPERADORES ● Operador condicional ● Es el único operador incluido en C# que toma 3 operandos, y se usa así: ● ? : ● Se evalúa Si es cierta se devuelve el resultado de evaluar, y si es falsa se devuelve el resultado de evaluar. ● Ejemplo: – b = (a>0)? a : 0; // Suponemos a y b de tipos enteros

17 OPERADORES ● Operaciones de obtención de información sobre tipos ● El operador typeof devuelve un objeto de tipo System.Type con información sobre el tipo de nombre que podremos consultar a través de los miembros ofrecidos por dicho objeto. Esta información incluye detalles tales como cuáles son sus miembros, cuál es su tipo padre o a qué espacio de nombres pertenece. – typeof( ) donde: es un tipo de dato ó nombre de una clase

18 OPERADORES ● Si lo que queremos es determinar si una determinada expresión es de un tipo u otro, entonces el operador a usar es is, cuya sintaxis es la siguiente: – is ● Se evalúa. Si el resultado de ésta es del tipo cuyo nombre se indica en se devuelve true; y si no, se devuelve false.

19 OPERADORES ● Si lo que queremos es obtener información sobre un tipo de dato es el operador sizeof; este operador permite obtener el número de bytes que ocuparán en memoria los objetos de un tipo, y se usa así: – sizeof( ) ● sizeof sólo puede usarse dentro de código inseguro, que por ahora basta considerar que son zonas de código donde es posible usar punteros.

20 OPERADORES ● Operaciones de creación de objetos ● El operador más típicamente usado para crear objetos es new, que se usa así: – new ( ) ● Este operador crea un objeto de pasándole a su método constructor los parámetros indicados en y devuelve una referencia al mismo. En función del tipo y número de estos parámetros se llamará a uno u otro de los constructores del objeto. Así, suponiendo que a1 y a2 sean variables de tipo Avión, ejemplos de uso del operador new son: – Avión a1 = new Avión(); //Se llama al constructor sin parámetros de Avión – Avión a2 = new Avión(“Caza”); //Se llama al constructor de Avión que // toma como parámetro una cadena

21 OPERADORES ● C# proporciona otro operador que también nos permite crear objetos. Éste es stackalloc, y se usa así: – stackalloc [ ] ● Este operador lo que hace es crear en pila una tabla de tantos elementos de tipo como indique y devolver la dirección de memoria en que ésta ha sido creada. Por ejemplo: ● stackalloc sólo puede usarse para inicializar punteros a objetos de tipos valor declarados como variables locales. Por ejemplo: – int * p = stackalloc[100]; //p apunta a una tabla de 100 enteros.

22 OPERADORES ● Operaciones de conversión ● Para convertir unos objetos en otros se utiliza el operador de conversión, que no consiste más que en preceder la expresión a convertir del nombre entre paréntesis del tipo al que se desea convertir el resultado de evaluarla. Por ejemplo, si l es una variable de tipo long y se desea almacenar su valor dentro de una variable de tipo int llamada i, habría que convertir previamente su valor a tipo int así: – i = (int) l; //Asignamos a i el resultado de convertir el valor de l a tipo int

23 OPERADORES ● Existe otro operador que permite realizar operaciones de conversión de forma muy similar al ya visto. Éste es el operador as, que se usa así: – as ● Lo que hace es devolver el resultado de convertir el resultado de evaluar al tipo indicado en. ● Por ejemplo, para almacenar en una variable p el resultado de convertir un objeto t a tipo Persona se haría: – p = t as Persona;

24 PRIORIDAD Y ORDEN DE EVALUACION

25 TIPOS DE DATOS TIPOS DE DATOS

26 SUFIJOS ● Ahora que sabemos cuáles son los tipos básicos, es el momento de comentar cuáles son los sufijos que admiten los literales numéricos para indicar al compilador cuál es el tipo que se ha de considerar que tiene

27 TIPOS DE DATOS DEFINIDOS POR EL USUARIO ● Enumerados ● Definición de un tipo enumerado – enum Color { Rojo, Verde, Azul } ● Usando un tipo enumerado – Color paleta = Color.Rojo; ● Imprimiendo una variable de tipo enumerado – Console.WriteLine(“{0}”,paleta);

28 TIPOS DE DATOS DEFINIDOS POR EL USUARIO ● Estructuras ● Definición de un tipo estructura Public structure Empleado{ string nombre; int edad; } ● Usando un tipo estructura Empleado obrero; obrero.nombre = “Joe”; obrero.edad = 23;

29 VARIABLES DE SOLO LECTURA ● Dado que hay ciertos casos en los que resulta interesante disponer de la capacidad de sólo lectura que tienen las constantes pero no es posible usarlas debido a las restricciones que hay impuestas sobre su uso, en C# también se da la posibilidad de definir variables que sólo puedan ser leídas. Para ello se usa la siguiente sintaxis: ● readonly = ; ● Estas variables superan la mayoría de las limitaciones de las constantes. Por ejemplo: ● No es obligatorio darles un valor al definirlas, sino que puede dárseles en el constructor. Ahora bien, una vez dado un valor a una variable readonly ya no es posible volverlo a modificar. Si no se le da ningún valor ni en su constructor ni en su definición tomará el valor por defecto correspondiente a su tipo de dato. ● No tienen porqué almacenar valores constantes, sino que el valor que almacenen puede calcularse durante la ejecución de la aplicación. ● No tienen porqué definirse como estáticas, aunque si se desea puede hacerse. ● Su valor se determina durante la ejecución de la aplicación, lo que permite la actualización de códigos cliente sin necesidad de recompilar.

30 VARIABLES ● Una variable puede verse simplemente como un almacén de objetos de un determinado tipo al que se le da un cierto nombre. Por tanto, para definir una variable sólo hay que decir cuál será el nombre que se le dará y cuál será el tipo de datos que podrá almacenar, lo que se hace con la siguiente sintaxis: ● ; ● Una variable puede ser definida dentro de una definición de clase, en cuyo caso se correspondería con el tipo de miembro que hasta ahora hemos denominado campo. ● También puede definirse como un variable local a un método, que es una variable definida dentro del código del método a la que sólo puede accederse desde dentro de dicho código. ● Otra posibilidad es definirla como parámetro de un método, que son variables que almacenan los valores de llamada al método y que, al igual que las variables locales, sólo puede ser accedidas desde código ubicado dentro del método

31 CONSTANTES ● Una constante es una variable cuyo valor puede determinar el compilador durante la compilación y puede aplicar optimizaciones derivadas de ello. Para que esto sea posible se ha de cumplir que el valor de una constante no pueda cambiar durante la ejecución, por lo que el compilador informará con un error de todo intento de modificar el valor inicial de una constante. Las constantes se definen como variables normales pero precediendo el nombre de su tipo del modificador const y dándoles siempre un valor inicial al declararlas. O sea, con esta sintaxis: ● const = ; ● Así, ejemplos de definición de constantes es el siguiente: ● const int a = 123; ● const int b = a + 125;

32 OPERACIONES DE I/O ● Operación de Impresión ● Para imprimir en la consola un texto y/o variables, dejando el cursor al final de la línea. – Console.Write(); ● Para imprimir en la consola un texto y/o variables, dejando el cursor en la siguiente linea. – Console.WriteLine(); ● Ejemplos: – Console.Write(“Hola mundo...”); – Console.Write(“Saldo ${0}”,saldo); – Console.WriteLine(“El producto {0} tiene de existencia {1} ”,prod,exist);

33 OPERACIONES DE I/O ● Formato al Texto ● Para imprimir una variable reservando un numero n de lugares y alineando el contenido de la variable a la izquierda. – Console.Write("Izquierda, 10 posiciones: {0,-10}",99); ● Para imprimir una variable reservando un numero n de lugares y alineando el contenido de la variable a la derecha. – Console.Write("Derecha, 10 posiciones: {0,10}", 99);

34 OPERACIONES DE I/O ● Formato numérico ● Para imprimir una variable utilizando el formato moneda – Console.WriteLine("Formato Moneda - Subtotal {0:C}",88.8); ● Para imprimir una variable utilizando el formato moneda con 4 decimales – Console.WriteLine("Formato Moneda - Iva {1:C4}",888.9); ● Para imprimir una variable utilizando el formato moneda con cantidades negativas y 3 decimales – Console.WriteLine("Formato Moneda - Total {2:C3}",-1024.35);

35 OPERACIONES DE I/O ● Para imprimir numero enteros reservando n lugares – Console.WriteLine("Formato Numeros Enteros – {0:D5}",45); ● Para imprimir numero en formato Exponencial – Console.WriteLine("Formato Exponencial - {0:E}",888.3); ● Para imprimir un numero flotante redondeando a n decimales – Console.WriteLine("Formato Numero Redondeado - {0:F3}",888.9889); ● Para imprimir un numero incluyendo separador de miles – Console.WriteLine("Formato Numerico - {0:N}",9999999.9); ● Para imprimir un numero en formato hexadecimal reservando n lugares – Console.WriteLine("Formato Hexadecimnal - {0:X4}",245);

36 OPERACIONES DE I/O ● Operaciones de Lectura ● Para leer del teclado un carácter (se guarda el código ASCII) – resp = Console.Read(); ● Para leer del teclado una cadena de texto – nombre = Console.ReadLine(); ● Para leer del teclado un numero entero – num = Convert.ToInt16(Console.ReadLine()); – num1 = Convert.ToInt32(Console.ReadLine()); – num2 = Convert.ToInt64(Console.ReadLine());

37 OPERACIONES DE I/O ● Para leer del teclado un numero con punto flotante – Sueldo = Convert.ToSingle(Console.ReadLine()); ● Para leer del teclado un numero double – Sueldo1 = Convert.ToDouble(Console.ReadLine()); ● Para leer del teclado un numero decimal – Sueldo2 = Convert.ToDecimal(Console.ReadLine()); ● Para leer del teclado un carácter y guardarlo como caracter – resp = Convert.ToChar(Console.Read()); Nota 1 : Cuando se utiliza el Read() se deja en el buffer de entrada el carácter Enter (retorno de carro y avance de linea) Nota 2 : Para borrar la consola: Console.Clear();

38 ESTRUCTURA DE UN PROGRAMA EN C# using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace cecad { class Program { static void Main(string[] args) { }