Successfully reported this slideshow.

Clase08

0

Share

Upcoming SlideShare
Clase10
Clase10
Loading in …3
×
1 of 31
1 of 31

Clase08

0

Share

Download to read offline

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.

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.

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

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>

×