![]() |
|---|
![]() |
![]() |
![]() |
Operadores l�gicos dentro de los if
Varias sentencias dentro de un if
Una variable utilizada
como expresi�n.
Switch.
Introducci�n:
No
siempre los problemas que se nos plantean requieren solo de operaciones que se suceden sin
disyuntivas. Muy por el contrario, muchas
veces es necesario seleccionar entre dos o m�s variantes.
Para ello
C++ dispone de las operaciones condiciona�les: if y switch.
Estudio del if.
Como
todas las instrucciones y funciones propias en C++ se debe escribir con min�sculas. Su estructura es:
if (expresi�n)
instrucci�n1;
[else
instrucci�n 2;] instrucci�n
3; |
< menor
que |
Cuando la <expresi�n> es verdadera, su resultado
ser� un n�mero diferente de cero, y cuando es falsa, cero. Si el resultado es distinto
de cero, esto es, la <expresi�n> es verdadera, se ejecuta la instrucci�n1 y a continuaci�n la instrucci�n3; si, por el con�trario, el resultado
de la <expresi�n> es cero, esto es, la <expresi�n> es falsa, y existe el
comando else, se ejecutar� la instrucci�n2 y a continuaci�n la instrucci�n3.
Si no existe el else, entonces se
ejecutar� la instrucci�n3.
Veamos
una funci�n que diferencia entre dos n�meros, de
tipo float, cu�l es el mayor, y devuelva su
valor .
float maximo (float a,float b) |
El
programa puede tener una peque�a variaci�n si se elimina la variable �mayor�.
float maximo (float a,float b) |
Los if anidados.
Los if
pueden estar unos dentro de otros. As�:
if( condici�n1 ==
verdadero ) |
En el ejemplo anterior la �ltima l�nea refiere
simplemente la �condici�n1� como falsa, ya que al no cumplirse el primer if nunca se
llega a evaluar si la �condici�n2� es
verdadera o no, por lo que no puede decirse nada sobre ella.
Para
aclarar la dependencia o referencia entre los if y los else pueden incluirse entre {} las
operaciones correspondientes a cada uno. As�
if( condici�n1 == verdadero ) |
Operadores l�gicos dentro de los if
Tambi�n los if pueden tener operadores l�gicos dentro de
<expresi�n>.
Veamos como
se usan los operadores l�gicos en la siguiente funcion que nos permite transformar las
may�sculas en min�sculas y viceversa , y que si el dato transferido no es una letra
devuelve el mismo valor .
int Mayuscula_Minuscula(char
caracter,char &resultado) |
Observe
que para significar los caracteres, Z, se usa � �, mientras que cuando se
encierran varios caracteres que forman una cadena se utiliza � �.
Como se
ve, en las expresiones que deben evaluar los if aparecen dos proposiciones l�gicas
vinculadas por el operador && (AND). Esto
significa que deben cumplirse ambas condiciones.
Tabla de verdad de AND y OR
| valor 1 | valor 2 | AND | OR |
| 1 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 0 | 0 | 0 |
Varias sentencias dentro de un if
Veamos en la siguiente
funci�n como se incluyen varias sentencias dentro de un if.
Para ello se forma un bloque con los consiguientes{} dentro de los cuales se situan las
sentencias que queremos se realizan al cumplirse el if. Lo mismo podemos hacer
despues de un else
void Ordenar(float &a, float
&b) |
Usamos en la funci�n la
transferencia de parametros por referencia ya que para
ordenar los valores deberemos de intercambiar, si fuera necesario, el contenido de a y de
b.
En la funci�n solo existe la
opci�n a>b.
Se ejecutar�n tres l�neas de programa dentro del if. En el bloque pueden existir tantas l�neas como
sean necesarias.
Una variable utilizada como
expresi�n.
La
decisi�n del if se efect�a seg�n sea diferente de cero o igual a cero el valor que
alcanza la <expresi�n>. Tambi�n C++ acepta que la <expresi�n> sea una
variable num�rica u operaciones aritm�ticas.
La siguiente funci�n permite alternar el valor de una variable. Si ella llega a la funci�n como 0 sale como 1 y viceversa.
int inversor(float dato) |
Aqu� se
observa c�mo la <expresi�n> es simplemente la variable �dato�.
Es
tambi�n v�lido realizar una operaci�n aritm�tica dentro de la <expresi�n> y seg�n el resultado que se asigne al lado
izquierdo de la operaci�n, as� se realizar� o no el if.
La siguiente funci�n devuelve una valor
verdadero si el n�mero que ingresa en ella como par�metro es mayor que un dato
preestablecido.
int filtro(int dato) |
Switch.
Otra variante para tomar alternativas de caminos es el switch.
La
sintaxis del switch es:
switch <expresi�n> |
El
resultado de <expresi�n> debe de ser un valor entero o convertible a entero sin
dudas.
Este tipo
de operaci�n permite decidir --seg�n el valor que tome una variable-- cu�l acci�n se
ejecuta de entre un grupo de operaciones previamente construidas.
La siguiente funci�n cambia el color
que estamos usando seg�n la selecci�n que se haga en un men� dise�ado previamente al
efecto.
void cambio_color(int seleccion) |
Dentro de la <espresion> que debe evaluar el
case esta contenida una operaci�n. Esto se hace ya que seleccion fue captado como char y, por tanto, su contenido es el c�digo ASCII
correspondiente, al restarle 48 lo llevamos a 0.
El switch selecciona
el case en funci�n del resultado final de la
operaci�n que exista en <expresi�n>. De manera que si
<expresion> da por resultado 1 la sentencia que se ejecutar� ser� la que esta a la
derecha de ese case.
Los case pueden ir de 0 hasta 255.
En cada case puede haber m�s de una l�nea, las cuales se
encerrar�n entre {}. Las acciones que
queremos se realicen concluyen con un break, o
de lo contrario se realizar�n todas las l�neas de programa que hay en los siguientes case al primero que se ejecute
Si la
<expresi�n> no coincide con ning�n <valor> se ejecutar� la l�nea
correspondiente a default.
El operador ?
Por �ltimo veamos el operador ?
Su sintaxis es:
| <variable> = <condici�n> ? <valor1> :
<valor2>; |
Si la
<condici�n> es cierta, --diferente de 0--, el valor que se asignar� a la
variable es valor1 . Si la <condici�n> es falsa0--,
entonces se asignar� el valor2 a la variable.
Veamos la funci�n inversor que estudiamos antes como quedar�a si utilizamos este
operador
void inversor(int &a) { int
a=0; |
Si el valor inicial es 0, la <condici�n> ser�
verdadera, y a tomar� el valor uno y; por el contrario, si fuera diferente de 0,
a adquirir� el valor cero.
![]() |
![]() |