While Leonel Morales Díaz Ingeniería Simple [email_address] Disponible en: http://www.ingenieriasimple.com/introprogra Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados
While Repetir un bloque Mientras se cumpla una condición No sabemos exactamente cuándo
While Do While  Condición Instrucciones [Exit Do] Instrucciones Loop while ( Condición ) { Instrucciones [break;] Instrucciones }
Ejemplo Option Explicit Dim Ahorita, i Ahorita = Time i = 0 Document.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 Loop Document.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, i Ahorita = Time i = 0 Document.Write “<P>” Do While Time – Ahorita < TimeSerial(0,0,1) Document.Write “Ahorita: “ & Ahorita & “ – Time: “ & Time & “ – diferencia: “ & (Time – Ahorita) & “<BR>” i = i + 1 Loop Document.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 cuenta En 1 segundo pasan muchas cosas Y si la compu es rápida Más cosas todavía
Otra forma de While Do Instrucciones [Exit Do] Instrucciones Loop While  Condición Do Until  Condición ... Loop Do ... Loop Until  Condición
While “anidado” Dim x,y x = 0 y = 10 Do While x < y x = x + 2 Do While y*x > 15 y = y – 1 Loop Loop Document.Write “x = “ & x & “ - y = “ & y ej043.html
Condición compuesta Dim i,j i = 0 Do While i < 100 And Time < TimeSerial(12,0,0) j = 0 Document.Write “<P>” Do While j < i Document.Write “*” j = j + 1 Loop Document.Write “</P>” i = i + 1 Loop ej044.html
Elementos del Ciclo Dim i,j i = 0 Do While i < 100 And Time < TimeSerial(12,0,0) j = 0 Document.Write “<P>” Do While j < i Document.Write “*” j = j + 1 Loop Document.Write “</P>”   i = i + 1 Loop ej044.html Inicialización Incremento
Formato Dim i,j i = 0 Do While i < 100 And Time < TimeSerial(12,0,0) j = 0 Document.Write “<P>” Do While j < i Document.Write “*” j = j + 1 Loop Document.Write “</P>”   i = i + 1 Loop ej044.html Sangría o Tabulación
For ... Next
For ... Next Repetir un bloque Una cantidad exacta de veces En base a una variable Llamada contador Usualmente i, j, k
Ejemplo ‘ Imprime los números del 1 al 50 Dim i Document.Write “<P>” For i = 1 To 50 Document.Write i & “, “ Next Document.Write “</P>”
Ejemplo ‘ Imprime los números del 1 al 50 Dim i Document.Write “<P>” For i = 1 To 50 Document.Write i & “, “ Next Document.Write “</P>” Inicio del ciclo Fin 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 i Document.Write “<P>” For i = 1 To 50 Document.Write i & “, “ Next Document.Write “</P>” ‘ Imprime los números del 1 al 50 con While Dim i Document.Write “<P>” i = 0 Do While i < 50 Document.Write i & “, “ i = i + 1 Loop Document.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,k k = 0 Document.Write “<P>” For i = 0 To 23 For j = 0 To 59 Document.Write i & “:” & j & “ – “ & k & “<BR>” k = k + 1 Next Next Document.Write “</P>” ej045.html
If – Then – Else
Construcción If – Then – Else Ejecuta condicionalmente un bloque Si la condición no se cumple Puede ejecutar otro bloque También puede anidarse Cuidado con el Else !!!
Sintáxis If  Condición  Then Instrucciones Else Instrucciones 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 Ahora Ahora = Time If 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 Ahora Ahora = Time If 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”
Ejemplo Construír una tabla De 20x12 Con 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,k k = 1 For i = 1 To 20 Document.Write “<TR>” For j = 1 To 12 Document.Write “<TD Align=Center>” & k & “</TD>” k = k + 1 Next Document.Write “</TR>” Next Document.Write “</Table>” ej046.html
Agregando el color Dim i,j,k k = 1 For i = 1 To 20 Document.Write “<TR>” For j = 1 To 12 If k mod 5 = 0 Then Document.Write “<TD Align=Center BGColor=Red>” Else Document.Write “<TD Align=Center>” End If Document.Write k & “</TD>” k = k + 1 Next Document.Write “</TR>” Next Document.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,k k = 0 Document.Write “<P>” For i = 0 To 23 For j = 0 To 59 Document.Write i & “:” & j & “ – “ & k & “<BR>” k = k + 1 Next Next Document.Write “</P>”
Ejercicio 2 ‘ 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,k k = 1 For i = 1 To 20 Document.Write “<TR>” For j = 1 To 12 If k mod 5 = 0 Then Document.Write “<TD Align=Center BGColor=Red>” Else Document.Write “<TD Align=Center>” End If Document.Write k & “</TD>” k = k + 1 Next Document.Write “</TR>” Next Document.Write “</Table>”

