Программа на Delphi

Примеры операторов присваивания (комментарии показывают присвоенные значения):

Var Ch: Char; S: String[5]; Q: String[18]; L, J: Integer; P: Byte; R: Real; B: Boolean;

Rec: Record A: Word; B: String[20]; End; …

Таблица 13

Оператор присваивания

Значение

Q:= 'd:\Dir1\Word\a.txt';

S:= Q;

Q:= S+'r\';

Ch:=Q[2];

L:= 450;

P:= L;

J:= 100;

R:= -L / J;

J:=-L / J;

J:=-L - 200;

B:= J > L;

B:= (J < L) and (Q[5] = 'i');

Rec.A:= J-20;

Rec.B:= 20;

Rec.B:= S[1]+S[3]+'\d';

'd:\Dir1\Word\a.txt'

'd:\Di'

'd:\Dir\'

':'

450

Ошибка, т. к. max P = 255

100

-4.5

Ошибка. Несоответствие типов

250

False

True

230

Ошибка. Несоответствие типов

'd\\d'

11.2. Оператор безусловного перехода

Этот оператор выполняет передачу управления оператору, которому предшествует метка. Синтаксис оператора:

Goto Метка;

Язык допускает в качестве меток использовать имя или значение целого типа из диапазона 1 9999.

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

  1. Все метки, используемые в блоке, должны быть описаны словом Label.

Пример оператора описания меток:

Label 1, 2, Met1, Met2, Met3;

  1. Метка должна располагаться в том же блоке, что и оператор, который ею помечен.
  2. Недопустим переход к метке внутрь структурного оператора (например, внутрь цикла, минуя его заголовок). Компилятор не реагирует на эту ситуацию, однако поведение программы может быть непредсказуемо. Недопустимы также вход или выход по метке в процедурах или функциях.

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

11.3. Оператор обращения к процедуре

Этот оператор вызывает активизацию операторов, расположенных в теле процедуры (см. параграф 15.1). После выполнения процедуры управление передается к оператору, расположенному вслед за оператором процедуры.

При вызове процедуры её формальным параметрам должны строго соответствовать по совместимости типов и количеству фактические параметры.

Примеры обращения к процедурам:

Val (s, r, Code); Sort (a, n * 2); SaveParameters;

11.4. Обращение к функции

Следует подчеркнуть, что не существует специального оператора обращения к функции (см. параграф 15.1). Обычно такое обращение производится посредством другого оператора, часто оператора присваивания.

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

  • после выполнения оператора процедуры управление передается к следующему за ним оператору;
  • после выполнения функции управление вновь передается в оператор, который содержит обращение к этой функции, с целью передачи в него вычисленного значения функции и для завершения вычислений внутри этого оператора.

Поясним это на примере оператора присваивания, содержащего обращение к функции Func8:

G:= 2 * Pi * Func8(m, n, a) / Sqr (z);

При выполнении этого оператора сначала происходит обращение к функции Func8. После выполнения операторов, составляющих тело этой функции, вычисленное значение возвращается в этот оператор, где оно используется для выполнения дальнейших вычислений внутри оператора.

12. Стандартные процедуры и функции

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

12.1. Строковые процедуры и функции

  1. Function Length (St): LongInt;

Возвращает длину строки символов St, т. е. количество символов в ней (не путать с размером строки).

St:= '1234abc';

L:= Length(St); {L= 7}

  1. Procedure Delete (St, Pos, Num);

Удаляет Num символов из строки St начиная с позиции Pos, если Pos<Length (St).

St:= '1234abc'; Delete(St, 4, 2); { St= '123bc'} Delete(St, 3, 120); { St= '12'}

  1. Procedure Insert (Obj, Target, Pos);

Вставляет строку Obj в строку Target начиная с позиции Pos. Если Pos>Length (Target), то результат Target + Obj.

St1:= '***'; St2:= '1234abc'; Insert (St1, St2, 3) { St2= '12***34abc'}

  1. Procedure Str (Value, St);

Преобразует значение Value числового типа в строку символов St. Value может сопровождаться форматом.

L:=19; Str (L, g); {g= '19'} R:= 2.123155; Str (R: 8:3, h); {h= ' 2.123' (длина 8, в дробной части 3}

  1. Procedure Val (St, Vr, Code);

Преобразует строку символов St в числовую величину Vr целого или вещественного типа. Code = 0, если преобразование прошло успешно, иначе в Code будет записан номер первого ошибочного символа конвертируемой строки, при этом значение Vr не определено.

St:='319'; Val (St, k, Cod); {k= 319, Cod = 0} St:='81yy9'; Val (St, k, Cod); {k= ?, Cod = 3}

  1. Function Copy (St, Pos, Num): String;

Выделяет из строки St подстроку символов длиной Num начиная с позиции Pos. Если Pos>Length, то возвращает пустую строку.

St1:='АБВГДЕ'; St2:= Copy(St1, 2, 3); {St2= 'БВГ'} St2:= Copy(St1, 2, 27); {St2= 'БВГДЕ'} St2:= Copy(St1, 44, 2); {возвращает пустую строку St2= ''}

  1. Function Concat (St1, St2{, …, StN}): String;

Объединяет строки в одну строку.

St:='abc'; St1:=Concat( 'sss', St, '1234'); {St1= 'sssabc1234'} St1:=Concat( St, '123'); {St1= 'abc123'}

  1. Function Pos (Obj, Target): Integer;

Возвращает номер символа, начиная с которого строка Obj первый раз входит в строку Target. Если строка Obj отсутствует в строке Target, то Pos = 0.

Q:= 'Иванов Сергей Петрович'; H:= Pos ('Сергей', Q); {H= 7} H:= Pos ('Игорь', Q); {H= 0}

  1. Function SizeOf (Obj): Integer;

Возвращает размер переменной Obj.

  1. Function FormatFloat(const Format: string; Value: Extended): string;


Страница: