Інструкція goto

Інструкції if і case використовуються для переходу до послідовності інструкцій програми в залежності від деякого умови. Тому їх іноді називають інструкціями умовного переходу. Крім цих інструкцій управління ходом виконання програми існує ще одна – інструкція безумовного переходу goto.

У загальному вигляді інструкція goto записується в такий спосіб:

goto мітка

де мітка – це ідентифікатор, що знаходиться перед інструкцією, яка повинна бути виконана після інструкції goto.

Мітка, яка використовується в інструкції goto, повинна бути оголошена в розділі міток, який починається словом label і розташовується перед розділом оголошення змінних.

У програмі мітка ставиться перед інструкцією, до якої повинен бути виконаний перехід в результаті виконання інструкції goto. Відразу після мітки ставиться двокрапка.

У лістингу 2.8 приведений варіант процедури перевірки числа, в якій інструкція goto використовується для завершення процедури в тому випадку, якщо користувач введе невірні дані.

Лістинг 2.8. Просте число (використання інструкції goto)

procedure TForm1.Button1Click (Sender: TObject);

label // розділ оголошення міток
bye; var
n: integer; // перевіряється число

d: integer; // дільник

r: integer; // залишок від ділення п на d

begin
n: = StrToInt (Editl.text);

if n & lt; = 0 then begin
MessageDlg ( 'Число має бути більше нуля. ',
mtError, [MbOk], 0); Editl.text: = & quot ;;

goto bye;

end;
// введено позитивне число

d: = 2; // спочатку будемо ділити на два

repeat
r: = n mod d;
if r & lt; & gt; 0 // n не розділені остачі на d
then d: = d + 1;

unti1 r = 0;
label2.caption: = Editl.text;

if d = n
then l abel2.caption: = label2.caption
+ '- просте число.'
else label2.caption: = label2.caption
+ ' - звичайне число. ';

bye:

end;

У літературі з програмування можна зустріти судження про неприпустимість застосування інструкції goto, оскільки вона призводить до заплутаності програм. Однак з категоричністю таких тверджень погодитися не можна. У деяких випадках застосування інструкції goto цілком виправдано. Наведений приклад, де інструкція goto використовується для аварійного завершення процедури, відноситься саме до таких випадків.