Оператор вибору дає змогу програмувати алгоритми з декількома гілками розгалуження без використання оператора переходу, що є вимогою структурного програмування. Однак це не означає, що взагалі не можна вживати оператор переходу. Не можна тільки безпідставно передавати управління з одного кінця програми в інший, щоб потім знов повернутися назад. Але цей оператор стає незамінним, якщо необхідно обійти достатньо велику частину програми, до якої потім не треба повертатися в цій реалізації програми, але яка буде необхідною для виконання в її другій реалізації. Тобто коли гілки розгалуження занадто громіздкі, щоб створювати складені оператори. Необхідність в передачі управління не наступному оператору, а оператору , розташованому , скажімо, раніше в програмі, виникає не тільки в програмах з розгалуженням, а і в циклічних програмах.
Повний синтаксис оператора переходу:
GO TO < мітка> ;
< Мітка> – описаний в блоці LABEL ідентифікатор або цифри від 0 до 9999, якими позначається оператор. Мітка відокремлюється від оператора символом “:”. Якщо це цифри, то нулі на початку не є значущими, тобто мітки 0001 та 1 еквівалентні. Мітка може стояти в програмі будь-де , але кожна з них може з’явитися в програмі лише один раз.
Оператор переходу забезпечує безумовну передачу управління оператору з указаною міткою. Звичайно мітки розміщуються у операторів, але можуть стояти і у службового слова END, що забезпечує перехід на кінець поточного блока BEGIN…END .
Слід уникати переходів з передачею управління в середину складених операторів, особливо в той , де є оператор переходу. Оператор безумовного переходу достатньо ефективно забезпечує вихід із вкладеного оператора у зовнішній, що є достатньо безпечним засобом повернути управління зовнішньому оператору.
Область дії операторів переходу та пов’язаних з ними міток обмежується блоком, в якому описані мітки ( основний блок. процедура або функція ). Тому заборонені переходи за допомогою оператора переходу між процедурами та між процедурами та основним блоком.
При практичному програмуванні , як вже відмічалося, необхідність в використанні оператора переходу виникає не часто, але іноді один перехід дозволяє уникнути дуже широких циклів.
Приклад. Дани три числа A,B,C. Упорядкувати їх за спаданням, тобто змінній A присвоїти найбільше значення з трьох даних, а змінній C – найменше.
Використаємо відомий алгоритм сортування “бульбашки” (“пузырька” російською ) .
PROGRAM SORTUVANNIA;
LABEL 10;
VAR
A,B,C,X: REAL;
BEGIN
WRITELN(‘ВВЕСТИ A,B,C);READ(A,B,C);
WRITELN(A,B,C);
10: IF A<B THEN BEGIN X:=A; A:=B; B:=X END;
IF B<C THEN BEGIN X:=B; B:=C; C:=X; GO TO 10 END;
WRITELN (A,B,C)
END.
В програмі введено допоміжну змінну X для тимчасового зберігання значення однієї із змінних, які за алгоритмом обмінюються значеннями.