Unidad 3
Estructuras de Control
Las sentencias de control de programa gobiernan el flujo de la ejecución del programa en cualquier lenguaje de programación.
Estas sentencias constan de una sentencia única, un bloque de sentencias o ninguna sentencia.
Las sentencias de control se dividen en 3 categorías
-Secuenciales
-Selectivas
-Repetitivas
Las Secuenciales se van a ejecutar en el mismo orden en las que van apareciendo en el programa, es decir, una acción sigue a otra.
Las Selectivas se usa para tomar decisiones lógicas. En esta se evalúa una condición y en función del resultado de la misma se realiza una opción u otra.
Las condiciones se especifican utilizando expresiones lógicas y relacionales.
En c++ existen tres tipos de estructura de selección.
En la Simple se ejecuta una acción si la condición es verdadera, o pasa por alto la acción si la condición es falsa.
Selecciona o ignora una acción. En C/C++, se utiliza la estructura if (condición).
En la Bicondicional se ejecuta una acción si la condición es verdadera, o ejecuta una acción diferente si la condición es falsa.
Selecciona entre dos acciones distintas. En C/C++, se utiliza la estructura if (condición) else.
En la condición múltiple se Ejecuta una de entre muchas acciones diferentes, dependiendo del valor de una expresión.
Selecciona entre muchas acciones diferentes. En C/C++, se utiliza la estructura switch (expresión).
-Repetitivas
Estas repiten una secuencia de instrucciones un número determinado de veces, en tanto cierta condición se mantenga verdadera.
Se conocen como bucles / iteración por el hecho de repetir la ejecución de una secuencia de acciones.
C++ proporciona tres tipos de estructuras
-While
-For
-Do-while
Sentencia if
La instrucción if es, por excelencia, la más utilizada para construir estructuras de control de flujo.
SINTAXIS
Primera Forma
Ahora bién, la sintaxis utilizada en la programación de C++ es la siguiente:
Segunda Forma
Ahora veremos la misma sintaxis pero ahora le añadiremos la parte "Falsa" de la sentencia:
Sentencia switch
switch es otra de las instrucciones que permiten la construcción de estructuras de control. A diferencia de if, para controlar el flujo por medio de una sentencia switch se debe de combinar con el uso de las sentencias case y break.
Esto indica que el contador "i" inicia desde 1 y finaliza cuando el contador "i" sea menor o igual a 10 ( en este caso llegará hasta 10) e "i++" realiza la sumatoria por unidad lo que hace que el for y el contador se sumen. repitiendo 10 veces "HOLA MUNDO" en pantalla.
Ejemplo 2:
Este ejemplo hace lo mismo que el primero, salvo que el contador se inicializa a 10 en lugar de 1; y por ello cambia la condición que se evalua así como como que el contador se decrementa en lugar de ser incrementado.
donde:
El contador Indica que hasta que este llegue a el total de 10 entonces se detendrá y ya no se realizará el código contenido dentro de la sentencia while, de lo contrario mientras el "contador" sea menor a 10 entonces el código contenido se ejecutará desplegando hasta 10 veces "Hola Mundo" en pantalla.
Al modificar el segmento de código anterior usando do tenemos:
Observe cómo en el caso de do la condición es evaluada al final en lugar de al principio del bloque de instrucciones y, por lo tanto, el código que le sigue al do se ejecuta al menos la primera vez.
Ejemplo:
En el siguiente fragmento de código la sentencia break cierra el ciclo for cuando la variable ( i ) es igual a 5. La salida para el mismo será:
0 1 2 3 4
Ejemplo:
En el siguiente fragmento de código la sentencia continue ignora la iteración cuando la variable ( i ) es igual a 5. La salida para el mismo será:
0 1 2 3 4 6 7 8 9
Uso de break y continue junto con while
Los dos ejemplos anteriores se presentan en seguida, salvo que en lugar de for se hace uso de while.
continue
Sentencia if
La instrucción if es, por excelencia, la más utilizada para construir estructuras de control de flujo.
SINTAXIS
Primera Forma
Ahora bién, la sintaxis utilizada en la programación de C++ es la siguiente:
if (condicion)
{
Set de instrucciones
}
siendo "condicion" el lugar donde se pondrá la condicion que se tiene que cumplir para que sea verdadera la sentencia y asi proceder a realizar el "set de instrucciones" o código contenido dentro de la sentencia.Segunda Forma
Ahora veremos la misma sintaxis pero ahora le añadiremos la parte "Falsa" de la sentencia:
if (condicion)
{
Set de instrucciones //PARTE VERDADERA
}
else
{
Set de instrucciones 2 //Parte FALSA
}
La forma mostrada anteriormente muestra la union de la parte "VERDADERA" con la nueva secuencia la cual es la parte "FALSA" de la sentencia de decision "IF" en la cual esta compuesta por el:else
{
Set de instrucciones 2 //Parte FALSA
}
la palabra "else" o "De lo contrario" indica al lenguaje que de lo contrario al no ser verdadera o no se cumpla la parte verdadera entonces realizara el "set de instrucciones 2".Sentencia switch
switch es otra de las instrucciones que permiten la construcción de estructuras de control. A diferencia de if, para controlar el flujo por medio de una sentencia switch se debe de combinar con el uso de las sentencias case y break.
Notas: cualquier número de casos a evaluar por switch así como la sentencia default son opcionales. La sentencia switch es muy útil en los casos de presentación de menus.Sintaxis:
switch (condición)
{
case primer_caso:
bloque de instrucciones 1
break;
case segundo_caso:
bloque de instrucciones 2
break;
case caso_n:
bloque de instrucciones n
break;
default: bloque de instrucciones por defecto
}
Ejemplo 1switch (numero)
{
case 0: cout << "numero es cero";
}
Sentencias de iteración
Las Sentencias de Iteración o Ciclos son estructuras de control que repiten la ejecución de un grupo de instrucciones. Básicamente, una sentencia de iteración es una estructura de control condicional, ya que dentro de la misma se repite la ejecución de una o más instrucciones mientras o hasta que una a condición especifica se cumpla. Muchas veces tenemos que repetir un número definido o indefinido de veces un grupo de instrucciones por lo que en estos casos utilizamos este tipo de sentencias. en C++ los ciclos o bucles se construyen por medio de las sentencias for, while y do - while. La sentencia for es útil para los casos en donde se conoce de antemano el número de veces que una o más sentencias han de repetirse. Por otro lado, la sentencia while es útil en aquellos casos en donde no se conoce de antemano el número de veces que una o más sentencias se tienen que repetir.
Sentencias For
for(contador; final; incremento) { Codigo a Repetir; }
donde:
Ejemplo 1:
- contador es una variable numérica
- final es la condición que se evalua, o sea, el valor final para contador
- incremento es el valor que se suma o resta al contador
for(i=1; i<=10; i++)
{
cout<<"Hola Mundo";
}
Ejemplo 2:
for(i=10; i>=0; i--)
{
cout<<"Hola Mundo";
}
[editar] Sentencia while
while(condicion)
{
codigo a Repetir
}
donde:
- condicion es la expresión a evaluar
int contador = 0;
while(contador<=10)
{
contador=contador+1;
cout<<"Hola Mundo";
}
[editar] Sentencia do - while
La sentencia do es usada generalmente en cooperación con while para garantizar que una o más instrucciones se ejucuten al menos una vez. Por ejemplo, en la siguiente construcción no se ejecuta nada dentro del ciclo while, el hecho es que el contador inicialmente vale cero y la condición para que se ejecute lo que está dentro del while es "mientras el contador sea mayor que diez". Es evidente que a la primera evaluación hecha por while la condición deja de cumplirse.int contador = 0;
while(contador > 10)
{
contador ++;
cout<<"Hola Mundo";
}
int contador = 0;
do
{
contador ++;
cout<<"Hola Mundo";
}
while(contador > 10);
[editar] Sentencias break y continue
En la sección (Sentencia switch) vimos que la sentencia break es utilizada con el propósito de forzar un salto dentro del bloque switch hacia el final del mismo. En esta sección volveremos a ver el uso de break, salvo que esta ocasión la usaremos junto con las sentecias for y la sentencia while. Además, veremos el uso de la sentencia continue.[editar] break
La sentencia break se usa para forzar un salto hacia el final de un ciclo controlado por for o por while.Ejemplo:
En el siguiente fragmento de código la sentencia break cierra el ciclo for cuando la variable ( i ) es igual a 5. La salida para el mismo será:
for (i=0; i<10; i++) {
if (i == 5) break;
cout << i << " ";
}
[editar] continue
La sentencia continue se usa para ignorar una iiteración dentro de un ciclo controlado por for o por while.Ejemplo:
En el siguiente fragmento de código la sentencia continue ignora la iteración cuando la variable ( i ) es igual a 5. La salida para el mismo será:
for (i=0; i<10; i++) {
if (i == 5) continue;
cout << i << " ";
}
Los dos ejemplos anteriores se presentan en seguida, salvo que en lugar de for se hace uso de while.
Nota: no deje de observar que la construcción del ciclo while para el caso de la sentencia continue es diferente, esto para garantizar que el ciclo no vaya a caer en una iteración infinita.break
int i = 0;
while (i<10) {
if (i == 5) break;
cout << i << " ";
i++;
}
int i = -1;
while (i<10) {
i++;
if (i == 5) continue;
cout << i << " ";
}