Dpto. Lenguajes y Sistemas...

23
3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos

Transcript of Dpto. Lenguajes y Sistemas...

Page 1: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

3. Estructuras iterativas

Curso 2012 / 2013

Fundamentos de InformáticaDpto. Lenguajes y Sistemas Informáticos

Page 2: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

2

ÍndiceEstructura iterativas

1. Análisis de algoritmos iterativos

2. Ej11: While3. Ej12: For

4. Ej13: Do - Loop

5. Resumen

Page 3: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

3

Iterativas

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

Análisis

Page 4: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

4

Iterativas

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 i2. Condición : se verifica si el contador i ha llegado al fin3. Actualización : se incrementa el contador i el paso p

Análisis For

i ≤ fin no

sí…

i ← ini

i ← i + p

For i = ini To fin Step p

. . .

Next i

Page 5: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

5

Iterativas

For: decreciente• En vez de contar i también puede descontar:

1. Inicialización : dar un valor inicial top al contador i, queserá 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

Análisis For

i ≥ fin no

sí…

i ← top

i ← i - p

For i = top To fin Step - p

. . .

Next i

Page 6: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

6

Iterativas

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

Análisis For

i ≤ 10 no

i ← 1

i ← i + 1

Sub Escribe_Click()

Dim i As Integer

For i = 1 To 10 Step 1

pct1. Print CStr ( i )

Next i

End Sub

Escribe i

Page 7: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

7

Iterativas

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

Análisis For

i ≥ 1 no

i ← 10

i ← i - 1

For i = 10 To 1 Step - 1

pct1. Print CStr ( i )

Next i

Escribe i

Page 8: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

8

Iterativas

1.3 Análisis: While• Si no puedo determinar de antemano cuántas veces se ha

de ejecutar el cuerpo,• ¿Puedo terminar directamente?• ¿Quiero que se ejecute cero o más veces?

– Sí: estructura While

Análisis While

no

sí…

For

condno

sí…

While

While cond

. . .

Wend

Page 9: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

9

Iterativas

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

Análisis While

i ≤ 10no

i ← i + 1

i = 1

While i <= 10

pct1. Print CStr ( i )

i = i + 1

Wend

i ← 1

Escribe i

i ≤ 10 no

i ← 1

i ← i + 1

Escribe i

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

For i = 1 To 10 Step 1

pct1. Print CStr (i)

Next i

Page 10: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

10

Iterativas

1.4 Análisis: Do-Loop• Si no puedo determinar de antemano cuántas veces se ha

de ejecutar el cuerpo• Y no puedo terminar directamente• ¿Quiero que se ejecute al menos una vez ?

– Sí: estructura Do – Loop While / Until

Análisis Do-Loop

no

For

no

sí…

While

cond

no

Do - LoopWhile/Until

no

Do

. . .

Loop While cond

Do

. . .

Loop Until cond

Page 11: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

11

Iterativas

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

Análisis Do-Loop

i ← i + 1

i = 1

Do

pct1. Print CStr (i)

i = i + 1

Loop While i <= 10

i ← 1

Escribe i

i ≤ 10

no

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

Page 12: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

12

Iterativas

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

Análisis Do-Loop

i > 10

no

i ← i + 1

i = 1

Do

pct1. Print CStr (i)

i = i + 1

Loop Until i > 10

i ← 1

Escribe i

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

Page 13: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

13

Iterativas

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, Π)

Ej11: While

no

sí…

While

Page 14: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

14

Ej11: Diagrama de FlujoEj11: WhileIterativas

Iterativa While

Fin

Escribe p

n ← LeeEntero

n, p: entero

p < n no

p ← 1

p ← p · 2

Condición de parada

cmd11_Click

Inicialización al elemento neutro

Cuerpo simple

Page 15: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

15

Ej11: Codificación VBEj11: While

