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
- 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-