estructuras de control de flujo - uv.mx · pdf filesintaxis en lenguaje de...

17
Control de Flujo Estructuras de Control Experiencia Educativa de Algorítmica 1 CONTROL DE FLUJO

Upload: phamhanh

Post on 10-Feb-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Control de Flujo Estructuras de Control!!Experiencia Educativa de Algorítmica

�1CONTROL DE FLUJO

Page 2: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Introducción!!El estilo de como escribimos y analizamos un algoritmo se convierte en una de las principales características de la algorítmica, ya que esta nos permite desarrollar algoritmos de fácil comprensión o bien tan complejos como deseemos. Estas técnicas permiten crear programas estructurados cuyo flujo lógico es controlado por estructuras de control de flujo básicas: !

Secuencial Selectiva Repetitiva !

En este apartado se verá una introducción a las estructuras selectivas que son utilizadas para controlar el orden en que se ejecutan las sentencias de un programa mediante un “Si” (mejor conocido como “If”), incluyendo sus variantes que son el “Si-entonces” (“If-Then”), “Si-entonces-sino” (“If-Then-Else”) y “Según” (“Switch”). !Ademas de las sentencias, se verán las sentencias anidadas, así como las de multibifurcación que pueden ayudar a resolver problemas de cálculo. !El término de control de flujo se refiere al orden en que se ejecutan las sentencias de un programa, y generalmente a esta ejecución de los algoritmos se le denomina de tipo secuencial. Este término establece que las sentencias o instrucciones de un algoritmo se ejecutan en secuencia, en un orden, esto es una después de la otra. !!!

�2CONTROL DE FLUJO

Page 3: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura Secuencial!!Una estructura secuencial es aquella en la que una instrucción o acción sigue a otra en secuencia. En este tipo de estructuras tenemos que las instrucciones siguen un orden en el cual la salida de una instrucción es la entrada de la siguiente y así sucesivamente, tal como se muestra en el siguiente pseudocódigo y diagrama de flujo.

� !!!El ejemplo anterior muestra la suma y multiplicación de dos números capturados desde la linea de comandos en donde cada operación es almacenada en una variable.

Inicio

Leer A

Leer B

S <— A + B!P <— A * B

Escribir S, P

Fin

�3CONTROL DE FLUJO

Inicio Leer A; Leer B; S <— A + B; P <— A * B; Escribir S, P; Fin

Page 4: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructuras Selectivas!!Las estructuras selectivas son utilizadas para tomar decisiones lógicas. En estas se evalúa una condición en función del resultado de la misma ya sea que de como resultado verdadero o falso es como se elige uno u otro camino. !La representación de una estructura selectiva es mediante un “If-then-else” (“Si-entonces-Sino”) y en un diagrama de flujo se representan mediante la figura geométrica de un rombo. !Las estructuras selectivas pueden ser:

simples, dobles, anidadas y múltiples

!!!

�4CONTROL DE FLUJO

Condición

Puntos importantes:!Una estructura selectiva es aquella en la que una acción (Instrucción) sigue a otra en secuencia.!Las estructuras selectivas se utilizan para tomar decisiones lógicas; es por ello que también son llamadas estructuras de decisión o alternativas.!En estas se evalúa una condición y en función del resultado se realiza una opción o otra.!Las estructuras selectivas pueden ser Simples, Dobles, Múltiples o Anidadas.

Page 5: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura Selectiva Simple!!La estructura selectiva simple es un “If-Then" (“Si-Entonces”), el cual ejecuta una determinada acción cuando la condición resulta ser verdadera o falsa. Si la condición es verdadera, se ejecuta una acción o instrucción, sin embargo si la condición es falsa, no hace nada

!!!Sintaxis en lenguaje de programación!

!!

Pseudocódigo Java

Si (condición) Entonces Acciones; FinSi

if (condición){ Acciones; }

�5CONTROL DE FLUJO

Proceso sin_titulo Si 5 > 4 Entonces Escribir "Hacer una acción"; FinSi FinProceso

Inicio

Escribir “Hacer una acción”

5>4

Fin

Verdadero

Page 6: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura Selectiva Doble!!Como vimos la estructura simple no nos permite manejar dos opciones ya que solamente funciona cuando la condición es verdadera. Por ello tenemos una estructura selectiva Doble, también conocida como “If - Then - Else” (“Si - Entonces - Sino”), en donde si la condición es verdadera se ejecuta la acción S1 y si es falsa la acción S2.

