UNIDAD 3 estructuras de control

ESTRUCTURAS DE CONTROL EN C/C++


En todos los algoritmos realizados hasta este punto, cada instrucción se ha ejecutado exactamente una vez en el orden en que aparecería. Sin embargo, con frecuencia, se encuentran situaciones en las que se deben proporcionar instrucciones alternativas que pueden o no ejecutarse dependiendo de los datos de entrada, reflejado el cumplimiento o no de una determinada condición.
Una sentencia puede constar de una de las siguientes:
Una sentencia única o un bloque de sentencias o ninguna sentencia (sentencia vacía).

Se pueden dividir las sentencias de control de programa principalmente en 3 categorías:
a) Secuenciales
b) Selectivas
c) Repetitivas


a) SECUENCIALES

Las instrucciones se ejecutarán en el orden en que ellas aparecen en el programa, a menos de que se indique lo contrario, el sistema ejecutará automáticamente los enunciados en una secuencia.


b) SELECTIVAS

Con este tipo de secuencia se toman decisiones lógicas. Con éstas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra.  La condición puede resultar verdadera o falsa, así es como se decide si la condición se ejecuta o no.
Las condiciones se especifican utilizando expresiones lógicas  y  relacionales.
Existen tres tipos de estructuras de selección.

Simple
Se ejecuta una acción si la condición es verdadera, si la condición es falsa pasa por alto la condición.
 Se utiliza la estructura if (condicion) en este tipo de secuencia.

Bicondicional
La ejecución de la acción de esta secuencia depende del valor de esta. La acción de diferente en cada valor. Se utiliza la estructura if (condicion) else en este tipo de secuencia.

Condición múltiple
Depende del valor de una expresión la acción que se ejecutara, pero en esta secuencia se decidirá entre diferentes acciones. Se utiliza la estructura switch (expresion) en esta secuencia.

Repetitivas
Repiten una secuencia de instrucciones un número determinado de veces, en tanto cierta condición se mantenga verdadera. 
Esta secuencia proporciona 3 tipos de estructuras repetitivas:
- While
- For
-Do while

En las estructuras selectivas y en las estructuras repetitivas se utilizan expresiones lógicas y relacionales.

Operaciones Relacionales

Las expresiones relacionales pueden tomar la siguiente forma:

         operando1 operador relacional operando2

Los operandos son variables, valores constantes o expresiones de algún tipo de dato que deben ser del mismo tipo y el operador relacional determina la relación que existe entre dos valores.
Los operadores relacionales son los siguientes:

·              <
·          >
·          <=
·          >=
·          ==
·          !=


Ejemplo:
·         4<5
·         x<=y
·         z==89



Operaciones Lógicas

Las expresiones lógicas se forman relacionando operandos booleanos mediante operadores lógicos, de la siguiente manera:

Operando 1    operador lógico      operando 2

Donde los operandos son expresiones relacionales que proporcionan dos únicos valores el valor de verdad y falso y  operador lógico corresponde a los operadores lógicos.
Los operadores lógicos son los siguientes:

·         &&
·         ||
·         !


Ejemplo:

{(num<34) &&(num>=345)} || {num<=214}



PRESEDENCIA Y ASOCIATIVIDAD DE OPERADORES
1    (  )                   
2    *   /  %
3    +  -
4    > , < , >= ,  <= ,  == , ! =
5    && , || , !  
6    =   


SENTENCIA IF


Dado que las expresiones lógicas toman el valor verdadero o falso, se necesita una sentencia de control que dirija a las computadoras para ejecutar una sentencia si la expresión es verdadera, en caso contrario no se toma ninguna acción.

La forma general de la sentencia if es:


            if (condición) sentencia;

La sentencia if funciona de la siguiente manera:

1. Se evalúa la expresión lógica

2. Si la expresión toma el valor verdadero, se ejecutará la sentencia y sino sigue con la siguiente sentencia.
 


Ejemplo:

If (num<20)
Cout<<”el valor esta dentro del rango”;


SENTENCIA IF/ELSE


La sentencia if/else se ejecuta una acción cuando toma un valor de verdad y cuando el valor es falso o no cumple con la condición cumple con otra acción.
La forma general de la sentencia if/else es:


if (condición)
   sentencia;
     else
   sentencia;

La sentencia if funciona de la siguiente manera:

1. Se evalúa la expresión lógica

2. Si la expresión toma el valor verdadero, se ejecutará la sentencia y sino sigue con la siguiente sentencia.

3. Si la expresión toma el valor de falso entonces se ejecutara la sentencia.

4. El control pasa de nuevo inmediatamente a la siguiente sentencia del programa.


Ejemplo:

