while leonel morales díaz ingeniería simple leonel@ingenieriasimple.com disponible en: copyright...

Post on 22-Apr-2015

23 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

While

Leonel Morales DíazIngeniería Simpleleonel@ingenieriasimple.com

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

Derechos reservados

While

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

While

Do While CondiciónInstrucciones[Exit Do]Instrucciones

Loop

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

}

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

Preguntas

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

¿Por qué no es constante?

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

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

Otra forma de While

DoInstrucciones[Exit Do]Instrucciones

Loop While Condición

Do Until Condición...Loop

Do...Loop Until Condición

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

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

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

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

For ... Next

For ... Next

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

Ejemplo

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

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

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

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

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>”

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, ...

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

If – Then – Else

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 !!!

Sintáxis

If Condición ThenInstrucciones

ElseInstrucciones

End If

if (Condición) {Instrucciones

} else {Instrucciones

}

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

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”

Ejemplo

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

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

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

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

Preguntas

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

¿Podríamos hacerlo todo solo con While?

¿Por qué tener estructuras diferentes?

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>”

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>”

top related