Estructuras Repetitivas y Esquemas Algorítmicos Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido Estructura repetitivas: Bucles l Esquemas algorítmicos: Recorrido y Búsqueda l Sentencia while l Sentencia for l Sentencia do-while l Comparación l 2 Estructuras repetitivas: Bucles Los bucles permiten a un programa repetir la ejecución de una sentencia un cierto número de veces. l Permiten codificar instrucciones del tipo: l l l l Mientras queden juguetes en el suelo, coge un juguete y guárdalo. Copia 100 veces “No hablaré en clase”. Echa un tronco a la chimenea y mientras el leñero tenga troncos continúa echando. 3 Estructuras repetitivas: Bucles Los bucles habitualmente trabajan con secuencias finitas: l l l Existe un primer elemento y una forma de acceder a él Existe una forma de pasar de un elemento al siguiente Existe una manera de identificar si un elemento es el último 4 Esquemas algorítmicos: recorrido y búsqueda Existen dos esquemas fundamentales de bucles que trabajan con una secuencia: l Recorrido: Pasa por todos los elementos de la secuencia. Sabemos el número de iteraciones con antelación l Búsqueda: Pasa por los elementos de la secuencia hasta que encuentra alguno que satisface una determinada condición. 5 Sentencia while while (condición) { sentencia_1; … sentencia_n; } Cuerpo 1. Evalúa la condición 2. Si la condición es verdadera ejecuta el bloque de sentencias y vuelve a paso 1. 3. En caso contrario pasa a ejecutar la sentencia que se encuentra después del cuerpo. 6 Ejemplo Programa que muestra 123 veces “Hola mundo”. 7 Esquema de recorrido inicializar_secuencia; while (!final_de_secuencia) { procesar_elemento; pasar_a_siguiente; } 8 Ejemplo Programa que pregunta un entero n y muestra el valor de la suma de los enteros desde el 1 hasta el n. 9 Esquema de búsqueda inicializar_secuencia; int encontrado = 0; while (!encontrado && !final_de_secuencia) { if (cumple_condicion_busqueda) encontrado = 1; pasar_a_siguiente; } if (encontrado) tratar_exito; else tratar_fracaso; 10 Ejemplo Programa que pregunta un número y nos muestra si es primo o no 11 Sentencia for for (inicialización ; condicion_iteración ; incremento){ sentencias } La sentencia for es equivalente al siguiente código: inicialización; while (condición_iteración) { sentencias; incremento; } Por lo tanto es muy adecuada para implementar recorridos. 12 Ejemplo 1 Programa que muestra 123 veces “Hola mundo”. 13 Ejemplo 2 Programa que pregunta un entero n y muestra el valor de la suma de los enteros desde el 1 hasta el n. PARA PENSAR: ¿Cómo haríais con un for el programa que pregunta un número y nos muestra si es primo o no? ¿Es sencillo? ¿Por qué? 14 Sentencia do-while do { sentencias } while (condición) La sentencia while es equivalente al siguiente código: while (expresión) { sentencias } Diferencia: El cuerpo se ejecuta siempre al menos una vez. 15 Comparación de bucles while for dowhile - Adecuada para búsquedas - El cuerpo puede no ser ejecutado - La verificación de la condición precede a la ejecución del cuerpo - Adecuado para recorridos - La verificación de la condición precede a la ejecución del cuerpo - Adecuado en el caso de que debamos garantizar que el cuerpo del bucle se ejecuta por lo menos en una ocasión. 16