Реферат: Object Pascal
Все метки, используемые в блоке, должны быть описаны словом 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<Length (St).
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;
Уменьшает значение аргумента на величину второго параметра. Если он отсутствует, то уменьшает на 1.
J:=67;
K:=Dec(J); {j= 66}
K:=Dec(J, 13); {j= 53}
Function Inc (X, [n]: LongInt): LongInt;
Увеличивает значение аргумента на величину второго параметра. Если он отсутствует, то увеличивает на 1.
J:=67;
K:=Inc(J); {j= 68}
K:=Inc(J, 13); {j= 81}
12.4. Скалярные функции
Function Odd (X: LongInt): Boolean;
Возвращает True, если аргумент четный.
J:=67;
K:=Odd(J); {K= False}
Function Pred (X);
Возвращает предшествующее значение типа аргумента.
Function Succ (X);
Возвращает последующее значение типа аргумента.
12.5. Процедуры завершения
Procedure Exit; Выход из процедуры.
Procedure Halt([Code:Word]);
Выход в операционную систему с кодом возврата, если он указан.
12.6. Процедуры и функции для работы с типами "дата/время"
Типы TDateTime и TTimeStamp, а также производные от них типы предназначены для хранения даты и времени. Эти типы используются в ряде весьма полезных и необходимых процедур и функций для работы с датами и временем.
Function Now: TDateTime;
Возвращает текущую дату и время.
Function Date: TDateTime;
Возвращает текущую дату.
Function Time: TDateTime;
Возвращает текущее время.
Function DateToStr (D: TDateTime): String;
Преобразует дату в строку символов, например:
S:= DateTimeToStr(Date); {текущая дата '26.10.99'}
Function TimeToStr(T: TDateTime): String;
Преобразует время в строку символов, например:
S:= TimeToStr(Time); { текущее время '13.58.13'}
Function DateTimeToStr(DateTime: TDateTime): String;
Преобразует дату/время в строку символов, например:
S:= DateTimeToStr(Now); { текущие дата и время '26.10.99 14.01.51'}
Function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
Конвертирует TDateTime в TTimeStamp, например:
TS:= DateTimeToTimeStamp(Now); {type TS = TTimeStamp}
s:= IntToStr(Ts.Date) + ' ' + IntToStr(Ts.Time); {'730053 51095810' – (прошло дней с 00.00.0000 г. и миллисекунд от полуночи текущего дня}
Function TimeStampToDateTime(const TimeStamp: TTimeStamp): TDateTime;
Конвертирует TTimeStamp в TDateTime.
Procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
Раскладывет дату Date на год, месяц и день, например:
DecodeDate(Now, Y, M, D);
s:= IntToStr(Y) + ' ' + IntToStr(M) + ' ' + IntToStr(M); {'1999 10 26'}
.Procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
Раскладывет время Time на час, минуты, секунды и миллисекунды, например:
DecodeTime(Now, H, M, S, MS);
ss:= IntToStr(H) + ' ' + IntToStr(M) + ' ' + IntToStr(S) + ' ' + IntToStr(MS);
{'14 22 34 567', т. е. 14 ч 22 мин 34 с 567 мс}
.Function EncodeDate(Year, Month, Day: Word): TDateTime;
Противоположна DecodeDate;
.Function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
Противоположна DecodeTime;
.Function FormatDateTime(const Frmt: string; DateTime: TDateTime): string;
Преобразует DateTime в строку с заданным форматом. Если формат пуст, то функция возвращает строку в формате "c". Следующий оператор присвоит строковой переменной s значение 'Встреча состоится: пятница, 6 Ноябрь, 1999, в 10:30 AM'.
s:= FormatDateTime('"Встреча состоится:" dddd, mmmm d, yyyy, ' +'"в" hh:mm AM/PM', StrToDateTime('6.11.99 10:30am'));
Виды форматов даны в табл. 16.
12.7. Прочие процедуры и функции
Function Hi(X): byte;
Возвращает старший байт своего целочисленного аргумента.
Function Lo(X) : byte;
Возвращает младший байт своего целочисленного аргумента.
Procedure Swap(X);
Меняет старший и младший байты целочисленного аргумента местами.
Procedure Randomize;
Инициализирует генератор случайных чисел.
Function Random(N: Integer): Integer;
Возвращает случайное число из интервала (0, N).
Function SizeOf(X) : Integer;
Возвращает число байт, занимаемых аргументом.
Procedure Move(Var Source, Dest; Count: Integer);
Копирует Count байт из переменной Source в переменную Dest. В случае перекрытия областей памяти пересылка в перекрывающуюся область не производится.
Function ParamCount: Word;
Возвращает число параметров, переданных в командной строке.
Procedure Break;
Оператор безусловного завершения цикла, процедуры или функции.
. Procedure Continue;
Оператор, используемый в цикле для передачи управления в его начало.
Таблица 16
Формат | Описание |
C
D Dd Ddd Dddd Ddddd Dddddd M Mm Mmm Mmmm Yy Yyyy h hh n nn s ss t tt am/pm ampm a/p / : |
Показывает сначала дату в формате дд.мм.гг, затем время в формате чч.мм.сс. Не показывает время, если дробная часть DateTime равна нулю Показывает день без лидирующего нуля (1 – 31) Показывает день с лидирующим нулём (01 – 31) Показывает день недели в укороченном формате (Вос – Суб) Показывает день недели в полном формате (Воскресенье – Суббота) Показывает дату в формате дд.мм.гг. Показывает дату в формате д Месяц год Показывает месяц без лидирующего нуля (1 – 12) Показывает месяц с лидирующим нулём (01 – 12) Показывает месяц в сокращенном виде (Янв – Дек) Показывает месяц в полном формате (Январь – Декабрь) Показывает год в виде двух последних цифр (00 – 99) Показывает год в виде четырех цифр (00000 – 9999) Показывает час без лидирующего нуля (0 – 23) Показывает час с лидирующим нулем (00 – 23) Показывает минуту без лидирующего нуля (0 – 59) Показывает минуту с лидирующим нулем (00 – 59) Показывает секунду без лидирующего нуля (0 – 59) Показывает секунду с лидирующим нулем (00 – 59) Показывает время в формате чч:мм Показывает время в формате чч:мм:сс Показывает время в 12-часовом формате (am – до полудня, pm – после полудня) Показывает время в 12-часовом формате без указателя до/после полудня Использует Windows-разделитель даты. Использует Windows-разделитель времени |
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11