While Leonel Morales Díaz Ingeniería Simple [email protected] Disponible en: Copyright...
-
Upload
mateo-olavarria -
Category
Documents
-
view
22 -
download
6
Transcript of While Leonel Morales Díaz Ingeniería Simple [email protected] Disponible en: Copyright...
![Page 1: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/1.jpg)
While
Leonel Morales DíazIngeniería [email protected]
Disponible en: http://www.ingenieriasimple.com/introprograCopyright 2008 by Leonel Morales Díaz – Ingeniería Simple.
Derechos reservados
![Page 2: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/2.jpg)
While
Repetir un bloqueMientras se cumpla una condiciónNo sabemos exactamente cuándo
![Page 3: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/3.jpg)
While
Do While CondiciónInstrucciones[Exit Do]Instrucciones
Loop
while (Condición) {Instrucciones[break;]Instrucciones
}
![Page 4: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/4.jpg)
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
![Page 5: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/5.jpg)
Preguntas
¿Es constante la cantidad de veces que se ejecuta el loop?
¿Por qué no es constante?
![Page 6: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/6.jpg)
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
![Page 7: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/7.jpg)
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
![Page 8: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/8.jpg)
Otra forma de While
DoInstrucciones[Exit Do]Instrucciones
Loop While Condición
Do Until Condición...Loop
Do...Loop Until Condición
![Page 9: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/9.jpg)
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
![Page 10: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/10.jpg)
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
![Page 11: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/11.jpg)
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
![Page 12: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/12.jpg)
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
![Page 13: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/13.jpg)
For ... Next
![Page 14: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/14.jpg)
For ... Next
Repetir un bloqueUna cantidad exacta de vecesEn base a una variable Llamada contador Usualmente i, j, k
![Page 15: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/15.jpg)
Ejemplo
‘Imprime los números del 1 al 50Dim iDocument.Write “<P>”For i = 1 To 50
Document.Write i & “, “NextDocument.Write “</P>”
![Page 16: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/16.jpg)
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
![Page 17: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/17.jpg)
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
![Page 18: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/18.jpg)
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>”
![Page 19: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/19.jpg)
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, ...
![Page 20: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/20.jpg)
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
![Page 21: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/21.jpg)
If – Then – Else
![Page 22: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/22.jpg)
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 !!!
![Page 23: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/23.jpg)
Sintáxis
If Condición ThenInstrucciones
ElseInstrucciones
End If
if (Condición) {Instrucciones
} else {Instrucciones
}
![Page 24: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/24.jpg)
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
![Page 25: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/25.jpg)
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”
![Page 26: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/26.jpg)
Ejemplo
Construír una tablaDe 20x12Con todas las celdas numeradas Correlativamente (1 a 240)
Pintando de rojo aquellas que: Son múltiplos de 5
![Page 27: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/27.jpg)
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
![Page 28: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/28.jpg)
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
![Page 29: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/29.jpg)
Preguntas
¿Puede sustituírse un If – Then – Else con un While?
¿Podríamos hacerlo todo solo con While?
¿Por qué tener estructuras diferentes?
![Page 30: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/30.jpg)
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>”
![Page 31: While Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Disponible en: Copyright 2008 by Leonel.](https://reader034.fdocuments.us/reader034/viewer/2022051515/55383fa9550346b77a8b465b/html5/thumbnails/31.jpg)
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>”