Ir al contenido principal

✅ Fundamentos de Programación: Tipos de Estructuras de Control

Hola gente, bienvenidos a StudentPlace, el día de hoy veremos lo relevante a las estructuras  de control, pues a la hora de programar sera necesario identificar que tipo de estructura deberíamos utilizar para resolver un cierto problema en especifico, ya veremos de que hablo a detalle, por lo pronto veamos el siguiente gráfico.

Resultado de imagen para tipos de estructuras de programacion
Estructuras de Control
La tarea básica de una estructura de control es permitir al programador modificar el flujo de instrucciones dentro de la ejecución de un programa.

En programación podemos encontrarnos con 3 tipos de estructuras básicas:

Secuenciales
Este es el tipo de estructura mas simple, consta de ejecutar instrucciones en un orden especifico, una instrucción tras otra como si se siguiese un manual de algún producto. 
Ejemplo
#include<iostream>
using namespace std;
main(){
int a=0;
int b=0;
cout<<"Introduzca un numero"
cin>>a;
cout>>"Introduzca un numero"
cin>>b;
cout<<"El resultado es">>(a+b);
}

Codigo de ejemplo escrito en C++
Como podemos ver en el ejemplo es simplemente eso, un conjunto de instrucciones una seguida tras la otra. Generalmente este tipo de estructura puede ser dividida en:
  • Estructuras de Asignación: Donde incurre generalmente una declaración de variables y/o una asignación de valores.
  • Estructuras de Entrada: Implican la entrada de valores por algún medio ya sea por teclado, mouse, pantalla táctil etc.
  • Estructuras de Salida: Representan la salida o puesta en muestra de la información con tal de mostrar al usuario mensajes, resultados o procesos, petición de acciones etc.
En este caso podemos ver que estas 3 subestructuras las podemos ver en el bloque de código anterior, primero declaro las variables y les asigno un valor inicial de 0. Después uso una estructura de salida para mostrar un mensaje, consecutivamente una estructura de entrada para guardar los valores introducidos por teclado. Por ultimo solo muestro resultados.

Condicionales
Las estructuras condicionales son estructuras que nos permiten seleccionar que código ejecutar dependiendo de la falsedad o veracidad de una o varias expresiones matemáticas En la entrada anterior comentábamos el uso de los operadores relacionales y lógicos, decíamos que estos son utilizados para evaluar condiciones las cuales arrojaran finalmente un valor de verdadero o falso. Este resultado sera utilizado por una estructura condicional para desviar el flujo de ejecución de un programa. ¿Se escucho en chino verdad?, bueno veamos la estructura.
Ejemplo
#Include<iostream>
using namespace std;

main(){
int edad;

cout<<"Hola ¿Cuantos años tienes?";
cin>>edad;


if (edad>=18){
cout<<"Oh eres mayor de edad";
}


}

Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.
Este sencillo código nos dice que introduzcamos nuestra edad, la introducimos y el programa comparara si nuestra edad es igual o mayor a 18, si es verdadero imprimirá un mensaje "Oh eres mayor de edad", pero por ejemplo si tengo 17 años no deberá aparecer ningún mensaje puesto que la condición devuelve un valor de falso, ya que 17 no es mas grande ni es igual a 18. ¿Entendemos?, ¿mas o menos?.

Bueno en fin, como ya debiste darte cuenta al analizar el código, generalmente en todo lenguaje de programación tenemos una palabra reservada "IF" la cual se utiliza para señalar que introduciremos una expresión matemática (generalmente entre paréntesis) la cual sera evaluada. En C++ las instrucciones que deberán ejecutarse de ser cierta la condición se encierran entre llaves "{ }".

En fin en programación las estructuras condicionales pueden ser divididas en 3 tipos:
Estructura Condicional Simple
Estructura Base Ejemplo
if (condición)
 //Instrucciones a ejecutar  
 //en caso de que sea verdadero
#include<iostream>
using namespace std;
main(){
a=5;
if a==5{
cout<<"El valor de a es: 5"
}

}
Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.
La estructura condicional simple consta de una simple condición, si esta se cumple se deberán ejecutar las instrucciones dentro del bloque de correspondiente. En caso de no cumplirse el programa simplemente ignorara esas instrucciones y no las leerá ni ejecutara. Es decir "Si se cumple la condición has esto."

