Autor Tema: [Tutoriales C++] 3. Estructuras condicionales

0 Usuarios y 1 Visitante están viendo este tema.

Julio 04, 2012, 10:54:00 am
  • Mensajes: 53
  • Gracias recibidas: 26
  • Gracias dadas: 0
    • Ver Perfil
3. Estructuras Condicionales

Este 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 else


El 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 Switch

Es 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 while


Es 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 for

Otra 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ácticos


Pongamos 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:

int N;

cin>>N;

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.
Los siguiente usuarios agradecieron este mensaje:
  • 287 Visítas
  • 0 Comentarios
  • 1 Agradecimientos
  • 0 Favoritos