1.7 Condiciones y Operadores relacionales

Dijimos que una condición es una expresión cuyo valor puede ser verdadero o falso, y pusimos el ejemplo

     ( nota >= 4 )

que resultaba verdadero si la variable nota contenía un malor mayor o igual a 4, o falso si dicho valor era menor.

El signo >= que compara los dos elementos, se llama operador relacional, y hay 6 operadores de este tipo definidos en C++:

     >=   mayor o igual
     <=   menor o igual
     >     mayor
     <     menor
     !=   distinto
     = = igual

Nótese que el operador "igual" lleva dos signos de igualdad, para diferenciarlo de la asignación:

a = 27    // Es una asignación, guarda el valor 27 en a y devuelve un valor verdadero si puede hacer la asignación (En la práctica, devuelve siempre verdadero)

a = = 27   // Es una comparación, devuelve verdadero si a es 27 ó falso si tiene otro valor. No cambia el contenido de a.

Una comparación sólo puede analizar dos elementos a la vez, por lo que la comparación de tres

   (a = = b = = c)

no es válida y es un error.

Para realizar esta comparación, se deben comparar de a dos: (a = = b) y (b = = c). Esta comparación se realiza utilizando el operador lógico && (and)

     (( a = = b) && (b = = c)) 

Esta operación da verdadero cuando se cumplen ambas comparaciones. Si al menos una de las comparaciones es falsa, la condición da falso.

De la misma manera, se utiliza el operador lógico || (or)

     (( a = = b) || (b = = c)) 

Esta condición da verdadero si al menos una de las comparaciones es verdadera.

Veamos el siguiente ejemplo:



// ejemplo4.cpp: DEterminar si un año es bisiesto o no
// Un año es bisiesto si es múltiplo de 4 y no es múltiplo de 100, a menos que sea múltiplo de 400.

#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
       int a;
       cout<<"Ingrese un año:";
       cin>>a;
       if (a%4!=0)
       {
             cout<<"No es bisiesto";
       }
       else
       {
             if (a%100!=0)
             {
                    cout<<"Es bisiesto";
             }
             else
             {
                    if (a%400!=0)
                    {
                           cout<<"No es bisiesto";
                    }
                    else
                    {
                           cout<<"Es bisiesto";
                    }
             }
       }
       cin>>a;
}



Este programa utiliza tres instrucciones if una dentro de la otra para ver si un año es bisiesto o no. Utilizando los operadores || y && es posible escribirlo mucho más fácilmente:



// ejemplo4.cpp: DEterminar si un año es bisiesto o no
// Un año es bisiesto si es múltiplo de 4 y no es múltiplo de 100, a menos que sea múltiplo de 400.

#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
       int a;
       cout<<"Ingrese un año:";
       cin>>a;
       if ( (a%4!=0) || ( (a%100==0) && (a%400!=0) ) )
       {
             cout<<"No es bisiesto";
       }
       else
       {
             cout<<"Es bisiesto";
       }

       cin>>a;
}



No hay comentarios:

Publicar un comentario