Estructuras de control secuenciales
Estructuras de control secuenciales
y selectivas
y selectivas
Prof. Robert Espinoza Domínguez
La expresión flujo
La expresión flujo
de control hace
de control hace
referencia al
referencia al
orden
orden
en el que
en el que
se ejecutarán las
se ejecutarán las
instrucciones de
instrucciones de
un programa,
un programa,
desde su comienzo
desde su comienzo
hasta que finaliza.
hasta que finaliza.
Flujo de control de un programa
La expresión flujo
La expresión flujo
de control hace
de control hace
referencia al
referencia al
orden
orden
en el que
en el que
se ejecutarán las
se ejecutarán las
instrucciones de
instrucciones de
un programa,
un programa,
desde su comienzo
desde su comienzo
hasta que finaliza.
hasta que finaliza.
Flujo de control de un programa
La programación estructurada es una forma deLa programación estructurada es una forma de
escribir programas de computadora de forma clara
escribir programas de computadora de forma clara,,
utilizando únicamente tres estructuras:
utilizando únicamente tres estructuras: secuencia,secuencia,
selección e iteración;
selección e iteración; siendo innecesario y no siendo innecesario y no
permitiéndose el uso de instrucciones de
permitiéndose el uso de instrucciones de
transferenci
transferencia incondicional (por ejemplo: a incondicional (por ejemplo: Go to).Go to).
El teorema del programa estructurado, deEl teorema del programa estructurado, de Böhm-
Böhm- Jacopini,
Jacopini, demuestra que todo programa puede demuestra que todo programa puede
escribirse utilizando únicamente las tres
escribirse utilizando únicamente las tres
instrucciones de control siguientes:
instrucciones de control siguientes:
SecuenciaSecuencia
Instrucción condicional. Instrucción condicional.
Iteración Iteración (bucle (bucle de de instrucciones) instrucciones) con con lala
condición al principio
condición al principio
Programación estructurada
Programación estructurada
Solamente con estas tres estructuras o “patrones
lógicos” se pueden escribir todos los programas y
aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres básicas.
Hoy en día las aplicaciones informáticas son mucho
más ambiciosas que las necesidades de aquellos años, por lo que se desarrollaron nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.
De todas formas, el paradigma estructurado tiene
vigencia en muchos ámbitos de desarrollo de programas y constituye una buena forma de iniciarse en la programación de computadoras.
Estructuras de Control
Las estructuras de control tienen una finalidad
bastante definida: señalar el orden en que
tienen que sucederse o ejecutarse los pasos de un algoritmo o instrucciones en un programa. Pueden ser: Secuenciales Selectivas Iterativas
Son estructuras que obedecen la linealidad, es decir,
no admiten saltos
A la ejecución de una instrucción le sigue otra
instrucción y así sucesivamente.
Mantiene la secuencia de acciones en el orden en
el que aparecen las instrucciones.
Estructuras secuenciales
acción 1 acción 2 acción n acción 1 acción 2 … acción nEstructura secuencial
Ejemplo:
Sumar y multiplicar 2 números.
Inicio x, y, z, w: reales Leer y, z; x y + z; w y * z; Escribir x, w; Fin Leer y, z Inicio Fin Escribir x, w x y+z w y*z
Ejercicios
1. El primer problema es determinar el alcance y el tiempo de vuelo de un proyectil lanzado con una velocidad inicial v0 y haciendo un ángulo de
Ejercicios
g v R sen2 2 0 g v T 2 0sen máximo alcance de un proyectil, g es la
aceleración de la gravedad
tiempo de vuelo
180
grados
2. Parte del costo de producción de un producto se calcula por el tiempo de operación de una máquina utilizada. Se
realizan pruebas para determinar este tiempo ingresando la hora de inicio de y de final de producción en el formato de horas, minutos y segundos registrados en la máquina. El costo está diferenciado por hora, minuto y segundo.
Calcular dicho costo.
Por ejemplo, se tienen los siguientes datos de entrada: Hora Inicio: 14:30:15
Hora final: 16:40:20 Costo por hora: 60 soles Costo por minuto: 2 soles
Costo por segundo: 0,20 soles
Ejercicios
3. Estando en guerra, se necesita enviar a los aliados la
cantidad de tanques disponibles en un valor encriptado, por lo que le encarga a usted dicha tarea.
La encriptación se hace mediante el ingreso de 5 valores de 5 dígitos cada uno. Estos valores serán enviados a los aliados que ya tienen el programa hecho por usted.
Por ejemplo podrían ser estos valores: Valor 1: 34571
Valor 2: 61254 Valor 3: 75120 Valor 4: 24712 Valor 5: 31652
Ejercicios
Suma de dígitos de primera diagonal: 8 Suma de dígitos de segunda diagonal: 14 Cantidad de tanques disponibles: 112
Su sistema, ya disponible en los aliados, tomarán los dígitos según la figura, donde los dígitos de las diagonales se suman y estos 2 valores se multiplican, el resultado será la cantidad de tanques disponibles:
Otras estructuras
Algunos programas muy simples pueden escribirse
sólo con este flujo unidireccional. No obstante, la mayor eficacia y utilidad de cualquier lenguaje de programación se deriva de la posibilidad de cambiar el orden de ejecución según la necesidad de elegir uno de entre varios caminos en función de ciertas condiciones, o de ejecutar algo repetidas veces, sin tener que escribir el código para cada vez.
Con frecuencia, el programador necesita que el
programa no se comporte sólo de modo secuencial. Por ejemplo, calcular una función f(x) para los X > 0.
Otras estructuras
También puede ocurrir que interese que un grupo
de instrucciones se ejecute repetidamente hasta que se le indique que se detenga. Por ejemplo, calcular el promedio de notas para cada uno de los alumnos de un curso, o realizar algún cálculo con cada uno de los elementos de un vector.
Para las dos situaciones planteadas existen dos
soluciones: las sentencias de control selectivas y
las repetitivas o iterativas.
Éstas permiten que el flujo secuencial del
programa sea modificado. También cumplen con este objetivo las sentencias denominadas de invocación o salto.
Las estructuras selectivas permiten seleccionar
uno de entre varios caminos por donde seguirá
la ejecución del programa. Esta selección viene
determinada por la evaluación de una expresión
lógica o condición.
Pueden ser:
Simples Dobles Anidadas MúltiplesEstructuras selectivas
Estructura selectiva simple
Diagrama de Flujo Sentencias Condición V F En C++ if(condición){ sentencias; } Pseudocódigo Si(condición)entonces sentencias Fin SiEstructura selectiva doble
Diagrama de Flujo En C++ if(condición){ sentencias; } else{ sentencias; } Pseudocódigo Si(condición)entonces sentencias 1 Sino sentencias 2 Fin Si condición F V sentencia1 sentencia2
La instrucción SI-ENTONCES puede ser utilizada
también en casos de selección de más de dos
alternativas.
Esto es posible
anidandoestas instrucciones. Es
decir, una estructura SI-ENTONCES puede
contener a otra, y esta a su vez a otra.
Estructura selectiva anidada
Diagrama de Flujo cond F V cond cond F V V FEstructura selectiva anidada
if (condición1) { if (condición2) { bloque1 } else { bloque2 } } else { if (condición3) { bloque3 } else { bloque4 } } Si (condición1) entonces Si (condición2) entonces bloque1 Sino bloque2 Fin Si Sino Si (condición3) entonces bloque3 Sino bloque4 Fin Si Fin Si Pseudocódigo En C++Estructura selectiva anidada
Ejemplo:
Inicio
edadJuan 20 edadJose 18
Si (edadJuan < edadJose) entonces
Escribir "Juan es mas joven que Jose" Sino
Si (edadJuan > edadJose)
Escribir "Juan es mayor que Jose" Sino
Escribir "Juan tiene la misma edad que Jose" Fin Si
Fin Si Fin
Estructura selectiva anidada
Ejemplo:
Un sensor toma (lee) la temperatura ambiente y de
acuerdo al rango en que se encuentre, debe emitir un mensaje. La escala es la siguiente:
Mayor que 100 “Temperatura muy alta – Mal
funcionamiento”
Entre 91 y 100 “Rango normal”
Entre 51 y 90 “Bajo el rango normal”
Estructura selectiva anidada
Solución:
INICIO
Leer temperatura
Si temperatura > 100 entonces
Escribir “Temperatura muy alta – Mal funcionamiento”
Sino
Si temperatura > 90 entonces Escribir “Rango normal”
Sino
Si temperatura > 50 entonces
Escribir “Bajo el rango normal”
Sino
Escribir “Muy frío – Apague equipo”
Fin Si Fin Si
Fin Si FIN
Estructura selectiva múltiple
Cuando en una condición existen diversas
posibilidades nos vemos obligados a utilizar
estructuras selectivas anidadas, lo que complica la realización y depuración del código.
Para facilitar esta situación se tiene la estructura
selectiva múltiple que permite definir un número
ilimitado de ramas basadas en una misma condición.
En otras palabras la condición puede tomar más de
dos valores y por cada valor que cumpla realizará una acción
Estructura selectiva múltiple
Diagrama de Flujo cond Caso1 Caso2 … CasoNEstructura selectiva múltiple
Pseudocódigo
Según (condición) Hacer Caso1: Acción1 [salir] Caso2: Acción2 [salir] ... CasoN: AcciónN [salir] De otro modo:
Acción por defecto Fin Según
Estructura selectiva múltiple (switch)
En C++
switch (condición) { case caso1: acción1;
[break;]
case caso2: acción2; [break;]
...
case casoP: acciónP; [break;]
default: acciónN; };
La condición puede ser una expresión, siendo ésta una
fórmula o una variable.
Las sentencias de cada case se ejecutan
secuencialmente incluyendo las de los otros casos, a menos que se use la sentencia break que es opcional.
En la condicional sólo se permite char, int, byte, short. Omitir la sentencia break trae como consecuencia,
ejecutar el siguiente case.