Sub cmd11_Click()Dim s As StringDim n As Integer, p As Integers = InputBox ("Número:")n = CInt (s)p = 1While p < n

p = p * 2WendMsgBox "Potencia: " & p

End Sub

Iterativas

Fin

cmd11_Click

Escribe p

n ← LeeEntero

n, p: entero

p < nno

p ← 1

p ← p · 2

Iterativa While

Cuerpo indentado

Page 16: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

16

Iterativas

4. Ejemplo 12• Título:

– Iterativa For (para)

• Nombre– cmd12_Click

• Descripción– Escribir las sumas parciales de los n primeros términos

de una progresión a1= 1 y ai=ai-1+i para todo i > 1

• Observaciones– Número n de veces: For– Sumatorio (Sigma mayúscula, Σ)

Ej12: For

∑n

1=i

i=f

Salida para n = 8i f- -1: 12: 33: 64: 105: 156: 217: 288: 36

no

sí…

For

no

sí…

While

no

Do-Loop

Page 17: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

17

Ej12: Diagrama de FlujoEj12: ForIterativas

Iterativa For

Cuerpo del For

Fin

Ej12

Escribe i, f

n ← LeeEntero

i, n: enterof: entero

i ≤ n

f ← 0

i ← 1no

síi ← i+1

f ← f + i

Inicialización

Condición

Actualización

∑n

1=i

i=f

Page 18: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

18

Sub cmd12_Click()Dim s As StringDim i As Integer, n As IntegerDim f As Integers = InputBox ("Número:")n = CInt (s)f = 0For i = 1 To n Step 1

f = f + ipct1. Print CStr (i) & ": " & _

CStr (f)Next i

End Sub

Ej12: Codificación VBEj12: ForIterativas

Fin

Escribe i, f

n ← LeeEntero

i, n: enterof: entero

i ≤ n

f ← 0

i ← 1no

i ← i+1

f ← f + i

InicializaciónCondición

Actualización

cmd12_Click

Page 19: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

19

Iterativas

3. Ejemplo 13• Título:

– Iterativa do-while (haz-mientras)

• Nombre– cmd_Click13

• Descripción– Sumar una serie de números introducidos del

teclado hasta introducir un cero.

• Observaciones– Una o más veces: Do-Loop– Contar

Ej13: Do-Loop

no

sí…

While

no

Do-Loop

Page 20: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

20

Fin

cmd13_Click

Escribe t

n ← LeeEntero

t, n: entero

n ≠ 0

no

t ← 0

t ← t + n

n = 0

no

Ej13: Do-LoopIterativas

Ej13: Diagrama de Flujo

Iterativa Do-Loop

Cuerpo del Do-Loop

Condición de parada While

Condición de parada Until

Page 21: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

21

Ej13: Codificación VBEj13: Do-LoopIterativas

Sub cmd13_Click()Dim s As StringDim n As Integer, t As Integert = 0Do

s = InputBox ("Número:")n = CInt (s)t = t + n

Loop While n <> 0MsgBox CStr (t)

End Sub

Fin

cmd13_Click

Escribe t

n ← LeeEntero

t, n: entero

n ≠ 0

no

t ← 0

t ← t + n

Page 22: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.

22

Iterativas

5. Resumen• Ejemplos básicos

– Inicializar al elemento neutro y realizar la operación iterativa

• Patrones de operaciones– Sumar . Elemento neutro: 0– Contar . Elemento neutro: 0– Producto . Elemento neutro: 1– Concatenación . Elemento neutro: cadena vacía– Búsqueda . Elemento neutro: False.

Resumen

no

sí…

For

no

sí…

While

no

Do-Loop

Page 23: Dpto. Lenguajes y Sistemas Informáticoslsi.vc.ehu.eus/Asignaturas/FdIvb/Es/Teo/FdIvb-03-Iterativos.pdf3. Estructuras iterativas Curso 2012 / 2013 Fundamentos de Informática Dpto.