Will man Teile eines Scriptblocks nur unter bestimmten Voraussetzungen ausführen lassen, sind Verzweigungen notwendig, die den weiteren Ablauf danach unterscheiden, ob das Ergebnis einer Berechnung logisch in TRUE oder FALSE kategorisiert werden kann.
Das am häufigsten verwendete Strukturelement ist die IF-Verzweigung. Hinter dem Wort "IF" wird innerhalb von Klammern ein Formelausdruck verfasst, der logisch in TRUE oder FALSE aufgelöst wird. Der darunterstehende Code wird nur ausgeführt, wenn das Ergebnis TRUE ist. Beendet wird eine IF-Verzweigung immer mit "ENDIF", gefolgt von einem Semikolon.
Variable #2 wird nur dann auf 7 gesetzt, wenn Variable #1 mindestens bereits einen Wert von 15 erreicht hat.
Um alternativ anderen Code auszuführen, falls die mit dem Formelausdruck angegebene Bedingung nicht eintritt, gibt es das Strukturelement "ELSE", das vor dem Ende einer IF-Verzweigung eingefügt werden kann.
Variable #2 wird nur dann auf 7 gesetzt, wenn Variable #1 mindestens bereits einen Wert von 15 erreicht hat, andernfalls erhält sie den Wert 8.
Innerhalb einer IF-Verzweigung kann beliebig oft ein "ELSEIF"-Strukturelement eingefügt werden, das jeweils eine alternative Bedingung zu der hinter dem "IF" stellt. Die Syntax von ELSEIF entspricht der von IF. Ebenfalls kein ein "ELSE" eingefügt werden, jedoch erst nach den "ELSEIF"-Elementen, also als letzte Abzweigung direkt vor "ENDIF".
Variable #2 wird auf 7 gesetzt, wenn Variable #1 mindestens einen Wert von 15 erreicht hat. Ist dies nicht erfüllt, erhält sie den Wert 8, wenn Variable #1 mindestens 10 beträgt. Sollte dies wiederum nicht eintreten, wird #1 auf einen Wert von mindestens 5 überprüft, bei Erfüllung wird #2 der Wert 9 zugewiesen.
Die darauffolgende Bedingung, dass Variable #1 mindestens 25 betragen soll, kann niemals eintreten, da sie, weil ELSEIF-Elemente immer in der angegebenen Reihenfolge geprüft werden, den vorangegangenen logisch widerspricht. Würde die vierte Bedingung zutreffen, könnte dies durch das zwanghafte Eintreten der ersten gar nicht erst überprüft werden.
Sollte keine der vorangegangenen Bedingungen einen TRUE-kategorischen Wert liefern, wird Variable #2 auf 11 gesetzt.
Ein logischer Formelausdruck kann aus mehreren Teilen bestehen, so natürlich auch in IF-, bzw ELSEIF-Strukturelementen. Diese werden mit Operatoren der Kategorie "Logische Verknüpfung" zu einem Ausdruck verbunden.
In der Bedingung des IFs wird überprüft, ob Variable #1 mindestens 15 beträt und #2 kleiner als 50 ist. Beide Teile müssen zutreffen, damit der Wert von Variable #3 aus #1 und #2 addiert wird. Andernfalls wird sie aus ihnen multipliziert, jedoch nur, wenn #1 mindestens einen Wert von 30 aufweist und/oder #2 kleiner als 100 ist (es reicht, wenn eines zutrifft).
IF-Verzweigungen können ineinander verschachtelt werden, falls bestimmte Teile des bereits unter Bedingung stehenden Codes wiederum nur unter noch spezielleren Bedingungen ausgeführt werden sollen.
"SWITCH"-Verzweigungen überprüfen den Wert eines einzelnen Formelausdrucks und vergleichen diesen mit beliebig vielen anderen Werten. Die erstbeste Fallbehandlung (gekennzeichnet durch das Strukturelement "CASE", einen Wert/Formelausdruck und einen abschließenden Doppelpunkt), deren Wert identisch ("==") ist, wird ausgeführt.
Zu beachten ist, dass wenn der Code eines Falls fertig verarbeitet wurde, mit dem darunterstehenden fortgefahren wird. Das führt dazu, dass das jeweilige "v[2]++;" im obengenannten Beispiel von beiden ausgeführt wird, falls Variable #1 den Wert 0 innehat.
Damit jeweils nur ein "CASE" ausgeführt wird und nicht mehrere, muss jeder Code-Abschnitt, bei dem dies verhindert werden soll, abgesehen vom letzten, mit einer "BREAK"-Anweisung enden.
Es kann vorkommen, dass mehrere mögliche Werte ein und denselben Code ausführen sollen. Dies kann mit dem Nennen mehrerer CASEs aneinander erreicht werden und ist nur durch die zuvor genannte technische Beschaffenheit möglich, dass nach dem Abarbeiten eines Abschnitts der nächste folgt, selbst wenn dessen Voraussetzung nicht eingetroffen ist.
Möchte man alternativen Code ausführen, falls der geprüfte Wert mit keinem CASE übereinstimmt, kann ein "DEFAULT"-Strukturelement eingefügt werden.
Das nachfolgende Code ist eine Umsetzung des vorherigen SWITCH-Block-Beispiels in IF-Form.
Vorteile von SWITCH-Blöcken bestehen darin, dass sie oftmals übersichtlicher sind, der Code schneller ausgeführt werden kann und, wenn man es nutzen möchte, mehrere Fälle aufeinander folgen können.
Die Nachteile gegenüber einem IF-Block sind, dass lediglich nur ein Wert zum Vergleich in auch nur einer Vergleichsart steht und sehr häufig BREAKs hinzugefügt werden müssen, um Ablauffehler zu vermeiden, was schnell vergessen werden kann.