!!Sintaxis en lenguaje de programación!

!!

Pseudocódigo Java

Si (condición) Entonces Acción S1; Sino Acción S2; FinSi

if (condición){ Acción S1; } else { Acción S2; }

�6CONTROL DE FLUJO

Proceso sin_titulo Si 5 > 4 Entonces Escribir “acción S1”; Sino Escribir “acción S2”; FinSi FinProceso

Inicio

Escribir “acción S2”

5>4

Fin

Verdadero

Escribir “acción S2”

Falso

Page 7: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura Selectiva Anidada!!Como vimos una estructura de selección doble implica a la selección de una o dos alternativas (Verdadero o Falso), sin embargo una estructura de selección “Si” puede contener más de dos alternativas de solución, esto es porque puede contener otra condición dentro de otra condición. Por lo tanto una estructura selectiva anidada constará de una serie de estructuras Si anidadas, esto es una condición dentro de otra. De tal forma que aparenta una escalera. !Sintaxis en lenguaje de programación!

Pseudocódigo Java

Si (condición) Entonces Si (condición) Entonces; Acción S1; Sino Acción S2; FinSi Sino Acción S3; FinSi

if (condición){ if(condición){ Acción S1; } else { Acción S2; } } else { Acción S3; }

�7CONTROL DE FLUJO

Proceso EjercicioConvierteNum Definir num Como Entero; Escribir "Programa que convierte numeros a texto"; Escribir "Introduce un numero entre 1 y 3"; Leer num; Si num > 0 && num < 4 Entonces Si num == 1 Entonces Escribir "Uno"; FinSi Si num == 2 Entonces Escribir "Dos"; FinSi Si num == 3 Entonces Escribir "Tres"; FinSi Sino Escribir "Numero fuera del rango"; FinSi FinProceso

Page 8: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

!

�8CONTROL DE FLUJO

VF

Inicio

n1>0 && n1<4

Fin

Escribir “Número Fuera de Rango”;

n1 = 1V

Escribir “Uno”;

F

n1 = 2V

Escribir “Dos”;

F

n1 = 3V

Escribir “Tres”;

F

Page 9: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura Selectiva Múltiple (Switch)!!Con frecuencia es necesario que existan más de dos opciones posibles. Este tipo de estructura permite decidir entre varios caminos posibles, en función del valor que tome una determinada instrucción. Permite ejecutar opcionalmente varias acciones posibles, dependiendo del valor almacenado en una variable de tipo numérico. !Al ejecutarse, se evalúa el contenido de la variable y se ejecuta la secuencia de instrucciones asociada con dicho valor en donde cada opción está formada por uno o más números separados por comas, dos puntos y una secuencia de instrucciones. En caso de que una opción incluya varios números, la secuencia de instrucciones se debe ejecutar cuando el valor de la variable es uno de esos números. Otra opción se denomina “De Otro Modo”, la cual se ejecutará sólo si el valor almacenado en la variable no coincide con ninguna de las opciones anteriores. !Sintaxis en lenguaje de programación!

!

Pseudocódigo Java

Segun <variable> Hacer <número1>: <instrucciones> <número2>,<número3>: <instrucciones> <...> De Otro Modo: <instrucciones> FinSegun

Switch <variable> { case 1: instrucciones; case 2: instrucciones; : Default: instrucciones; }

�9CONTROL DE FLUJO

Proceso EjemploSwitch Definir opc como Entero; Leer opc; Segun opc Hacer 1: Escribir "Hola Mundo"; 2: Escribir "Algorítmica"; 3: Escribir "Universidad Veracruzana"; 4: Escribir "Adiós"; De Otro Modo: Escribir "Opción no valida"; FinSegun FinProceso

Page 10: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

! !!!!! !!!!!!!!!!!!!!

�10CONTROL DE FLUJO

Escribir “Algorítmica”;

Fin

Escribir “Hola Mundo”; Escribir “UV”; Escribir

“Adiós”;Escribir

“Opción no valida”;

1 De otro modo2 3 4

Inicio

opc

Page 11: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Práctica 3: Realizar los siguientes ejercicios!!Estructura Secuencial!1) Capturar el nombre de un empleado. 2) Mostrar en pantalla las actividades que debes realizar el día de hoy. 3) Calcular los créditos que un estudiante cargo para el periodo actual tomando en cuenta

