Loop structures: Difference between revisions

Content added Content deleted
imported>Maleza
No edit summary
imported>Maleza
No edit summary
Line 176: Line 176:
===HACER-BUCLE===
===HACER-BUCLE===
<syntaxhighlight lang="curto">
<syntaxhighlight lang="curto">
\ limite inicio HACER elementos iterados BUCLE
\ limite inicio HACER sentencias iteradas BUCLE
\ limite inicio HACER elementos iterados incremento +BUCLE
\ limite inicio HACER sentencias iteradas incremento +BUCLE
\ SALIR \ abandona bucle HACER
\ SALIR \ abandona bucle HACER
\ DBUCLE SALIR \ limpia contadores de la pila de retorno antes de abandonar la palabra actual
\ DBUCLE SALIR \ limpia contadores de la pila de retorno antes de abandonar la palabra actual
Line 183: Line 183:


ejemplo: Dos iteraciones típicas
ejemplo: Dos iteraciones típicas
<syntaxhighlight lang="forth">
<syntaxhighlight lang="curto">
10 0 hacer i . bucle \ Imprime números de 0 a 9
10 0 hacer i . bucle \ Imprime números de 0 a 9
10 0 hacer i . 2 +bucle \ Imprime números pares de 0 a 8
10 0 hacer i . 2 +bucle \ Imprime números pares de 0 a 8
</syntaxhighlight>
===EMPEZAR-HASTA===
<syntaxhighlight lang="curto">
\ EMPEZAR sentencias iteradas condicional HASTA
</syntaxhighlight>

ejemplo: Cuenta hacia abajo desde un número dado a cero
<syntaxhighlight lang="curto">
: cuenta-abajo ( n -- ) empezar dup rc . 1- dup 0< hasta soltar ;
</syntaxhighlight>

===EMPEZAR-DENUEVO===
<syntaxhighlight lang="curto">
\ EMPEZAR sentencias iteradas DENUEVO
</syntaxhighlight>

ejemplo: repetir entrada de usuario (solo funciona en cli, no en la interface gráfica)
<syntaxhighlight lang="curto">
: porsiempre ( -- ) empezar tecla emitir denuevo ;
</syntaxhighlight>

===EMPEZAR-MIENTRAS-REPETIR===
<syntaxhighlight lang="curto">
\ EMPEZAR sentencias iteradas incondicionales condicional MIENTRAS sentencias iteradas condicionales repetir
ejemplo: cuenta hacia abajo desde un número dado a uno
: cuenta-abajo ( n -- ) empezar dup mientras rc dup . 1- repetir soltar ;
</syntaxhighlight>
</syntaxhighlight>