3. Estructuras iterativas Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos
Curso 2012 / 2013
Índice Estructura iterativas 1. 2. 3. 4. 5.
Análisis de algoritmos iterativos Ej11: While Ej12: For Ej13: Do - Loop Resumen
2
Iterativas
Análisis
1.1 Problemas iterativos • No pares hasta que tengas 145 pulsaciones por minuto • Vas a dar diez vueltas al campo • Calcula la media: suma todas las notas de la asignatura y divide entre el número de alumnos (contar) • Busca un número que cumpla unas condiciones – ¿Uno? ¿Todos? – ¿En qué dominio?
• Cuenta los votos de la urna – Mientras queden votos – Hasta que no quede ningún voto
• Operaciones con cadenas de caracteres • Hasta que encuentres la cartera no sales de casa
3
Iterativas
Análisis For
1.2 Análisis: For •
¿Puedo determinar de antemano cuántas veces se ha de ejecutar el cuerpo (“…”)? – Sí: entonces utilizar una estructura For
•
Utiliza un contador i. Se divide en tres cláusulas: 1. Inicialización: dar un valor inicial ini al contador i 2. Condición: se verifica si el contador i ha llegado al fin 3. Actualización: se incrementa el contador i el paso p For i = ini To fin Step p
i ← ini i←i+p
i ≤ fin
no
. . . Next i
sí …
4
Iterativas
Análisis For
For: decreciente • En vez de contar i también puede descontar: 1. Inicialización: dar un valor inicial top al contador i, que será el valor superior 2. Condición: se verifica si el contador i ha llegado al fin (mientras i ≥ fin) 3. Actualización: se decrementa el contador i el paso p, que es negativo
For i = top To fin Step -p
i ← top i←i-p
i ≥ fin
no
. . . Next i
sí …
5
Iterativas
Análisis For
For: Escribir números del 1 al 10 (incremento)
i←1 i←i+1
i ≤ 10 sí Escribe i
no
Sub Escribe_Click() Dim i As Integer For i = 1 To 10 Step 1 pct1.Print CStr (i) Next i End Sub
6
Iterativas
Análisis For
For: Escribir números del 10 al 1 (decremento)
i ← 10 i←i-1
i≥1
no
sí Escribe i
For i = 10 To 1 Step -1 pct1.Print CStr (i) Next i
7
Iterativas
Análisis While
1.3 Análisis: While • Si no puedo determinar de antemano cuántas veces se ha de ejecutar el cuerpo, For • ¿Puedo terminar directamente? • ¿Quiero que se ejecute cero o más veces? – Sí: estructura While sí …
While
cond
sí …
no
no
While cond . . . Wend
8
Iterativas
Análisis While
Escribir números del 1 al 10 (incremento) utilizando While
i←1
i ≤ 10
Lo normal es utilizar una estructura For ya que el propósito es más claro, pero aquí queremos comparar las dos estructuras no
i = 1 While i 10
sí
12
Iterativas
Ej11: While
2. Ejemplo 11 • Título: – Iterativa While (mientras)
• Nombre – cmd11_Click
• Descripción – Calcular la primera potencia de 2 mayor o igual que un número natural dado
• Observaciones – Cero o más veces: While – Productorio (Pi mayúscula, Π)
While no sí …
13
Iterativas
Ej11: While
Ej11: Diagrama de Flujo cmd11_Click n, p: entero n ← LeeEntero Condición de parada