Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


2.2. if y sentencias compuestas

Nuestro primer ejemplo de la orden "if" ejecutaba una única sentencia cuando se cumplía la condición. En un programa real, más complejo, es muy habitual que haya que dar varios pasos, no sólo uno. La forma de hacerlo es agrupar todos esos pasos entre llaves ( { y } ), formando lo que se conoce como una "sentencia compuesta":

/*  ej020201.c                   */
/*  if y sentencias compuestas   */
/*  Ejemplo del apartado 2.2     */
/*  Curso de C, Nacho Cabanes    */

#include 

int main() 
{
    int numero;

    printf("Escribe un número: ");
    scanf("%d", &numero);
    if (numero > 0)
    {
        printf("El número es positivo.");
        printf("Recuerde que también puede usar negativos.");
    }   /* Aqui acaba el "if" */

    return 0;
}   /* Aqui acaba el cuerpo del programa */

En este caso, si el número es positivo, se hacen dos cosas: escribir un texto y luego... ¡escribir otro! (Claramente, en este ejemplo, esos dos "printf" podrían ser uno solo; más adelante iremos encontrando casos en lo que necesitemos hacer cosas "más serias" dentro de una sentencia compuesta).

Se pueden incluir siempre las llaves después de un "if", como medida de seguridad, porque un fallo frecuente es escribir una única sentencia tras "if", sin llaves, luego añadir una segunda sentencia y olvidar las llaves… de modo que la segunda orden no se ejecutará si se cumple la condición, sino siempre, como en este ejemplo:

/*  ej020202.c                        */
/*  Sentencias compuestas incorrectas */
/*  Ejemplo del apartado 2.2 (b)      */
/*  Curso de C, Nacho Cabanes         */

#include 

int main() 
{
    int numero;

    printf("Escribe un número: ");
    scanf("%d", &numero);
    if (numero > 0)
        printf("El número es positivo.");
        printf("Recuerde que también puede usar negativos."); /* Error */

    return 0;
}

En este caso, siempre se nos dirá "Recuerde que también puede usar negativos", incluso cuando hemos tecleado un número negativo. En un vistazo rápido, vemos las dos sentencias tabuladas a la derecha y tendemos a pensar que las dos dependen del "if", pero no es así. Se trata de un error difícil de detectar. Por eso, muchos autores recomiendan incluir siempre las llaves tras un "if", e incluso algún lenguaje de programación posterior a C obliga a que siempre sea así.

Ejercicio propuesto 2.2.1: Crea un programa que pida al usuario que teclee un número que no sea cero. Si teclea un cero, responderá "Es cero!" y lo volverá a pedir (una única vez más).