Showing posts with label Forth. Show all posts
Showing posts with label Forth. Show all posts

Thursday, July 23, 2015

LED es mi nuevo Hello World - Tiempo de Forth

Justo como lo estaban esperándo...es nuevamente hora de mi aplicación de Números LED...esta vez...utilizándo Forth -:)

El código es un poco más largo de lo que hubiera esperado...pero supongo que es porque aún soy un novato en Forth...o porque Forth siendo un lenguaje de programación basado en stack tiene su propia forma de tratar con este tipo de aplicaciones...

Aquí está el código fuente...disfruténlo! -;)

LED_Numbers.fth
VARIABLE picky

: COLLECT_PICKY DUP 1- picky ! ;

: NPICK COLLECT_PICKY 2 * 0 ?DO picky @ PICK LOOP ;

: SPLIT BEGIN DUP WHILE 10 /MOD REPEAT DROP DEPTH ;

: First_Line
  CASE
  0 OF SPACE ." _  " ENDOF 1 OF SPACE SPACE ENDOF
  2 OF SPACE ." _  " ENDOF 3 OF ." _  " ENDOF
  4 OF SPACE SPACE SPACE SPACE ENDOF 5 OF SPACE ." _  " ENDOF
  6 OF SPACE ." _  "ENDOF 7 OF ." _   "  ENDOF 
  8 OF SPACE ." _  " ENDOF 9 OF SPACE ." _  " ENDOF
  ENDCASE ;
  
: Second_Line
  CASE
  0 OF ." | | " ENDOF 1 OF ." | " ENDOF
  2 OF SPACE ." _| " ENDOF 3 OF ." _| " ENDOF
  4 OF ." |_| " ENDOF 5 OF ." |_  " ENDOF
  6 OF ." |_  "ENDOF 7 OF SPACE ." |  "  ENDOF 
  8 OF ." |_| " ENDOF 9 OF ." |_| " ENDOF
  ENDCASE ;
  
: Third_Line
  CASE
  0 OF ." |_| " ENDOF 1 OF ." | " ENDOF
  2 OF ." |_  " ENDOF 3 OF ." _| " ENDOF
  4 OF SPACE SPACE ." | " ENDOF 5 OF SPACE ." _| " ENDOF
  6 OF ." |_| "ENDOF 7 OF SPACE ." |  "  ENDOF 
  8 OF ." |_| " ENDOF 9 OF SPACE ." _| " ENDOF
  ENDCASE ;

: LED 
  SPLIT
  NPICK
  DEPTH 3 / 0 ?DO First_Line LOOP CR
  DEPTH 2 / 0 ?DO Second_Line LOOP CR
  DEPTH 0 ?DO Third_Line LOOP ;

Y por supuesto...quieren ver una imagen...así que aquí les va -;)


Espero que les guste... -:D

Saludos,

Blag.
Development Culture.

Tuesday, July 21, 2015

Mi primer post en Forth

Así que...después de mucho tiempo...finalmente me decidí a aprender Forth...y si pensé que habría tratado con lenguajes de programación complicados antes...estaba como Jon Snow...no sabía nada -:(

Forth es un lenguaje de programación basado en stack...lo cual significa que trabaja con un stack basado en la funcionalidad LIFO...Last In - First Out...(Último en entrar - Primero en salir)

Algo como esto...ingresas 1 2 3 y Forth va a devolverte 3 2 1...extraño, no?

Por supuesto...comenzé a leer un libro...y a diferencia de las otras veces...lo he terminado hace tiempo...pero con Forth...un solo libro no es suficiente...he estado leyendo y programando como loco...

El libro es Starting Forth por Leo Brodie...


El libro en si es bastante bueno...son 166 páginas así que no es muy largo y te da una muy buena introducción al mundo de Forth...por supuesto...como ya lo he dicho...un libro no es suficiente...y aún cuando este libro es muy bueno y altamente recomendado...Forth es un muy dificil de aprender pero aprenderlo es alucinante -:)

Me tomo mucho tiempo pero finalmente pude terminar el ejempo de mi ya "famoso" Fibonacci Numbers...

Fibo.fth
: FIBO 
   1 SWAP 
   0 DUP . 
   ?DO 
      DUP . OVER OVER + ROT DROP 
   LOOP 
   DROP DEPTH 
   DEPTH 2 = IF 2DROP 0 THEN 
;

Se los dije...Forth no es para nada un lenguaje sencillo...y en realidad escribí el código en una sola línea...pero aquí lo puse en líneas diferentes para que sea más claro...

Veamos una imagen...


Estoy seguro de que voy a pasar mucho más tiempo con Forth...puesto que sé que hay mucho por aprender...si te gusta lo que ves...apréndelo también -;) De otro modo...busca algo menos extraño -:)

Por siacaso...estoy utilizándo pForth...usé gForth cuando recién estaba empezándo pero creo que pForth es más compatible el standard de Forth...

Saludos,

Blag.
Development Culture.