Clase08

  • 1.
    While Leonel MoralesDíaz Ingeniería Simple [email_address] Disponible en: http://www.ingenieriasimple.com/introprogra Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados
  • 2.
    While Repetir unbloque Mientras se cumpla una condición No sabemos exactamente cuándo
  • 3.
    While Do While Condición Instrucciones [Exit Do] Instrucciones Loop while ( Condición ) { Instrucciones [break;] Instrucciones }
  • 4.
    Ejemplo Option ExplicitDim Ahorita, i Ahorita = Time i = 0 Document.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 Loop Document.Write “Se ejecutó el loop: “ & i & “ veces</P>” ej041.html
  • 5.
    Preguntas ¿Es constantela cantidad de veces que se ejecuta el loop? ¿Por qué no es constante?
  • 6.
    Ejemplo (otra versión)Option Explicit Dim Ahorita, i Ahorita = Time i = 0 Document.Write “<P>” Do While Time – Ahorita < TimeSerial(0,0,1) Document.Write “Ahorita: “ & Ahorita & “ – Time: “ & Time & “ – diferencia: “ & (Time – Ahorita) & “<BR>” i = i + 1 Loop Document.Write “Se ejecutó el loop: “ & i & “ veces</P>” ej042.html
  • 7.
    Conclusiones Una solaoperación Document.Write Es más rápida que 3 seguidas Hay que tomarlo en cuenta En 1 segundo pasan muchas cosas Y si la compu es rápida Más cosas todavía
  • 8.
    Otra forma deWhile Do Instrucciones [Exit Do] Instrucciones Loop While Condición Do Until Condición ... Loop Do ... Loop Until Condición
  • 9.
    While “anidado” Dimx,y x = 0 y = 10 Do While x < y x = x + 2 Do While y*x > 15 y = y – 1 Loop Loop Document.Write “x = “ & x & “ - y = “ & y ej043.html
  • 10.
    Condición compuesta Dimi,j i = 0 Do While i < 100 And Time < TimeSerial(12,0,0) j = 0 Document.Write “<P>” Do While j < i Document.Write “*” j = j + 1 Loop Document.Write “</P>” i = i + 1 Loop ej044.html
  • 11.
    Elementos del CicloDim i,j i = 0 Do While i < 100 And Time < TimeSerial(12,0,0) j = 0 Document.Write “<P>” Do While j < i Document.Write “*” j = j + 1 Loop Document.Write “</P>” i = i + 1 Loop ej044.html Inicialización Incremento
  • 12.
    Formato Dim i,ji = 0 Do While i < 100 And Time < TimeSerial(12,0,0) j = 0 Document.Write “<P>” Do While j < i Document.Write “*” j = j + 1 Loop Document.Write “</P>” i = i + 1 Loop ej044.html Sangría o Tabulación
  • 13.
  • 14.
    For ... NextRepetir un bloque Una cantidad exacta de veces En base a una variable Llamada contador Usualmente i, j, k
  • 15.
    Ejemplo ‘ Imprimelos números del 1 al 50 Dim i Document.Write “<P>” For i = 1 To 50 Document.Write i & “, “ Next Document.Write “</P>”
  • 16.
    Ejemplo ‘ Imprimelos números del 1 al 50 Dim i Document.Write “<P>” For i = 1 To 50 Document.Write i & “, “ Next Document.Write “</P>” Inicio del ciclo Fin del ciclo
  • 17.
    Observaciones Los ciclosFor pueden Ser anidados Ser cambiados por un While Ser interrumpidos por un Exit For Avanzar en más de uno Retroceder
  • 18.
    Ejemplo ‘ Imprimelos números del 1 al 50 Dim i Document.Write “<P>” For i = 1 To 50 Document.Write i & “, “ Next Document.Write “</P>” ‘ Imprime los números del 1 al 50 con While Dim i Document.Write “<P>” i = 0 Do While i < 50 Document.Write i & “, “ i = i + 1 Loop Document.Write “</P>”
  • 19.
    Ejemplo Construír unalista 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, ...
  • 20.
    Construcción Dim i,j,kk = 0 Document.Write “<P>” For i = 0 To 23 For j = 0 To 59 Document.Write i & “:” & j & “ – “ & k & “<BR>” k = k + 1 Next Next Document.Write “</P>” ej045.html
  • 21.
    If – Then– Else
  • 22.
    Construcción If –Then – Else Ejecuta condicionalmente un bloque Si la condición no se cumple Puede ejecutar otro bloque También puede anidarse Cuidado con el Else !!!
  • 23.
    Sintáxis If Condición Then Instrucciones Else Instrucciones End If if ( Condición ) { Instrucciones } else { Instrucciones }
  • 24.
    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 Ahora Ahora = Time If 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
  • 25.
    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 Ahora Ahora = Time If 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”
  • 26.
    Ejemplo Construír unatabla De 20x12 Con todas las celdas numeradas Correlativamente (1 a 240) Pintando de rojo aquellas que: Son múltiplos de 5
  • 27.
    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,k k = 1 For i = 1 To 20 Document.Write “<TR>” For j = 1 To 12 Document.Write “<TD Align=Center>” & k & “</TD>” k = k + 1 Next Document.Write “</TR>” Next Document.Write “</Table>” ej046.html
  • 28.
    Agregando el colorDim i,j,k k = 1 For i = 1 To 20 Document.Write “<TR>” For j = 1 To 12 If k mod 5 = 0 Then Document.Write “<TD Align=Center BGColor=Red>” Else Document.Write “<TD Align=Center>” End If Document.Write k & “</TD>” k = k + 1 Next Document.Write “</TR>” Next Document.Write “</Table>” ej047.html
  • 29.
    Preguntas ¿Puede sustituírseun If – Then – Else con un While? ¿Podríamos hacerlo todo solo con While? ¿Por qué tener estructuras diferentes?
  • 30.
    Ejercicio 1 Dimi,j,k k = 0 Document.Write “<P>” For i = 0 To 23 For j = 0 To 59 Document.Write i & “:” & j & “ – “ & k & “<BR>” k = k + 1 Next Next Document.Write “</P>”
  • 31.
    Ejercicio 2 ‘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,k k = 1 For i = 1 To 20 Document.Write “<TR>” For j = 1 To 12 If k mod 5 = 0 Then Document.Write “<TD Align=Center BGColor=Red>” Else Document.Write “<TD Align=Center>” End If Document.Write k & “</TD>” k = k + 1 Next Document.Write “</TR>” Next Document.Write “</Table>”