que cargo 5 Experiencias Educativas 4) Algoritmo que permita crear tu CURP, poniendo como últimos dos dígitos 01. 5) Imprimir números del 1 al 10 6) Imprimir la ruta que se debe seguir para llegar a Plaza Américas desde la Facultad. !Estructura Selectiva Simple!7) Leer dos números y determinar si están en orden creciente. 8) Leer dos números y determinar si están en orden decreciente. 9) Leer un número e indicar si es menor a 100. 10) Realizar un algoritmo que averigüe si dados dos números por el usuario uno es divisor

del otro. !Estructura Selectiva Doble!11) Leer dos números en pantalla e indicar si es par o impar. 12) Algoritmo que indique si un año ingresado desde pantalla es bisiesto o no. 13) Dados dos números, indicar cual de los dos es mayor. 14) Dados cinco números, obtener el valor medio, si el valor medio es menor del tercer

número, multiplicar la media por 2 e imprimir el resultado, sino, multiplicar la media por 3 e imprimir el resultado. !

Estructura Selectiva Múltiple!15) Algoritmo en el cual el usuario de un número del 1 al 12 y convertirlo al nombre del mes

correspondiente, por ejemplo 4 = Abril. 16) Algoritmo que indique de acuerdo al mes y día que el usuario ingrese, la estación del

año en la que se encuentra. 17) Algoritmo que calcule la hora dentro de un segundo, tomando en cuenta que el usuario

proporciona la hora, minuto y segundo. 18) Escribir un algoritmo que seleccione una operación de cuatro operaciones numéricas

disponibles, una vez seleccionada la operación, introducir dos números y ejecutar la operación. !!

�11CONTROL DE FLUJO

Page 12: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Práctica 4: Realizar los siguientes ejercicios!!Estructura Selectiva Anidada!1) Algoritmo que ordene los siguientes números de menor a mayor 5,1,3,8,2,6 2) De acuerdo a tres números dados por el usuario, indicar cual de ellos es el menor, y cual

es el mayor. 3) Algoritmo que simule el avance de un reloj de manecillas, tomando en cuenta horas,

minutos y segundos. 4) Dados tres números, el algoritmo debe identificar el número central. !Ejercicios de Repaso!1) Algoritmo que permita identificar si un valor dado es un número o texto 2) Algoritmo que permita capturar una ficha bibliográfica 3) Obtener el diámetro de un circulo 4) Calcular el perímetro de un circulo 5) Hacer un algoritmo de entrada a un estacionamiento, cuando llega un usuario al

estacionamiento esté presiona un botón y el algoritmo debe entregar un boleto de ingreso, el cual tiene la fecha, hora y un folio.

�12CONTROL DE FLUJO

Page 13: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructuras Repetitivas!!En este tema se examinan los diferentes métodos que utilizamos para crear o construir secciones de código repetitivas. Lo cual nos lleva al concepto de bucle, las cuales son estructuras que se repiten un número determinado de veces, a los cuales también se les conoce como iteraciones.En este tema veremos las sentencias de: !

While (mientras) Do - While (hacer mientras) For (desde / para) !

Cuando utilizamos bucles debemos conocer cuando detenerlo, para ello es necesario saber cuantas veces vamos a hacer la repetición, ya que si se desconoce este dato tendríamos un bucle infinito, lo cual nos llevaría a un error lógico. !!!!!!!!!!!!!!

!

�13CONTROL DE FLUJO

Condición

acciones

No

Puntos importantes:!En todo bucle debemos preguntarnos:!

¿qué contiene el bucle?!¿cuantas veces se debe repetir?

Page 14: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura mientras (“While”)!!Estructura repetitiva conocida como “mientras”, en su caso el cuerpo del bucle se repite mientras se cumple una determinada condición, en donde esta condición se evalúa mediante una expresión booleana (recordando que una condición booleana nos da como resultado Verdadero o Falso). Si se evalúa como falso no se toma ninguna acción y se sale del bucle, en caso que la expresión booleana arroje como resultado verdadero, se ejecuta el cuerpo del bucle, permitiendo volver a evaluar la expresión y volver a ejecutar el cuerpo del bucle mientras este sea Verdadero.

!

!! !!Sintaxis en lenguaje de programación!

Pseudocódigo Java

