viernes, 25 de marzo de 2011

Operaciones Matematicas

En un programa, el tipo de un dato determina las operaciones que se pueden realizar con él. Por ejemplo, con los datos de tipo entero se pueden realizar operaciones aritméticas, tales como la suma, la resta o la multiplicación.

Ejemplo 1: Algunos ejemplos son:

   111 + 6 (operación suma)

   
19 - 72 (operación resta)

   24 * 3
 (operación multiplicación)

Todas las operaciones del ejemplo constan de dos operandos (constantes enteras) y un operador. La mayoría de las veces es así, pero, también es posible realizar operaciones con distinto número de operadores y/u operandos.

Ejemplo 2: Por ejemplo:

   111 + 6 - 8 (tres operandos y dos operadores)

   
-( ( +19 ) + 72 ) (dos operandos y tres operadores)

   -( -72 )
 (un operando y dos operadores)

En las operaciones del ejemplo se puede observar que los caracteres más (
+) y menos (-) tienen dos usos:


1. Operadores suma y resta.
2. Signos de un número (también son operadores).

Los operadores de signo más (
+) y menos (-) son operadores monarios, también llamados unarios, ya que, actúan, solamente, sobre un operando.

Los caracteres abrir paréntesis "
(" y cerrar paréntesis ")" se utilizan para establecer la prioridad de los operadores, es decir, para establecer el orden en el que los operadores actúan sobre los operandos.

Un operador indica el tipo de operación a realizar sobre los operandos (datos) que actúa. Los operandos pueden ser:

  • Constantes (expresadas por su valor o con un nombre (identificador)).
  • Variables.
  • Llamadas a funciones.
  • Elementos de formaciones (arrays).
En este apartado se van a tratar operaciones en donde sólo aparecen constantes y variables. Cuando se combinan uno o más operadores con uno o más operandos se obtiene una expresión. De modo que, una expresión es una secuencia de operandos y operadores escrita bajo unas reglas de sintaxis.

Ejemplo 3: Dadas las siguientes declaraciones de constantes y variables:

   const
      PI = 3.141592;

   var
      Numero : Integer;
      Radio_circulo : Real;

Algunos ejemplos de expresiones son:
 

   2 * PI * Radio_circulo

   ( PI * PI )


   Numero * 5


El valor de la constante 
PI viene dado en su declaración (3.141592). No obstante, los valores de las variables NumeroRadio_circulo serán dados en la ejecución del programa. Por ejemplo, podrían asignarse mediante dos instrucciones de asignación en el bloque de instrucciones principal del programa:

   begin

      ...

      Numero := 2;
      Radio_circulo := 3.2;

      ...

   end.

Nota: Fíjese que, en Pascal, la sintaxis para realizar una instrucción de asignación es:




<nombre_de_la_variable> := <expresión>;
 

Por tanto, al evaluar las expresiones del ejemplo 3, se obtendrían los valores:

   20.106189 (valor real) ( 2 * 3.141592 * 3.2 )

   9.869600 (valor real) ( 3.141592 * 3.141592 )

   10 (valor entero) ( 2 * 5 )

Un operador siempre forma parte de una expresión, en la cual, el operador siempre actúa sobre al menos un operando. Por el contrario, un operando sí puede aparecer solo en una expresión.

En programación, de la evaluación de una expresión siempre se obtiene un valor. Dicho valor puede ser de tipo: entero, real, lógico, carácter o cadena. Por consiguiente, una expresión puede ser:

  • Aritmética (devuelve un número entero o real).
  • Lógica (devuelve un valor lógico: verdadero o falso)
  • De carácter (devuelve un carácter representable por el ordenador).
  • De cadena (devuelve una cadena).
A continuación, vamos a estudiar los operadores y las expresiones en Turbo Pascal.




Expresiones aritméticas

De la evaluación de una expresión aritmética siempre se obtiene un valor de tipo entero o real. En las expresiones aritméticas se pueden utilizar los siguientes operadores aritméticos:


Operadores Aritméticos en Turbo Pascal:
   +     Suma
   -     Resta
   *     Multiplicación
   /     División real
   div   División entera
   mod   Módulo (resto de la división entera)

   
+     Signo más
   -     Signo menos


Figura. Clasificación de los operadores aritméticos en Turbo Pascal.

Ejemplo 4: El operador multiplicación (*) realiza la multiplicación de dos operandos numéricos.

   5 * 2

   3.1 
* 2.5

Los resultados son:

   10 (valor entero)

   7.75 (valor real)

Ejemplo 5: El operador división real (/) realiza la división real entre dos operandos numéricos.

   5 / 2

   3.1 / 2.5

   6 / 2

Sus resultados son:

   2.5 (valor real)

   1.24 (valor real)

   3.0 (valor real)

Ejemplo 6: El operador división entera (div) realiza la división entera entre dos operandos numéricos enteros.

   5 div 2

   3.1 
div 2.5

El operador división entera (
div) no puede operar con operandos numéricos reales. Por tanto, al evaluar las expresiones de este ejemplo se obtienen los valores:

   2 (valor entero)

   ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)

