Estructuras Repetitivas y Esquemas Algorítmicos

Anuncio
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
Descargar