Учебная работа. Статья: Метки. Оператор GOTO. Процедура Halt

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Статья: Метки. Оператор GOTO. Процедура Halt



Метки. Оператор GOTO. Процедура Halt

С.А. Григорьев

Операторы в Паскале могут быть помечены. Метки — это идентификаторы, либо целые числа от 0 до 9999, они могут записываться перед хоть каким выполняемым оператором и отделяются от него двоеточием. Оператор может иметь хоть какое количество меток. Все метки, использованные в программке, должны быть описаны в разделе описаний с главным словом LABEL. В одном операторе LABEL можно обрисовать несколько меток, тогда они делятся запятыми. Оператор бесспорного перехода

GOTO метка;

передает управление оператору с соответственной меткой, при всем этом все операторы, расположенные меж оператором GOTO и оператором, которому передается управление, не производятся. При помощи оператора GOTO недозволено передать управление : вовнутрь цикла, вовнутрь условного оператора и вовнутрь оператора выбора.

Общепризнано, что оператор GOTO является вредным оператором, он усложняет методы, затрудняет чтение программки и является источником ошибок. Постарайтесь не использовать этот оператор в собственных программках.

Одним из случаев, когда программеру может показаться полезным оператор GOTO, является необходимость закончить выполнение программки при появлении той либо другой ошибки. Пусть, к примеру, программка вычисляет некую функцию от квадратного корня из данного числа:

VAR x : Real;

BEGIN WRITE(‘Введитечисло ‘); READ(x);

x:=SQRT(x);

{вычисление функции от x}

END.

Если введено отрицательное число, то в 3-ем операторе программки произойдет аварийное прерывание. Стремясь избежать этого, мы могли бы записать программку в виде:

VAR x : Real;

LABEL Finish;

BEGIN WRITE(‘Введитечисло ‘); READ(x);

IF x<0 THEN GOTO Finish;

x:=SQRT(x);

{вычисление функции от x}

Finish:END.

Но можно не употреблять GOTO :

VAR x : Real;

BEGIN WRITE(‘Введитечисло ‘); READ(x);

IF x<0 THEN WRITELN(‘ошибка !’)

ELSE BEGIN

x:=SQRT(x);

{вычисление функции от x}

END;

END.

Видите ли, программка даже стала лучше, т.к. сейчас она докладывает о неверном вводе. Но она все-же имеет один недочет — условный оператор усложнил структуру программки. В этом и в остальных схожих вариантах весьма комфортно воспользоваться обычной процедурой Паскаля HALT, которая останавливает выполнение программки, будучи вызвана в любом ее месте:

VAR x : Real;

BEGIN WRITE(‘Введитечисло ‘); READ(x);

IF x<0 THEN BEGIN WRITELN(‘ошибка !’); HALT; END;

x:=SQRT(x);

{вычисление функции от x}

END.

Наша программка стала практически безупречной. Доведем ее до совершенства :

VAR x : Real;

BEGIN REPEAT

WRITE(‘Введите неотрицательное число ‘);

READ(x);

WRITELN;

UNTIL x>=0;

x:=SQRT(x);

{вычисление функции от x}

END.

]]>