OPERADORES ARITMÉTICOS


Un operador es un elemento del programa que permite hacer una operación sobre uno o varios datos guardados.

El operador examina los datos iniciales y los manipula de manera que obtiene un resultado, que es otro dato. el dato "resultado" no se obtiene al azar, sino que resulta de aplicar un proceso, matemático o lógico en la mayoría de los casos, sobre los datos iniciales.

A los datos iniciales se les llama operandos, el símbolo o símbolos que indican que tipo de operación estamos realizando es el operador en si, mientras que el dato m obtenido es el resultado. Muchas veces el resultado acaba ocupando el lugar de un dato inicial, borrando el dato inicial para cambiarlo por el del resultado.

Los operadores mas comunes son los aritméticos, que son los que realizan operaciones aritméticas, y que requieren que los datos sobre los que se aplican las operaciones sean numéricos. Estos son los que veremos en esta pagina.

Operadores unarios y binarios

los operadores aritméticos son aquellos que permiten hacer operaciones aritméticas con números. Es decir sumas, restas, etc. Tanto en este tipo de operadores como en otros distinguimos entre operadores unarios y binarios.

Un operador unario es aquel que se aplica a un solo dato u operando. Por ejemplo, el signo menos (-) delante de un numero para cambiarlo a negativo.

Un operador binario es el que requiere de dos datos para aplicarlo, por ejemplo la suma.

Existen también, aunque esto es mas raro, operadores ternarios, que son los que requieren de tres operandos para realizar la operación.

Hay quien pretende poner como operadores los m puntos, las comas, los corchetes y otros signos del lenguaje C++ que sirven para realizar algunos cambios en la manera de

Operador de asignación simple

Es el que se usa para asignar un valor a una variable, y consiste en el signo igual. Suponiendo que ya hemos declarado una variable num, lo escribimos así:

num = 5;

Aqui tenemos dos elementos separados por el signo igual, el primero, o elemento de la izquierda, sera siempre una variable, y el segundo sera un dato, el cual se puede introducir directamente, o mediante otra variable. Recuerda que la variable donde guardamos el dato estará siempre a la izquierda del igual, y a la derecha estara el propio dato que queremos guardar.

El resultado de la operación es el dato que queda guardado en la variable.  hemos visto esto en paginas anteriores, por lo que no vamos a insistir mas en esta operación.

Operaciones clásicas

Son las operaciones aritméticas que se han hecho siempre con los números: la suma, la resta, la multiplicación y la división. Estas se pueden hacer tanto con números enteros como reales.

A estas hay que añadir la operación modulo, que solo puede hacerse con números reales, y que consiste en el resto de la división entre dos números. Se indica mediante el signo % (tanto por ciento). Para guardar el resultado de esta operación podemos hacerlo en una variable mediante el operador de asignación.

Por ejemplo, declaramos las siguientes variables:

int a = 7, b = 3, c;

Las dos primeras serán los operandos, y la tercera sera donde guardaremos el resultado. ahora veamos como realizar las operaciones descritas anteriormente:

c = a + b; // c = 10 ; suma

c = a - b; // c = 4 ; resta

c = a * b; // c = 21 ; multiplicación

c = a / b; // c = 2 ; división

c = a % b; // c = 1 ; modulo

Con números reales (tipo double), la suma, resta, multiplicación y división se hacen de igual manera. Tanto los operandos como el resultado pueden contener decimales. El resultado de la división no es el mismo, ya que con reales si la división no es exacta obtendremos los decimales, mientras que con enteros no tenemos decimales.

Por este mismo motivo no existe la operación modulo con números reales, ya que al obtener los decimales en la división, no tenemos resto.

En todo caso nunca podríamos escribir algo como lo siguiente:

a + b = c;

Ya que tal como hemos visto en la asignación simple, la variable donde guardamos un dato tiene que estar siempre a la izquierda del signo igual. Una sentencia como la anterior da un error de compilación.

Asignación compuesta

La asignación compuesta consiste en operar con dos variables numéricas a, y b, de manera que después de realizar la operación el resultado se le asigna a la variable a, es decir a la primera.

Por ejemplo, tenemos la suma y asignación que la escribimos así:

a += b;

Esto es lo mismo que si hubiéramos puesto :

a = a + b;

Es decir la asignación compuesta es en realidad una forma abreviada de escribir la operación anterior, en donde después de operar, el resultado se guarda en la primera variable.

La asignación compuesta puede hacerse con cualquiera de las operaciones clásicas, vemos la lista:

  • Suma y asignación: a += b; // igual que: a = a + b;
    • Resta y asignación: a -= b; // igual que: a = a - b;
    • Multiplicación y asignación: a *= b; // igual que: a = a * b;
    • División y asignación: a /= b; // igual que: a = a / b;
    • Modulo y asignación: a %= b; // igual que: a = a % b;


