![]() |
|
|
Реферат: Object Pascal
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
. procedure Abort; Используется в контексте с другим оператором; отменяет "задним числом" оператор в случае его аварийного завершения, блокирует выдачу сообщения об ошибке, удобен к использованию в блоке try … finally. 13. Структурные операторы К их числу относятся: · составной оператор, · условный оператор If, · оператор варианта Case, · оператор цикла For – Do, · оператор цикла While – Do, · оператор цикла Repeat – Until, · оператор записи With, · оператор Try – Except – End, · оператор Try – Finally – End, · оператор On – Do, · оператор Try – Finally – End. 13.1. Составной оператор Это простая структура следующих друг за другом операторов, заключенных в операторные скобки begin … end. Синтаксис составного оператора: Begin Оператор1 Оператор2 … ОператорN End; Составной оператор применяется в тех случаях, когда какое-либо действие необходимо применить не к одному, а сразу к нескольким операторам. Пример: Begin R:= X; X:= Y; Y:= R; End; 13.2. Условный оператор If Синтаксис допускает два вида оператора: if логическое выражение then оператор1 else оператор2; и его усеченный вариант: if логическое выражение then оператор1; Оператор работает следующим образом. Сначала вычисляется логичес-кое выражение. Если оно истинно, то выполняется оператор1, иначе – оператор2. Усеченный оператор выполняет оператор1 только в случае истинного значения логического выражения и не производит никаких действий в случае его ложности. Примеры: if (x < 10.7) then a[4]:= 5 else a[4]:= 6; if (x < 10.7) then a[4]:= 5; Допустима вложенность условных операторов внутри составного условного оператора. Например, оператору if L1 then if L2 then St1 else St2 else St3; эквивалентен оператор if L1 then begin if L2 then St1 else St2; end else St3; В этом операторе для повышения структурированности использованы операторные скобки begin … end. При конструировании сложного условного оператора во избежание логических ошибок следует отдавать предпочтение структурному способу записи такого оператора. 13.3. Оператор варианта Case Синтаксис оператора: Case Selector of Const1: Оператор1; Const2: Оператор2; … ConstN: ОператорN [else Оператор]; End; Selector может быть любой простой тип кроме Real. Каждая из Const1 … ConstN может быть значение, несколько перечисленных через запятую значений или отрезок типа. Оператор Else, как видно из описания, может отсутствовать. В том случае, если он присутствует, то действует общее правило: перед словом Else не должно быть символа ";" (точка с запятой). Поясним работу оператора Case на примере: Case i of 0 : x := 0; 1,3 : x := 1; 10 .. 15: x := 2 else x := 3; End; При выполнении оператора Case управление будет передано тому оператору, который помечен константой, являющейся значением переменной i. Например, если к моменту выполнения Case-оператора i = 0, то будет выполнен оператор x := 0. Иначе, если i = 1 или i = 3, то будет выполнен оператор x := 1; иначе, если значение i в диапазоне 10 .. 15, то будет выполнен оператор x := 2; наконец, если i не равно ни одной из вышеперечисленных констант, то будет выполнен оператор x := 3, следующий за словом else (иначе). 13.4. Оператор цикла For – Do Синтаксис оператора имеет две разновидности: For счетчик цикла:=нач.знач. To конеч.знач. Do оператор For счетчик цикла:=нач.знач. Downto конеч.знач. Do оператор Здесь конструкция For .. Do называется заголовком цикла, оператор – телом цикла. Для циклов должны соблюдаться следующие правила и ограничения: начальное и конечное значения счетчика цикла должны быть одинаковых простых типов, кроме Real; в теле цикла счетчик не должен менять значение; вход в цикл минуя заголовок запрещен; для первой разновидности начальное значение не должно быть больше конечного; для второй разновидности начальное значение не должно быть меньше конечного. Первая разновидность оператора цикла For работает следующим образом. Сначала счетчик цикла принимает нач.знач. и выполняется оператор, расположенный вслед за словом Do. Затем значение счетчика будет увеличено на шаг счетчика 1 и вновь будет выполнен оператор и т. д., пока счетчик не переберет все значения от нач.знач. до конеч.знач. Пример. s:= 0; For i:=1 to 44 do s:= s + z[i]; В результате в переменной s будет накоплена сумма первых 44 элементов массива z. Другая разновидность оператора For отличается лишь отрицательным шагом –1 счетчика. Пример. s:= 0; For i:=44 Downto 1 do s:= s + z[i]; Будет получен тот же результат. 13.5. Оператор цикла While – Do Синтаксис оператора: While логическое выражение Do оператор; Цикл выполняет оператор, расположенный вслед за словом Do до тех пор, пока истинно логическое выражение, расположенное за словом While ("выполняй, пока истинно"). Пример. x:= 0; i:=0; While (x < 101.667) do Begin Inc (i); X:= X + 5.617; Y[i]:= Func (i + 6, 9 * i, X); End; В этом примере цикл будет выполняться до тех пор, пока не выполнится условие x < 101.667. В теле цикла переменная X с каждым шагом цикла увеличивает свое значение на 5.617 так, что на определенном шаге условие x < 101.667 впервые не будет выполнено. В этот момент без входа в тело цикл закончит работу. 13.6. Оператор цикла Repeat – Until Синтаксис оператора: Repeat Оператор1; Оператор2; … ОператорN; Until логическое выражение; Цикл работает, пока логическое выражение ложно ("повторяй, пока не выполнится"). Пример. s:= 0; i:=0; Repeat Inc (i); s:= s + z[i]; Until (i = 44); В этом примере цикл будет выполняться до тех пор, пока не выполнится условие i = 44. Результат будет тот же, что в примере для For-цикла. 13.7. Операторы Break и Continue Оператор Break может быть размещен в теле цикла. При его выполнении цикл прекращает работу и считается выполненным. Пример. s:= 0; i:=0; Repeat Inc (i); s:= s + z[i]; if (s > 14) then Break; Until (i = 44); В этом примере цикл будет выполняться до тех пор, пока не выполнится условие i = 44 или если в операторе if переменная s превысит значение 14. Оператор Continue также может быть размещен в теле цикла. При его выполнении управление независимо от того, где он расположен, сразу передается в начало цикла для выполнения следующего шага. Пример. s:= 0; i:=0; Repeat Inc (i); s:= s + z[i]; if (s > 20) then Continue; if (s > 14) then Break; Until (i = 44); В этом примере если в первом операторе if выполнится условие s > 20, то сработает оператор Continue. Он сразу передаст управление на первый оператор в теле цикла – Inc (i), предотвратив тем самым выполнение ниже-следующих операторов – второго if и Until. 13.8. Вложенные циклы В теле оператора цикла могут быть размещены другие операторы цикла. Такие структуры называются вложенными циклами. Язык допускает любую глубину вложенности циклов. При использовании вложенных циклов необходимо иметь в виду следующее: все вложенные циклы For – Do должны иметь различные счетчики (иначе это противоречило бы требованию на запрет изменения значения счетчика внутри цикла); нет никаких ограничений на досрочный выход из внутреннего цикла наружу; недопустим вход во внутренний цикл For – Do, минуя его заголовок, что соответствует общему требованию о корректном входе в цикл. Вложенные циклы используются в ситуациях, когда на каждом шаге наружного цикла необходимо полностью выполнить внутренний цикл. Пример. Const n = 15; m = 24; Var i,j: Byte; R,Tau,s: Real; z: array[1..n, 1..m] of Real; … {заполнение массива z с использованием вложенных циклов} Tau:= Pi/m; For i:=1 to n do begin R:=4.0*Pi*Sin(i*Tau); {первый оператор в теле цикла по i} For j:=1 to m do z[i, j] := R+j; {второй оператор в теле цикла по i} end {i}; {вычисление суммы положительных элементов массива z с использованием вложенных циклов } s:=0; For i:=1 to n do For j:=1 to m do if ( z[i, j] > 0) then s:= s + z [i, j]; Приведенный пример содержит две структуры вложенных циклов. Первая структура предназначена для заполнения элементов двумерного массива z с помощью математической формулы Наружный цикл со счетчиком i в теле цикла содержит два оператора – оператор присваивания (вычисление значения вспомогательной переменной R с целью сокращения времени вычислений) и оператор внутреннего цикла со счетчиком j. Поскольку наружный цикл в своем теле содержит несколько операторов, то они заключены в операторные скобки begin … end. Эта структура работает следующим образом. После входа в наружный цикл переменная i (счетчик этого цикла) примет значение 1. Далее будет вычислено значение переменной R при i = 1. После этого будет выполнен внутренний цикл со счетчиком j, где j на каждом шаге будет последовательно принимать значения 1, 2, 3, … m (i при этом остается неизменным и равным 1). В результате будут вычислены элементы z11, z12, …, z1m первой строки массива. Затем будет выполнен возврат к заголовку наружного цикла, где значение счетчика i будет увеличено на 1 (т. е. i станет равно 2) и вновь будет выполнены операторы, расположенные в его теле. В результате будут определены элементы z21, z22, …, z2m второй строки массива и т.д. Вторая структура вложенных циклов предназначена для вычисления суммы положительных элементов массива z. Для этого сначала переменной s будет присвоено значение 0, а затем во вложенных циклах будет накоплена требуемая сумма в ячейку s. 13.9. Оператор записи With В ранних версиях языка оператор использовался для более удобного доступа к полям записи. Пример: Var Student : Record Fam: String[30]; Name: String[20]; Age: Word; End; … Student.Fam:= 'Колокольников'; Student.Name:= 'Павел'; S:=Student.Fam + ' '+Student.Name; {предыдущих три оператора эквивалентны следующим} With Student do Begin Fam:= 'Колокольников'; Name:= 'Павел'; S:= Fam + ' '+ Name; End; 13.10. Оператор Try – Except – End Это новейшее средство языка. Блок Try – Except – End используется для предотвращения исключительных ситуаций (ИС), которые могут возникнуть при выполнении программы. К их числу относятся сбои в работе аппаратуры, ошибки вычислений (например деление на нуль), попытки присвоить значение, выходящее за пределы типа и т. д. Синтаксис: Try {операторы, способные генерировать ИС} Except {операторы, обрабатывающие генерированные ИС} end; Блок Try – Except – End работает следующим образом. Выполнение начинается с операторов, расположенных в блоке Try – Except. Если в каком-либо операторе возникает ИС, то она подавляется и затем выполняются все операторы, расположенные в блоке Except – End. В результате предотвращается аварийное прерывание программы. Использование блока Try – Except – End открывает возможность программного контроля за ИС. Пример. i:= 0; n:= 8; Try i:= n div i; {Деление на нуль. Оператор генерирует ИС} n:= i + 9; Except ShowMessage('Ошибка. Деление на нуль в операторе i := n / i'); End; Результатом выполнения блока операторов будет появление на экране формы с сообщением "Ошибка. Деление на нуль в операторе i := n / i", после чего программа продолжит работу с оператора, следующего за словом End, а не с оператора n := i + 9. Если бы оператор i := n div i не был защищен блоком Try – Except – End, то возникшая при его выполнении ИС привела бы к нежелательному аварийному завершению программы. 13.11. Оператор On – End При возникновении ИС язык позволяет не только предотвратить прерывание программы, но и определить, какого именно вида была ИС. Для этого в блоке Except – End можно использовать оператор On –Do. Пример i:= 0; n:= 8; Try i:= n div i; {Деление на нуль. Оператор генерирует ИС} n:= i + 9; Except Страницы: 1, 2, 3, 4, 5, 6, 7, 8 |
|
|||||||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |