Bucles

    Los bucles son estructuras de programación que permiten repetir un conjunto de instrucciones. Ya hemos visto dos, el bucle infinito, que permite repetir un conjunto de instrucciones indefinidamente y el bucle for que permite repetir un bloque de instrucciones un número de veces. Ahora vamos a ver bucles condicionales que se van a repetir dependiendo de que se cumpla o no una condición, por ejemplo del estado de las entradas.

    Bucle while

    El bucle while es un bucle que se repite mientras se cumpla una condición

    Sintaxis

    El bucle tiene dos posibles formas de escribirse

    Primera opción

    do
    
    instrucciones
    
    loop while condición
    

    Segunda opción

    do while condición
    
    instrucciones
    
    loop
    

    En ambos casos la función similar; se repetirán las instrucciones entre do y loop mientras se cumpla la condición escrita después de while. La diferencia es que en la primera opción las instrucciones no se realizan ni una vez si al principio del bucle no se cumple la condición, mientras que en la segunda opción, las instrucciones entre do y loop se hacen al menos una vez, porque la condición se evalúa después.

    Las instrucciones pueden no existir, de manera que en ese caso, el programa funciona como una espera que dura mientras se cumpla la condición. De todos modos suele ser buena idea en esos casos poner como instrucción una pequeña espera, como pause 100, para no atosigar al controlador.

    Ejemplo

    do while pin6=0
    high 0
    loop
    low 0
    

    Este programa encenderá el led 0 y lo mantendrá encendido hasta que pulsemos el pulsador 6. Entonces se apagará y terminará el programa.


    Bucle until

    es muy parecido al bucle while, pero en lugar de realizase mientras se cumpla la condición se realiza hasta que se cumpla

    Sintaxis

    Ttiene dos posibles formas de escribirse

    Primera opción

    do
    
    instrucciones
    
    loop until condición
    

    Segunda opción

    do until condición
    
    instrucciones
    
    loop
    

    En ambos casos la función similar; se repetirán las instrucciones entre do y loop hasta que se cumpla la condición escrita después de until. La diferencia es que en la primera opción las instrucciones no se realizan ni una vez si al principio del bucle no se cumple la condición, mientras que en la segunda opción, las instrucciones entre do y loop se hacen al menos una vez, porque la condición se evalúa después.

    Ejemplo

    Este programa va encendiendo las salidas de una en una (eso está escrito dentro del bucle) hasta que se pulsa la entrada 6, entonces sale del bucle y termina apagándolas todas

    b0=0
    
    do until pin6=1
    	high b0
    	b0=b0+1
    	wait 1
    loop
    
    wait 1
    low 0,1,2,3,4,5,6,7
    
    

    Ejemplo

    Un bucle puede no tener ninguna instrucción entonces se comportará como una espera. Por ejemplo, en el siguiente ejemplo se encienden las salidas de la 0 a la 3, pero el bucle impide continuar hasta que se pulsa el pulsador 6

    low 0,1,2,3,4,5,6,7
    
    high 0
    wait 1
    high 1
    wait 1
    high 2
    wait 1
    high 3
    
    do
    loop while pin6=0; el programa no avanzará hasta que se pulse el pulsador 6
    
    high 4
    wait 1
    high 5
    wait 1
    high 6
    wait 1
    high 7
    
    

  • Ejercicio 10

    Escribe un programa como el del ejemplo. Cada vez se pulsa una vez el pulsador 6 se enciende una salida más.


  • Ejercicio 11

    Mejora el programa anterior. Cada vez se pulsa una vez el pulsador 6 se enciende una salida más. Si se pulsa la 7 se apagan todas. Si volvemos a pulsar 6, el programa se comporta otra vez como al principio.


  • Ejercicio 12

    Escribe un programa como el del ejemplo. Cada vez se pulsa una vez el pulsador 6 se enciende una salida más y cada vez que se pulsa la 7 se enciende una menos.


  • Ejercicio 13

    Escribe un programa como el del ejemplo. Es como una especie de llave digital. Para que se enciendan todas las salidas hay que hacer una secuencia de pulsaciones: pulsar una vez 6, pulsar una vez 7, pulsar dos veces 6, pulsar una vez 7, pulsar 3 veces 6, pulsar una vez 7.

    Para que se pueda reiniciar, hay que pulsar simultáneamente 6 y 7


Autor: Santiago Camblor

Todos nuestros materiales tienen licencia creative commons que permite el uso y modificación del material siempre que no sea con fines comerciales, se cite la autoría y se mantenga el mismo tipo de licencia en las modificaciones de la obra.