Мітки та переходи
У мові Паскаль будь-який оператор і кінець складеного оператора (слово end) можна відмітити, тобто ідентифікувати, додати йому індивідуальне ім'я. Це ім'я називається міткою. У авторській версії мови мітками могли бути цілі сталі від 1 до 9999, у мові Турбо Паскаль до них додано ідентифікатори. Мітка записується перед оператором або словом end через двокрапку, наприклад,
1 : money := 21;
mmm : money:=0;
finita : end.
Мітки, використовувані в тілі програми або підпрограми, повинні бути означені в її ж блоці. Означення міток має вигляд:
label список-міток-через-кому ;
наприклад, label 1, mmm, finita;.
Мітка, означена в блоці, повинна відмічати рівно один оператор у тілі цього блоку.
Мітки використовуються в операторах переходу, що мають вигляд
goto мітка
наприклад,
goto 1; if x>1000 then goto mmm.
Результатом виконання оператора переходу є те, що слідом за ним виконується оператор, відзначений цією міткою.
У випадку, коли відзначений кінець складеного оператора, можливі варіанти.
Якщо це не кінець тіла циклу і не кінець програми, то буде виконуватися наступний оператор.
Якщо відзначений кінець програми, то її виконання завершується.
Якщо відзначений кінець тіла циклу, то виконуються дії, які слідують за виконанням тіла (перевірка умови продовження while-циклу або неявна зміна параметра for-циклу).
Оператор переходу й відповідний відмічений оператор повинні бути записаними в тілі блоку (програми або підпрограми), де цю мітку означено. Іншими словами,
переходи з одного блоку в інший і використання неозначених у блоці міток заборонено.
Ми не схильні популяризувати використання операторів переходу. Більше того, у свій час було доведено, що без них узагалі можна обійтися (достатньо умовних операторів і while-циклів). Проте є три випадки, коли указання переходу доречно й зручно:
•на кінець підпрограми;
•зсередини циклу на його кінець;
•зсередини циклу на наступний за циклом оператор.