Mientras (condición) Hacer acciones; FinMientras

While(condición){ acciones; }

�14CONTROL DE FLUJO

Cuando la expresión o condición sea falsa se sale del ciclo, mientras sea verdadera permanece dentro del ciclo.

Condición

acciones

Falso

Verdadero

Proceso sin_titulo Definir x Como Entero; x = 0; Mientras x < 5 Hacer x = x + 1; Escribir x; FinMientras FinProceso

Page 15: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura hacer-mientras (“do-while”)!!Estructura repetitiva conocida como “hacer - mientras”, es un método muy parecido al While, con la diferencia de que este funciona al menos una vez. Esto quiere decir que este tipo de estructuras también se les conoce como bucles pre-test, en donde se requiere que el cuerpo del bucle se ejecute al menos una vez sea cual sea el valor de la expresión o condicho de evaluación.

!!!

!Sintaxis en lenguaje de programación!

Pseudocódigo PSeInt Java

Hacer acciones; Mientras (condición)

Repetir acciones; Hasta Que (condición)

While(condición){ acciones; }

�15CONTROL DE FLUJO

El bucle do-while se termina de ejecutar cuando el valor de la condición es falsa.

Condición

acciones

Falso

Verdadero

Proceso sin_titulo Definir x Como Entero; x = 0; Do x = x + 1; Escribir x; Mientras x < 5 FinProceso

En PSeInt se conoce como un “repetir”, sin embargo, el ciclo termina cuando la condición es Verdadera

Page 16: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Estructura Para (“For”)!!Es una de las estructuras más utilizadas, La instrucción For ejecuta una secuencia de instrucciones o acciones un número determinado de veces. En su lógica se tienen tres secciones, en la primera de ellas se conoce el valor inicial, en donde se inicializa la variable de control dando pauta a donde comenzaremos el ciclo, como segunda sección tenemos la condicional y como tercera sección tenemos el incremento o decremento de la variable de control. Un for se puede representar de las siguientes maneras: !! !!!!!!

!Sintaxis en lenguaje de programación!

!

Pseudocódigo Java

Para (variable = inicio) Hasta (valor final) Hacer acciones; FinPara

for(var Inicio ; condición ; var Incremento){ acciones; }

�16CONTROL DE FLUJO

Condición

acciones

Falso

Verdadero

Inicializa Variable

Incremento Variable

acciones

Inicio

Variable

FinCondición

Proceso sin_titulo Definir x Como Entero; Para x=0 Hasta 10 Hacer Escribir x; FinPara FinProceso

En PSeInt se tiene la opción Con Paso para definir como se incrementa o decrementa, por default es 1.

Page 17: Estructuras de Control de Flujo - uv.mx · PDF fileSintaxis en lenguaje de programación! Pseudoc digo Java Si (condici n) ... (Switch)! Con frecuencia es necesario que existan más

Práctica 5: Realizar los siguientes ejercicios!!1. Mediante el manejo de dos variables enteras (Número y Contador) leer desde pantalla,

cuantos números vas a sumar. 2. Obtener el promedio de 10 números dados desde lectura estándar, utilizando While. 3. Obtener el promedio de 10 números dados desde lectura estándar, utilizando Do-While. 4. Obtener el promedio de 10 números dados desde lectura estándar, utilizando For. 5. Introducir el sueldo bruto de un empleado y calcular su sueldo neto con base a las

siguientes condiciones: A) sumar ayuda de renta 1000 B) sumar apoyó por puntualidad 300 C) restar impuesto 16%

6. Mostrar en pantalla los primeros 30 números impares. 7. Mostrar en pantalla los primeros 30 números pares. 8. Calcular la suma de 5 números dados por el usuario (hacerlo con los ciclos While, Do-

While y For). 9. Leer desde teclado sucesivamente números hasta que aparezca un número entre 5 y 8. 10. Calcular el factorial de un número n. 11.Determinar el valor máximo y minimo de 5 números dados por el usuario. 12.Determinar cuantos días han pasado en un año a partir de la fecha dada por el usuario.

(Día y Mes) 13. Imprimir la tabla de multiplicar del 7 14.Dado un número entero positivo, determinar si este es par o impar. 15.Capturar las calificaciones de un grupo de 10 alumnos e indicar cuantos aprobaron y

cuantos reprobaron.

�17CONTROL DE FLUJO