Estructuras de Control de Flujo.pages

Anuncio
Control de Flujo
Estructuras de Control!
!
Experiencia Educativa de Algorítmica
CONTROL DE FLUJO
1
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.
!
!
!
CONTROL DE FLUJO
2
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.
Inicio
Inicio
Leer A;
Leer B;
S <— A + B;
P <— A * B;
Escribir S, P;
Leer A
Leer B
Fin
S <— A + B!
P <— A * B
Escribir S, P
Fin
!!
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.
CONTROL DE FLUJO
3
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-thenelse” (“Si-entonces-Sino”) y en un diagrama de flujo se representan
mediante la figura geométrica de un rombo.
Condición
!
Las estructuras selectivas pueden ser:
simples,
dobles,
anidadas y
múltiples
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.
!
!
!
CONTROL DE FLUJO
4
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
Proceso sin_titulo
Si 5 > 4 Entonces
Escribir "Hacer una acción";
FinSi
FinProceso
Inicio
5>4
Verdadero
Escribir “Hacer una
acción”
Fin
!
!
!
Sintaxis en lenguaje de programación!
Pseudocódigo
Java
Si (condición) Entonces
Acciones;
FinSi
if (condición){
Acciones;
}
!
!
CONTROL DE FLUJO
5
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.
Proceso sin_titulo
Si 5 > 4 Entonces
Escribir “acción S1”;
Sino
Escribir “acción S2”;
FinSi
FinProceso
Inicio
Falso
5>4
Verdadero
Escribir “acción S2”
Escribir “acción S2”
Fin
!
!
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;
}
!
!
CONTROL DE FLUJO
6
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;
}
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
CONTROL DE FLUJO
7
Inicio
F
V
n1>0 &&
n1<4
Escribir “Número
Fuera de Rango”;
F
n1 = 1
V
Escribir “Uno”;
F
n1 = 2
V
Escribir “Dos”;
F
n1 = 3
V
Escribir “Tres”;
Fin
!
CONTROL DE FLUJO
8
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;
}
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
!
CONTROL DE FLUJO
9
!
!
!
!
!
!
Inicio
opc
1
!
!
!
!
!
!
!
!
!
!
!
Escribir “Hola
Mundo”;
!
!
!
2
Escribir
“Algorítmica”;
CONTROL DE FLUJO
3
Escribir “UV”;
4
Escribir
“Adiós”;
De otro modo
Escribir
“Opción no
valida”;
Fin
10
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.
!
!
CONTROL DE FLUJO
11
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.
CONTROL DE FLUJO
12
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.
!
!
!
!
!
!
!
!
!
!
!
!
!
!
Condición
No
acciones
Puntos importantes:!
En todo bucle debemos preguntarnos:!
¿qué contiene el bucle?!
¿cuantas veces se debe repetir?
!
CONTROL DE FLUJO
13
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.
Cuando la expresión o condición sea falsa se sale del ciclo, mientras sea verdadera
permanece dentro del ciclo.
!
Proceso sin_titulo
Definir x Como Entero;
x = 0;
Mientras x < 5 Hacer
x = x + 1;
Escribir x;
FinMientras
FinProceso
Falso
Condición
Verdadero
!
!
acciones
!
!
Sintaxis en lenguaje de programación!
Pseudocódigo
Java
Mientras (condición) Hacer
acciones;
FinMientras
While(condición){
acciones;
}
CONTROL DE FLUJO
14
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.
El bucle do-while se termina de ejecutar cuando el valor de la condición es falsa.
Proceso sin_titulo
Definir x Como Entero;
x = 0;
Do
x = x + 1;
Escribir x;
Mientras x < 5
FinProceso
acciones
Condición
Verdadero
!
!
!
Falso
En PSeInt se conoce como un “repetir”, sin embargo, el ciclo termina cuando la
condición es Verdadera
!
Sintaxis en lenguaje de programación!
Pseudocódigo
PSeInt
Java
Hacer
Repetir
acciones;
Hasta Que (condición)
While(condición){
acciones;
}
acciones;
Mientras (condición)
CONTROL DE FLUJO
15
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:
!
!
!
!
!
!
!
Inicializa Variable
!
Variable
Inicio
Condición
Condición
Fin
Falso
acciones
Verdadero
acciones
Incremento
Variable
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.
!
Sintaxis en lenguaje de programación!
Pseudocódigo
Java
Para (variable = inicio) Hasta (valor final) Hacer for(var Inicio ; condición ; var Incremento){
acciones;
acciones;
FinPara
}
!
CONTROL DE FLUJO
16
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, DoWhile 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.
CONTROL DE FLUJO
17
Descargar