while leonel morales díaz ingeniería simple [email protected] disponible en: copyright...

31
While Leonel Morales Díaz Ingeniería Simple [email protected] om Disponible en: http://www.ingenieriasimple.com/introp right 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados

Upload: mateo-olavarria

Post on 22-Apr-2015

23 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

While

Leonel Morales DíazIngeniería [email protected]

Disponible en: http://www.ingenieriasimple.com/introprograCopyright 2008 by Leonel Morales Díaz – Ingeniería Simple.

Derechos reservados

Page 2: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

While

Repetir un bloqueMientras se cumpla una condiciónNo sabemos exactamente cuándo

Page 3: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

While

Do While CondiciónInstrucciones[Exit Do]Instrucciones

Loop

while (Condición) {Instrucciones[break;]Instrucciones

}

Page 4: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejemplo

Option Explicit

Dim Ahorita, iAhorita = Timei = 0Document.Write “<P>”Do While Time – Ahorita < TimeSerial(0,0,1)

Document.Write “Ahorita: “ & Ahorita & “ – “Document.Write “Time: “ & Time & “ – “Document.Write “diferencia: “ & (Time – Ahorita) & “<BR>”i = i + 1

LoopDocument.Write “Se ejecutó el loop: “ & i & “ veces</P>”

ej041.html

Page 5: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Preguntas

¿Es constante la cantidad de veces que se ejecuta el loop?

¿Por qué no es constante?

Page 6: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejemplo (otra versión)

Option Explicit

Dim Ahorita, iAhorita = Timei = 0Document.Write “<P>”Do While Time – Ahorita < TimeSerial(0,0,1)

Document.Write “Ahorita: “ & Ahorita & “ – Time: “ & Time & “ – diferencia: “ & (Time – Ahorita) & “<BR>”i = i + 1

LoopDocument.Write “Se ejecutó el loop: “ & i & “ veces</P>”

ej042.html

Page 7: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Conclusiones

Una sola operación Document.Write Es más rápida que 3 seguidas

Hay que tomarlo en cuentaEn 1 segundo pasan muchas cosas Y si la compu es rápida Más cosas todavía

Page 8: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Otra forma de While

DoInstrucciones[Exit Do]Instrucciones

Loop While Condición

Do Until Condición...Loop

Do...Loop Until Condición

Page 9: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

While “anidado”

Dim x,yx = 0y = 10Do While x < y

x = x + 2Do While y*x > 15

y = y – 1Loop

LoopDocument.Write “x = “ & x & “ - y = “ & y

ej043.html

Page 10: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Condición compuesta

Dim i,ji = 0Do While i < 100 And Time < TimeSerial(12,0,0)

j = 0Document.Write “<P>”Do While j < i

Document.Write “*”j = j + 1

LoopDocument.Write “</P>”i = i + 1

Loop

ej044.html

Page 11: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Elementos del Ciclo

Dim i,ji = 0Do While i < 100 And Time < TimeSerial(12,0,0)

j = 0Document.Write “<P>”Do While j < i

Document.Write “*”j = j + 1

LoopDocument.Write “</P>” i = i + 1

Loop

ej044.html

InicializaciónInicialización

IncrementoIncremento

Page 12: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Formato

Dim i,ji = 0Do While i < 100 And Time < TimeSerial(12,0,0)

j = 0Document.Write “<P>”Do While j < i

Document.Write “*”j = j + 1

LoopDocument.Write “</P>” i = i + 1

Loop

ej044.html

Sangría oSangría oTabulaciónTabulación

Page 13: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

For ... Next

Page 14: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

For ... Next

Repetir un bloqueUna cantidad exacta de vecesEn base a una variable Llamada contador Usualmente i, j, k

Page 15: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejemplo

‘Imprime los números del 1 al 50Dim iDocument.Write “<P>”For i = 1 To 50

Document.Write i & “, “NextDocument.Write “</P>”

Page 16: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejemplo

‘Imprime los números del 1 al 50Dim iDocument.Write “<P>”For i = 1 To 50

Document.Write i & “, “NextDocument.Write “</P>”

Inicio del cicloInicio del ciclo

Fin del cicloFin del ciclo

Page 17: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Observaciones

Los ciclos For pueden Ser anidados Ser cambiados por un While Ser interrumpidos por un Exit For Avanzar en más de uno Retroceder

Page 18: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejemplo

‘Imprime los números del 1 al 50

Dim iDocument.Write “<P>”For i = 1 To 50

