Programación 1
Estructuras de control
Angel Vázquez-Patiñ[email protected]
Departamento de Ciencias de la ComputaciónUniversidad de Cuenca
21 de marzo de 2017
21/03/17 Angel Vázquez-Patiño 2/53
Contenido
SecuencialDecisión (If)Operadores lógicosSelección (Case)Bucles (For, While, Repeat)
21/03/17 Angel Vázquez-Patiño 3/53
Estructuras de control
SecuencialDecisión (If)
Operadores lógicosSelección (Case)
Bucles (For, While, Repeat)
21/03/17 Angel Vázquez-Patiño 4/53
Secuencia
● La estructura de control más simple● Sucesión de operaciones en la que el orden de
ejecución coincide con el orden de aparición de las instrucciones
Acción 1 Acción 2 Acción n-1 Acción nInicio Fin
21/03/17 Angel Vázquez-Patiño 7/53
Estructuras de control
SecuencialDecisión (If)
Operadores lógicosSelección (Case)
Bucles (For, While, Repeat)
21/03/17 Angel Vázquez-Patiño 8/53
Decisión (If)
● Usar instrucciones únicamente de manera secuencial es casi imposible en la vida real
● Es necesario bifurcar el flujo del programa de acuerdo a los datos
● El flujo cambia de acuerdo a una condición
CondiciónNo Sí
21/03/17 Angel Vázquez-Patiño 9/53
Decisión (If)
Estructura if-thenEstructura if-then-else
Estructura anidada
21/03/17 Angel Vázquez-Patiño 10/53
Decisión (If)
Estructura if-thenEstructura if-then-else
Estructura anidada
21/03/17 Angel Vázquez-Patiño 12/53
Estructura if-then
● Si la condición se cumple se ejecuta(n) la(s) instrucción(es).
21/03/17 Angel Vázquez-Patiño 13/53
Estructura if-then
● Si la condición se cumple se ejecuta(n) la(s) instrucción(es).
21/03/17 Angel Vázquez-Patiño 15/53
Estructura if-then
Algoritmo mayorDeEdad
Leer edad;
Si edad >= 18 Entonces
Escribir "Usted es mayor de edad."
Fin Si
FinAlgoritmo
21/03/17 Angel Vázquez-Patiño 16/53
Decisión (If)
Estructura if-thenEstructura if-then-else
Estructura anidada
21/03/17 Angel Vázquez-Patiño 18/53
Estructua if-then-else
● Para elegir entre dos instrucciones
Algoritmo mayorMenorDeEdadLeer edad;Si edad >= 18 Entonces
Escribir "Usted es mayor de edad.";Sino
Escribir "Usted es menor de edad.";
Fin SiFinAlgoritmo
21/03/17 Angel Vázquez-Patiño 20/53
Estructua if-then-else
Algoritmo positivoNegativo
Leer num;
Si num > 0 Entonces
Escribir "Positivo.";
Sino
Escribir "Negativo.";
Fin Si
FinAlgoritmo
21/03/17 Angel Vázquez-Patiño 21/53
Decisión (If)
Estructura if-thenEstructura if-then-elseEstructura anidada
21/03/17 Angel Vázquez-Patiño 22/53
Estructura anidada
● La condición distingue entre tres o más casos● Se ejecuta una y sólo una de las instrucciones
21/03/17 Angel Vázquez-Patiño 23/53
Estructura anidada
Algoritmo positivoNegativoNulo
Leer num;
Si num > 0 Entonces
Escribir "Positivo.";
Sino
Si num < 0 Entonces
Escribir "Negativo.";
Sino
Escribir "Nulo.";
Fin Si
Fin Si
FinAlgoritmo
21/03/17 Angel Vázquez-Patiño 26/53
Estructuras de control
SecuencialDecisión (If)
Operadores lógicos y relacionalesSelección (Switch)
Bucles (For, While, Repeat)
21/03/17 Angel Vázquez-Patiño 27/53
Operadores lógicos y relacionales
Operadores lógicos:● Y (AND)● O (OR)● NO (NOT)
Operadores relacionales● =, es igual que● ! =, es distinto de● <, es menor que● <=, es menor o igual que● >, es mayor que● >=, es mayor o igual que
21/03/17 Angel Vázquez-Patiño 28/53
Operadores lógicos y relacionales
Análisis de un problema● Determine el menor valor de 3 números,
indicando además en qué orden fue ingresado (i.e., si fue el primero en ser ingresado, si fue el segundo o si fue el tercero). Considere que el menor valor no puede repetirse. Por ejemplo, si los números ingresados fueran: 14, 19, 14. El resultado debe ser: “El menor valor ingresado fue 14 y corresponde al 3° número ingresado”.
21/03/17 Angel Vázquez-Patiño 32/53
Estructuras de control
SecuencialDecisión (If)
Operadores lógicos y relacionalesSelección (Switch)
Bucles (For, While, Repeat)
21/03/17 Angel Vázquez-Patiño 33/53
Selección (Switch)
● Se utiliza cuando las alternativas en una estructura básica de decisión son más de dos
● Las condiciones serán valores preestablecidos (no rangos)
21/03/17 Angel Vázquez-Patiño 37/53
Selección (Switch)Algoritmo diaSemana
Leer dia;Segun dia Hacer
1:Escribir “Lunes”;
2:Escribir “Martes”;
3:Escribir “Miércoles”;
4:Escribir “Jueves”;
De Otro Modo:Escribir “Viernes”;
FinSegunFinAlgoritmo
21/03/17 Angel Vázquez-Patiño 38/53
Ejercicio 1
Desarrolle un algoritmo que pida al usuario un número entero y muestre un mensaje en función su valor:● Si 0<=n<5: “Mayor o igual que cero y menor
que cinco”● Si 5<=n<10: “Mayor o igual que cinco y menor
que diez” ● Si n<0: “Menor que cero”● Si no es ninguno de los anteriores: “Número
incorrecto”
21/03/17 Angel Vázquez-Patiño 39/53
Ejercicio 2
Desarrolle un algoritmo que pida un número entero entre 1 y 12 (inclusivo) y muestre un mensaje con el nombre del mes en función del número:● 1 = Enero● 2 = Febrero● 3 = Marzo● …● 12 = Diciembre
21/03/17 Angel Vázquez-Patiño 40/53
Estructuras de control
SecuencialDecisión (If)
Operadores lógicos y relacionalesSelección (Case)
Bucles (While, Repeat, For)
21/03/17 Angel Vázquez-Patiño 41/53
Bucles (lazos)
● Los bucles son estructuras que permiten ejecutar partes del código de forma repetida mientras se cumpla una condición.
● La instrucción o el bloque de instrucciones que se repiten en el bucle se denominan cuerpo del bucle.
● Cada repetición completa de un bucle se denomina iteración.
21/03/17 Angel Vázquez-Patiño 43/53
While (Mientras)
● Ejecuta continuamente las instrucciones dentro del cuerpo del bucle mientras se cumpla una condición
21/03/17 Angel Vázquez-Patiño 46/53
Repeat
● La condición se evalúa luego de ejecutar las instrucciones del cuerpo del bucle
● Por lo tanto, la(s) instrucción(es) se ejecuta(n) por lo menos una vez
21/03/17 Angel Vázquez-Patiño 48/53
Ejercicios
● Realizar un algoritmo que calcule el factorial de un número
● Realizar un algoritmo que muestre la tabla de multiplicar de un número entero n
En ambos casos hacer una versión utilizando While y otra utilizando Repeat
21/03/17 Angel Vázquez-Patiño 50/53
For
● Permite ejecutar un conjunto de sentencias cierto número de veces
Para variable_numérica<-valor_inicial Hasta valor_final Con Paso paso Hacersecuencia_de_acciones
Fin Para
21/03/17 Angel Vázquez-Patiño 53/53
Lecturas adicionalesSe recomienda leer la sección 2.1 Estructuras de Control del libro de De Giusti (2001) y el documento https://goo.gl/OMZYqA
EjerciciosSe recomienda realizar los ejercicios del capítulo 4 Sentencias de Control: Parte I del libro de Deitel y Deitel (2012).
Referencias● De Giusti, A., 2001. Algoritmos, datos y programas con
aplicaciones en Pascal, Delphi y Visual Da Vinci, 1st ed. Pearson Educación, Buenos Aires, Argentina.
● Deitel, P.J., Deitel, H.M., 2012. Java: How to Program, 9th ed. Prentice Hall, Upper Saddle River, N.J.