Al igual que con las operaciones clásicas la operación de modulo y asignación solo puede hacerse con números enteros, y que la división con números reales no tiene resto.

Cambio de signo

Esta es una operación unaria que consiste en cambiar de signo el valor numérico de una variable, y consiste simplemente en poner el signo menos (-) delante de la variable.

Por ejemplo tenemos las siguientes variables:

int a=5, b=-2;

Si hacemos lo siguiente:

cout << -a << " , " << -b << endl;

el resultado en pantalla nos mostrara los valores de las variables cambiadas de signo. Esto quiere decir que el signo menos (-) delante de cualquier variable numérica, haraque el numero cambie de signo.

Incremento y decremento

El operador de incremento es un operador unario que se aplica a variables con datos de tipo numérico, y suma una unidad al numero que guarda la variable. Dada una variable de tipo entero, por ejemplo:

int a = 8;

le aplicamos un operador de incremento, lo cual lo escribimos así:

++a;

y el resultado es que la variable a ahora vale a+1, es decir escribir ++a es lo mismo que si hubiéramos puesto a = a + 1, es decir, a = 9.

Lo mismo ocurre con el operador de decremento, el cual resta una unidad al numero guardado en la variable, por lo tanto si le aplicamos a la variable anterior el operador de decremento que lo escribiremos:

--a;

este disminuye el valor de la variable en una unidad, de manera que si a = 8, después de aplicar la operación tendremos que el valor de la variable a sera 7.

pre incremento y incremento

Tenemos dos maneras de aplicar estos operadores, y es ponerlos antes o después de la variable. Podemos escribir ++a; o también escribirlo a++. Lo mismo ocurre con el decremento, que puede ser --a, o a--.

La diferencia entre escribir el m operador antes de la variable (pre incremento) o después de la variable (postincremento), no la vemos si este se realiza de manera simple. Pero si el incremento o decremento se realiza asociado con otras operaciones, no se obtiene el mismo resultado si este es "pre" o "post".

Con "pre", primero se aplica el incremento o decremento, y después el resto de operaciones. Con "post", primero se realizan las operaciones y después se aplica el incremento o decremento. Por ejemplo, si tenemos la siguientes variables:

int a=7, b=3;

Hacemos un pre incremento y multiplicamos, sacamos el resultado en pantalla:

cout << ++a * b << endl;

Esta operación da como resultado: (7+1) * 3 = 24. Acabada la operación el valor de a sera 7+1=8, y el de b sera el mismo (3).

Sin embargo si hacemos un postincremento:

cout << a++ * b << endl;

El resultado de la operación sera 7 * 3 = 21. Acabada la operación el valor de a se incrementa una unidad (7+1=8), mientras que el valor de b sigue siendo el mismo (3).

Con el decremento pasa lo mismo, si la operación es de pre decremento, primero se resta una unidad y después se hace la operación, mientras que con el postdecremento, primero se hace la operación, y después se aplica el decremento.

Ejemplo con operaciones

Para terminar la pagina pondremos un programa como ejemplo de la utilización de operaciones. Le pediremos al usuario dos números, con los que haremos las operaciones que hemos visto aquí.

PRUEBA TU MISMO! http://cpp.sh/8wkru


Vemos aqui el resultado de compilar el programa anterior. El programa hace las operaciones que le indicamos con los numeros que ha introducido el usuario.

La imagen muestra el resultado, cuando el usuario ha introducido los valores 9 y 5.

Observa como utilizamos el truco de copiar la variable "a" a la variable "c", y despues operar con la variable "c" en lugar de con la "a". De esta manera el valor de la variable "a" no cambia, y podemos volver a utilizarla con el valor inicial en la siguiente operacion.




OPERADORES CONDICIONALES


Un operador condicional es aquel que compara dos datos y nos indica la relación que hay entre ellos. La operación indica una condición que puede o no cumplirse. Por ejemplo con datos numéricos nos puede indicar si uno de ellos es mayor, menor o igual al otro.

El resultado de cualquier operación condicional es siempre un dato booleano, es decir , nos siro si la condición que proponemos es verdadera o falsa (se cumple o no se cumple).

Por ejemplo si decimos que 3 es mayor que 5, el resultado sera falso, pero si decimos que 5 es mayor que 3, el resultado sera verdadero.

Los operadores


En la siguiente tabla mostramos cuales son los operadores condicionales. Todos ellos operan con dos operandos, por lo que son binarios. En los ejemplos que aquí ponemos suponemos que las variables que utilizamos son de tipo entero. En la columna resultados indicamos cuando el resultado es verdadero, en los demás casos es falso.