Document.Write i & “, “NextDocument.Write “</P>”

‘Imprime los números del 1 al 50 con While

Dim iDocument.Write “<P>”i = 0Do While i < 50

Document.Write i & “, “i = i + 1

LoopDocument.Write “</P>”

Page 19: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejemplo

Construír una lista de todas las horas y minutos del día 00:00, 00:01, 00:02, ... 05:34, ...

Con el número correlativo del minuto 00:00 – 0, 00:01 – 1, 00:02 – 2, ... 00:59 – 59, 01:00 – 60, 01:01 – 61, ...

Page 20: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Construcción

Dim i,j,kk = 0Document.Write “<P>”For i = 0 To 23

For j = 0 To 59Document.Write i & “:” & j & “ – “ & k & “<BR>”k = k + 1

NextNextDocument.Write “</P>”

ej045.html

Page 21: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

If – Then – Else

Page 22: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Construcción If – Then – Else

Ejecuta condicionalmente un bloqueSi la condición no se cumple Puede ejecutar otro bloque

También puede anidarse Cuidado con el Else !!!

Page 23: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Sintáxis

If Condición ThenInstrucciones

ElseInstrucciones

End If

if (Condición) {Instrucciones

} else {Instrucciones

}

Page 24: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Problemas con el “Else”

‘Imprime “buenos días” si es antes de medio día, “buenas tardes” si es pasado medio día y agrega “buen provecho” si es antes de las 14:00

Dim AhoraAhora = TimeIf Ahora > TimeSerial(12,0,0) Then

Document.Write “Buenas tardes”If Ahora < TimeSerial(14,0,0) Then

Document.Write “, buen provecho”Else

Document.Write “Buenos días”End If

Page 25: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Problemas con el “Else”

‘Imprime “buenos días” si es antes de medio día, “buenas tardes” si es pasado medio día y agrega “buen provecho” si es antes de las 14:00

Dim AhoraAhora = TimeIf Ahora > TimeSerial(12,0,0) Then

Document.Write “Buenas tardes”If Ahora < TimeSerial(14,0,0) Then

Document.Write “, buen provecho”Else

Document.Write “Buenos días”End If

Falta un “Else”Falta un “Else”

Page 26: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejemplo

Construír una tablaDe 20x12Con todas las celdas numeradas Correlativamente (1 a 240)

Pintando de rojo aquellas que: Son múltiplos de 5

Page 27: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Primera aproximación

‘Tabla de 20x12, con celdas numeradas del 1 al 240, pintando de rojo las que son múltiplos de 5

Document.Write “<Table Width=70% Border=1>”Dim i,j,kk = 1For i = 1 To 20

Document.Write “<TR>”For j = 1 To 12

Document.Write “<TD Align=Center>” & k & “</TD>”k = k + 1

NextDocument.Write “</TR>”

NextDocument.Write “</Table>”

ej046.html

Page 28: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Agregando el color

Dim i,j,kk = 1For i = 1 To 20

Document.Write “<TR>”For j = 1 To 12

If k mod 5 = 0 ThenIf k mod 5 = 0 ThenDocument.Write “<TD Align=Center BGColor=Red>”

ElseElseDocument.Write “<TD Align=Center>”

End IfEnd IfDocument.Write k & “</TD>”k = k + 1

NextDocument.Write “</TR>”

NextDocument.Write “</Table>”

ej047.html

Page 29: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Preguntas

¿Puede sustituírse un If – Then – Else con un While?

¿Podríamos hacerlo todo solo con While?

¿Por qué tener estructuras diferentes?

Page 30: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejercicio 1

Dim i,j,kk = 0Document.Write “<P>”For i = 0 To 23

For j = 0 To 59Document.Write i & “:” & j & “ – “ & k & “<BR>”k = k + 1

NextNextDocument.Write “</P>”

Page 31: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en:  Copyright 2008 by Leonel

Ejercicio 2‘Tabla de 20x12, con celdas numeradas del 1 al 240, pintando de rojo las que son múltiplos de

5Document.Write “<Table Width=70% Border=1>”Dim i,j,kk = 1For i = 1 To 20

Document.Write “<TR>”For j = 1 To 12

If k mod 5 = 0 ThenDocument.Write “<TD Align=Center BGColor=Red>”

ElseDocument.Write “<TD Align=Center>”

End IfDocument.Write k & “</TD>”k = k + 1

NextDocument.Write “</TR>”

NextDocument.Write “</Table>”