Estructuras de control

Las estructuras de control controlan en flujo de ejecucion de un programa o funcion. Las estructuras de control permiten combinar instrucciones o sentencias individuales en una simple unidad logica con un punto de entrada y un punto de salida. Las instrucciones o sentencias se organizan en tres tipos de estructuras de control que sirven para controlar el flujo de la ejecucion: secuencia, seleccion (desicion) y repeticion . Hasta este momento solo se ha utilizado el flujo secuencial. Una sentencia compuesta es un conjunto de sentencias encerradas entre llaves ( { y } ) que se utiliza para especificar un flujo secuencial

{

   sentencia 1;

   sentencia 2;

  sentencia 3;

      :

      :

sentencia n;

}

1.6   Estructuras selectivas

   1.6.1 Estructura de selección if()

La sentencia if.- En C, la estructura de control de seleccion principal es la sentencia if . La sentencia if tiene dos alternativas o formatos posibles. El formato mas sencillo tiene la sintaxis siguiente:

if (Expresion)  accion

donde: expresion  es la expresion logica que determina si la accion se ha de ejecutar y accion es aquella que se ejecuta si la expresion logica es verdadera.

La sentencia if funciona de la siguiente manera. Cuando se alcanza la sentencia if dentro de un programa, se evalua la expresion entre parentesis que viene a continuacion de if . Si la expresion es verdadera, se ejecuta accion, en caso contrario no se ejecuta accion ( en su formato mas simple, accion es una sentencia simple y en los restantes formatos es una sentencia compuesta) En cualquie caso la ejecucion del programa continua con la siguiente sentencia del programa. Otro sistema de representar la sentencia if es:

if (condicion) sentencia

condicion es la expresion entera (logica)

sentencia es cualquier sentencia ejecutable, que se ejecutará solo si la condicion toma un valor distinto de cero.

    1.6.2 if()-else

Un segundo formato de la sentencia if es la sentencia if-else . Este formato de la sentencia if tiene la siguiente sintaxis:  if   (expresion)   acción1   else   acción2;

expresion.- es la expresion logica que determina la accion a ejecutar

acción1  .- es la accion que se realiza si la expresion logica es verdadera

acción2  .- es la accion que se realiza si la expresion logica es falsa

En este formato acción1  y acción2   son individualmente, o bien una unica sentencia que termina en un punto y coma (;) o un grupo de sentencias encerrado entre llaves. Cuando se ejecuta la sentencia if else, se evalua expresion. Si  expresion es verdadera, se ejecuta acción1  y en caso contrario se ejcuta acción2.

Ejemplos: 

1.    if (salario>100000)

        salario_neto=salario-impuestos

    else

        salario_neto=salario

Si salario es mayor que 100000 se calcula el salario neto, restandole los impuestos; en casocontrario (else) el salario neto es igual al salario (bruto)

2.    if (Nota>=5)

        puts ("Aprobado");

    else

        puts("Suspenso");

Si Nota  es mayor o igual que 5 se escribe Aprobado; en caso contrario, Nota menor que 5, se escribe Suspenso

FORMATOS

1.    if (expresion logica)                            2.    if (expresion logica

        sentencia                                                        sentencia1

                                                                           else

                                                                                sentencia2

 

3.    if (expresion logicasentencia

4.    if (expresion logicasentencia1 else sentencia2

Si expresion logica es verdadera se ejecuta sentencia o bien sentencia1, si es falsa (si no, en caso contrario) se ejecuta  sentencia2

1.6.3 switch-case  

La sentencia  switch es una sentencia C que se utiliza para seleccionar una entre multiples alternativas. La sentencia switch es especialmente utiil cuando la seleccion se basa en el valor de una variable simple o de una expresion simple denominada expresion de control o selector. El valor de esta expresion puede ser de tipo int o char, pero no de tipo float ni double.

Sintaxis:

        switch (selector)

        { case etiqueta1: sentencias1;

           case etiqueta2: sentencias2;

            case etiqueta3: sentencias3;

                            :

                            :

        case etiqueta n: sentencias n;

         default:  sentencias x    /*opcional*/

La expresion de control o selector se evalua y se compara con cada una de las etiquetas de case . La expresion selector debe ser un tipo ordinal (por ej. int, char pero no float o string). Si el valor de la expresion selector es igual a una de las etiquetas case - por ejemplo etiqueta1 - entonces la ejecucion comenzara con la primera sentencia de la secuencia sentencia y continuara hasta que se encuentra el final de la sentencia de control switch, o hasta encontrar la sentencia break. Es habitual que despues de cada bloque de sentencias correspondiente a una secuencia se desee terminar la ejecucion del switch; para ello se situa la sentencia breal como ultima sentencia del bloque break hace que siga la ejecucion en la siguiente sentencia switch.

Sinaxis con break

switch (selector)

{

    case etiqueta1: sentencias1;

                            break;

  case etiqueta2: sentencias2;

                            break;

     :                       :

      :                      :

case etiqueta n: sentencias n;

                            break;

    default:        sentencias x;        /*opcional*/

}

 

Uso de sentencias switch en menus

La sentencia if-else es mas versatil que la sentencia switch y se puede utilizar unas sentencias if-else anidadas o multidecision, en cualquier parte que se utiliza una sentencia case. Sin embargo, normalmente, la sentencia switch es mas clara. Por ejemplo, la sentencia switch es idónea para implementar menús. Un menú de un restaurante presenta una lista de alternativas para que un cliente elija entre sus diferentes opciones. Un menú en un programa de una computadora hace la misma funcion: presentar una lista de alternativas en la pantalla para que el usuario elija  una de ellas.

 1.6.4 Anidaciones

Sentencias if-else anidadas

Hasta este punto, las sentencias if implementan decisiones que implican una o dos alternativas. En esta sección, se mostrara como se puede utilizar la sentencia if para implementar decisiones que impliquen diferentes alternativas. Una sentencia if es anidada cuando la sentencia de la rama verdadera o rama falsa, es a su vez una sentencia if . Una sentencia if anidada se puede utilizar para implementar decisiones con varias alternativas o multialternativas.

Sintaxis:

            if (condicion1)

                sentencia1

        else   

            if (condicion2)

                sentencia2

                     :

                    :

             else

                if (condicion n)

                    sentencia n

               else

                    sentencia x

Ejemplo:

        if (x>0)

            num_pos = num_pos+1;

        else

            if (<0)

                num_neg=num_neg+1;

            else

                num_ceros=numceros+1;

 

 

BIBLIOGRAFIA.

Programacion en C, metodologia, estructura de datos y objetos

Luis Joyanes Aguilar, Ignacio Zahonero Martínez

Editorial McGraw Hill