МАССИВЫ
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, должна быть описана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы;
· метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.
Рассмотренные выше простые типы данных позволяют использовать в программе одиночные объекты – числа, символы, строки и т.п. В Турбо Паскале могут использоваться также объекты, содержащие множество однотипных элементов. Это массивы – формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.п.), рассматриваемое как единое целое. К необходимости применения массивов мы приходим всякий раз, когда требуется связать и использовать целый ряд родственных величин. Например, результаты многократных замеров температуры воздуха в течение года удобно рассматривать как совокупность вещественных чисел, объединенных в один сложный объект – массив измерений.
При описании массива необходимо указать общее число входящих в массив элементов и тип этих элементов. Например: