31246-1 (663239), страница 6
Текст из файла (страница 6)
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.
При использовании операторов перехода необходимо придерживаться следующих правил:
Все метки, используемые в блоке, должны быть описаны словом Label.
Пример оператора описания меток:
Label 1, 2, Met1, Met2, Met3;
Метка должна располагаться в том же блоке, что и оператор, который ею помечен.
Недопустим переход к метке внутрь структурного оператора (например, внутрь цикла, минуя его заголовок). Компилятор не реагирует на эту ситуацию, однако поведение программы может быть непредсказуемо. Недопустимы также вход или выход по метке в процедурах или функциях.
П р и м е ч а н и е. Не используйте меток, если в этом нет особой необходимости. В технике современного программирования использование меток считается правилом плохого тона, т. к. их применение часто ведет к составлению плохо структурированных модулей, усложняющих чтение, сопровождение и отладку программ.
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. Строковые процедуры и функции
Function Length (St): LongInt;
Возвращает длину строки символов St, т. е. количество символов в ней (не путать с размером строки).
St:= '1234abc';
L:= Length(St); {L= 7}
Procedure Delete (St, Pos, Num);
Удаляет Num символов из строки St начиная с позиции Pos, если Pos St:= '1234abc'; Delete(St, 4, 2); { St= '123bc'} Delete(St, 3, 120); { St= '12'} Procedure Insert (Obj, Target, Pos); Вставляет строку Obj в строку Target начиная с позиции Pos. Если Pos>Length (Target), то результат Target + Obj. St1:= '***'; St2:= '1234abc'; Insert (St1, St2, 3) { St2= '12***34abc'} 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} 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} 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= ''} Function Concat (St1, St2{, …, StN}): String; Объединяет строки в одну строку. St:='abc'; St1:=Concat( 'sss', St, '1234'); {St1= 'sssabc1234'} St1:=Concat( St, '123'); {St1= 'abc123'} Function Pos (Obj, Target): Integer; Возвращает номер символа, начиная с которого строка Obj первый раз входит в строку Target. Если строка Obj отсутствует в строке Target, то Pos = 0. Q:= 'Иванов Сергей Петрович'; H:= Pos ('Сергей', Q); {H= 7} H:= Pos ('Игорь', Q); {H= 0} Function SizeOf (Obj): Integer; Возвращает размер переменной Obj. Function FormatFloat(const Format: string; Value: Extended): string; Возвращает форматированное вещественное значение в виде строки. Format – формат числа, Value – число. В табл. 14 даны форматы функции FormatFloat. Таблица 14 Формат Описание 0 # . , E+, E- ; Поле для цифры. Недостающие позиции заменяются нулями Поле для цифры. Если в позиции имеется значащая цифра, то оно выводится. Нули не выводятся Разделитель целой и дробной частей Поле разделителя тысяч, миллионов Формат представления чисел с плавающей точкой. Если "+" указан, то перед порядком выводится знак. Если указан "-", то минус выводится только для отрицательных порядков Разделитель форматов Примеры действия форматов при конвертации числа в строку представлены в табл. 15. Таблица 15 Формат Число 1 Число 2 Число 3 Число 4 0 0.00 #.## #,##0.00 #,##0.00;(#,##0.00) #,##0.00;;Zero 0.000E+00 #.###E-0 1234 1234 1234.00 1234 1,234.00 1,234.00 1,234.00 .234E+03 1.234E3 -1234 -1234 -1234.00 -1234 -1,234.00 (1,234.00) -1,234.00 -1.234E+03 -1.234E3 0.5 1 0.50 .5 0.50 0.50 0.50 5.000E-01 5E-1 0 0 0.00 0.00 0.00 Zero 0.000E+00 0E0 12.2. Стандартные функции Function Char (X: byte): Char; Возвращает символ с номером X. Ch:= Char(74); {Ch= 'J'} Function Ord (X): LongInt; Возвращает порядковый номер скалярного аргумента. j:= Ord('J'); {j= 74} Function Round (X: Real): LongInt; Возвращает округленное до целого значение вещественного аргумента. j:= Round(12.8235); {j= 13} Function Trunc (X: Real): LongInt; Возвращает целое путем отбрасывания дробной части вещественного аргумента. j:= Round(12.8235); {j= 12} 12.3. Арифметические процедуры и функции Function Frac (X: Extended): Extended; Возвращает дробную часть аргумента, например: r:= Frac(-12.82); {r = -0.82, Frac(12.82)=0.82 } Function Abs (X: Extended): Extended; Возвращает абсолютное значение аргумента, например: r:= Abs(-12.82); {r = 12.82} Function ArcTan (X: Extended): Extended; Возвращает арктангенс аргумента. Function Cos (X: Extended): Extended; Возвращает косинус аргумента. Function Sin (X: Real): Real; Возвращает синус аргумента. Function ArcCos(X: Extended): Extended; Возвращает арккосинус аргумента, значение которого должно принадле-жать отрезку [-1, 1]. Возвращает значение из отрезка [0, Pi]. Function ArcSin(X: Extended): Extended; Возвращает арксинус аргумента, значение которого должно принадле-жать отрезку [-1, 1]. Возвращает значение из отрезка [-Pi/2, Pi/2]. Function ArcTan2(Y, X: Extended): Extended; Возвращает арктангенс аргументов, вычисляя ArcTan(Y/X) в соответ-ствии с квадрантами координатной плоскости xOy. Возвращает значение из отрезка [-Pi, Pi]. Function Exp (X: Real): Real; Возвращает экспоненту аргумента. Function Sinh(X: Extended): Extended; Возвращает гиперболический синус аргумента. Function Cosh(X: Extended): Extended; Возвращает гиперболический косинус аргумента. Function Tanh(X: Extended): Extended; Возвращает гиперболический тангенс аргумента. Function ArcSinh(X: Extended): Extended; Возвращает гиперболический арксинус аргумента. Function ArcCosh(X: Extended): Extended; Возвращает гиперболический арккосинус аргумента. Function ArcTanh(X: Extended): Extended; Возвращает гиперболический арктангенс аргумента. Function Ln (X: Real): Real; Возвращает натуральный логарифм аргумента. Function Sqr (X: Real): Real; Возвращает квадрат аргумента. Function Sqrt (X: Real): Real; Возвращает квадратный корень аргумента. Function Ceil(X: Extended):Integer; Возвращает наибольшее целое аргумента. Сeil(-2.8) = -2 Ceil(2.8) = 3 Ceil(-1.0) = -1 Function Floor(X: Extended): Integer; Возвращает наименьшее целое аргумента. Ceil(-2.8) = -3 Ceil(2.8) = 2 Ceil(-1.0) = -1 Function Dec (X, [n]: LongInt): LongInt;