Estructura Condicional Doble
Estructura Base Ejemplo
if (condición)
  //Instrucciones a ejecutar 
  //en caso de que la condición 
  //sea verdadera
else
  //Intrucciones a ejecutar 
  //en caso de que la condición 
  //sea falsa
#inlcude<iostream>
using namespace std;
main(){
int edad;
cout<<"Intruduce tu edad";
cin>>edad;
if edad>=18{
cout<<"Eres mayor de edad";
}
else{
cout<<"Eres menor de edad";
}

}
Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.
Este tipo de estructura agrega lo que se conoce como el "else" o "sino", básicamente quiere decir textualmente "Si se cumple la condición haz esto SINO haz esto otro". Simplemente nos permite cubrir ambas posibilidades tanto para el valor de verdadero como para el valor falso tras evaluar la condición.

En el ejemplo podemos ver que si el usuario introduce una edad de por decir 20 años, la condición tomara un valor de verdadero pues 20 es mayor que 18, siendo esto cierto, arrojara el mensaje de "Eres mayor de edad", si por el contrario introducimos una edad menor, digamos 17, la condición toma un valor de falso, dado que 17 no es mayor ni igual a 18, por lo tanto arrojara el mensaje de "Eres menor de edad". De esta manera cubrimos ambas posibilidades. En pocas palabras podemos resumir esta estructura en la frase "Si se cumple la condición has esto SINO has esto otro".

Estructura Condicional Múltiple
Estructura Base Ejemplo
switch(variable)
case valor1:
//En caso de que la variable
//tenga este valor
break;
case valor2:
//En caso de que la variable
//tenga este valor
break;
case valor3:
//En caso de que la variable
//tenga este valor
break;
case valor4:
//En caso de que la variable
//tenga este valor
break;
...
...
...
default:
//En caso de que la variable
//no coincida con ninguno de
//los valores anteriores
break;
#incude <iostream>
using namespace std;
main(){
int opcion;
cout<<"Seleccione una opcion";
cout<<"1.Sumas";
cout<<"2.Restas";
cout<<"3.Multiplicaciones";
cout<<"4.Divisiones";
cin>>opcion;
switch(edad){
case 1:
cout<<"A sumar";
break;
case 2:
cout<<"A restar";
break;
case 3:
cout<<"A multiplicar";
break;
case 4:
cout<<"A Dividir";
break;
default:
cout<<"Opcion incorrecta";
break;
}
}
Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.

Y por ultimo tenemos a las estructuras condicionales múltiples las cuales se encargan de cubrir diversas alternativas, este tipo de estructura en la mayoría de lenguajes hacen uso de la palabra Switch para iniciar esta estructura ("Selector"). Esta en términos literales dice: "En base a la opción dada Selecciona el Caso correspondiente". Como en el código anterior, el conjunto de instrucciones a ejecutar sera seleccionado de acuerdo al caso que se ajuste al valor de la variable de selección, en este caso la variable que juega ese papel es "opcion". Cada caso debe terminar con un break; este indica donde terminan las instrucciones de cada caso, es básicamente una especie de delimitador. Por ultimo si ningún caso coincide con la variable de selección, automáticamente se ejecutara el caso predefinido o default, el cual cubre cualquier situación adversa ante la situación de no haber coincidencias.

Esta estructura es muy útil cuando tienes que comparar miles de condiciones y no tienes tiempo de escribir miles de IFs, aunque cuidado, Python es un lenguaje que no posee esta estructura como tal, en ese lenguaje optaron por ignorar esa estructura y utilizar puras condiciones al estilo if/else. Así que te invito a buscar referente al lenguaje al que estés interesado.

Cíclicas
Las estructuras cíclicas o también conocidas como repetitivas cumplen la función de ejecutar un bloque de código un numero definido de veces, es decir como su nombre lo dice, repiten las mismas lineas de código una y otra vez según sea necesario. Existen 3 tipos de estructuras cíclicas:

Para Hasta Que (Ciclo FOR)
Estructura Base Ejemplo
for(VI,CP,IC)
   //Intrucciones a repetir


/*Simbologia:
VI=Valor Inicial
CP=Condicion para Proceder
IC= Interación por Ciclo
*/
#include <iostream>
using namespace std;
main(){
int i; //i=Incremento
for(i=0;i<=10;i=i+1){
cout<<"Hola mundo";

}
}

Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.

