Está en la página 1de 6

Índice

Estructura iterativas
3. Estructuras iterativas
1. Análisis de algoritmos iterativos
2. Ej11: While
Fundamentos de Informática
3. Ej12: For
Dpto. Lenguajes y Sistemas Informáticos
4. Ej13: Do - Loop
5. Resumen
Curso 2012 / 2013

Iterativas Análisis Iterativas Análisis For

1.1 Problemas iterativos 1.2 Análisis: For


• No pares hasta que tengas 145 pulsaciones por minuto • ¿Puedo determinar de antemano cuántas veces se ha de
• Vas a dar diez vueltas al campo ejecutar el cuerpo (“…”)?
• Calcula la media: suma todas las notas de la asignatura y – Sí: entonces utilizar una estructura For
divide entre el número de alumnos (contar) • Utiliza un contador i. Se divide en tres cláusulas:
• Busca un número que cumpla unas condiciones 1. Inicialización: dar un valor inicial ini al contador i
– ¿Uno? ¿Todos? 2. Condición: se verifica si el contador i ha llegado al fin
– ¿En qué dominio? 3. Actualización: se incrementa el contador i el paso p
• Cuenta los votos de la urna
– Mientras queden votos For i = ini To fin Step p
– Hasta que no quede ningún voto
i ← ini
. . .
• Operaciones con cadenas de caracteres no
i←i+p i ≤ fin
Next i
• Hasta que encuentres la cartera no sales de casa

3 4
Iterativas Análisis For Iterativas Análisis For

For: decreciente For: Escribir números del 1 al 10 (incremento)


• 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
i←1
2. Condición: se verifica si el contador i ha llegado al fin
no
(mientras i ≥ fin) i←i+1 i ≤ 10
3. Actualización: se decrementa el contador i el paso p, sí
que es negativo Sub Escribe_Click()
Escribe i
Dim i As Integer
For i = 1 To 10 Step 1
For i = top To fin Step -p
i ← top pct1.Print CStr (i)
. . .
no
i←i-p i ≥ fin Next i
Next i
sí End Sub

5 6

Iterativas Análisis For Iterativas Análisis While

For: Escribir números del 10 al 1 (decremento)


1.3 Análisis: While
• Si no puedo determinar de antemano cuántas veces se ha
de ejecutar el cuerpo,
i ← 10 • ¿Puedo terminar directamente? For

no • ¿Quiero que se ejecute cero o más veces?


i←i-1 i≥1
– Sí: estructura While no
sí sí

Escribe i While

For i = 10 To 1 Step -1
no While cond
cond
pct1.Print CStr (i)
sí . . .
Next i …
Wend

7 8
Iterativas Análisis While Iterativas Análisis Do-Loop

Escribir números del 1 al 10 (incremento) utilizando While


1.4 Análisis: Do-Loop
Lo normal es utilizar una estructura For ya que el • Si no puedo determinar de antemano cuántas veces se ha
propósito es más claro, pero aquí queremos de ejecutar el cuerpo For

i←1 comparar las dos estructuras • Y no puedo terminar directamente


• ¿Quiero que se ejecute al menos una vez? no


no i = 1 – Sí: estructura Do – Loop While / Until …
i ≤ 10
sí While i <= 10
While
Escribe i pct1.Print CStr (i)
Do - Loop
no
i = i + 1 While/Until sí

i←i+1

Wend Do Do

. . . . . .
i←1
Loop While cond sí Loop Until cond
i←i+1
no For i = 1 To 10 Step 1 cond
i ≤ 10 no
sí pct1.Print CStr (i) no
Escribe i
Next i

9 10

Iterativas Análisis Do-Loop Iterativas Análisis Do-Loop

Escribir números del 1 al 10 utilizando Do – Loop While Escribir números del 1 al 10 utilizando Do – Loop Until

Lo normal es utilizar una estructura For ya que el Lo normal es utilizar una estructura For ya que el
propósito es más claro, pero aquí queremos propósito es más claro, pero aquí queremos
i←1 comparar las dos estructuras i←1 comparar las dos estructuras

Escribe i i = 1 Escribe i i = 1
Do Do
i←i+1 pct1.Print CStr (i) i←i+1 pct1.Print CStr (i)
i = i + 1 i = i + 1
sí no
i ≤ 10 Loop While i <= 10 i > 10 Loop Until i > 10
no sí

