Ejercicio: Realización de operaciones matemáticas

Completado

Ahora que entendemos los conceptos básicos de la suma y, lo que es más importante, la conversión implícita de tipos entre tipos de datos numéricos y de cadena, veamos otras operaciones matemáticas comunes con los datos numéricos.

Realización de operaciones matemáticas básicas

Escritura de código para realizar operaciones de suma, resta, multiplicación y división con enteros

  1. Seleccione todo el código en el editor de .NET y presione la tecla Suprimir o Retroceso para eliminarlo.

  2. Escriba el siguiente código en el editor de .NET:

    int sum = 7 + 5;
    int difference = 7 - 5;
    int product = 7 * 5;
    int quotient = 7 / 5;
    
    Console.WriteLine("Sum: " + sum);
    Console.WriteLine("Difference: " + difference);
    Console.WriteLine("Product: " + product);
    Console.WriteLine("Quotient: " + quotient);
    
  3. Ejecute el código. Debería ver la salida siguiente:

    Sum: 12
    Difference: 2
    Product: 35
    Quotient: 1
    

Como puede ver:

  • + es el operador de suma
  • - es el operador de resta
  • * es el operador de multiplicación
  • / es el operador de división

Sin embargo, es posible que el cociente resultante de nuestro ejemplo de división no sea el que esperaba. Los valores situados después del decimal se truncan a partir de quotient, ya que se ha definido como int, y int no puede contener valores después del decimal.

Incorporación de código para efectuar la división con datos decimales literales

Para que la división funcione correctamente, es necesario usar un tipo de datos que admita dígitos fraccionarios después de la coma decimal, como decimal.

  1. Elimine el código de los pasos anteriores y escriba el código siguiente en el editor de .NET:

    decimal decimalQuotient = 7.0m / 5;
    Console.WriteLine($"Decimal quotient: {decimalQuotient}");
    
    
  2. Ejecute el código. Debería ver la salida siguiente:

    Decimal quotient: 1.4
    

Para que esto funcione, el cociente (a la izquierda del operador de asignación) debe ser del tipo decimaly al menos uno de los números que se divide también debe ser del tipo decimal (ambos números también pueden ser del tipo decimal).

Aquí se muestran otros dos ejemplos que funcionan igualmente bien:

decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;

Pero las siguientes líneas de código no funcionarán (o arrojarán resultados inexactos):

int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;

Agregar código para convertir los resultados de la división de enteros

¿Qué ocurre si no está trabajando con valores literales? En otras palabras, ¿qué ocurre si ha de dividir dos variables de tipo int, pero no quiere que el resultado se trunque? En ese caso, debe realizar una conversión de tipo de datos de int a decimal. La conversión es un tipo de conversión de datos que indica al compilador que trate temporalmente un valor como si fuera otro tipo de datos.

Para convertir int a decimal, agregue el operador de conversión antes del valor. El nombre del tipo de datos se usará entre paréntesis delante del valor para obtenerlo. En este caso, agregaremos (decimal) antes de las variables first y second.

  1. Elimine el código de los pasos anteriores y escriba el código siguiente en el editor de .NET:

    int first = 7;
    int second = 5;
    decimal quotient = (decimal)first / (decimal)second;
    Console.WriteLine(quotient);
    
  2. Ejecute el código. Debería ver la salida siguiente:

    1.4
    

Nota

Hemos visto tres usos del operador de paréntesis: invocación de métodos, orden de las operaciones y conversión.

Escritura de código para determinar el resto después de la división de enteros

El operador de módulo % le indica el resto de la división int. Lo que realmente se aprende de esto es si un número es divisible por otro. Esto puede resultar útil durante operaciones de procesamiento prolongado cuando se recorren en bucle cientos o miles de registros de datos y se desea proporcionar comentarios al usuario final tras el procesamiento de cada 100 registros de datos.

  1. Elimine el código de los pasos anteriores y escriba el código siguiente en el editor de .NET:

    Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}");
    Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
    
    
  2. Ejecute el código. Debería ver la salida siguiente:

    Modulus of 200 / 5 : 0
    Modulus of 7 / 5 : 2
    

Si el módulo es igual a 0, indica que el dividendo es divisible por el divisor.

Orden de las operaciones

Como se ha visto en el ejercicio anterior, puede usar los símbolos () como operadores de orden de las operaciones. Aunque esta no es la única manera en que se determina el orden de las operaciones.

En matemáticas, PEMDAS es un acrónimo que ayuda a los alumnos a recordar el orden de las operaciones. El orden es:

  1. Parentheses (paréntesis) (lo que se encuentra dentro del paréntesis se realiza primero)
  2. Exponents (exponentes)
  3. Multiplication (multiplicación) y Division (división) (de izquierda a derecha)
  4. Addition (suma) y Subtraction (resta) (de izquierda a derecha)

C# sigue el mismo orden que PEMDAS, excepto en el caso de los exponentes. Aunque no hay ningún operador exponencial en C#, puede usar el método System.Math.Pow. En el módulo "Llamada a métodos de la biblioteca de clases .NET mediante C#" se presenta este método y otros.

Escritura de código para practicar con el orden de las operaciones de C#

  1. Elimine el código de los pasos anteriores y escriba el código siguiente en el editor de .NET:

    int value1 = 3 + 4 * 5;
    int value2 = (3 + 4) * 5;
    Console.WriteLine(value1);
    Console.WriteLine(value2);
    

    Aquí verá la diferencia de realizar las mismas operaciones en otro orden.

  2. Ejecute el código. Debería ver la siguiente salida:

    23
    35
    

Resumen

Esto es lo que ha aprendido hasta ahora sobre las operaciones matemáticas en C#:

  • Use operadores como +, -, * y / para realizar operaciones matemáticas básicas.
  • La división de dos valores int producirá el truncamiento de los valores después del separador decimal. Para conservar los valores después del separador decimal, debe convertir primero el divisor o el dividendo (o ambos) de int en un número de punto flotante como decimal y, para evitar el truncamiento, el cociente debe ser también del mismo tipo de número de punto flotante.
  • Realice una operación de conversión para tratar temporalmente un valor como si fuera otro tipo de datos.
  • Use el operador % para capturar el resto después de la división.
  • El orden de la operaciones seguirá las reglas del acrónimo PEMDAS.