If (num<44)
   Cout<<”esta dentro del rango”;
Else
  Cout<<”esta fuera del rango”;



SENTENCIA IF/ELSE ANIDADAS


La sentencia que sigue de la palabra else puede ser cualquiera, incluso otra sentencia de este mismo tipo. Cuando una o más sentencias otra sentencia, se dice que dicha sentencia esta anidada y al proceso anidamiento.
Una sentencia if anidad se puede utilizar para construir decisiones con diferentes alternativas.


if (condición)
sentencia;
else if (condición)
sentencia;
else if (condición)
sentencia;



if (condición)
      sentencia;
   else
     if (condición)
           sentencia;
         else
          if (condición)
                sentencia;
              else
                     sentencia;



Ejemplo:

 If (num<=56)
   Cout<<”Esta dentro del rango”;
     Else
        If (num>=115)
            Cout<<”Esta fuera del rango”;
         Else
            If (num<=0)
             Cout<<”Valor no Valido”;




SWITCH-CASE


La sentencia múltiple switch ( ) está formada por una serie de etiquetas case que solamente cumplen con una condición determinada y un caso opcional default en el que están contemplados todos los valores que no se encuentran en los case.

La forma general de las sentencias switch ( ) es:


   switch (expresion)
   {
      case constante1:
     sentencia1;
     break;
      case constante2:
     sentencia2;
     break;
      case constante_n:
     sentencia_n;
     break;
     default:
     sentencias;
     break;


En esta sentencias el case solamente evalúa una expresión y no mas aunque puede llevar n numero de case, pero son un gran numero se recomienda usar ciclos. Estas expresiones solo puede ser de tipo entero y de un solo carácter, al igual las constantes que se colocan.
Si el valor de la expresión es igual a alguna de las constantes, se ejecutará el bloque de instrucciones hasta encontrar la instrucción break, de lo contrario pasa al siguiente bloque y si no cumple ninguno de los bloques entonces se ejecuta las sentencias del default.

Ejemplo:

Switch (confiabilidad_del_producto) {
Case A:
 Cout<<”perfecta”;
Break;
Case B:
Cout<<”Muy Buena”;
Break;
Case C:
Cout<<”Regular”;
Default:
Cout<<”Fuera de rango”;
Break ;



CICLO FOR


La estructura de repetición for maneja de manera automática todos los detalles de la repetición controlada por contador.

Funciona de la siguiente manera:

1. El valor inicial de la variable solo se ejecuta una vez al inicio del ciclo.

2. Se ejecuta la condición.

3. Si es verdadera pasará a ejecutar el cuerpo del for.

4. Se ejecuta el incremento o decremento de la variable.

5.  Pasa a preguntar por la condición, resultando así un proceso recursivo.

6. Si la condición fuera falsa la ejecución pasará a la siguiente instrucción.


La forma general de la sentencia for es:


for (inicialización; condición; incremento/decremento)
sentencia;


Esta formada por lo siguiente:

·         inicialización  es una sentencia de asignación que el compilador usa para establecer la variable de control del ciclo.
        
·         condición es una expresión que comprueba la variable de control del ciclo cada vez para determinar cuándo debe salir del ciclo.
        
·         incremento/decremento define la manera en que cambia la variable de control de ciclo cada vez que la computadora repite el mismo.

El ciclo for continuará la ejecución mientras la condición sea verdadera.  Una vez que es falsa, la ejecución del programa continuará en la sentencia que sigue en el programa.

    
Ejemplo:

Int x
for ( x = 0; x <= 100; x++){
  cout<<x+1;
}



WHILE


Permite que se repita cierta acción en cuanto la condición evaluada sea verdadera y en el momento en que la condición sea falsa saldrá del ciclo y continuara con la siguiente instrucción.

La forma general de la sentencia while es:


while ( condición )
sentencia;


Dentro del cuerpo del while se incluye la condición para aumentar la variable de control y asi puede ejecutarse correctamente el ciclo.


{
     char c;
     ch = ‘ \0 ‘;          
     while (ch ! = ‘A’ )
            ch = getche (  );
}


El ciclo for funciona de la siguiente manera:

1.-Comienza comprobando la condición con la inicialización de la variable.

2.- Determina si es verdadera y el ciclo comienza.

3.-si la condición llega a ser falsa el bucle termina.


DO – WHILE


El funcionamiento de la estructura es sililar a while, la diferencia es que la condiccion se evalua al final de la estructura.
Así que en esta estructura se ejecuta por lo menor una sola vez la(s) sentencia(s).

La forma general de la sentencia do-while es:

        
  do {
     sentencia;
  }while (condición);



Ejemplo:

int num;
do{
     cin >> num;
}while ( num > 100 );