Intrucciones de alternativa if else, compréndalo en c++

Te voy a mostrar la manera de tomar alternativas dentro de un programa, con esto vas a comenzar a realizar programas más complejos y con más calidad, puesto que podrás realizar comprobaciones y tomar decisiones con respecto a los datos que introducen los usuarios de los programas.

Hasta ahora hemos realizado programas secuenciales. Esto significa que todas nuestras instrucciones eran evaluadas y ejecutadas secuencialmente por el compilador, línea a línea. Ahora vamos a programar alternativas, quiere decir que según nuestro código y los valores introducidos por el usuario el compilador evaluará y ejecutará líneas de código de manera alternativa, no secuencial.Déjame que te explique esto con ejemplos, la imagen siguiente muestra un programa secuencial, te explico.

En esta imagen, tenemos un programa que pide la edad al usuario y la muestra por pantalla. Es un programa secuencial, puesto que todas las instrucciones las evalúa el compilador una a una. Lo que te voy a mostrar con las sentencias if y else, es como realizar programas en los que el código puede tomar varias alternativas.

La sentencia if, tras evaluar una expresión lógica, ejecuta una serie de sentencias en caso de que la expresión lógica sea verdadera. Su sintaxis es:

La expresión lógica es una expresión vista en artículos anteriores, caben expresiones relacionales y expresiones lógicas cuyo resultado sea verdadero o falso. Esta sentencia condicional también puede ser compuesta. Es igual que la anterior pero se le añade un apartado que es el else que contendrá instrucciones que se ejecutarán en caso de que la expresión evaluada por el if es falsa. Su sintaxis es la siguiente.

Dentro de una sentencia if se puede colocar otra sentencia if y asi sucesivamente, esto es lo que se denomina como anidamiento, y permite crear programas donde se valoren expresiones complejas.

Decir que, tanto en el if como en el else sólo hay una única sentencia entonces en la sintaxis podemos eliminar las llaves ({}). Para que este concepto te quede completamente claro vamos a ver un ejemplo en c++. El ejemplo siguiente va a mostrar un programa con alternativas. El programa pedirá una nota de 0 a 10, y según esa nota escribirá en la pantalla si es un aprobado, si la nota es mayor que 5 o si es un suspenso, si la nota es menor que cinco.

Como se observa en el código, este programa puede tomar dos alternativas, si el número introducido por el usuario es menor que 5 entonces el compilador se olvida del else y sólo ejecuta las sentencias del if, en caso contrario,el número es mayor que 5, el compilador se olvida del if y ejecuta lo que hay en el else.

Esto es sólo una introducción a las sentencias condicionales, para que te quede claro y trabajes el concepto, haz los siguientes ejercicios:

  1. Copia el ejemplo anterior, compilalo y prueba que te funcione.
  2. Haz un ejercicio similar sabiendo que si la nota esta entre 0 y 5 sin incluir el cinco tiene que mostrar Suspenso, si esta entre 5 y 6 incluido, es Bien. Si esta entre 6 y 9 inclusive es Notable. Y si es mayor que nueve escriba por pantalla Sobresaliente. Trabaja las expresiones relacionales.
  3. Haz un programa que dado un número te saque un mensaje por pantalla diciendo si es positivo o negativo.

Trabaja estos ejercicios y relee el artículo para dejar claro este concepto. Como siempre si tienes alguna duda, puedes consultármela mediante los comentarios. Yo mismo responderé con gusto a las mismas.

Un saludo,

Javi Pizarro

Acerca de Javi Pizarro

Ingeniero informático dedicado a la docencia, con experiencia en creación de programas de gestión y desarrollo de aplicaciones web.
Esta entrada fue publicada en Programacion y etiquetada , , , , , , , , , , , , . Guarda el enlace permanente.