Ejemplo 7: El operador módulo (mod) realiza la división entera entre dos operandos numéricos enteros, devolviendo el resto de la misma.

   5 mod 2

   3.1 
mod 2.5

Al igual que el operador división entera (
div), el operador módulo (mod) tampoco puede operar con operandos numéricos reales. De modo que, en este caso, los resultados son:

   1 (valor entero)

   ERROR (no se puede evaluar; ambos operandos deben ser valores enteros)

Ejemplo 8: El operador signo menos (-) cambia el signo de un operando numérico. Así, de las expresiones

   -11

   -( 3.1 )

   -( -2.5 )

se obtienen los valores:

   -11 (valor entero)

   -3.1 (valor real)

   2.5 (valor real)




Prioridad de los operadores aritméticos

Ejemplo 9: En una expresión aritmética puede aparecer más de un operador aritmético.

   11 + 3 div 3 (dos operadores)

   -3 * 6 mod 4 (tres operadores)

   -3.1 + 5 * 0.5 (tres operadores)

   +3 * -8 (tres operadores)

Para poder evaluar correctamente las expresiones aritméticas del ejemplo, es necesario seguir un criterio de prioridad de operadores. En Turbo Pascal, la prioridad de los operadores aritméticos es:


Prioridad de los operadores aritméticos
 (de mayor a menor) en Turbo Pascal:

   * / div mod   Multiplicación, división real, división entera y módulo

   
+ -           Suma (o Signo más) y resta (o Signo menos)



Figura. Prioridad de los operadores aritméticos en Turbo Pascal.

Todos los operadores aritméticos con la misma prioridad, por ejemplo, el operador multiplicación (*) y el operador módulo (mod), se evalúan de izquierda a derecha. En consecuencia, los valores que proporcionan las expresiones del ejemplo 9 son:

   12 (actúan en orden los operadores: (div) y suma (+))

   -2 (actúan en orden los operadores: (*), (mod) y signo menos (-))

   -0.6 (actúan en orden los operadores: (*), signo menos (-), y suma (+))

   -24 (actúan en orden los operadores: (*), signo menos (+) y signo menos (-))

Para modificar la prioridad de los operadores en las expresiones, se debe hacer uso de los caracteres abrir paréntesis "
(" y cerrar paréntesis ")".

En las expresiones aritméticas hay que tener la precaución de no dividir entre cero (0).


Ejemplo 10: Por tanto, las siguientes expresiones son incorrectas:

   11 / 0

   5 div 0

   -3 mod 0

De la evaluación de cada una de estas expresiones se obtiene:

   ERROR (no se puede evaluar; no se puede dividir entre cero)




Expresiones lógicas

De la evaluación de una expresión lógica siempre se obtiene un valor de tipo lógico (TRUE o FALSE). En las expresiones lógicas se pueden utilizar dos tipos de operadores:


· Relacionales
·  Lógicos

Un operador relacional se utiliza para comparar los valores de dos expresiones. Estas deben ser del mismo tipo (aritméticas, lógicas, de carácter o de cadena).

Ejemplo 11: Algunos ejemplos son:

   22 > 13 (comparación de dos expresiones aritméticas)

   22.5 < 3.44 (comparación de dos expresiones aritméticas)

   TRUE = FALSE (comparación de dos expresiones lógicas)

   'c' > 'f' (comparación de dos expresiones de carácter)

   "coche" = "Coche" (comparación de dos expresiones de cadena)

Proporcionan los valores:

   TRUE (22 es mayor que 13)

   FALSE (22.5 no es menor que 3.44)

   FALSE (TRUE no es igual que FALSE)

   FALSE ('c' no es mayor que 'f')

   FALSE ("coche" no es igual que "Coche")

Las comparaciones entre los valores de tipo numérico son obvias. En cuanto a los valores de tipo lógico (TRUE y FALSE) se considera que FALSE es menor que TRUE. En lo que respecta a los valores de tipo carácter, su orden viene dado por el ASCII extendido utilizado por el ordenador para representarlos. Y en el caso de los valores de tipo cadena, también se tiene en cuenta dicho código.

Los operadores relacionales son:


Operadores Relacionales en Turbo Pascal:
   <     Menor que
   <=    Menor o igual que
   >     Mayor que
   >=    Mayor o igual que
   =     Igual que
   <>    Distinto que


Figura. Clasificación de los operadores relacionales en Turbo Pascal.


Para escribir una expresión relacional (lógica) se utiliza la sintaxis:




<expresión_1>  <operador_de_relación>  <expresión_2>
 

Siendo 
<expresión_1> y <expresión_2> del mismo tipo (aritmética, lógica, de carácter o de cadena).

Por otra parte, un operador lógico actúa, exclusivamente, sobre valores de expresiones lógicas. Los operadores lógicos son:


Operadores Lógicos en Turbo Pascal:
   and   Conjunción
   or    Disyunción
   not   Negación

No hay comentarios:

Publicar un comentario en la entrada