viernes, 13 de marzo de 2015

Lógica de Programación (6): Expresiones aritméticas



En las lecciones anteriores de este curso hemos aprendido algunos términos básicos relativos al desarrollo de algoritmos. Hoy nos toca meternos más a fondo a la escritura de las instrucciones que van a formar esos algoritmos. Y por ello, en esta ocasión nos vamos a ocupar de las expresiones.

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales que utilizamos para darle instrucciones a una computadora. Una expresión puede ser algo tan simple como asignarle un valor a una variable o tan complejo como toda una fórmula matemática traducida a símbolos que la computadora entendería.

Existen distintos tipos de expresiones que podemos encontrarnos en un algoritmo común. En esta lección nos vamos a enfocar en las expresiones aritméticas.

Expresiones aritméticas
Estas son similares a las fórmulas matemáticas que aprendimos desde nuestros años de primaria y que nos sirven para representar algún modelo de la vida real. Desde el cálculo del área de alguna figura geométrica hasta la representación de un complejo modelo económico, las expresiones aritméticas serán bastante usuales en nuestra labor como programadores.

En una expresión aritmética usaremos únicamente variables o constantes de tipo numérico, además de algunos símbolos que se utilizan para representar las operaciones aritméticas más comunes. En esta tabla agrupamos los operadores aritméticos que usaremos para construir nuestras expresiones así como algunos ejemplos de su uso:

Operadores aritméticos ordenados de manera jerárquica
Algo muy importante que tenemos que destacar es que, cuando hay varias operaciones aritméticas en una expresión, la computadora las resuelve de un modo distinto a como nosotros lo haríamos. Supongamos, por ejemplo, que queremos calcular el valor para la variable C, que tiene asignada la siguiente expresión:

C ← 5 * 4 + 8 / 2 - 1 

Seguramente, nosotros seguiríamos el orden de aparición de las operaciones para irlas resolviendo; por pasos, sería algo como esto:

C ← 20 + 8 / 2 - 1   Multiplicamos 5 * 4
C ← 28 / 2 - 1     Sumamos 20 + 8
C ← 14 - 1     Dividimos 28/2
C ← 13     Restamos 14 - 1

Sin embargo, la computadora ejecuta las operaciones según un determinado orden de jerarquía. En la tabla de operadores mostrada, se ilustra también la jerarquía que les asigna la computadora. Por lo tanto, la computadora calcularía el valor de la variable de un modo distinto:


C ← 20 + 8 / 2 - 1     Se multiplica 5 * 4
C ← 20 + 4 - 1     Se divide 8 / 2
C ← 24 - 1     Se suma 20 + 4
C ← 23     Se resta 24 - 1

Como vemos, la computadora llega a un resultado totalmente distinto al que obtendríamos nosotros. Es importante que sepamos cómo "piensa" una computadora para resolver estas operaciones dado que será nuestro trabajo escribir algunas fórmulas matemáticas en forma de expresiones que entienda y ejecute correctamente una computadora. 

Además de los operadores aritméticos, en una expresión podemos usar también paréntesis para forzar la resolución de alguna operación independientemente de su nivel de jerarquía. Y es que, para una computadora, las operaciones que están agrupadas con paréntesis deben resolverse primero. 

Veamos, por ejemplo, la forma en que se calcularía el valor de la variable M en esta expresión:

M ← 4 * (5 + 2) * 3  / (5 - 1) 
M ← 4 * 7 * 3 / (5 - 1)
M ← 4 * 7 * 3 / 4
M ← 28 * 3 / 4
M ← 84 / 4 
M ← 21

Como podemos ver, las operaciones (5+2) y (5-1) se ejecutaron primero a pesar de que las operaciones de suma y resta tienen menos nivel de jerarquía que la multiplicación o la división. Esto es porque agrupamos ambas operaciones entre paréntesis, lo que eleva su nivel de jerarquía ante los "ojos" de la computadora. Una vez que los paréntesis se quitan de en medio, se sigue respetando la misma jerarquía de siempre.

Si ocurriera que en una misma expresión hay varios niveles de agrupamiento de operaciones, la computadora va a resolver las más internas primero. Por ejemplo:

B ← 12 + ( 3 * 4 * ( 7 - 5 ) / 6 ) - 1
B ← 12 + ( 3 * 4 * 2 / 6 ) - 1   Se resuelve primero el paréntesis más interno (7 - 5)
B ← 12 + ( 12 * 2 / 6 ) - 1
B ← 12 + ( 24 / 6 ) - 1
B ← 12 + 4 - 1
B ← 16 - 1
B ← 15

