3. Estructuras CondicionalesEste tutorial es la continuación de
Lo sentimos, a los visitantes no se les esta permitido ver estos enlaces. Por favor
ingresa o
regístrate.
Ahora vamos a dar como indicar condiciones y repeticiones en los programas. Algo imprescindible para hacer cualquier programa.
3.1 Condiciones "Sí... Entonces..."Hablaremos ahora de la estructura if. Sirve para expresar condiciones (si se cumpla tal condicion, que se haga esta cosa, sino que se haga esta otra).
La estructura if es asi:
if (condicion)
{
Suceso que ocurre
}
Esto es muy sencillo, si se cumple la condicion que esta entre parentesis (por ejemplo, que pulses la tecla enter) ocurre un suceso determinado.
Os pongo un ejemplo:
if (1+1 == 2)
{
cout<<"El ordenador sabe sumar";
}
Aqui estamos diciendo que si la suma de 1+1 es igual a 2. Aparecera el texto de ahi.
Supongo que os habreis dado cuenta que he puesto dos veces el igual. Hay que ponerlo
dos veces para que compruebe la igualdad. Si no lo hará.
Os pongo otro ejemplo de if por si no os ha quedado del todo claro:
if (Cosita == 5)
{
cout<<"El resultado es 5";
}
Le estamos diciendo que si la variable Cosita es 5. Nos saldra un texto...
Por ultimo queda por decir algunos operadores para el if, por ejemplo para expresar una doble condicion habria que poner:
if ((condicion 1)&& (condicion 2))
{
Suceso...
}
if ((Cosita == 3)&& (Coste == 2))
{
cout<<"Comparados";
cout<<"Alguna cosita mas?"
}
Con esto le estamos diciendo que si se cumplen las dos variables, sucede el codigo entre los corchetes. Podemos encadenar más condiciones usando el mismo método:
if ((condicion 1)&& (condicion 2)&& (Condicion 3)&& (Condicion 4)...)
{
Suceso...
}
Otro operador es el || que seria como decir "o". Para ocurra la accion tiene que cumple una de las dos condiciones. Ejemplo:
if ((Cosa == 2) || (Coste == 3))
{
cout <<"Ha ocurrido algo?";
}
Si cualquier de las condiciones es cierta, aparece el texto de abajo.
Otro operador que vamos a ver es el ! que seria como decir "no". Si la condicion que hemos puesto no se cumple. Comienza la accion. Un ejemplo:
if (Cosa != 5)
{
cout<<"Cosa no es 5";
}
Si cosa no es 5, aparecerá ese texto.
También hay otros operadores para indicar "mayor que", "Menor que":
> (mayor que... )
>= ( mayor o igual )
< ( menor que... )
<= ( menor o igual)
Su uso es idéntico a lo anterior y no creo que haga falta hacer un ejemplo.
3.1.1 La sentencia elseEl Else es complementario al if, y sirve para que una accion ocurra si la condicion no es cierta.
if (condicion){
Si la condicion es cierta ocurre esto
}
else{
Si la condicion no es cierta, ocurre esto
}
Podríamos poner otro if, pero sería más lio y es mas eficiente usar esto.
3.1.2 Sentencia SwitchEs una expresion que realiza una determinada accion dependiendo del caso. Por ejemplo, si la variable casa es 1 ocurre tal cosa, si es 2 ocurre otra cosa, si es 3 otra distinta, etc...
Pongamos un ejemplo:
switch(casa)
{
case 1:
cout<<"La variable casa es 1";
break;
case 2: //¿El valor de 'variable' es 2?
cout<<"La variable casa es 2";
break;
case 3: //¿El valor de 'variable' es 3?
cout<<"La variable casa es 3";
break;
default: //Se ejecuta si no es cierta ninguna de las anteriores
cout<<"Ninguna de las anteriores es cierta";
break;
}
Declaramos la variable casa y ponemos el switch. Si la variable casa es 1 mostrara un texto, si es 2 muestra otro texto y si es 3 muestra otro. Si no es ninguna de las anteriores muestra otro texto.
La razon de break que he puesto, es para evitar que el codigo continue. Por tanto debemos poner nuestra accion entre el case y el break;
3.2 Sentencias iterativas "Repitete mientras..."Como dice el título, sirve para expresar que una sentencia se repita mientras se cumpla la condición:
while (condicion){
//suceso
}
3.2.1 La sentencia do whileEs una variante del while, el codigo de los corchetes se ejecuta con normalidad como si no hubiera nada. Cuando llega al final, comprueba que la condicion y si esta es cierta repite el codigo...
Su estructura es asi:
do
{
Accion
}
while (condicion);
3.2.2 La sentencia forOtra variante del while pero pensada repeticiones contadas.
Aquí tenemos un ejemplo de sentencia for:
for (int i = 0; i < 20; i++){
cout<<"Spam"<<endl;
}
Analizemos la parte de los parentesis:
(i = 0; i < 20; i++)
Se compone de 3 expresiones:
- La primera es una accion que se ejecutara cuando se ejecute la setencia for... Puede ser cualquier cosa, en esto caso se crea una variable y se le da valor 0...
- La segunda es la condicion, recordamos que esto funciona como un while. Asi que mientras que la condicion sea cierta, el codigo entre los corchetes se ejecutara...
- La tercera es una accion que se realizara cada vez que termine el codigo de los corchetes...
Repasemos pues, la primero expresion que se pone en el parentesis es una accion que se ejecuta junto con la setencia for, la segunda es la condicion de toda la vida y la tercera es una accion que ocurre cada vez que se llega al final de la setencia for...
Pos bien, os estareis preguntando porque una expresion tan complicada. Para saberlo necesitaremos imaginacion y ver lo que esta en el parentesis:
(i = 0; i < 20; i++)
La orden del principio es que la variable i es igual a 0. La condicion es que i sea menor de 20. La primera que se ejecuta es cierto porque le hemos puesto que i es igual a 0... Y que yo sepa, 0 es menor que 20.
Pero que pasa con la tercera expresion?. Esta indica que cada vez que se llegue al final de la setencia for se le sume uno a la variable.
Bien, ahora imaginaos que sois la maquina. Llegais a la setencia for
for (int i = 0; i < 20; i++){
cout<<"Spam"<<endl;
}
Le dais a la variable i el valor de 0 y ejecutais el for, ya que i es menor que 20 ^^.
Escribís la primera línea de texto, llegais entonces al final del for, le sumais uno a la variable y volveis a comprobar que la condicion sea cierta. Es cierta porque 1 sigue siendo menor 20 asi que volveis a crear el sprite...
Esto se repite hasta que la variable i sea mayor que 20. Esto hace que el codigo se repite 20 veces (revisad lo que he dicho antes, en cada vuelta aumenta la variable en 1. Por tanto tarda 20 vueltas en llegar a 20).
Por tanto, lo que estamos haciendo es escribir 20 veces. Todo de una manera sencilla (cuando le cogeis el tranquillo, es muy facil) y rapida. Ademas ocupais menos codigo con eso que escribiendo 20 veces eso (ademas que es mas coñazo ^^).
3.3 Ejemplos prácticosPongamos algunos ejemplos prácticos de lo que hemos dado.
Imaginemos que queremos crear un programa que nos calculase el cuadrado de los numeros del 1 al N. Siendo N un número que nos introduce el usuario.
Lo primero sería guardar el número N en una variable:
Y ahora tenemos que ir mostrando sus cuadrados... Como una sentencia que se repite un numero x de veces, lo mejor es usar un for. Que termine cuando lleguemos al numero N:
for (int Numero = 1; Numero <= N; Numero++)
{
cout<<Numero*Numero<<endl;
}
Empezamos desde el 1, y vamos haciendo operaciones y mostrandolas con el cout (si no ponemos comillas, el cout nos muestra el valor de una variable/operación). El proceso se repite hasta que pasamos al numero N:

Ahora supongamos que querremos crear un programa que nos calcule el salario de unos empleados. Dicho salario se paga así:
- Si el número de horas trabajadas es inferior a 20 se paga una cantidad fija de 240 euros.
- Si el número de horas trabajadas es superior a 20 entonces se paga un fijo de 260 euros + 15 euros por hora extra trabajada (número de horas que superen las 20h)
Basicamente, tenemos que poner con un if si las horas del empleado son 20 o más:
int horas,salario;
cin >> horas; // Leemos las horas
if (horas<20)
{
salario = 240; // Si trabaja menos de 20 horas, se le aplica el salario fijo
}
else
{ salario = 260 + horas * 15; // Si trabaja mas, se le aplica este salario
}
cout << salario; // Se muestra el salario por pantalla
Y esto es todo por hoy. Os animo a prácticar ejemplos e intentar crear algunos programas sencillos:
- Un programa que le indiques tu fecha de nacimiento, y te calcule tu edad.
- Un programa que le introduzcas dos numeros, y le puedas decir si lo sumas, lo restas, lo multriplicas o los divides.
- Un programa que te resuelva ecuaciones de segundo grado (recordamos que las ecuaciones de segundo grado se resolvían con una formulita).
Cualquier duda, consultadme.