12/30/11 Objetivos de la sesión Profundizar en la forma en que se construyen expresiones (fórmulas) para hacer los cálculos que requiere un programa para obtener los resultados deseados. Fundamentos de programación C#. R. Mtz. Expresiones aritméticas… Operandos unidos por operadores (+,-,*,/,%)… Cada operador genera un resultado al aplicarse sobre los operandos. En expresiones compuestas, el orden en que aplican los operadores está determinado por las prioridades de los mismos, y por la forma en que se colocan los paréntesis. Los operadores aritméticos siempre se evalúan de izquierda a derecha cuando tienen la misma prioridad. Fundamentos de programación C#. Román Mtz. Fundamentos de programación C#. Román Mtz. Operadores Aritméticos Nivel Operador 1 () 2 3 4 ++, --, +(unitario), -(unitario) *, /, % +, - 5 =, +=, -=, *=, /=, %= Fundamentos de programación C#. Román Mtz. 1 12/30/11 Ejemplo… Tipos de división Convertir División las siguientes fórmulas algebráicas en expresiones en lenguaje C# suponiendo que cada letra es una variable… 1- x (2+h) (1-f) 2b + y 3f Los operadores para la división Fundamentos de programación C#. Román Mtz. 771.5 1543 14 03 10 0 771 (cociente) 2 División entera: 2 h2 - x Fundamentos de programación C#. Román Mtz. de punto flotante: 1543 14 03 1 (residuo) Fundamentos de programación C#. Román Mtz. Regla SEMANTICA de ejecución de expresiones Fundamentos de programación C#. Román Mtz. 2 12/30/11 Regla SEMANTICA para la asignación Operaciones especiales Algunas operaciones matemáticas se ejecutarán a través de funciones predefinidas en la clase Math. Ejemplos: Para obtener la raíz cuadrada de un número: Math.Sqrt(número) Para elevar un número a cierta potencia: Math.Pow(número, potencia) Logaritmos, trigonométricas, etc. Fundamentos de programación C#. Román Mtz. Fundamentos de programación C#. Román Mtz. Más sobre la asignación... Fundamentos de programación C#. Román Mtz. Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos 3 12/30/11 Ejercicios Más sobre la asignación… ¿Qué valor toma cada una de las siguientes expresiones? Fundamentos de programación C#. Román Mtz. 10 / 3 + 17 / 3 - 10 2 + 3 * (4 + 5) 19 / 2 * 5 10.0 / 3.0 + 10 / 3 + 10.0 / 3 3+5%4/2 (4 * 5 / 3+ 2.0) + (5 - 8.0) / 2 Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos Utilizando la clase Math . . . Encuentra la raíz cuadrada de: b2 - 4ac El resultado déjalo en la variable d. double a, b, c, d; . . . d = Math.Sqrt(b * b - 4.0 * a* c); Fundamentos de programación C#. Román Mtz. Casting / Ing. Jakeline Marcos 4 12/30/11 Casting (conversión de un tipo de dato a otro) Cuando una expresión aritmética consiste de variables y constantes del mismo tipo de datos, el resultado de la expresión será del mismo tipo de datos. Por ejemplo si el tipo de dato de a y b es entero, el resultado de la siguiente expresión: a * b + 23 también será entero. PERO, cuando los tipos de datos son diferentes en una expresión aritmética, se dice que tiene lugar una conversión por casting. Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos Casting Casting es un proceso que convierte un dato, de un tipo de dato a otro. Existen 2 tipos de casting: implícito y explícito. Una conversión implícita llamada promoción numérica se aplica en los operandos de una expresión aritmética. Se dice promoción porque el operando es convertido de una menor precisión a una mayor precisión. Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos * El término Casting quiere decir conversión del tipo de dato. int(4.8) tiene valor double(5) tiene valor 5.0 double(7/4) tiene valor 1.0 double(7) / double(4) tiene valor 1.75 Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos 4 Ejemplos: Ejemplo Valor 5+8 13 5/8 0 6.0 / 5.0 1.2 double (4 / 8) 0.0 double (4) / 8 0.5 Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos 5 12/30/11 Casting implícito Casting implícito El cast es realizado de manera implícita (automática) cuando un tipo “menor” se asigna a un tipo “mayor” (Promoción numérica) Por ejemplo: double x; int n = 5; x = n; Como n es un entero y x es double, el valor de n se tiene que convertir a double antes de poder asignarse a x. Ahora x tiene el valor 5.00 y n tiene el valor 5. NOTA que el valor de la n permanece sin cambio, solo se cambia el valor que se asigna. Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos Conversión por asignación: Suponiendo que la variable x es entera: X = 2 * (14343 / 2344) Asignará el resultado entero de la operación a x. PERO, si x no es int, se llevará a cabo una conversión implícita por asignación. Las conversiones por asignación solamente ocurren si la variable tiene más alta precisión que el valor de la expresión. Por ejemplo: double number; number = 25; Sí se vale.......... Pero: int n; n = 234.56 NO se vale !!! Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos Casting explícito: También se puede utilizar el casting explícito para convertir de un tipo de datos a otro. Para ello es necesario utilizar un operador de tipo cast. Por ejemplo: x / 3 en donde x es int será truncado!! Entonces utilizamos el cast explícito de la siguiente manera: resultado = (float) x / 3; Otro ejemplo: resultado = a + (double) (x + y * z); Fundamentos de programación C#. Román Mtz. / Ing. Jakeline Marcos 6