Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Clase08

586 views

Published on

Estructuras de control de flujo de ejecución. Ciclos While, ejemplos. Otras formas de While. Ciclos anidados. Ciclos For - Next, comparación con While, ejemplos. Construcción If - Then - Else, ejemplos y errores comunes. Reducción de cualquier estructura a un ciclo While. Ejercicios.

Published in: Education, Technology, Business
  • Be the first to comment

  • Be the first to like this

Clase08

  1. 1. 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
  2. 2. While <ul><li>Repetir un bloque </li></ul><ul><li>Mientras se cumpla una condición </li></ul><ul><li>No sabemos exactamente cuándo </li></ul>
  3. 3. While <ul><li>Do While Condición </li></ul><ul><li>Instrucciones </li></ul><ul><li>[Exit Do] </li></ul><ul><li>Instrucciones </li></ul><ul><li>Loop </li></ul><ul><li>while ( Condición ) { </li></ul><ul><li>Instrucciones </li></ul><ul><li>[break;] </li></ul><ul><li>Instrucciones </li></ul><ul><li>} </li></ul>
  4. 4. Ejemplo <ul><li>Option Explicit </li></ul><ul><li>Dim Ahorita, i </li></ul><ul><li>Ahorita = Time </li></ul><ul><li>i = 0 </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>Do While Time – Ahorita < TimeSerial(0,0,1) </li></ul><ul><li>Document.Write “Ahorita: “ & Ahorita & “ – “ </li></ul><ul><li>Document.Write “Time: “ & Time & “ – “ </li></ul><ul><li>Document.Write “diferencia: “ & (Time – Ahorita) & “<BR>” </li></ul><ul><li>i = i + 1 </li></ul><ul><li>Loop </li></ul><ul><li>Document.Write “Se ejecutó el loop: “ & i & “ veces</P>” </li></ul>ej041.html
  5. 5. Preguntas <ul><li>¿Es constante la cantidad de veces que se ejecuta el loop? </li></ul><ul><li>¿Por qué no es constante? </li></ul>
  6. 6. Ejemplo (otra versión) <ul><li>Option Explicit </li></ul><ul><li>Dim Ahorita, i </li></ul><ul><li>Ahorita = Time </li></ul><ul><li>i = 0 </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>Do While Time – Ahorita < TimeSerial(0,0,1) </li></ul><ul><li>Document.Write “Ahorita: “ & Ahorita & “ – Time: “ & Time & “ – diferencia: “ & (Time – Ahorita) & “<BR>” </li></ul><ul><li>i = i + 1 </li></ul><ul><li>Loop </li></ul><ul><li>Document.Write “Se ejecutó el loop: “ & i & “ veces</P>” </li></ul>ej042.html
  7. 7. Conclusiones <ul><li>Una sola operación Document.Write </li></ul><ul><ul><li>Es más rápida que 3 seguidas </li></ul></ul><ul><li>Hay que tomarlo en cuenta </li></ul><ul><li>En 1 segundo pasan muchas cosas </li></ul><ul><ul><li>Y si la compu es rápida </li></ul></ul><ul><ul><li>Más cosas todavía </li></ul></ul>
  8. 8. Otra forma de While <ul><li>Do </li></ul><ul><li>Instrucciones </li></ul><ul><li>[Exit Do] </li></ul><ul><li>Instrucciones </li></ul><ul><li>Loop While Condición </li></ul><ul><li>Do Until Condición </li></ul><ul><li>... </li></ul><ul><li>Loop </li></ul><ul><li>Do </li></ul><ul><li>... </li></ul><ul><li>Loop Until Condición </li></ul>
  9. 9. While “anidado” <ul><li>Dim x,y </li></ul><ul><li>x = 0 </li></ul><ul><li>y = 10 </li></ul><ul><li>Do While x < y </li></ul><ul><li>x = x + 2 </li></ul><ul><li>Do While y*x > 15 </li></ul><ul><li>y = y – 1 </li></ul><ul><li>Loop </li></ul><ul><li>Loop </li></ul><ul><li>Document.Write “x = “ & x & “ - y = “ & y </li></ul>ej043.html
  10. 10. Condición compuesta <ul><li>Dim i,j </li></ul><ul><li>i = 0 </li></ul><ul><li>Do While i < 100 And Time < TimeSerial(12,0,0) </li></ul><ul><li>j = 0 </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>Do While j < i </li></ul><ul><li>Document.Write “*” </li></ul><ul><li>j = j + 1 </li></ul><ul><li>Loop </li></ul><ul><li>Document.Write “</P>” </li></ul><ul><li>i = i + 1 </li></ul><ul><li>Loop </li></ul>ej044.html
  11. 11. Elementos del Ciclo <ul><li>Dim i,j </li></ul><ul><li>i = 0 </li></ul><ul><li>Do While i < 100 And Time < TimeSerial(12,0,0) </li></ul><ul><li>j = 0 </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>Do While j < i </li></ul><ul><li>Document.Write “*” </li></ul><ul><li>j = j + 1 </li></ul><ul><li>Loop </li></ul><ul><li>Document.Write “</P>” </li></ul><ul><li> i = i + 1 </li></ul><ul><li>Loop </li></ul>ej044.html Inicialización Incremento
  12. 12. Formato <ul><li>Dim i,j </li></ul><ul><li>i = 0 </li></ul><ul><li>Do While i < 100 And Time < TimeSerial(12,0,0) </li></ul><ul><li>j = 0 </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>Do While j < i </li></ul><ul><li>Document.Write “*” </li></ul><ul><li>j = j + 1 </li></ul><ul><li>Loop </li></ul><ul><li>Document.Write “</P>” </li></ul><ul><li> i = i + 1 </li></ul><ul><li>Loop </li></ul>ej044.html Sangría o Tabulación
  13. 13. For ... Next
  14. 14. For ... Next <ul><li>Repetir un bloque </li></ul><ul><li>Una cantidad exacta de veces </li></ul><ul><li>En base a una variable </li></ul><ul><ul><li>Llamada contador </li></ul></ul><ul><ul><li>Usualmente i, j, k </li></ul></ul>
  15. 15. Ejemplo <ul><li>‘ Imprime los números del 1 al 50 </li></ul><ul><li>Dim i </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>For i = 1 To 50 </li></ul><ul><li>Document.Write i & “, “ </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</P>” </li></ul>
  16. 16. Ejemplo <ul><li>‘ Imprime los números del 1 al 50 </li></ul><ul><li>Dim i </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>For i = 1 To 50 </li></ul><ul><li>Document.Write i & “, “ </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</P>” </li></ul>Inicio del ciclo Fin del ciclo
  17. 17. Observaciones <ul><li>Los ciclos For pueden </li></ul><ul><ul><li>Ser anidados </li></ul></ul><ul><ul><li>Ser cambiados por un While </li></ul></ul><ul><ul><li>Ser interrumpidos por un Exit For </li></ul></ul><ul><ul><li>Avanzar en más de uno </li></ul></ul><ul><ul><li>Retroceder </li></ul></ul>
  18. 18. Ejemplo <ul><li>‘ Imprime los números del 1 al 50 </li></ul><ul><li>Dim i </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>For i = 1 To 50 </li></ul><ul><li>Document.Write i & “, “ </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</P>” </li></ul><ul><li>‘ Imprime los números del 1 al 50 con While </li></ul><ul><li>Dim i </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>i = 0 </li></ul><ul><li>Do While i < 50 </li></ul><ul><li>Document.Write i & “, “ </li></ul><ul><li>i = i + 1 </li></ul><ul><li>Loop </li></ul><ul><li>Document.Write “</P>” </li></ul>
  19. 19. Ejemplo <ul><li>Construír una lista de todas las horas y minutos del día </li></ul><ul><ul><li>00:00, 00:01, 00:02, ... 05:34, ... </li></ul></ul><ul><li>Con el número correlativo del minuto </li></ul><ul><ul><li>00:00 – 0, 00:01 – 1, 00:02 – 2, ... </li></ul></ul><ul><ul><li>00:59 – 59, 01:00 – 60, 01:01 – 61, ... </li></ul></ul>
  20. 20. Construcción <ul><li>Dim i,j,k </li></ul><ul><li>k = 0 </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>For i = 0 To 23 </li></ul><ul><li>For j = 0 To 59 </li></ul><ul><li>Document.Write i & “:” & j & “ – “ & k & “<BR>” </li></ul><ul><li>k = k + 1 </li></ul><ul><li>Next </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</P>” </li></ul>ej045.html
  21. 21. If – Then – Else
  22. 22. Construcción If – Then – Else <ul><li>Ejecuta condicionalmente un bloque </li></ul><ul><li>Si la condición no se cumple </li></ul><ul><ul><li>Puede ejecutar otro bloque </li></ul></ul><ul><li>También puede anidarse </li></ul><ul><ul><li>Cuidado con el Else !!! </li></ul></ul>
  23. 23. Sintáxis <ul><li>If Condición Then </li></ul><ul><li>Instrucciones </li></ul><ul><li>Else </li></ul><ul><li>Instrucciones </li></ul><ul><li>End If </li></ul><ul><li>if ( Condición ) { </li></ul><ul><li>Instrucciones </li></ul><ul><li>} else { </li></ul><ul><li>Instrucciones </li></ul><ul><li>} </li></ul>
  24. 24. Problemas con el “Else” <ul><li>‘ 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 </li></ul><ul><li>Dim Ahora </li></ul><ul><li>Ahora = Time </li></ul><ul><li>If Ahora > TimeSerial(12,0,0) Then </li></ul><ul><li>Document.Write “Buenas tardes” </li></ul><ul><li>If Ahora < TimeSerial(14,0,0) Then </li></ul><ul><li>Document.Write “, buen provecho” </li></ul><ul><li>Else </li></ul><ul><li>Document.Write “Buenos días” </li></ul><ul><li>End If </li></ul>
  25. 25. Problemas con el “Else” <ul><li>‘ 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 </li></ul><ul><li>Dim Ahora </li></ul><ul><li>Ahora = Time </li></ul><ul><li>If Ahora > TimeSerial(12,0,0) Then </li></ul><ul><li>Document.Write “Buenas tardes” </li></ul><ul><li>If Ahora < TimeSerial(14,0,0) Then </li></ul><ul><li>Document.Write “, buen provecho” </li></ul><ul><li>Else </li></ul><ul><li>Document.Write “Buenos días” </li></ul><ul><li>End If </li></ul>Falta un “Else”
  26. 26. Ejemplo <ul><li>Construír una tabla </li></ul><ul><li>De 20x12 </li></ul><ul><li>Con todas las celdas numeradas </li></ul><ul><ul><li>Correlativamente (1 a 240) </li></ul></ul><ul><li>Pintando de rojo aquellas que: </li></ul><ul><ul><li>Son múltiplos de 5 </li></ul></ul>
  27. 27. Primera aproximación <ul><li>‘ Tabla de 20x12, con celdas numeradas del 1 al 240, pintando de rojo las que son múltiplos de 5 </li></ul><ul><li>Document.Write “<Table Width=70% Border=1>” </li></ul><ul><li>Dim i,j,k </li></ul><ul><li>k = 1 </li></ul><ul><li>For i = 1 To 20 </li></ul><ul><li>Document.Write “<TR>” </li></ul><ul><li>For j = 1 To 12 </li></ul><ul><li>Document.Write “<TD Align=Center>” & k & “</TD>” </li></ul><ul><li>k = k + 1 </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</TR>” </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</Table>” </li></ul>ej046.html
  28. 28. Agregando el color <ul><li>Dim i,j,k </li></ul><ul><li>k = 1 </li></ul><ul><li>For i = 1 To 20 </li></ul><ul><li>Document.Write “<TR>” </li></ul><ul><li>For j = 1 To 12 </li></ul><ul><li>If k mod 5 = 0 Then </li></ul><ul><li>Document.Write “<TD Align=Center BGColor=Red>” </li></ul><ul><li>Else </li></ul><ul><li>Document.Write “<TD Align=Center>” </li></ul><ul><li>End If </li></ul><ul><li>Document.Write k & “</TD>” </li></ul><ul><li>k = k + 1 </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</TR>” </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</Table>” </li></ul>ej047.html
  29. 29. Preguntas <ul><li>¿Puede sustituírse un If – Then – Else con un While? </li></ul><ul><li>¿Podríamos hacerlo todo solo con While? </li></ul><ul><li>¿Por qué tener estructuras diferentes? </li></ul>
  30. 30. Ejercicio 1 <ul><li>Dim i,j,k </li></ul><ul><li>k = 0 </li></ul><ul><li>Document.Write “<P>” </li></ul><ul><li>For i = 0 To 23 </li></ul><ul><li>For j = 0 To 59 </li></ul><ul><li>Document.Write i & “:” & j & “ – “ & k & “<BR>” </li></ul><ul><li>k = k + 1 </li></ul><ul><li>Next </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</P>” </li></ul>
  31. 31. Ejercicio 2 <ul><li>‘ Tabla de 20x12, con celdas numeradas del 1 al 240, pintando de rojo las que son múltiplos de 5 </li></ul><ul><li>Document.Write “<Table Width=70% Border=1>” </li></ul><ul><li>Dim i,j,k </li></ul><ul><li>k = 1 </li></ul><ul><li>For i = 1 To 20 </li></ul><ul><li>Document.Write “<TR>” </li></ul><ul><li>For j = 1 To 12 </li></ul><ul><li>If k mod 5 = 0 Then </li></ul><ul><li>Document.Write “<TD Align=Center BGColor=Red>” </li></ul><ul><li>Else </li></ul><ul><li>Document.Write “<TD Align=Center>” </li></ul><ul><li>End If </li></ul><ul><li>Document.Write k & “</TD>” </li></ul><ul><li>k = k + 1 </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</TR>” </li></ul><ul><li>Next </li></ul><ul><li>Document.Write “</Table>” </li></ul>

×