Operadores: Asignación, Aritméticos, Relacionales y Lógicos

Para evualuar expresiones en C++ contamos con una amplio conjunto de operadores, en esta etapa introductoria utilizaremos cuatro categorías generales:

  • Operadores de Asignación.
  • Operadores Aritméticos.
  • Operadores relacionales..
  • Operadores lógicos.

Si deseas revisar una relación completa de los operadores disponibles puedes revisar el anexo II, Operadores de C++

Operadores de Asignación

En este momento solo presento el prinicpal operador de asignación por su amplio uso.

Operador Descripción Asociatividad
= Asignación Derecha a izquierda

Este operador asigna el valor de la expresión que se encuentra a la derecha del operador al lado izquierdo, normalmente a una variable.

El siguiente programa muestra como funciona el operador de asignación.

// Este programa muestra el uso del operador de asignación
// 15/10/17, carenki

#include <iostream>

using namespace std;

int main()
{
   int a, b;
   char letra; 
   bool respuesta;
   
   a = 5;
   b = 0;
   letra = 'P'; 
   respuesta = true;
   
   cout << "a = " << a << " y b = " << b << endl;
   cout << "letra = " << letra << " respuesta = " << respuesta << endl;
   
   respuesta = b;   //Equivalete a false (o)
   cout << "Asignación de una variable a otra variable = " << respuesta << endl; 
   
   return 0;
}

Operadores aritméticos

Operador Nombre Descripción Asociatividad
* Multiplicación Multiplicación aritmética Izquierda a derecha
/ División División aritmética
% Módulo Obtiene el residuo de la división entera
+ Suma Suma aritmética
Resta Resta aritmética

El siguiente programa muestra el uso de los operadores indicados en esta sección,

// Este programa muestra el uso del operadores aritméticos
// 15/10/17, carenki

#include <iostream>
using namespace std;

int main()
   {
   int a = 5, b = 10, c = 3, resultado;
   
   cout << "Valor de a = " << a << " - Valor de b = " << b << " - Valor de c = " << c << "\n";
   
   resultado = a + b;   //Suma
   cout << "a + b = " << resultado << "\n";
   
   resultado = a - b;   //Resta
   cout << "a - b = " << resultado << "\n";
   
   resultado = a * b;   //Multiplicación
   cout << "a * b = " << resultado << "\n";
   
   resultado = a / b;   //División
   cout << "a / b = " << resultado << "\n";
   
   resultado = a % b;   //Módulo
   cout << "a % b = " << resultado << "\n";
   resultado = a % c;   //Módulo
   cout << "a % c = " << resultado << "\n";
   
   return 0;
   }

Operadores de relacionales

Los operadores de comparación se caracterizan porque al evaluar una expresión generan un valor Booleano (bool), esto es, Verdadero o Falso, cabe señalar que internamente estos dos valores están definidos de esta forma:

int true = 1		//verdadero
int false = 0		//falso

De modo que podemos utilizar tanto el nombre del identificador, como el valor numérico para identificar cualquiera de estas 2 condiciones. Gran parte de la potencia de un lenguaje se basa en la capacidad de utilizar operadores relacionales y de los operadores a nivel bit.

Operadores Lógicos

Los operadores lógicos modifican el valor de la expresión evaluada de acuerdo a las tablas de verdad de Boole, las 3 operaciones implementadas de forma nativa son:

  • Negación
  • Y lógico
  • O lógico

Tablas de verdad, and, or y not

Tabla AND

Expresión 1 Expresión 2 Resultado
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Falso

Tabla OR

Expresión 1 Expresión 2 Resultado
Verdadero Verdadero Verdadero
Verdadero Falso Verdadero
Falso Verdadero Verdadero
Falso Falso Falso

Tabla Not

Expresión 1 Resultado
Verdadero Falso
Falso Verdadero

Los operadores relacionales y lógicos implementados en C++ son:

Operadores relacionales

Operador Nombre Sintaxis
 < Menor que expresión < expresión
<= Menor o igual que expresión <= expresión
 > Mayor que expresión > expresión
 >= Mayor o igual que expresión >= expresión