Bien antes que nada cada estructura cíclica tiene lo que conocemos como:
  • Variable de control: O incremento, es básicamente una variable que se utiliza para contabilizar el numero de veces que se ha repetido el ciclo.
  • Condición: condición de paro/proceder o condición de terminación, como le quieras llamar, es básicamente una condición que se evalúa cada vez que se repite el ciclo, si la condición resulta ser falsa se prosigue a repetir de nuevo el bucle, si es falsa se termina el ciclo y se prosigue con el programa.
  • Interación por Ciclo: indica como sera modificada la variable de control cada que el ciclo termine. Generalmente involucra un aumento o decremento del valor, por ejemplo en el código de arriba decimos que cada vez que se cumpla un ciclo aumentaremos el valor de la variable "i" una unidad y así mientras se siga repitiendo.
Habiendo explicado lo anterior puedo continuar. Una de las estructuras cíclicas mas conocidas es la estructura Para Hasta Que, representada en todos los lenguajes que yo conozco bajo el ciclo FOR, este en español quiere decir "Hasta" y en términos literales podría ser escrito como: "Ejecuta estas instrucciones hasta que la condición sea falsa" o "Para hasta que la condición sea falsa".

En el ejemplo del código anterior decimos que se imprimirá el mensaje "Hola Mundo" 10 veces. ¿Cómo se que son 10 veces? pues tenemos lo siguiente:
  • Variable de control: ( i = 0)  La variable de control generalmente se representa con la letra i, pero eso queda a gustos del programador. Esta variable de control siempre que se utilice en una estructura cíclica generalmente debe inicializarse en un valor, es decir darle un valor de inicio o partida. En nuestro caso inicia en el valor 0.
  • Condición: ( i<=10 )  En este caso la condición estipula que se repetirá el ciclo siempre y cuando el valor de la variable de control "i" tenga un valor menor o igual a 10.
  • Interación por ciclo: (i=i+1) por ultimo, esta ultima parte nos dice que cada que se termina un ciclo aumentaremos por una unidad el valor de la variable de control "i". Es decir si empezamos con 0, al terminar el primer ciclo deberíamos sumar 1, luego 2, luego 3 y así sucesivamente, al momento de sumar 11 la condición se evalúa y no se cumple, terminando así el ciclo. 
De esta manera sabemos que el mensaje "Hola Mundo" se imprimirá en pantalla 10 veces.

Mientras Que (Ciclo WHILE)
Estructura Base Ejemplo
while(condición)
    //Instrucciones a Ejecutar
#include <iostream>
using namespace std;
main(){
int i=0; //i=Incremento

while(i<=10){
cout<<"Hola Mundo";
i=i+1;
}
}

Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.
La estructura "Mientras Que" se representa generalmente con el ciclo WHILE, el cual si lo tradujéramos textualmente seria "Mientras Que la condición cumpla ejecuta las instrucciones". En este caso ponemos igualmente el código anterior pero con el bucle WHILE, tenemos igualmente una variable de control (i) inicializada en 0, tenemos la misma condición (i<=10) y la misma expresión de Interación de ciclo (i=i+1) y el funcionamiento es completamente igual a lo antes explicado, solo cambia la forma de acomodarlos.

Como dijo una maestra una vez, "No hay nada que pueda ser hecho en un ciclo que no pueda ser hecho en otro" pero ¿Entonces cual es la diferencia entre el ciclo FOR y WHILE?

La principal diferencia radica en que el ciclo WHILE esta pensado para ciclos indefinidos, ¿Que quiere decir esto?, pues básicamente quiere decir que esta creado para situaciones en las que no tenemos en claro el numero de veces que deberemos repetir el ciclo.
Ejemplo
#Include<iostream>
using namespace std;

main(){
int i=0;
while(i!=500)
cout<<"Adivina el numero que pienso, ingresalo por teclado y probemos";
cin>>i;
}

