С.А. Григорьев
Операторы в Паскале могут быть помечены. Метки - это идентификаторы, или целые числа от 0 до 9999, они могут записываться перед любым выполняемым оператором и отделяются от него двоеточием. Оператор может иметь любое количество меток. Все метки, использованные в программе, должны быть описаны в разделе описаний с ключевым словом LABEL. В одном операторе LABEL можно описать несколько меток, тогда они разделяются запятыми. Оператор безусловного перехода
GOTO метка;
передает управление оператору с соответствующей меткой, при этом все операторы, расположенные между оператором GOTO и оператором, которому передается управление, не выполняются. С помощью оператора GOTO нельзя передать управление : внутрь цикла, внутрь условного оператора и внутрь оператора выбора.
Общепризнано, что оператор GOTO является вредным оператором, он усложняет алгоритмы, затрудняет чтение программы и является источником ошибок. Постарайтесь не применять этот оператор в своих программах.
Одним из случаев, когда программисту может показаться полезным оператор GOTO, является необходимость прекратить выполнение программы при возникновении той или иной ошибки. Пусть, например, программа вычисляет некоторую функцию от квадратного корня из заданного числа:
VAR x : Real;
BEGIN WRITE('Введите число '); READ(x);
x:=SQRT(x);
{вычисление функции от x}
END.
Если введено отрицательное число, то в третьем операторе программы произойдет аварийное прерывание. Стремясь избежать этого, мы могли бы записать программу в виде:
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}
E
Похожие работы
й системы счисления в другую (2,8,10,16). Восходящее проектирование – используется для несложных задач, когда заранее известны все подзадачи или функции, которые выполнять программа. Разрабатывается алгоритм для каждой подзадачи, а затем они собираются в единую подпрограмму. 7. Нисходящее программирование. Проектирование алгоритма выполнения арифметических операций (+,-,*,/) над числами с пл. ...
... (X);или Y:=0.256*Sin(X); {При необходимости размещения нескольких операторов в теле цикла, их объединяют с помощью составного оператора} For X:=1 to 10 do begin Y:=0.256*Sin(X); Writeln(X,Y) {вывод таблицы результатов} end; 2. Процедуры и функции 2.1 Описание функции В среде Turbo-Pascal имеются две разновидности подпрограмм - процедуры и функции. Структура подпрограммы аналогична ...
... .....-46.780 Program Prim24; Var r1,r2:real; BEGIN r1:=-46.78; r2:=-46.78; writeln('r1=',r1:12:3,' r2=',r2:9:4); writeln('_______________________________'); readln; END. 6. Массивы 6. 1. Описание массивов В языке Паскаль можно обрабатывать не только отдельные переменные, но и их совокупности. Одной из таких совокупностей (структурированных) данных является массив. ...
... с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл). Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид: ...
0 комментариев