Sei sulla pagina 1di 4

Motivación

5: Estructura repetitivas. Bucles „ Hasta ahora sólo podemos ejecutar las


sentencias una o cero veces
„ A menudo necesitamos ejecutar una
sentencia o grupo de sentencias cero, una
o más veces
„ ¿Cómo se puede construir un programa que
muestre por pantalla los números de 1 a 100 sin
copiar el código innecesariamente?

LSI 1 LSI 2

Diagramas de flujo de bucles


Motivación
n veces Hasta
„ En ocasiones, un programa necesita repetir i: entero
una serie de acciones: i = inicio Acciones
– Mientras se cumpla una condición
no sí
• Cero o más veces i <= n Mientras condición
– Hasta que [no] se cumpla una condición sí no
no
• Una o más veces Acciones condición
– Un número conocido de veces sí
i = i+salto
Acciones

LSI 3 LSI 4
Diagrama de flujo: for ascendente
For (nº repeticiones conocido) Inicio
i: entero
i=1
For índice = valor inicial To valor final [Step expresión]
grupo de sentencias no
Next [índice] i <= 10

„ índice cogerá los valores de valor inicial hasta valor final Escribir i
„ expresión se evaluará para determinar la cantidad a
incrementar o decrementar cada vez que se ejecuta Next i = i+1
índice

NOTA: Los valores del índice los cambia el For


automáticamente con la instrucción Next . El programador
nunca debe manipular el valor del índice. Fin

LSI 5 LSI 6

Diagrama de flujo: for descendente


Inicio
i: entero
For. Ascendente y descendente
i = 10 „ Ascendente
Dim i As Integer
no For i = 1 To 10 Step 1
i>=1 MsgBox(i)
sí Next i
Escribir i
„ Descendente
i=i+ −1 Dim i As Integer
For i = 10 To 1 Step -1
MsgBox(i)
Next i
Fin

LSI 7 LSI 8
Ejemplo While: diagrama de flujo
While (nº repeticiones desconocido) Inicio
num: largo
dig: entero
Escribe "Introduce un número"
Lee num
While (condición)
dig = 1
grupo de sentencias (cuerpo) num=num\10

Wend num <> 0


no

„ Evaluar la condición sí

– Si el resultado es falso, acaba y sigue con la dig = dig + 1


num = num \ 10
instrucción siguiente al Wend
– Si el resultado es verdadero, entonces ejecuta el
conjunto de instrucciones que componen el cuerpo del Escribe dig
While
Fin
LSI 9 LSI 10

Ejemplo While: programa Do ... Loop (nº repet. desconocido)


Dim num As Long
Dim dig As Integer
num = InputBox("Introduce un número") Do
dig = 1
grupo de sentencias (cuerpo)
num = num \ 10
While (num <> 0) Loop [{While | Until} condición]
dig = dig + 1
num = num \ 10 „ Evaluar la condición
Wend
– Se ejecuta la primera vez el grupo de sentencias antes
MsgBox (dig) de ver si cumple o no la condición.
– Mientras o hasta que la condición sea cierta, ejecuta el
grupo de sentencias del Do-Loop.
LSI 11 LSI 12
Diagrama de flujo:Do ... Loop Until
Inicio
num: largo Do .. Loop Until. Ejemplo
dig: entero
Escribe ("Introduce un número") Dim num As Long
Lee num
Dim dig As Integer
dig =0 num = InputBox("Introduce un número")
num = num\10 dig = 0
Do
dig = dig + 1
num = num \ 10 dig = dig + 1
rdo = rdo \ 10
no
num = 0 Loop Until num = 0
sí MsgBox (dig)
Escribe dig

Fin LSI 13 LSI 14

Diagrama de flujo: Do...Loop While


Inicio
num: largo Do .. Loop While. Ejemplo
dig: entero
Escribe ("Introduce un número") Dim num As Long
Lee num
Dim dig As Integer
dig =0 num = InputBox("Introduce un número")
num = num\10 dig = 0
Do
dig = dig + 1
num = num \ 10 dig = dig + 1
num = rdo \ 10

num <> 0 Loop While num <> 0
no MsgBox (dig)
Escribe dig

Fin LSI 15 LSI 16

Potrebbero piacerti anche