Flujo de control I: Estructuras selectivas
- INTRODUCCION:
Hoy en día, debido al aumento significativo en el tamaño de las memorias principales y a las altas velocidades de los procesadores como Intel Core 2 Dúo, AMD Athlon 64, AMD Turión 64, entre otros, la forma en que se escriben los programas se convierte en una característica clave de las técnicas de programación. La claridad de los algoritmos y, por ende, de los programas, requiere que su diseño sea fácil de entender y que el flujo lógico sea sencillo de seguir. La programación modular promueve la división de un programa en módulos más simples de desarrollar, mientras que la programación estructurada facilita la creación de programas que son fáciles de leer y modificar. En la programación estructurada, el flujo lógico del programa se maneja mediante las siguientes estructuras de control básicas:
1. Secuenciales.
2. Repetitivas.
3. Selectivas.
En este caso hablaremos sobre las estructuras selectivas.
- ESTRUCTURAS SELECTIVAS:
La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición. Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o alternativas. En las estructuras selectivas se evalúa una condición y en función del resultado de la misma se rea liza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o bien en español si, entonces, si_no), con una figura geométrica en forma de rombo o bien con un triángulo en el interior de una caja rectangular. Las estructuras selectivas o alternativas pueden ser:
• simples,
• dobles,
• múltiples.

- VENTAJAS:
Toma de decisiones: Permiten que el programa seleccione entre diferentes caminos de ejecución según las condiciones especificadas, lo cual es crucial para la lógica y la funcionalidad del software.
Flexibilidad: Las estructuras selectivas proporcionan flexibilidad al permitir que el programa se adapte dinámicamente a diferentes situaciones o entradas de datos.
Optimización de recursos: Ayudan a optimizar el uso de recursos del sistema al ejecutar solo el bloque de código correspondiente a la condición verdadera. Esto puede mejorar la eficiencia en términos de tiempo de ejecución y uso de memoria.
Claridad y legibilidad del código: Al utilizar estructuras selectivas de manera adecuada, se puede mejorar la claridad y la legibilidad del código. Las condiciones y las acciones asociadas se expresan de manera explícita, facilitando la comprensión tanto para el programador como para otros que revisen el código.
Mantenimiento y depuración: Facilitan el proceso de depuración al permitir que los programadores identifiquen y corrijan errores lógicos o funcionales al verificar las condiciones bajo las cuales se produce un comportamiento inesperado.

- DESVENTAJAS:
Complejidad y anidamiento: El uso excesivo de estructuras selectivas puede llevar a un código complejo y anidado, especialmente cuando se manejan múltiples condiciones anidadas (if-else if-else). Esto puede dificultar la comprensión y el mantenimiento del código.
Posibilidad de errores: Si las condiciones no se manejan correctamente o no se prueban exhaustivamente, puede resultar en errores lógicos difíciles de detectar y corregir.
Rendimiento: En algunos casos, el uso de estructuras selectivas puede afectar el rendimiento del programa si las condiciones son complejas o si se realizan operaciones costosas dentro de las condiciones.
Decisiones estáticas: Las estructuras selectivas toman decisiones basadas en condiciones estáticas definidas en el código. Esto puede limitar la capacidad del programa para adaptarse dinámicamente a cambios en tiempo de ejecución o a situaciones imprevistas.

- Ejemplo en Python (if-else):
- Ejemplo en C++ (if-else if-else):
using namespace std;
int main() {
int numero = 0;
cout << "Ingrese un número: ";
cin >> numero;
if (numero > 0) {
cout << "El número es positivo." << endl;
} else if (numero < 0) {
cout << "El número es negativo." << endl;
} else {
cout << "El número es cero." << endl;
}
return 0; }
En este ejemplo en C++, el programa solicita al usuario que ingrese un número. Luego, utiliza una estructura if-else if-else para determinar si el número es positivo, negativo o cero. Dependiendo del valor de numero, se ejecutará uno de los tres bloques de código.