15 respuestas a Intrucciones de alternativa if else, compréndalo en c++

  1. Samu dijo:

    #include
    #include
    #include
    using namespace std;

    int main(){
    double nota;

    cout<>nota;

    if(nota<5)
    cout<<"Suspenso";

    if(5<nota<6)
    cout<<"Bien";

    if(6<nota<9)
    cout<9)
    cout<<"Sobresaliente";

    getch();
    }
    ¿Tengo algo mal? Esque cuando lo ejecuto e introduzco la nota me salen tres nombres seguidos p.e mi nota 4 y me aparece SuspensoBienNotable

    gracias

    • Samu dijo:

      #include
      #include
      #include
      using namespace std;

      int main(){
      double nota;

      cout<>nota;

      if(nota<5)
      cout<<"Suspenso";

      if(5<nota<6)
      cout<<"Bien";

      if(6<nota<9)
      cout<9)
      cout<<"Sobresaliente";

      getch();
      }
      asi es como lo tengo es que al copiar y pegar lo ha hecho mal

      • Javi Pizarro dijo:

        Buenas samu, el planteamiento y el análisis del problema esta muy bien, pero tienes errores de sintaxis que te explico:
        1.- No puedes poner 56, para ello tienes que usar los operadores &&(and) o el ||(or). Deberias de ponerlo de la siguiente manera if(nota>5 && nota<6){…..} El compilador evaluará las dos expresiones relacionales y si se cumplen las 2 entonces devolverá verdadero y ejecutará lo que haya dentro del if.
        2.- Al principio debes de darle un valor a nota. Debes de decirle al usuario que introduzca una nota. se haria con un cout para mandarle un mensaje tipo; "Introduzca una nota: " y luego con el cin recoges ese valor que introduce el usuario en la variable nota.
        Espero que te sirva de ayuda. Mandame otro comentario y me dices si al final te ha salido el problema. Vas muy bien y muy avanzado. Ánimo.

  2. alexhr dijo:

    Ola buenas, a mi me ha pasado algo parecido a lo de Samu, pero llevo ya varios días intentando corregirlo y nada. A ver si me podrías decir en qué me equivoco.
    Me quedaría algo así:

    #include
    #include
    #include
    using namespace std;
    int main () {
    double nota;
    cout<>nota;

    if(5<=nota && nota<=6) {
    cout<<"bien"; }

    if(6<nota && nota<=9) {
    cout<<"notable";}

    if(9<nota && nota<=10){
    cout<<"sobresaliente"; }

    else{
    cout<<"suspenso"; }
    getch();

    }

    • Javi Pizarro dijo:

      Muy bien, el programa lo tienes bien, tienes el siguiente problema:
      declaras una variable nota de tipo real pero, ¿que valor tiene esa variable?. Veo que con un cout la muestras por pantalla pero eso no es suficiente. El valor de esa variable es indeterminado….
      ¿Qué debes hacer? pues muy sencillo debes de asignarle un valor a la variable nota, ¿Cómo? con una introducción mediante la entrada estándar, mandándole un mensaje al usuario (supón que es el profesor) y que este la introduzca. Hazlo de esta manera que es lo que te falta.
      cout<>nota;

  3. alexhr dijo:

    #include
    #include
    #include
    using namespace std;
    int main () {
    double nota;
    cout<>nota;

    Esta parte esk se cambia por defecto al publicarlo en el blog; pero en realidad está bien!

  4. redcash dijo:

    hola, le estoy dando vueltas a este codigo y no me ssale bien a ver si me puedes ayudar.
    cuando pogo 1 sale suspendido, con el 2 suspendido, con el 3suspendido,con el 4 suspendido pero cuando pongo el 5 sale biensuspendido el 6 biensuspendido el 7 notablesuspendido , el 8 notablesuspendido, el 9 notablesuspendido y el 10 sobresaliente.

    este es mi codigo:
    #include
    #include
    #include

    using namespace std;

    int main(){
    double nota;

    cout <>nota;

    if (5<=nota && nota<=6){
    cout<<"Bien";}
    if (6<nota && nota<=9){
    cout<<"Notable";}
    if (9<nota && nota<=10){
    cout<<"Sobresaliente";}
    else{
    cout <<"Suspendido";}

    getch();
    }

    • Javi Pizarro dijo:

      Muy buenas y bienvenido, lo tienes casi. Te cuento el pequeño fallo que tienes.
      Las expresiones lógicas del if, si son verdaderas hacen que se ejecuten las sentencias que haya dentro del if. Y si son falsas hacen que se ejecuten el else.
      Por cada if va asociado un else. Tu asocias el último else al if de la nota entre 9 y 10. Entonces el compilador al tu introducir 5 evalua la primera expresión y pone “Bien”, a continuación evalua el siguiente if y, como la expresión (en el caso de que nota sea 5) es falsa pues se lo salta, luego evalua el siguiente y así hasta llegar al if del sobresaliente. Como la nota es 5 esa expresión es falsa por tanto hace el else que tienes (Por que ese else SOLO esta asociado a ese if) y escribe también suspenso.
      Para solucionarlo, quita el else y pon otra condición if que diga if(nota>=0 && nota<5) { cout<<"Suspenso";}
      Espero que te haya solucionado tu duda, gracias a esta duda escribiré un artículo explicando los if/else anidados. Asi que a mi también me has ayudado, por que al saber programar doy muchas cosas por sabidas y no me adentro lo que debiera.
      Escribeme si has solucionado el problema.
      Muchas Gracias.

  5. redcash dijo:

    por cierto veo que al publicar el codigo me cambia c*out <>nota; por c*outnota.Pero si pido que se introduzca un numero y lo guardo con el c in.

  6. redcash dijo:

    Estupendo ahora si funciona bien,muchas gracias por tu ayuda y por haber creado este blog.Por cierto podrias poner mas ejemplos del modulo % no me queda muy claro y no se bien como hacer el ejercicio del cambio de monedas.

    • Javi Pizarro dijo:

      Buenas redcash, me alegro de que todo te fuera bien. Estoy preparando artículos sobre el anidamiento de IF/ELSE y también solucionaré el problema que propuse sobre las máquinas expendedoras para el uso del operador %. Voy a dejar un tiempo de unos 4 o 5 días para que la gente que sigue el blog INTENTE los ejercicios. Es la manera de aprender y de pensar en programación. Un saludo.
      Javi Pizarro.

  7. Samael dijo:

    Bueno solo escrivo el comentario para felicitarte por el curso… esta muy bueno y entendible… hasta el momento voy en este articulo… y no se me a complicado en nada… sigue asi…

  8. PANCHITO dijo:

    Se me hizo un poco dificil pero ya le entendi, como dices Javi, a cada if le pertenece un else. Tuve el mismo problema de mas arriba de Redcash, el ultimo else se relacionaba solo con el ultimo if y me mostraba invalido todo menos la sentencia del ultimo if.
    Asi quedo mi ejercicio.

    #include <iostream>
    #include <conio.h>
    #include <string.h>

    using namespace std;

    int main(){
    double num;

    cout<<“Que nota obtuviste? “;
    cin>>num;

    if(num<5&&num>=0)
    cout<<“Suspenso”;
    if(num==5||num==6)
    cout<<“Bien”;
    if(num>6&&num<=9)
    cout<<“Notable”;
    if(num==10)
    cout<<“Sobresaliente”;

    if(num<0||num>10)
    cout<<“No ingresaste una nota valida”;
    getch();
    }

  9. teegui dijo:

    se puede utilizar para palabras???necesito que el usuario ingrese el nombre de un producto y el programa me diga en que gondola ubicarlo

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s