МАССИВЫ

Begin

Label

Метки и операторы перехода

End.

End

Begin

Var

End.

Else

Repeat

Begin

Var

Пример 2.8

Program Calc;

{Программа вводит два числа в первой строке и один из знаков +, –, *, / – во второй и выводит на экран результат соответствующего арифметического действия}

operation : Char; {Знак операции}

х, у, z : real; {Операнды и результат}

stop : Boolean; {Признак ошибочной операции

и останова}

stop := false;

WriteLn; {Пустая строка-разделитель}

Write('x,y= ');

ReadLn(x,y);

Write('операция: ');

ReadLn(operation);

case operation of

' +' : z : = x + у;

'–' : z := x – y;

'*': z := x * y;

'/': z := x / y;

stop := true;

end;

if not stop then

WriteLn (' результат= ',z)

until stop

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов: у или Y выведет на экран слово «Да», а при вводе n или N – слово «Нет»:

ch : Char;

ReadLn(ch);

case ch of

'n','N': WriteLn('Heт');

'y','Y': WriteLn('Дa')

 

Можно теоретически показать, что рассмотренных операторов вполне достаточно для написания программ любой сложности. В этом отношении наличие в языке операторов перехода кажется излишним. Более того, современная технология структурного программирования основана на принципе «программировать без GOTO»: считается, что злоупотребление операторами перехода затрудняет понимание программы, делает ее запутанной и сложной в отладке.

Тем не менее, в некоторых случаях использование операторов перехода может упростить программу.

Оператор перехода имеет вид:

GOTO <метка>.

Здесь GOTO – зарезервированное слово (перейти [на метку]);

<метка> – метка.

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

Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появиться в программе, метка должна быть описана. Описание меток состоит из зарезервированного слова LABEL (метка), за которым следует список меток:

loop, 1b1, 1b2;

. . . . . .

goto 1b1;

. . . . . .

loop: . . . . . . . . .

. . . . . .

1b1:1b2: . . . . . .

. . . . . .

goto 1b2;

. . . . . .

Действие оператора GOTO состоит в передаче управления соответствующему меченному оператору.

При использовании меток необходимо руководствоваться следующими правилами:

· метка, на которую ссылается оператор GOTO, должна быть описана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы;

· метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.

 

Рассмотренные выше простые типы данных позволяют использовать в программе одиночные объекты – числа, символы, строки и т.п. В Турбо Паскале могут использоваться также объекты, содержащие множество однотипных элементов. Это массивы – формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое. К необходимости применения массивов мы приходим всякий раз, когда требуется связать и использовать целый ряд родственных величин. Например, результаты многократных замеров температуры воздуха в течение года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект – массив измерений.

При описании массива необходимо указать общее число входящих в массив элементов и тип этих элементов. Например: