
Las estructuras de control de un
lenguaje de programación son métodos de especificar el orden en que las
instrucciones de un algoritmo se ejecutarán. Estas son por consiguiente
fundamentales en los lenguajes de programación y en los diseños de
algoritmos. Se les llama de control debido a que controlan el modo de
ejecución del programa.
Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de indización de Internet. Por lo general, las estructuras de datos eficientes son clave para diseñar algoritmos
eficientes. Algunos métodos formales de diseño y lenguajes de
programación destacan las estructuras de datos, en lugar de los
algoritmos, como el factor clave de organización en el diseño de software. La mayoría de los lenguajes ensambladores y algunos lenguajes de bajo nivel, tales como BCPL, carecen de soporte de estructuras de datos. En cambio, muchos lenguajes de alto nivel y algunos lenguajes ensambladores de alto nivel, tales como MASM,
tienen algún tipo de soporte incorporado para ciertas estructuras de
datos, tales como los registros y arreglos. Por ejemplo, los lenguajes C y Pascal soportan estructuras y registros, respectivamente, además de arreglos y matrices multidimensionales.
En programación,
una estructura de datos puede ser declarada inicialmente escribiendo
una palabra reservada, luego un identificador para la estructura y un
nombre para cada uno de sus miembros, sin olvidar los tipos de datos que
estos representan. Generalmente, cada miembro se separa con algún tipo
de operador, carácter o palabra reservada.
Las Estructuras Básicas pueden ser:
Secuenciales: cuando una instrucción del programa sigue a otra. Constan de Entrada, Proceso y Salida. La estructura secuencial es aquella en la que una acción (instrucción)
sigue a otra en secuencia. Las tareas se suceden de tal modo que la
salida de una es la entrada de la siguiente y así sucesivamente hasta el
fin del proceso.Se
caracteriza porque una acción se ejecuta detrás de otra. El flujo del
programa coincide con el orden físico en el que se han ido poniendo las
instrucciones. Dentro de este tipo podemos encontrar operaciones de
inicio/fin, inicialización de variables, operaciones de asignación,
cálculo, suma, etc.La asignación consiste, en el paso de
valores o resultados a una zona de la memoria. Dicha zona será reconocida con
el nombre de la variable que recibe el valor. La asignación se puede clasificar
de la siguiente forma:
- Simples: Consiste en pasar un valor constate a una variable (a <– 5)
- Contador: Consiste en usarla como un verificador del número de veces que se
realiza un proceso (a <– 1)
- Acumulador:
Consiste en usarla como un sumador en un proceso (a <– b)
- De
trabajo: Donde puede recibir el resultado de una
operación matemática que involucre muchas variables (a <– c+b*2/4).
Selección o decisión: acciones en las
que la ejecución de alguna dependerá de que se cumplan una o varias
condiciones. Pueden ser simples, dobles, compuestas y múltiples.
Una decisión es la estructura según la cual se puede escoger uno de
entre dos caminos lógicos dependiendo de una condición que al ser
evaluada nos brinda la oportunidad de saber cuál de los dos caminos
escoger. La evaluación de dicha condición siempre va a originar una
respuesta VERDADERA (cuando la condición se cumple) o FALSA (cuando
dicha condición no se cumple) y con ello se podrá saber cuál es el
conjunto de instrucciones a resolver. La representación de una
estructura selectiva se hace con palabras en pseudocódigo (if – then –
else o en español si – entonces - sino) y en flujograma con una figura
geométrica en forma de rombo.
La condición, en algoritmos técnicos, se podrá expresar en términos
de dos tipos de operadores: los operadores relacionales y los operadores
booleanos. Recordemos que los operadores relacionales son aquellos que
nos originan una respuesta Verdadera o Falsa y que corresponden a los
símbolos mayor que, menor que, mayor o igual, menor o igual, igual (de
comparación) y diferente de. Los operadores booleanos son aquellos que
nos permiten establecer conexiones entre expresiones en donde aparezcan
los operadores booleanos y corresponden a los operadores:
- AND: Genera Verdadero si todas las expresiones relacionales conectadas son Verdaderas
- OR: Genera Verdadero si al menos una de las expresiones conectadas es Verdadera
- NOT que invierte el sentido lógico de la expresión
Repetición o Iteración: cuando un
proceso se repite en tanto cierta condición sea establecida para
finalizar ese proceso. Estas pueden ser: Mientras (While), Desde/Para
(For) y Repetir (Repeat).En la vida diaria existen situaciones que frecuentemente se resuelven
realizando una determinada secuencia de pasos que puede repetirse
muchas veces, ejemplo:
- El proceso que seguimos para comer, mientras no se termine la comida.
- El proceso de insertar monedas, hasta que se abone la cantidad necesaria.
- Las operaciones que realizamos para llamar por teléfono, mientras no se logre la comunicación.
Como se puede observar estos son algoritmos que se hacen
cotidianamente, pero tienen la particularidad de que la ejecución de
alguno de sus pasos puede repetirse muchas veces, mientras no se logre
la meta trazada. A este tipo de algoritmo se le conoce como algoritmos
iterativos o repetitivos.
En C#,
las instrucciones while, do/while, y for, permiten ejecutar
iteraciones, bucles o ciclos. En cada caso se ejecuta un bloque de
instrucciones mientras la condición que se evalúa tome valor verdadero.
Se resalta que cualquiera de las 3 instrucciones cumple con el mismo
objetivo que es el de ejecutar una secuencia de pasos, más de una vez.
La instrucción while
La semántica de la instrucción es la siguiente:
- <condición>. Está representada por una expresión booleana y mientras se cumpla se ejecutará el ciclo.
- [Bloque de Instrucciones] El bloque de instrucciones puede estar
formado por una o varias instrucciones y es el conjunto de pasos que se
van ejecutar en cada iteración del ciclo.
Esta estructura de control permite repetir o iterar el [Bloque de
Instrucciones] mientras la condición sea verdadera o dicho de otra
manera, estas iteraciones terminarán cuando la condición sea falsa y
entonces se podrá ejecutar la siguiente instrucción después del while.
Es válido señalar que en esta instrucción la condición se evalúa
al inicio del ciclo por lo que si la primera vez que se evalúa la
condición esta es falsa, el ciclo no llegará a realizarse.
La instrucción Do/while
En esta estructura repetitiva el bloque de instrucciones siempre se
ejecuta al menos una vez pues la condición se evalúa al final. Una vez
realizada la evaluación si el resultado es true, se vuelve a ejecutar el
[Bloque de Instrucciones], en caso contrario se ejecutan las
instrucciones que sigan a continuación saliendo del ciclo.
La funcionalidad de este método será la misma que en el ejemplo con
while. La única diferencia es la forma en que se controla el bucle. En
la práctica, verá que la instrucción while se utiliza más a menudo que
la instrucción do – while. El elegir una instrucción en lugar de la otra
es una elección personal.
Un aspecto muy importante a tener presente en los ciclos condicionales
es la necesidad de contemplar dentro del bloque de instrucciones al
menos una, que de alguna manera, altere –en algún momento- el resultado
de la expresión booleana.
La instrucción For
Los procesos iterativos que se han visto hasta ahora terminan por una
condición. En muchas situaciones las iteraciones se realizan un número
determinado de veces, muchos autores les llaman ciclos por conteo pues
se conoce de antemano cuántas veces se hará el proceso que se repite. En
este tipo de iteración, siempre se necesita una variable que lleve el
control de las veces que se repite el proceso por esto se les conoce
también como ciclos con variable de control.
Uno de los ciclos más conocidos y usados en la mayoría de los lenguajes de programación es el de la instrucción for que suele estar controlado por un contador o variable de control.

- https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiv3-eu0vjsAhVjoFkKHS4SD1MQFjAEegQIBxAC&url=https%3A%2F%2Fdesarrolloweb.com%2Farticulos%2F2477.php&usg=AOvVaw1_wNJ89jG3UOl5FFqWuj8_
- https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiv3-eu0vjsAhVjoFkKHS4SD1MQFjAPegQIDBAC&url=https%3A%2F%2Fes.wikipedia.org%2Fwiki%2FEstructura_de_datos&usg=AOvVaw264ooLUnK6y8Ek2vABStG-