cout<<"Adivinaste, ya era hora";

Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.
Como podemos ver en el código de arriba, le pedimos al usuario adivinar un numero, queremos que teclee 500, dado que no sabemos el numero de veces que eso tomara podemos decir que el numero de intentos es indefinido. La forma de darle solución es utilizar el ciclo WHILE, poniendo una condición como la siguiente (i!=500), que básicamente quiere decir que mientras el valor ingresado por teclado sea diferente de 500 volveremos a pedir que ingrese otro numero y así sucesivamente hasta que adivine. ¿Te das cuenta de su valía?. En este caso eliminamos la expresión de interación por ciclo y la sustituimos por una entrada de datos, la cual cumple la misma función, cada que ingresemos un dato el valor de la variable de control se modificará por valor tecleado y mientras ese numero no sea 500 repetiremos el ciclo, de esta manera el usuario puede equivocarse el numero de veces que quiera e inclusive nunca adivinar y el ciclo seguirá repitiéndose.

Como nota, el mensaje "Adivinaste, ya era hora" solo sera mostrado una vez que la condición se rompa, es decir sea falsa y el ciclo termine.

Haz Mientras (Ciclo DO WHILE)
Estructura Base Ejemplo
do:
   //Instrucciones a Ejecutar
while(condición)

#include <iostream>
using namespace std;
main(){
int i=0; //i=Incremento

do{
cout<<"Hola Mundo";
i=i+1;
}while(i<=10);

}

Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.
Finamente tenemos la estructura "Haz Mientras" que traducido literalmente seria "Haz este código Mientras la condición se cumpla". Este básicamente es exactamente igual que el Ciclo While, solamente cambia el acomodo en su declaración y sintaxis, en resumen cumple exactamente la misma función, y esto lo podemos corroborar al observar el código de ejemplo ¿Pero entonces para que sirve? ¿Para que se usa? ¿Por qué existe?.

Ciclo WHILE vs ciclo Do WHILE

Bueno la respuesta a lo anterior es muy sencilla y lo podemos analizar con tan solo ver los códigos:
WHILE DO WHILE
#include <iostream>
using namespace std;
main(){
int i=0; //i=Incremento

while(i<=10){
cout<<"Hola Mundo";
i=i+1;
}
}

#include <iostream>
using namespace std;
main(){
int i=0; //i=Incremento

do{
cout<<"Hola Mundo";
i=i+1;
}while(i<=10);

}

Nota: El código expuesto como ejemplo esta escrito en C++ te invito a consultar la sintaxis correcta en el lenguaje en el que estés interesado.
En el ciclo WHILE la condición es evaluada al inicio del ciclo, si esta se cumple se iniciara el ciclo y se empezara a repetir, sin embargo si la condición no se cumple las instrucciones dentro del ciclo no se ejecutaran y el programa las pasara de largo automáticamente. Mientras tanto el ciclo DO WHILE asegura que se deberán ejecutar dichas instrucciones por lo menos una sola vez, se puesto que la condición es evaluada hasta el final, de manera que tanto si la condición es falsa o no, las instrucciones aún así deberán ser leídas por el programa.

Como podemos ver las estructuras repetitivas son muy útiles dado la capacidad de ejecutar varias veces un mismo código, digo imagina tener que escribir 100 veces el mensaje de "Hola Mundo", ¿Cuántas lineas y tiempo te llevarías?, claro que puedes copiar y pegar pero no es la opción mas viable, usando cualquiera de las estructuras que te mostré simplemente seria necesario escribir a lo máximo 4 lineas y listo.

En resumen, las estructuras de control son muy importantes, podemos combinarlas todas en un solo programa para obtener un resultado único, ya que nos permiten como antes expuesto modificar la forma en que nuestro programa se comporta de acuerdo a simples condiciones y/o instrucciones.

Por lo pronto es todo, gracias amigos.  



Fuentes:
https://es.wikipedia.org/wiki/Estructuras_de_control
https://beastieux.com/2008/01/03/codigo-c-calcular-el-numero-menor-y-mayor/
https://javabasico.osmosislatina.com/curso/progavanza/for.htm
https://www.programarya.com/Cursos/C++/Ciclos/Ciclo-while
http://pestructurada-uai.blogspot.com/2011/10/tipos-de-estructuras-en-la-programacion.html
Y un tanto de lo que yo se.

Comentarios

  1. Muy bien explicado... :)

    ResponderEliminar
  2. Dating for everyone is here: ❤❤❤ Link 1 ❤❤❤


    Direct sexchat: ❤❤❤ Link 2 ❤❤❤

    ww.

    ResponderEliminar

Publicar un comentario