OperadorNombreEjemploResultado
Operadores condicionales
<Menor quea < btrue si a es menor que b.
>Mayor quea > btrue si a es mayor que b.
<=Menor o igual quea <= btrue si a es menor o igual que b.
>=Mayor o igual quea >= btrue si a es mayor o igual que b.
==Igualdada == btrue si a es igual que b.
!=Desigualdada != btrue si a es distinto de b.


Atención, no confundir el operador de igualdad (==) con el de asignación simple (=). Mientras que el operador de asignación (=) introduce un nuevo valor en una variable, el operador de igualdad (==), compara dos datos (o variables), y da como resultado un booleano.

Con valores numéricos, tanto de enteros como de reales, esta claro cual de ellos es mayor o menor, o si estos son iguales o no. No pasa lo mismo con los datos de tipo char. Para estos el orden es el que marca la tabla ASCII de caracteres, por lo que el que le corresponda un numero mas bajo sera m a menor y el de numero mas alto sera mayor.

Esto indica que para las letras se sigue un orden alfabético en donde la 'a' es la menor de todas, y la 'z' la mayor. Se exceptúan la letra  y las vocales con acento, por no formar parte del alfabeto descrito en ASCII. Así mismo, según el orden de ASCII, cualquier letra mayúscula sera siempre menor que cualquier minúscula, y los dígitos del 0 al 9 serán siempre menores que cualquier letra.

Esto ocurre también con los datos de tipo string, los cuales se ordenaron por orden "alfabético", siguiendo los mismos criterios que para los datos de tipo char, de manera que se comparan los primeros caracteres de las dos cadenas, Si estos son iguales se pasa a comparar los segundos, de manera que así se determina cual de las dos cadenas es mayor o menor.

Utilidad de los operadores condicionales

Veamos ahora cual es la verdadera utilidad de los operadores condicionales, ya que normalmente, saber si un numero es mayor que otro o si una letra est� antes que otra en el alfabeto, no parece de mucha utilidad para programar.

Sin embargo la verdadera utilidad la veremos cuando estudiemos las estructuras condicionales.

Una estructura condicional permite al programa seguir un camino u otro, dependiendo de que una expresión sea verdadera o falsa.

Por ejemplo, supongamos un contenido al que solo se puede tener acceso mediante una clave. Le pedimos la clave al usuario, la cual guardamos en una variable tipo string. La estructura condicional evalúa si la clave es correcta, para ello compara la clave que escribe el usuario con la autentica. Esto se hace mediante el operador de igualdad (clave_usuario == clave_guardada). Si el resultado es verdadero se podrá acceder al contenido, caso contrario mostrara un mensaje de "clave incorrecta".

Este mecanismo de comparar y verificar, es el que se usa en programación, para que el programa pueda hacer distintas cosas en función de lo que elija el usuario. De ahí la importancia de los operadores condicionales.

Aquí como no hemos estudiado todavía las estructuras condicionales, nos limitaremos a comprobar el funcionamiento de estos operadores.

comprobar los operadores

Queremos ahora hacer un programa en donde comprobamos los operadores. Para ello debemos recoger el resultado de la operación en una variable de tipo booleano. Por lo tanto declararemos primero dos variables enteras, para los operandos, y una variable booleana para el resultado.

int a = 3, b= 7; bool r;

Ahora asignamos a la variable booleana el resultado de la operación:

r = a < b ;

Después podemos sacar el resultado en pantalla :

cout << r << endl;

En pantalla se mostrara un 0 o un 1, dependiendo de si el valor es "false" o "true".

Podemos abreviar el proceso y sacar directamente el resultado de la operación en pantalla, pero entonces, esta la debemos poner entre parentisis.

cout << (a < b) << endl;

El resultado es el mismo, pero aquí no es necesario declarar la variable booleana "r", mientras no la usemos directamente.

Veamos ahora con un programa de ejemplo, como indicamos si la comparación que se da con los operadores es verdadera o falsa.


PRUEBA TU MISMO!! http://cpp.sh/4ibp5

Compilamos y ejecutamos el programa. Este le pide al usuario dos números.

Con esos dos números hará las diferentes operaciones condiciones, y mostraremos el resultado con los números 0 y 1, para falso o verdadero respectivamente.

El resultado es parecido al que vemos aquí a la derecha. Prueba a introducir en el programa distintos números, distintos o iguales, para comprobar que los resultados que da son los correctos.

Acabamos con esto los operadores condicionales, pero no los operadores que dan como resultado un booleano, ya que en la próxima pagina veremos los operadores lógicos.


ESTE SITIO FUE CONSTRUIDO USANDO