Logo Studenta

08-programacionEstructurada-Slides

¡Este material tiene más páginas!

Vista previa del material en texto

Programación Estructurada
Bucles y otras cosas liantes
Grupo ISCyP1
Departamento de Ingeniería de la Información y las Comunicaciones
Universidad de Murcia
10 de octubre de 2018 (11:28h)
1Erratas y sugerencias a ldaniel@um.es. La imagen está descargada de internet y si tuviera derechos de autor/distribución conocidos, por favor, avisen.
Índice de Contenidos
1 ¿Qué vamos a estudiar?
2 Estructuras de control
3 Expresiones booleanas
4 Estructuras condicionales o selectivas
5 Estructuras repetitivas
6 Estructuras Anidadas
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 2 27
Desarrollo
1 ¿Qué vamos a estudiar?
2 Estructuras de control
3 Expresiones booleanas
4 Estructuras condicionales o selectivas
5 Estructuras repetitivas
6 Estructuras Anidadas
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 3 27
Elementos de un Lenguaje de Programación
Instrucción. Responde a una acción que puede entender y ejecutar el lenguaje de
programación:
• Expresiones. P.e. las aritméticas. 2 + 3 * 5;
• Declaración y uso de variables. int a=2;
Estructuras. Determina qué instrucciones o estructuras deben realizarse.
• Sentencias de control.
if (cierto) then { print("hola");}
Función o procedimiento. Es un conjunto de instrucciones (y funciones) que se agrupan bajo un
nombre para realizar una tarea concreta.
• Funciones del lenguaje.
print("hola");
• Funciones de librería (o biblioteca).
import Stat; mean([2,3,4]);
• Funciones de usuario.
real miSuma (a,b) { return a+b; }
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 4 27
Desarrollo
1 ¿Qué vamos a estudiar?
2 Estructuras de control
3 Expresiones booleanas
4 Estructuras condicionales o selectivas
5 Estructuras repetitivas
6 Estructuras Anidadas
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 5 27
Paradigmas de programación
• La programación imperativa describe un programa en términos del estado del programa y
sentencias que cambian dicho estado. Utiliza variables y “goto”.
• La programación modular abstrae un conjunto de instrucciones como una función que define el
programador. Las funciones se comunican entre sí a través de sus parámetros.
(Se estudiará en el siguiente tema)
• La programación estructurada utiliza únicamente subrutinas o funciones y tres estructuras:
secuencial, condicional y repetitiva.
El teorema del programa estructurado, propuesto por Böhm-Jacopini, que demuestra que todo
programa puede escribirse utilizando únicamente las tres estructuras de control siguientes:
• Estructura secuencia. Está formada por una secuencia de llamadas a instrucciones del lenguaje o
funciones del programador.
• Estructura condicional. Es aquella que ejecuta una estructura si se cumple una condición
booleana.
• Estructura iterativa con condición. Es aquella que ejecuta una estructura una y otra vez si se
cumple una condición booleana.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 6 27
Un ejemplo
Entre dos números dados, sumar los pares y multiplicar los impares que hay entre ambos.
1 Almacenar en n y m, n<m, valores dados por el usuario. Variables de entrada.
2 Asignar actual igual a n.
3 Asignar suma igual a 0.
4 Asignar producto igual a 1.
5 Mientras que actual sea menor o igual a m hacer los siguiente
1 Imprimir el valor actual.
2 Si actual es par, hacer
1 Sumar actual con suma para actualizar suma.
3 Si actual es impar, hacer
1 Multiplicar actual con producto para actualizar producto.
4 Actualizar actual al siguiente número.
6 Mostrar el valor de suma.
7 Mostrar el valor de producto.
• Observa los tres tipos de estructura: secuencia, condicional, iterativa.
• Las condicionales e iterativa tienen condiciones.
Las condiciones viene dadas por expresiones booelanas.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 7 27
Desarrollo
1 ¿Qué vamos a estudiar?
2 Estructuras de control
3 Expresiones booleanas
4 Estructuras condicionales o selectivas
5 Estructuras repetitivas
6 Estructuras Anidadas
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 8 27
Expresiones booleanas
Son las que determinan las condiciones de las estructuras
Una expresión booelana es aquella que retorna un valor booleano, {true, false}.
• Operadores condicionales:
• Igualdad: a == b No confundir con a = b.
• Mayor estricto que: a > b
• Mayor o igual que: a >= b
• Menor estricto que: a > b
• Menor o igual que: a <= b
• Operadores booleanos:
• NOT
!a =
{
true , si a es false
false , si a es true
• AND
a && b =
{
true , si a y b son simultaneamente verdaderos (true)
false , en otro caso
• OR
a || b =
{
true , si a o b es verdadero (true)
false , en otro caso
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 9 27
Ejemplos
Ejemplo
• n == int(n/2) * 2, permite saber si n es par.
• n %2 != 0, permite saber si n es impar.
• (n %2 == 0) && !(m %2 != 0), permite saber si n y m son pares.
• (n %2 == 0) || (m %2 == 0), permite saber si n o m es par.
• !( (n %2 == 0) || (m %2 == 0) ), permite saber si n y m son imapres.
Ejercicio 1
• ¿Cuál es la expresión booleana que determina si dos puntos coinciden en alguna
coordenada?
• ¿Cuál es expresión para comprobar si un número está en un intervalo?
• El teorema de la desigualdad del triángulo establece que la suma de dos lados del triángulo
siempre es mayor que la medida del tercer lado. Si esto resulta ser verdad para todas las
tres combinaciones de las sumas, entonces se tiene un triángulo.
¿Cuál es la expresión lógica para determinar cuando una figura forma un triángulo, dados
sus lados?
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 10 27
Desarrollo
1 ¿Qué vamos a estudiar?
2 Estructuras de control
3 Expresiones booleanas
4 Estructuras condicionales o selectivas
5 Estructuras repetitivas
6 Estructuras Anidadas
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 11 27
Estructuras condicionales
Denotamos por condicion a cualquier expresión Booleana.
• Condicional simple
1 if (condicion) { // Si se cumple la condición
2 instrucciones // haz estas instrucciones
3 }
• Condicional doble
1 if (condicion) { // Si se cumple la condición
2 instrucciones // haz estas instrucciones
3 } else { // y si no se cumplen
4 instrucciones // haz estas otras
5 }
• Expresión general de un condicional
1 if (condicion) { // Si se cumple la condición
2 instrucciones // haz estas instrucciones
3 } [ else { // [Opcionalmente], y si no se cumplen
4 instrucciones // haz estas otras
5 } ]
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 12 27
Ejercicios de Estructuras Condicionales
Ejemplos if()
Ejercicio 2
1 Comprobar si un número es par.
2 Solicita dos números e indica si son iguales.
3 Calcula el inverso de un número.
4 Calcula el producto de dos números naturales y muestra el resultado si el producto es
múltiplo de 7.
5 Calcular el cociente y resto de una división (evitando dividir por cero).
6 Dados dos valores en las variables min y max, garantiza que min<max.
7 Haz que una bola rebote por la pantalla gráfica, cambiando de color en cada choque.
8 Comprobar si dos círculos están solapados.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 13 27
Ejercicios de Estructuras Condicionales
Ejemplos if()else{}
Ejercicio 3
1 Genera dos números naturales. Indica si son iguales o distintos.
2 Calcula el inverso de la suma de dos números, mostrando un error si se divide por cero.
3 Si un número es par dibuja un cuadrado, en otro caso dibuja un círculo.
4 Aplica un descuento del 25 % a un amigo y de un 10 % a los demás.
5 Informa si una persona puede conducir.
6 Indica si dos círculos están solapados o no, usando if()else y un solo if().
Grupo ISCyP(DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 14 27
Desarrollo
1 ¿Qué vamos a estudiar?
2 Estructuras de control
3 Expresiones booleanas
4 Estructuras condicionales o selectivas
5 Estructuras repetitivas
6 Estructuras Anidadas
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 15 27
Estructuras repetitivas
Una instrucción iterativa o repetitiva, también conocida como bucle, tiene la misión de ejecutar las
mismas instrucciones de código una y otra vez mientras que se cumpla una determinada condición.
1 Inicialización.
2 MIENTRAS (condición) HACER {
3 Cuerpo
4 }
5 Finalización.
• MIENTRAS-HACER es la sentencia iterativa y consta de cero o más iteraciones.
Una iteración es un proceso formado por las siguientes acciones:
1 Comprobar el valor de la expresión booleana condición de control.
• La condición dependerá de una variable de control (que no siempre es booleana).
2 Si condición == true ejecutar el Cuerpo
• Cuerpo, conjunto de instrucciones que se ejecutan mientras que condición == true.
• Es imprescindible que en el cuerpo haya alguna instrucción que modifique para el siguiente ciclo la
expresión booleana (de no modificarse nunca la variable de control, el bucle no tendría fin).
3 Si condición == false ir a Finalización.
• Cuando condición == false se tiene la condición de terminación.
Las iteraciones son las ejecuciones continuas del Cuerpo.
• Inicialización, instrucciones que inicializan las variables que participan de la iteración. En
particular a la variable de control.
• La finalización es el conjunto de instrucciones que se ejecutarán cuando las iteraciones (o
bucle) terminan.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 16 27
Variables de Control
Los patrones más usuales para la condición de la estructura repetitiva son:
• Condición basada en un contador . Se sabe cuántas veces hacer.
1 int contador=0;
2 MIENTRAS (contador < 10) HACER { ... contador = contador + 1; ...}
• Condición basada en un acumulador . El resultado de una expresión debe alcanzar un valor.
1 int suma=0; int producto=1;
2 MIENTRAS (suma < max) HACER { ... suma = suma + f(n); ...}
3 MIENTRAS (suma < max) HACER { ... producto = producto * g(n); ...}
• Condición basada en centinela . No se sabe exactamente cuántas.
1 int peso=datoUsuario();
2 MIENTRAS (peso != terminación) HACER { ... peso=datoUsuario(); ...}
3 tipos de valores-centinela (algunos ideales para la condición de terminación):
• Indiscutiblemente válidos. Son valores imposibles que un dato tome. peso=-10.
• Posiblemente válidos. Son valores que previsiblemente no tomará el dato. peso=500
• Inválidos. Son valores que muy probablemente deberían ser procesados y, por tanto, no son válidos
para la condición de terminación. peso=15.
• Condición basada en variable bandera . Otra forma de ver las centinelas.
1 boolean flag=true;
2 MIENTRAS (flag) HACER { ... if (algo) flag=false; ...}
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 17 27
Estructuras repetitivas en Processing
• Estructura pre-condicional
1 Inicialización.
2 while (condición) {
3 Cuerpo
4 }
5 Finalización.
• Estructura post-condicional
1 Inicialización.
2 do {
3 Cuerpo
4 } while (condición); // Punto y coma
5 Finalización.
• Estructura iterativa exacta (se puede hacer con while(){})
1 Inicialización.
2 for (P. de Inicialización; P. de iteración; P. de incremento) {
3 // P.e. for (int varControl=0; varControl<n; varControl++)
4 Cuerpo
5 }
6 Finalización.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 18 27
Ejercicio
Ejercicio 4: WHILE
1 Suma de los n-primeros números naturales.
2 Suma los números entre dos números dados.
3 Mientras que no se obtenga un número real aleatorio múltiplo de 5, muestra dicho número. Indica
cuántos números aleatorios has mostrado.
4 Mientas que la distancia de un punto aleatorio al centro de la ventana gráfica no sea mayor que medio
lado de la ventana gráfica, dibujar el punto.
5 Sumar los valores dados por el usuario mientras que sean positivos. Al finalizar muestra la media.
Ejercicio 5: FOR
1 Suma los números entre dos números dados.
2 Calcula 2n usando únicamente productos.
3 Muestra la tabla de multiplicar del número n.
4 Dibuja en la ventana gráfica un grid, formada por un mosaico de “cuadrados”.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 19 27
Desarrollo
1 ¿Qué vamos a estudiar?
2 Estructuras de control
3 Expresiones booleanas
4 Estructuras condicionales o selectivas
5 Estructuras repetitivas
6 Estructuras Anidadas
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 20 27
Anidamiento de condicionales
Denotamos por condicion a cualquier expresión Booleana.
1 if (condicionA) {
2 [
3 if (condicionB) {
4 } [else { mas instrucciones } ]
5 ]
6 }[ else {
7 [
8 if (condicionC) {
9 } [else { mas instrucciones } ]
10 ]
11 }]
• Los anidamientos en el if se suelen transformar en expresiones booleanas conjuntivas si las
anidadas no tienen sentencias else.
• Los anidamientos en el else se expresan como else if.
1 if (condicionA && condicionB) {
2 ...
3 } else if (condicionC) {
4 ...
5 }
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 21 27
Ejercicios de Estructuras Condicionales Anidadas
Ejemplos
Ejercicio 6
1 Comprobar si un número está en un intervalo.
2 Haz que una bola rebote por la pantalla gráfica, cambiando de color en cada choque.
3 Indica si un número es positivo, negativo o nulo.
4 A partir del radio, calcula el diámetro, el perímetro o el área de un círculo.
5 Solicita dos números al usuario e indica si son iguales o no.
• Si son iguales indica si son pares o no.
• Si son diferentes indica cuál es par y cuál es impar.
6 Construye una cadena alfanumérica que represente a un número binario de 3 bits para
cualquier número natural entre 0 y 7.
7 Determinar el número de días que tiene un mes.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 22 27
Condicional Múltiple
Si existen muchos else if se puede utilizar switch-case
Recuerda: expresion solo puede ser uno de estos tipos int, char o String.
1 switch (expresion) {
2 case constante1:
3 conjunto de sentencias que se ejecutarán
4 si expresion == constante1 es cierto.
5 break;
6 case constante2:
7 conjunto de sentencias que se ejecutarán
8 si expresion == constante2 es cierto.
9 break;
10 ...
11 case constanteK:
12 conjunto de sentencias que se ejecutarán
13 si expresion == constanteK es cierto.
14 break;
15 default:
16 conjunto de sentencias que se ejecutarán
17 si expresion no retorna un valor coincide
18 con ninguna de las constantes anteriores.
19 }
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 23 27
Ejemplos Típicos de Condicional Múltiple
Random Walker
1 int direccion = floor(random (4));
3 switch (direccion) {
4 case 1: x = x + 1; break;
5 case 2: x = x - 1; break;
6 case 3: y = y + 1; break;
7 case 4: y = y - 1; break;
8 default: error
9 }
Cómo hacer un menú
1 String menu = "1. xxx\n2. yyy\n 3. zzz\n";
2 menu = menu + "4. www\n";
4 int opcion = int ( pideUnDatoAlUsuario( menu ) );
6 switch (opcion) {
7 case 1: instrucciones
8 break;
9 case 2: instrucciones
10 break;
11 ....
12 default: instrucciones
13 }
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 24 27
Ejercicios de Condicional Múltiple
Ejemplos
Ejercicio 7: Usando switch-case
• Determinar el número de días que tiene un mes.
• Calcular el diámetro, perímetro o área de un círculo con un menú.
• Indica la calificación de un alumno a partir de su nota numérica.
• Solicita dos números al usuario para a continuación mostrar en un menú qué operación
aritmética se quiere realizar con ellos. Muestra el resultado.
Simula la solicitud de una operación aritmética yla de dos números mediante la generación
de números aleatorios.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 25 27
Anidamientos en Estructuras repetitivas
• Cualquier bucle puede contener en el cuerpo estructuras de control de cualquier tipo.
• Cualquier estructura de control puede contener a un bucle.
• Las estructuras contenidas se llaman estructuras anidadas.
• Los anidamientos de estructuras repetitivas se llaman bucles anidados.
• Los anidamientos de estructuras condicionales se llaman condicionales anidados.
Ejemplo. Adivina qué hace
Haz la tabla de seguimiento del siguiente programa:
1 float x = 0.0, y = 0.0;
2 float k = 2.0;
3 float delta =1; // El incremento
4 while (x<k) {
5 y=0.0;
6 while (y<k) {
7 print("("); print(x); print(","); print(y); println(")");
8 y += delta;
9 }
10 x += delta;
11 }
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 26 27
Ejercicios de Estructuras Anidadas
Ejemplos
Ejercicio 8
1 Con switch-case, indica si un número representa un día laborable (toma un valor entre 1 y 5) o fin
de semana (toma el valor 6 o 7).
2 Calcular la suma y el producto de todos los múltiplos de un número en un rango.
3 Contar el número de divisores que tiene un número natural.
4 Muestra todos los números que hay a partir de un número dado n, siempre que el número sea divisible
por K . Repite el proceso mientras que los números no sean mayores que el triple de n. Indica cuántos
números has mostrado.
5 Muestra las tablas de multiplicar de 10 números consecutivos.
6 Recorre todos los pixels de la ventana gráfica y dibuja un círculo centrado en él si la suma de sus
coordenadas es múltiplo de 13.
7 Juego de adivinación: el humano debe adivinar el número pensado por el ordenador. Si se falla se indica
si el número pensado es mayor o menor al dado. Además, por cada intento extra gana la mitad del
premio para ese intento. Se empieza por mil euros.
8 Realizar un número K de veces las siguientes acciones. Se selecciona un natural aleatorio, n, y se
busca el natural más cercano, m, y mayor que él tal que sea múltiplo de 17 o 27. Entonces se suman
todos los múltiplos de 3 comprendidos entre n y m.
Grupo ISCyP (DIIC. Univ. de Murcia) Prog. Estructurada 10 de octubre de 2018 (11:28h) 27 27
	¿Qué vamos a estudiar?
	Estructuras de control
	Expresiones booleanas
	Estructuras condicionales o selectivas
	Estructuras repetitivas
	Estructuras Anidadas

Otros materiales

Materiales relacionados