11 12
Iterativas Ej11: While Iterativas Ej11: While

2. Ejemplo 11 Ej11: Diagrama de Flujo


• Título:
– Iterativa While (mientras) cmd11_Click
• Nombre n, p: entero
– cmd11_Click n ← LeeEntero
• Descripción Condición de Inicialización al elemento neutro
– Calcular la primera potencia de 2 mayor o igual que parada
p←1 Iterativa While
un número natural dado
• Observaciones
While no
– Cero o más veces: While p<n
– Productorio (Pi mayúscula, Π) sí
p←p·2 Escribe p
no
sí Cuerpo simple Fin

13 14

Iterativas Ej11: While Iterativas Ej12: For


Salida para n = 8
Ej11: Codificación VB i f
cmd11_Click

n, p: entero 4. Ejemplo 12 - -
1: 1
Sub cmd11_Click()
Dim s As String
n ← LeeEntero • Título: 2: 3
– Iterativa For (para) 3: 6
Dim n As Integer, p As Integer  n
 4: 10
s = InputBox ("Número:")
p←1
• Nombre f =

∑ i 
i =1
5: 15
6: 21
n = CInt (s) no – cmd12_Click
7: 28
p = 1 Iterativa While p<n
sí • Descripción 8: 36
While p < n p←p·2
Escribe p
– Escribir las sumas parciales de los n primeros términos
p = p * 2 de una progresión a1= 1 y ai=ai-1+i para todo i > 1
Wend Fin

MsgBox "Potencia: " & p • Observaciones


End Sub Cuerpo indentado – Número n de veces: For For
– Sumatorio (Sigma mayúscula, Σ)

While Do-Loop no
no … sí
sí …
… sí

no

15 16
Iterativas Ej12: For Iterativas Ej12: For

Ej12: Diagrama de Flujo Ej12: Codificación VB


cmd12_Click
i, n: entero
Inicialización f: entero
Ej12 i, n: entero  n

Inicialización
f: entero f =

∑ i 
i =1
Sub cmd12_Click()
Condición
Actualización
n ← LeeEntero

Dim s As String
Condición n ← LeeEntero f←0
Dim i As Integer, n As Integer
Dim f As Integer
Actualización i←1
f←0 s = InputBox ("Número:") no
i ← i+1 i≤n
n = CInt (s) sí
Iterativa For f = 0
i←1 f←f+i Fin
For i = 1 To n Step 1
no
i ← i+1 i≤n f = f + i Escribe i, f

sí pct1.Print CStr (i) & ": " & _


f←f+i Fin CStr (f)
Next i
Escribe i, f Cuerpo del For End Sub

17 18

Iterativas Ej13: Do-Loop Iterativas Ej13: Do-Loop

Ej13: Diagrama de Flujo


3. Ejemplo 13
• Título:
cmd13_Click
– Iterativa do-while (haz-mientras) t, n: entero
• Nombre
– cmd_Click13 t←0
Cuerpo del Do-Loop
• Descripción
– Sumar una serie de números introducidos del n ← LeeEntero
teclado hasta introducir un cero.
Iterativa Do-Loop
• Observaciones t←t+n
– Una o más veces: Do-Loop Do-Loop
– Contar sí
n≠0
While Condición de
… no parada Until
no Condición de Escribe t no
n=0
sí sí parada While
… sí
no Fin

19 20
Iterativas Ej13: Do-Loop Iterativas Resumen

Ej13: Codificación VB 5. Resumen


• Ejemplos básicos
– Inicializar al elemento neutro y realizar la operación iterativa
Sub cmd13_Click() • Patrones de operaciones
Dim s As String – Sumar. Elemento neutro: 0
Dim n As Integer, t As Integer
cmd13_Click – Contar. Elemento neutro: 0
t = 0 t, n: entero
Do – Producto. Elemento neutro: 1
t←0
s = InputBox ("Número:") – Concatenación. Elemento neutro: cadena vacía
n = CInt (s) n ← LeeEntero
– Búsqueda. Elemento neutro: False.
t = t + n
Loop While n <> 0 t←t+n For While Do-Loop
MsgBox CStr (t) sí
n≠0
End Sub
no
no no …
Escribe t

sí sí
Fin … sí

no

21 22

También podría gustarte