while leonel morales díaz ingeniería simple leonel@ingenieriasimple.com disponible en: copyright...
Post on 22-Apr-2015
23 Views
Preview:
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