Conversión de fórmulas matemáticas a expresiones aritméticas
Como decíamos algunos párrafos atrás, conocer el orden de ejecución de las operaciones aritméticas en una computadora nos permite convertir una fórmula matemática en una expresión que la computadora entienda y ejecute en el orden correcto. Veamos algunos ejemplos:

Expresión algebraica Expresión aritmética algorítmica
x**2 + y**4
x**2 / (a**3 + b**3)
u + x**2 / y
(a + b) / (a + c**2 / d + e)


Y bueno, es hora de practicar lo aprendido hasta aquí. A continuación van a encontrar una serie de ejercicios que les recomiendo mucho que resuelvan para que comprendan muy bien cómo funciona esto de los operadores aritméticos en la computadora. Como siempre, pueden enviarlos directamente a mi email personal si desean que los revise. Si tienen dudas, les invito a usar la sección de comentarios de esta lección.

En la próxima lección vamos a aprender cómo crear y evaluar otro tipo de expresiones: las expresiones lógicas. ¡Hasta la próxima!


ACTIVIDADES DE APRENDIZAJE

1) Digamos que A=5, B=25 y C=10. ¿Puedes deducir cuál será el valor de la variable X en cada uno de los siguientes casos?

  • X ← A + B + C
  • X ← A + B * C
  • X ← A + B / C
  • X ← A + B mod C
  • X ← (A + B) div C
  • X ← A + (B / C)
2) Calcula el valor de la variable C en cada uno de los siguientes casos.
  • C ← 8 + 7 * 3 +  5 * 6
  • C ← -2 ** 3
  • C ← (33 + 3 * 4) / 5
  • C ← 2 ** 2 * 3
  • C ← 3 + 2 * (18 - 4 ** 2)
  • C ← 16 * 6 - 3 * 2

3) Escribe las siguientes expresiones algebraicas en forma de expresiones algorítmicas




8 comentarios:

  1. Buenas tardes, quisiera saber cual es la solución de este ejerccio C ← 8 + 7 * 3 + * 6

    ResponderEliminar
  2. Hola Jeanine! Hay un error en el ejercicio, la redacción correcta debería ser: C ← 8 + 7 * 3 + 5 * 6 y su solución es como sigue:
    C ← 8 + 7 * 3 + 5 * 6
    C ← 8 + 21 + 5 * 6
    C ← 8 + 21 + 30
    C ← 59

    ¡Espero que te sea de utilidad!

    ResponderEliminar
  3. Muchísimas gracias, una ultima pregunta cuando se habla de mod y div que solución tiene? muchísimas gracias.

    ResponderEliminar
  4. Si te refieres a estos dos ejercicios:
    X ← A + B mod C
    X ← (A + B) div C
    Estas son las soluciones:
    X ← A + B mod C ← 5 + 25 mod 10 ← 5 + 5 ← 10
    X ← (A + B) div C ← (5 + 25) div 10 ← 25 div 10 ← 5

    Espero que sea a lo que te referías :)
    ¡Saludos!

    ResponderEliminar
  5. La respuesta a este ejercicio X ← (A + B) div C ← (5 + 25) div 10 ← 25 div 10 ← 3
    Saludos.

    ResponderEliminar
  6. x = 40

    x = 255

    x= 7,5

    x = 10

    x= 3

    x = 7,5

    c = 59

    c = - 8

    c = 9

    c = 64

    c = 7

    c = 90

    M/N + P
    M + N/(P-Q)
    (m+n)/(p-q)
    m+(n/p)/q-(r/5)

    Por favor validar. Gracias por tu aporte Israel.

    ResponderEliminar
    Respuestas
    1. Hola!
      El resultado correcto de este ejercicio: C ← 2 ** 2 * 3 es 12, mientras que la última fórmula se traduce como: m+(n/p)/(q-(r/5)).

      Espero que las respuestas te sean de utilidad. ¡Saludos!

      Eliminar
  7. Hola estoy empezando a estudiar estos temas por mi cuenta tengo una duda si con respecto a un ejercicio de ejemplo, mi duda es con respecto de colocar paréntesis a la hora de transformar una expresión algebraica a algorítmica si a + b / a+c lo expresamos algoritmicamente como a+ (b/ a/c) entonces si tuviéramos a+b/a+ (lo siguiente escrito como otra fracción) b-c / b+a tendriamos que expresarlo algoritmicamente como a+ [b/ a+ (b-c/ b+a)]

    ResponderEliminar

Copyright © IsraelCapetillo.com - Un blog de tecnología, noticias geek y más Compartido por Gooyaabi Templates | Powered By Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com