!= Diferente de expresión != expresión
== Igual que expresión == expresión
! Negación lógica !expresión
&& AND lógico expresión && expresión
|| OR lógico expresión || expresión

El resultado de una expresión siempre generará un resultado, podemos utilizarlo directamente en una expresión válida o almacenarlo en una variable para su uso posterior. El siguiente ejemplo muestra lo indicado.

//El resultado de una axpresión siempre generará un resultado, podemos
//utilizarlo directamente en una expresión válida o almacenarlo en una
//variable para su uso posterior.
//Compilado en https://www.tutorialspoint.com/compile_cpp_online.php
//2017, carenki 15/10/2017

#include <iostream>
using namespace std;
int main()
{
   int a = 5;
   int b = 8;
   bool r;
   
   //Evaluación directa de identificadores:
   //Nota: Cuando evalúas la expresión directamente en una expresión
   //debes encerarla entre parétesis para que no aparezcan errores.
   cout << "Comparación \"menor que\" 5 < 8 = " << (5 < 8) << endl;
   cout << "Comparación \"mayor que\" 5 > 8 = " << (5 > 8) << endl;
   cout << "Comparación \"menor o igual que\" 5 <= 8 = " << (5 <= 8) << endl;
   cout << "Comparación \"mayor o igual que\" 5 >= 8 = " << (5 >= 8) << endl;
   cout << "Comparación \"diferente que\" 5 != 8 = " << (5 != 8) << endl;
   cout << "Comparación \"igual que\" 5 == 8 = " << (5 == 8) << endl;

   //Es preferible evaluar las expresiones fuera de las cadenas
   cout << "\n\nPara la siguiente sección tenemos a = " << a << " y b = "  << b << endl;
   r = a < b;
   cout << "Comparación \"menor que\" a < b = " << r << endl;
   
   r = a > b;
   cout << "Comparación \"mayor que\" a > b = " << r << endl;
   
   //Evaluación de expresiones lógicas
   cout << "\n\n";  //2 saltos de línea
   
   cout << "\n\nPara la siguiente sección tenemos a = " << a << " y b = "  << b << endl;
   r = (a > b) and (a < b);
   cout << "(a > b) \"and\" (a > b) = " << r << endl;
   
   r = (a > b) or (a < b);
   cout << "(a > b) \"or\" (a > b) = " << r << endl;
   
   r = not (a > b);
   cout << "\"not\" (a > b) = " << r << endl;

   //¡¡NOTA LA DIFERENCIA CON LA SENTENCIA ANTERIOR!!
   r = not a > b;
   cout << "\"not\" a > b = " << r << endl;
   return 0;
   }

Nota que en el último grupo de sentencias las expresiones se agruparon con paréntesis las expresiones principales. Al igual que en álgebra, existen ciertas consideraciones que debemos conocer al momento de evaluar expresiones, estas reglas son las reglas de precedencia, que revisaremos en la siguiente entrega.

En este momento solo mencionaré que para forzar que una expresión se evalúe de la forma que queremos debemos utilizar los paréntesis, la importancia de los paréntesis se muestra en las 2 últimas evaluaciones:

   r = not (a > b);
   r = not a > b;

En la salida del programa, podrás darte cuenta que el resultado es diferente por la presencia o ausencia de los paréntesis.

Salida del programa de Operadores
Salida del programa de Operadores

Por Roberto C. González
Para Ethical Hack


¿Deseas aprender BIEN Seguridad Informática “desde el principio”? 

Aplicación de medidas para la implantación de la L.O.P.D. en las empresas

Obtendrás información ampliada y más recursos en comparación con el material que ofrecemos de forma gratuita, y material adicional, visita https://ehack.mx/portfolio-view/material-de-estudio-ceh-online/ para más información o ecríbenos a ceh@ehack.mx

Ethical hack
Ethical hack

 Fuente Imágenes:

“Todas las imágenes de esta sección”: by Nala Systems

Licencia Creative Commons
Operadores: Asignación, Aritméticos, Relacionales y Lógicos por Roberto C. González se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
Basada en una obra en http://ehack.info/cpp01/.
Permisos que vayan más allá de lo cubierto por esta licencia pueden encontrarse en https://about.me/carlosgbr.
Comentarios de Facebook

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.