Pro podmíněné větvení můžeme použít konstrukci IF ... THEN
případně její rozšířenou variantu IF ... ELSE ... THEN
IF (true part) THEN IF (true part) ELSE (false part) THEN
Slovo IF se rozhoduje podle hodnoty na vrcholu zásobníku zdali se vykoná část kódu za ním uvedená, případně která část kódu. Přesněji pokud je na vrcholu zásobníku hodnota nenulová, je tato považována za logickou 1 tedy true
, a je vykonán kód který následuja za IF až po THEN, nebo ELSE. Je-li na zásobníku 0
je považována za logickou 0 tedy false
. V tomto případě se buďto nevykoná kód žádný, varianta IF...THEN, nebo se vykoná kód následující za slovem ELSE, varianta IF...ELSE...THEN.
Příkaz IF je definován jen v módu překladu a můžeme jej tudíž použít jen v těle definovaného slova. Ukažme si tedy první příklad
# $Id: TUT.if.ses,v 1.1 2003/12/28 18:21:58 radek Exp $ Gforth 0.6.2, Copyright (C) 1995-2003 Free Software Foundation, Inc. Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' : iftest IF ." TRUE" THEN ; ok 0 iftest ok 1 iftest TRUE ok -1 iftest TRUE ok BYE
Jak je vidět TRUE
se vytiskne jen pro hodnoty 1
a -1
, a vytiskla by se i pro všechny další nenulové hodnoty. Při zadání 0
se neudělá nic. Rozšiřme si teď větvení o ELSE
# $Id: TUT.if2.ses,v 1.1 2003/12/28 18:21:58 radek Exp $ Gforth 0.6.2, Copyright (C) 1995-2003 Free Software Foundation, Inc. Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license' : iftest IF ." TRUE" ELSE ." FALSE" THEN ; ok 0 iftest FALSE ok 1 iftest TRUE ok -1 iftest TRUE ok BYE