Saltar a contenido

Expresiones complejas

Hasta ahora hemos hecho algunas operaciones sencillas. Pero ¿que pasa si queremos resolver un cálculo más complejo? Comencemos como combinar varias operaciones en una única expresión.

Expresiones con varias operaciones

Una expresión puede estar formada por varias operaciones:

Expresiones.py
1
2
print(5*3+4)
print(5+4*3)

Lo que, al ejecutarse, muestra:

19
17

En el primer caso, multiplicamos 5 por 3, y al resultado, que es 15, le sumamos 4.

Pero... un momento. La segunda sentencia debería sumar 5+4=9 y multiplicarlo por tres. ¿Que ha pasado?

Lo que sucede es que, dentro de una expresión, algunas operaciones tienen precedencia sobre las otras. La multiplicación y la división tienen prioridad sobre la suma y resta, y se deben ejecutar antes. De esta forma, primero se multiplica 4*3=12 y el resultado se suma a 5.

Para obligar al ordenador a cambiar las precedencias, o para asegurarnos de que el cálculo se hace siguiendo el orden previsto, podemos usar paréntesis:

print( (5+4) * 3 )

... y de esta forma, primero se hace la suma, si eso es lo que queremos.

Expresiones anidadas

Podemos "anidar" paréntesis, unos dentro de otros:

print( ((5+4) * 3) + 7 )

De esta forma, primero se resuelven las subexpresiones internas.

La palabra "anidado" indica que un elemento del programa está dentro de otro, y viene del inglés "nested" (nest=nido)

Funciones que devuelven resultados

Una función es una operación con nombre. La función print realiza su tarea cada vez que la invocamos por su nombre.

Hay funciones que han sido concebidas para realizar un cálculo y devolvernos un resultado. Por ejemplo, lo siguiente:

FuncionesConResultados.py
1
2
print( max(5,17,3,4) )
print( pow(5,2) )

... invoca las funciones max() y pow(), y pasa los resultados a print():

17
25

La función max() toma varios argumentos y devuelve el mayor de ellos, 17.

La función pow() toma dos datos y calcula la potencia del primero elevado al segundo (power of). El resultado de calcular 5 al cuadrado es 25.

Una función puede formar parte de una expresión:

FuncionesConResultados2.py
1
print( max( pow(5,2), 10 ) + 2 )

Nuestro ordenador resolverá esto de acuerdo al siguiente orden:

  • analiza el único argumento pasado, que es una expresión compleja. Consiste en:

    max( pow(5,2), 10 ) + 2
    
  • antes de llamar a la función max(), resuelve sus dos parámetros, que son:

    pow(5,2)
    10
    
  • luego calcula max(25,10) = 25

  • seguidamente suma 2 al resultado de max(), obteniendo 27

  • ese resultado final se le pasa a print()

El operador **

El cálculo de potencias es una operación que se puede escribir usando el operador **. Es lo mismo

print(pow(5,2))

que

print(5**2)