Mě by zajímalo, jak by to bylo u více vnořených cyklů třeba do loop do sebe. Jak se třeba dostanu do obou řídících proměnných obbou cyklů, když mám jenom jedno slovo i.
Tady bych nijak nepremyslel, budme radi, ze aspon muzeme dostat iterator aktualni smycky do zasobniku. Pokud nebudeme plnit zasobnik, je to bez problemu. Pokud ano, budeme muset porad swapovat nebo rotovat :-( , zalezi na zpusobu plneni zasobniku. Par prikladu:
: cykl 5 0 do cr i 3 0 do dup . loop drop loop cr ; cykl
( tato veticka vypise pet radku, na kterych se znazorni trikrat po sobe se opakujici obsah iteratoru, je zde take videt, ze to budeme po sobe uklizet )
: cykl 6 1 do cr i i i + i do dup 10 * i + . loop drop loop cr ; cykl
( Po zadani dostaneme na vystupu trojuhelnik z dvojcifernych cisel. Prvni cifra je vnejsi iterator a druha je vnitrni. )
: cykl 4 1 do i 5 0 do dup 10 * i + swap loop drop loop ; cykl
( nyni mame v zasobniku 15 hodnot, po iteratoru ani stopy )
: cykl 4 1 do cr 5 0 do . loop loop cr ; cykl
( pro prehlednost si muzeme obsah zasobniku prohlednout pomoci stejneho cyklu )
... radost pracovat ve Forthu :-)
Ne, proc? Jde mi jenom o to, abych to po sobe uklidil, proto jsem napsal: "... po iteratoru ani stopy." Kdyz je toho vic, tak to s tim uklidem neni sranda :-(
MNO... PO DELSI PRAXI S FORTHEM - JESTE JSEM NEPOUZIL VNORENY CYKLUS V JEDNOM SLOVE. A TO DELAM I S GRAFIKOU...
KDYZ PISU VE FORTHU, DBAM NA TO, ABY SLO POCHOPIT VYZNAM KAZDEHO SLOVA. VIDEL SNAD NEKDO DOKUMENTACI K FORTHOVSKEMU RESENI? MYSLITE ZE ANO? NENE, TO JE DOKUMENTACE PROBLEMATIKY...
Pokud máte více vnořených cyklů, lze používat slova "i" a "j", některé implementace Forthu mají zabudované i "k". Mnohem lepší je však vnitřní smyčky vytvořit jako samostatná slova, vyhnete se tak problémům při přístupu k nižším úrovním zásobníku (někdy to je samozřejmě nemožné nebo neefektivní, záleží na situaci).