diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html index ca27e5434..557c57089 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for array of T.html @@ -50,9 +50,9 @@ function FindLast<T>(Self: array of T; p: T->boolean): T;
        Âûïîëíÿåò ïîèñê ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà function FindLastIndex<T>(Self: array of T; p: T->boolean): integer; -
        Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà +
        Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 function FindLastIndex<T>(self: array of T; start: integer; p: T->boolean): integer; -
        Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà +
        Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, â äèàïàçîíå èíäåêñîâ îò 0 äî start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 function High(Self: System.Array);
        Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ìàññèâà function Indexes<T>(Self: array of T): sequence of integer; diff --git a/PABCNetHelp/PABCSystemDocGen/PABC.pas b/PABCNetHelp/PABCSystemDocGen/PABC.pas deleted file mode 100644 index a7755d6c2..000000000 --- a/PABCNetHelp/PABCSystemDocGen/PABC.pas +++ /dev/null @@ -1,3965 +0,0 @@ - -// ----------------------------------------------------- -//>> Ñòàíäàðòíûå êîíñòàíòû # Standard constants -// ----------------------------------------------------- -const - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà shortint - MaxShortInt = shortint.MaxValue; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà byte - MaxByte = byte.MaxValue; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà smallint - MaxSmallInt = smallint.MaxValue; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà word - MaxWord = word.MaxValue; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà longword - MaxLongWord = longword.MaxValue; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà int64 - MaxInt64 = int64.MaxValue; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà uint64 - MaxUInt64 = uint64.MaxValue; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà double - MaxDouble = real.MaxValue; - /// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà double - MinDouble = real.Epsilon; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà real - MaxReal = real.MaxValue; - /// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà real - MinReal = real.Epsilon; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà single - MaxSingle = single.MaxValue; - /// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà single - MinSingle = single.Epsilon; - /// Ìàêñèìàëüíîå çíà÷åíèå òèïà integer - MaxInt = integer.MaxValue; - /// Êîíñòàíòà Pi - /// !! Pi constant - Pi = 3.141592653589793; - /// Êîíñòàíòà E - /// !! E constant - E = 2.718281828459045; - /// Êîíñòàíòà ïåðåõîäà íà íîâóþ ñòðîêó - /// !! The newline string defined for this environment. - NewLine = System.Environment.NewLine; -// ----------------------------------------------------- -//>> Ñòàíäàðòíûå òèïû # Standard types -// ----------------------------------------------------- -type - /// Áàçîâûé òèï îáúåêòîâ - Object = System.Object; - - /// Áàçîâûé òèï èñêëþ÷åíèé - Exception = System.Exception; - - /// double = real - double = System.Double; - - /// longint = integer - longint = System.Int32; - - /// cardinal = longword - cardinal = System.UInt32; - - /// Ïðåäñòàâëÿåò 128-áèòíîå âåùåñòâåííîå ÷èñëî - /// !! Represents a decimal number - decimal = System.Decimal; - - /// Ïðåäñòàâëÿåò ïðîèçâîëüíî áîëüøîå öåëîå ÷èñëî - BigInteger = System.Numerics.BigInteger; - - /// Ïðåäñòàâëÿåò äàòó è âðåìÿ - DateTime = System.DateTime; - - /// Ïðåäñòàâëÿåò êîìïëåêñíîå ÷èñëî - Complex = System.Numerics.Complex; - - /// Ïðåäñòàâëÿåò êîðòåæ - Tuple = System.Tuple; - - /// Ïðåäñòàâëÿåò ñïèñîê íà áàçå äèíàìè÷åñêîãî ìàññèâà - List = System.Collections.Generic.List; - - /// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer - Comparer = System.Collections.Generic.Comparer; - - /// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer - IComparable = System.IComparable; - - /// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå õåø-òàáëèöû - HashSet = System.Collections.Generic.HashSet; - - /// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå áèíàðíîãî äåðåâà ïîèñêà - SortedSet = System.Collections.Generic.SortedSet; - - /// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð Êëþ÷-Çíà÷åíèå), ðåàëèçîâàííûé íà áàçå õåø-òàáëèöû - Dictionary = System.Collections.Generic.Dictionary; - - /// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ, ðåàëèçîâàííûé íà áàçå áèíàðíîãî äåðåâà ïîèñêà - SortedDictionary = System.Collections.Generic.SortedDictionary; - - /// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð êëþ÷-çíà÷åíèå), ðåàëèçîâàííûé íà áàçå äèíàìè÷åñêîãî ìàññèâà ïàð - SortedList = System.Collections.Generic.SortedList; - - /// Ïðåäñòàâëÿåò ïàðó Êëþ÷-Çíà÷åíèå äëÿ àññîöèàòèâíîãî ìàññèâà - KeyValuePair = System.Collections.Generic.KeyValuePair; - - /// Ïðåäñòàâëÿåò äâóñâÿçíûé ñïèñîê - LinkedList = System.Collections.Generic.LinkedList; - - /// Ïðåäñòàâëÿåò óçåë äâóñâÿçíîãî ñïèñêà - LinkedListNode = System.Collections.Generic.LinkedListNode; - - /// Ïðåäñòàâëÿåò î÷åðåäü - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïåðâûé âîøåë-ïåðâûé âûøåë" - Queue = System.Collections.Generic.Queue; - - /// Ïðåäñòàâëÿåò ñòåê - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïîñëåäíèé âîøåë-ïåðâûé âûøåë" - Stack = System.Collections.Generic.Stack; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè - ICollection = System.Collections.Generic.ICollection; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ñðàâíåíèÿ äâóõ ýëåìåíòîâ - IComparer = System.Collections.Generic.IComparer; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ íàáîðà ïàð Êëþ÷-Çíà÷åíèå - IDictionary = System.Collections.Generic.IDictionary; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ, ïðåäîñòàâëÿþùèé ïåðå÷èñëèòåëü äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè - IEnumerable = System.Collections.Generic.IEnumerable; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè - IEnumerator = System.Collections.Generic.IEnumerator; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïîääåðæêè ñðàâíåíèÿ íà ðàâåíñòâî - IEqualityComparer = System.Collections.Generic.IEqualityComparer; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè ñ äîñòóïîì ïî èíäåêñó - IList = System.Collections.Generic.IList; - - /// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ìíîæåñòâà - ISet = System.Collections.Generic.ISet; - - /// Ïðåäñòàâëÿåò èçìåíÿåìóþ ñòðîêó ñèìâîëîâ - StringBuilder = System.Text.StringBuilder; - - /// Òèï êîäèðîâêè ñèìâîëîâ - Encoding = System.Text.Encoding; - - /// Ïðåäñòàâëÿåò äåéñòâèå áåç ïàðàìåòðîâ - Action0 = System.Action; - - /// Ïðåäñòàâëÿåò äåéñòâèå ñ îäíèì ïàðàìåòðîì - Action = System.Action; - - /// Ïðåäñòàâëÿåò äåéñòâèå ñ äâóìÿ ïàðàìåòðàìè - Action2 = System.Action; - - /// Ïðåäñòàâëÿåò äåéñòâèå ñ òðåìÿ ïàðàìåòðàìè - Action3 = System.Action; - - /// Ïðåäñòàâëÿåò ôóíêöèþ áåç ïàðàìåòðîâ - Func0 = System.Func; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì - Func = System.Func; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè - Func2 = System.Func; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè - Func3 = System.Func; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì öåëîãî òèïà, âîçâðàùàþùóþ öåëîå - IntFunc = Func; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì âåùåñòâåííîãî òèïà, âîçâðàùàþùóþ âåùåñòâåííîå - RealFunc = Func; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì ñòðîêîâîãî òèïà, âîçâðàùàþùóþ ñòðîêó - StringFunc = Func; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì, âîçâðàùàþùóþ boolean - Predicate = System.Predicate; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean - Predicate2 = function(x1: T1; x2: T2): boolean; - - /// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean - Predicate3 = function(x1: T1; x2: T2; x3: T3): boolean; - - /// Ïðåäñòàâëÿåò ðåãóëÿðíîå âûðàæåíèå - Regex = System.Text.RegularExpressions.Regex; - - /// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îòäåëüíîãî ñîâïàäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ - Match = System.Text.RegularExpressions.Match; - - /// Ïðåäñòàâëÿåò ìåòîä, âûçûâàåìûé ïðè îáíàðóæåíèè ñîâïàäåíèÿ â Regex.Replace - MatchEvaluator = System.Text.RegularExpressions.MatchEvaluator; - - /// Ïðåäñòàâëÿåò íàáîð óñïåøíûõ ñîâïàäåíèé ðåãóëÿðíîãî âûðàæåíèÿ - MatchCollection = System.Text.RegularExpressions.MatchCollection; - - /// Ïðåäñòàâëÿåò ïàðàìåòðû ðåãóëÿðíîãî âûðàæåíèÿ - RegexOptions = System.Text.RegularExpressions.RegexOptions; - - /// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îäíîé ãðóïïû ïðè âûïîëíåíèè Regex.Match - RegexGroup = System.Text.RegularExpressions.Group; - - /// Ïðåäñòàâëÿåò ðåçóëüòàòû èç íàáîðà ãðóïï ïðè âûïîëíåíèè Regex.Match - RegexGroupCollection = System.Text.RegularExpressions.GroupCollection; - - /// Ïðåäñòàâëÿåò òèï êîðîòêîé ñòðîêè ôèêñèðîâàííîé äëèíû 255 ñèìâîëîâ - ShortString = string[255]; - - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû ââîäà # Read subroutines -// ----------------------------------------------------- -///- procedure Read(a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû -procedure Read; -///-- -procedure Read(var x: integer); -///-- -procedure Read(var x: real); -///-- -procedure Read(var x: char); -///-- -procedure Read(var x: string); -///-- -procedure Read(var x: byte); -///-- -procedure Read(var x: shortint); -///-- -procedure Read(var x: smallint); -///-- -procedure Read(var x: word); -///-- -procedure Read(var x: longword); -///-- -procedure Read(var x: int64); -///-- -procedure Read(var x: uint64); -///-- -procedure Read(var x: single); -///-- -procedure Read(var x: boolean); -///- procedure Readln(a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln; - -/// Ââîäèò ÷èñëîâîå çíà÷åíèå x êëàâèàòóðû. Âîçâðàùàåò False åñëè ïðè ââîäå ïðîèçîøëà îøèáêà -function TryRead(var x: integer): boolean; -///-- -function TryRead(var x: real): boolean; -///-- -function TryRead(var x: byte): boolean; -///-- -function TryRead(var x: shortint): boolean; -///-- -function TryRead(var x: smallint): boolean; -///-- -function TryRead(var x: word): boolean; -///-- -function TryRead(var x: longword): boolean; -///-- -function TryRead(var x: int64): boolean; -///-- -function TryRead(var x: uint64): boolean; -///-- -function TryRead(var x: single): boolean; - -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean: boolean; - -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean: boolean; - -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2: (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2: (string, string); - -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3: (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3: (string, string, string); - -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2(prompt: string): (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2(prompt: string): (string, string); - -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3(prompt: string): (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3(prompt: string): (string, string, string); - - -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean(prompt: string): boolean; - -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean(prompt: string): boolean; - - -///-- -procedure ReadShortString(var s: string; n: integer); -///-- -procedure ReadShortStringFromFile(f: Text; var s: string; n: integer); - -///- procedure Read(f: ôàéë; a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... èç ôàéëà f -procedure Read(f: Text); -///-- -procedure Read(f: Text; var x: integer); -///-- -procedure Read(f: Text; var x: real); -///-- -procedure Read(f: Text; var x: char); -///-- -procedure Read(f: Text; var x: string); -///-- -procedure Read(f: Text; var x: byte); -///-- -procedure Read(f: Text; var x: shortint); -///-- -procedure Read(f: Text; var x: smallint); -///-- -procedure Read(f: Text; var x: word); -///-- -procedure Read(f: Text; var x: longword); -///-- -procedure Read(f: Text; var x: int64); -///-- -procedure Read(f: Text; var x: uint64); -///-- -procedure Read(f: Text; var x: single); -///-- -procedure Read(f: Text; var x: boolean); - -///- procedure Readln(f: Text; a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... èç òåêñòîâîãî ôàéëà f è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln(f: Text); -///-- -procedure Readln(f: Text; var x: string); - -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadBoolean(f: Text): boolean; - -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnBoolean(f: Text): boolean; - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû âûâîäà # Write subroutines -// ----------------------------------------------------- -///- procedure Write(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí -procedure Write; -///-- -procedure Write(obj: object); -///-- -procedure Write(obj1, obj2: object); -///-- -procedure Write(params args: array of object); - -///- procedure Writeln(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -///!!- Writeln(a,b,...) -/// Writes a,b,... to standart output stream and appends newline -procedure Writeln; -///-- -procedure Writeln(obj: object); -///-- -//procedure writeln(ptr: pointer); -///-- -procedure Writeln(obj1, obj2: object); -///-- -procedure Writeln(params args: array of object); - -///- procedure Write(f: ôàéë; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â ôàéë f -procedure Write(f: Text); -///-- -procedure Write(f: Text; val: object); -///-- -procedure Write(f: Text; params args: array of object); - -///- procedure Writeln(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure Writeln(f: Text); -///-- -procedure Writeln(f: Text; val: object); -///-- -procedure Writeln(f: Text; params args: array of object); - -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(f: Text; formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -///è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(f: Text; formatstr: string; params args: array of object); - -///- procedure Print(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(s: string); -///-- -procedure Print(params args: array of object); -///- procedure Print(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(f: Text; params args: array of object); -///- procedure Println(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(params args: array of object); -///- procedure Println(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(f: Text; params args: array of object); - -// ----------------------------------------------------- -//>> Îáùèå ïîäïðîãðàììû äëÿ ðàáîòû ñ ôàéëàìè # Common subroutines for files -// ----------------------------------------------------- -///- procedure Assign(f: ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure Assign(f: AbstractBinaryFile; name: string); -///- procedure AssignFile(f: ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure AssignFile(f: AbstractBinaryFile; name: string); -///- procedure Close(f: ôàéë); -/// Çàêðûâàåò ôàéë -procedure Close(f: AbstractBinaryFile); -///- procedure CloseFile(f: ôàéë); -/// Çàêðûâàåò ôàéë -procedure CloseFile(f: AbstractBinaryFile); -///- function Eof(f: ôàéë): boolean; -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function Eof(f: AbstractBinaryFile): boolean; -///- procedure Erase(f: ôàéë); -/// Óäàëÿåò ôàéë, ñâÿçàííûé ñ ôàéëîâîé ïåðåìåííîé -procedure Erase(f: AbstractBinaryFile); -///- procedure Rename(f: ôàéë; newname: string); -/// Ïåðåèìåíîâûâàåò ôàéë, ñâÿçàíûé ñ ôàéëîâîé ïåðåìåííîé, äàâàÿ åìó èìÿ newname. -procedure Rename(f: AbstractBinaryFile; newname: string); - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òåêñòîâûìè ôàéëàìè # Subroutines for text files -// ----------------------------------------------------- -///-- -procedure Assign(f: Text; name: string); -///-- -procedure AssignFile(f: Text; name: string); -///-- -procedure Close(f: Text); -///-- -procedure CloseFile(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â êîäèðîâêå Windows. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â óêàçàííîé êîäèðîâêå. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â êîäèðîâêå Windows. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â óêàçàííîé êîäèðîâêå. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; name: string; en: Encoding); -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â êîäèðîâêå Windows -function OpenRead(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â óêàçàííîé êîäèðîâêå -function OpenRead(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â êîäèðîâêå Windows -function OpenWrite(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â óêàçàííîé êîäèðîâêå -function OpenWrite(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â êîäèðîâêå Windows -function OpenAppend(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -function OpenAppend(fname: string; en: Encoding): Text; - -///-- -function Eof(f: Text): boolean; -/// Âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function Eoln(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function SeekEof(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function SeekEoln(f: Text): boolean; -/// Çàïèñûâàåò ñîäåðæèìîå áóôåðà ôàéëà íà äèñê -procedure Flush(f: Text); -///-- -procedure Erase(f: Text); -///-- -procedure Rename(f: Text; newname: string); -///-- -procedure TextFileInit(var f: Text); - -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string; en: Encoding): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string; en: Encoding): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â êîäèðîâêå Windows â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string): string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â óêàçàíîé êîäèðîâêå â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string; en: Encoding): string; -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string; en: Encoding); - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äâîè÷íûìè ôàéëàìè # Subroutines for binary files -// ----------------------------------------------------- -///- procedure Reset(f: äâîè÷íûé ôàéë); -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: AbstractBinaryFile); -///- procedure Reset(f: äâîè÷íûé ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: AbstractBinaryFile; name: string); -///- procedure Rewrite(f: äâîè÷íûé ôàéë); -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå. Åñëè ôàéë ñóùåñòâîâàë, îí îáíóëÿåòñÿ. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: AbstractBinaryFile); -///- procedure Rewrite(f: äâîè÷íûé ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: AbstractBinaryFile; name: string); -///- procedure Truncate(f: äâîè÷íûé ôàéë); -/// Óñåêàåò äâîè÷íûé ôàéë, îòáðàñûâàÿ âñå ýëåìåíòû ñ ïîçèöèè ôàéëîâîãî óêàçàòåëÿ. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Truncate(f: AbstractBinaryFile); - -///-- -procedure Write(f: AbstractBinaryFile; params vals: array of object); -///-- -procedure Writeln(f: AbstractBinaryFile); -///-- -procedure Writeln(f: AbstractBinaryFile; val: object); -///-- -procedure Writeln(f: AbstractBinaryFile; params vals: array of object); - -///- function FilePos(f: äâîè÷íûé ôàéë): int64; -/// Âîçâðàùàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå -function FilePos(f: TypedFile): int64; -///- function FileSize(f: äâîè÷íûé ôàéë): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ â äâîè÷íîì ôàéëå -function FileSize(f: TypedFile): int64; -///- procedure Seek(f: äâîè÷íûé ôàéë; n: int64); -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå íà ýëåìåíò ñ äàííûì íîìåðîì -procedure Seek(f: TypedFile; n: int64); -///-- -procedure TypedFileInit(var f: TypedFile; ElementType: System.Type); -///-- -procedure TypedFileInit(var f: TypedFile; ElementType: System.Type; off: integer; params offs: array of integer); -///-- -procedure TypedFileInitWithShortString(var f: TypedFile; ElementType: System.Type; off: integer; params offs: array of integer); -///-- -function TypedFileRead(f: TypedFile): object; - -///-- -function FilePos(f: BinaryFile): int64; -///-- -function FileSize(f: BinaryFile): int64; -///-- -procedure Seek(f: BinaryFile; n: int64); -///-- -procedure BinaryFileInit(var f: BinaryFile); -///-- -function BinaryFileRead(var f: BinaryFile; ElementType: System.Type): object; - -// ----------------------------------------------------- -//>> Cèñòåìíûå ïîäïðîãðàììû # System subroutines -// ----------------------------------------------------- -/// Âîçâðàùàåò âåðñèþ PascalABC.NET -function PascalABCVersion: string; -/// Âîçâðàùàåò êîëè÷åñòâî ïàðàìåòðîâ êîìàíäíîé ñòðîêè -function ParamCount: integer; -/// Âîçâðàùàåò i-òûé ïàðàìåòð êîìàíäíîé ñòðîêè -function ParamStr(i: integer): string; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetDir: string; -/// Ìåíÿåò òåêóùèé êàòàëîã -procedure ChDir(s: string); -/// Ñîçäàåò êàòàëîã -procedure MkDir(s: string); -/// Óäàëÿåò êàòàëîã -procedure RmDir(s: string); - -/// Ñîçäàåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî ñîçäàí -function CreateDir(s: string): boolean; -/// Óäàëÿåò ôàéë. Åñëè ôàéë íå ìîæåò áûòü óäàëåí, òî âîçâðàùàåò False -function DeleteFile(s: string): boolean; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetCurrentDir: string; -/// Óäàëÿåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function RemoveDir(s: string): boolean; -/// Ïåðåèìåíîâûâàåò ôàéë name, äàâàÿ åìó íîâîå èìÿ newname. Âîçâðàùàåò True, åñëè ôàéë óñïåøíî ïåðåèìåíîâàí -function RenameFile(name, newname: string): boolean; -/// Óñòàíàâëèâàåò òåêóùèé êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function SetCurrentDir(s: string): boolean; - -/// Èçìåíÿåò ðàñøèðåíèå ôàéëà ñ èìåíåì name íà newext -function ChangeFileNameExtension(name, newext: string): string; -/// Âîçâðàùàåò True, åñëè ôàéë ñ èìåíåì name ñóùåñòâóåò -function FileExists(name: string): boolean; - -/// Âûâîäèò â ñïåöèàëüíîì îêíå ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; sourceFile: string := ''; line: integer := 0); -/// Âûâîäèò â ñïåöèàëüíîì îêíå äèàãíîñòè÷åñêîå ñîîáùåíèå è ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; message: string; sourceFile: string := ''; line: integer := 0); - -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskFree(diskname: string): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskSize(diskname: string): int64; -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskFree(disk: integer): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskSize(disk: integer): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà íà÷àëà ðàáîòû ïðîãðàììû -function Milliseconds: integer; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà ïîñëåäíåãî âûçîâà Milliseconds èëè MillisecondsDelta -function MillisecondsDelta: integer; - -/// Çàâåðøàåò ðàáîòó ïðîãðàììû -procedure Halt; -/// Çàâåðøàåò ðàáîòó ïðîãðàììû, âîçâðàùàÿ êîä îøèáêè exitCode -procedure Halt(exitCode: integer); - -/// Äåëàåò ïàóçó íà ms ìèëëèñåêóíä -procedure Sleep(ms: integer); -/// Âîçâàùàåò èìÿ çàïóùåííîãî .exe-ôàéëà -function GetEXEFileName: string; -/// Ïðåîáðàçóåò óêàçàòåëü ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function PointerToString(p: pointer): string; - -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Exec(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Exec(filename: string; args: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Execute(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Execute(filename: string; args: string); - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà -function EnumerateFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè -function EnumerateDirectories(path: string): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllDirectories(path: string): sequence of string; - -///-procedure New(var p: ^T); -/// Âûäåëÿåò äèíàìè÷åñêóþ ïàìÿòü ðàçìåðà sizeof(T) è âîçâðàùàåò â ïåðåìåííîé p óêàçàòåëü íà íåå. Òèï T äîëæåí áûòü ðàçìåðíûì -//procedure New(var p: ^T); - -///-procedure Dispose(var p: ^T); -/// Îñâîáîæäàåò äèíàìè÷åñêóþ ïàìÿòü, íà êîòîðóþ óêàçûâàåò p -//procedure Dispose(var p: ^T); - - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ èìåíàìè ôàéëîâ # Functions for file names -// ----------------------------------------------------- -/// Âûäåëÿåò èìÿ ôàéëà èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileName(fname: string): string; -/// Âûäåëÿåò ðàñøèðåíèå èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileExt(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFilePath(fname: string): string; -/// Âûäåëÿåò èìÿ äèñêà è ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDir(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDrive(fname: string): string; -/// Âîçâðàùàåò ïîëíîå èìÿ ôàéëà fname -function ExpandFileName(fname: string): string; - -// ----------------------------------------------------- -//>> Ìàòåìàòè÷åñêèå ïîäïðîãðàììû # Math subroutines -// ----------------------------------------------------- -///-function Sign(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò çíàê ÷èñëà x -function Sign(x: shortint): integer; -///-- -function Sign(x: smallint): integer; -///-- -function Sign(x: integer): integer; -///-- -function Sign(x: BigInteger): integer; -///-- -function Sign(x: longword): integer; -///-- -function Sign(x: int64): integer; -///-- -function Sign(x: uint64): integer; -///-- -function Sign(x: real): integer; -///-function Abs(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìîäóëü ÷èñëà x -function Abs(x: integer): integer; -///-- -function Abs(x: shortint): shortint; -///-- -function Abs(x: smallint): smallint; -///-- -function Abs(x: BigInteger): BigInteger; -///-- -function Abs(x: longword): longword; -///-- -function Abs(x: int64): int64; -///-- -function Abs(x: uint64): uint64; -///-- -function Abs(x: real): real; -///-- -function Abs(x: single): single; -/// Âîçâðàùàåò ñèíóñ ÷èñëà x -function Sin(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé ñèíóñ ÷èñëà x -function Sinh(x: real): real; -/// Âîçâðàùàåò êîñèíóñ ÷èñëà x -/// !! Returns the cosine of number x -function Cos(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé êîñèíóñ ÷èñëà x -function Cosh(x: real): real; -/// Âîçâðàùàåò òàíãåíñ ÷èñëà x -function Tan(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé òàíãåíñ ÷èñëà x -function Tanh(x: real): real; -/// Âîçâðàùàåò àðêñèíóñ ÷èñëà x -function ArcSin(x: real): real; -/// Âîçâðàùàåò àðêêîñèíóñ ÷èñëà x -function ArcCos(x: real): real; -/// Âîçâðàùàåò àðêòàíãåíñ ÷èñëà x -function ArcTan(x: real): real; -/// Âîçâðàùàåò ýêñïîíåíòó ÷èñëà x -function Exp(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Ln(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Log(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ 2 -function Log2(x: real): real; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì ÷èñëà x -function Log10(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ base -function LogN(base, x: real): real; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà x -function Sqrt(x: real): real; -///-function Sqr(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò êâàäðàò ÷èñëà x -function Sqr(x: integer): int64; -///-- -function Sqr(x: shortint): integer; -///-- -function Sqr(x: smallint): integer; -///-- -function Sqr(x: BigInteger): BigInteger; -///-- -function Sqr(x: longword): uint64; -///-- -function Sqr(x: int64): int64; -///-- -function Sqr(x: uint64): uint64; -///-- -function Sqr(x: real): real; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x, y: real): real; -/// Âîçâðàùàåò x â öåëîé ñòåïåíè n -function Power(x: real; n: integer): real; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x: BigInteger; y: integer): BigInteger; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî öåëîãî. Åñëè âåùåñòâåííîå íàõîäèòñÿ ïîñåðåäèíå ìåæäó äâóìÿ öåëûìè, -///òî îêðóãëåíèå îñóùåñòâëÿåòñÿ ê áëèæàéøåìó ÷åòíîìó (áàíêîâñêîå îêðóãëåíèå): Round(2.5)=2, Round(3.5)=4 -function Round(x: real): integer; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(x: real; digits: integer): real; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x -function Trunc(x: real): integer; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x êàê äëèííîå öåëîå -function TruncBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü ÷èñëà x -function Int(x: real): real; -/// Âîçâðàùàåò äðîáíóþ ÷àñòü ÷èñëà x -function Frac(x: real): real; -/// Âîçâðàùàåò íàèáîëüøåå öåëîå <= x -function Floor(x: real): integer; -/// Âîçâðàùàåò íàèìåíüøåå öåëîå >= x -function Ceil(x: real): integer; -/// Ïåðåâîäèò ðàäèàíû â ãðàäóñû -function RadToDeg(x: real): real; -/// Ïåðåâîäèò ãðàäóñû â ðàäèàíû -function DegToRad(x: real): real; - -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë -procedure Randomize; -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë, èñïîëüçóÿ çíà÷åíèå seed. Ïðè îäíîì è òîì æå seed ãåíåðèðóþòñÿ îäèíàêîâûå ïñåâäîñëó÷àéíûå ïîñëåäîâàòåëüíîñòè -procedure Randomize(seed: integer); -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò 0 äî maxValue-1 -function Random(maxValue: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0,maxValue) -function Random(maxValue: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò a äî b -function Random(a, b: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [a,b) -function Random(a, b: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0..1) -function Random: real; -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random2(maxValue: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random2(maxValue: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random2(a, b: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random2(a, b: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random3(maxValue: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random3(maxValue: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random3(a, b: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random3(a, b: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random3: (real, real, real); - -///-function Max(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìàêñèìàëüíîå èç ÷èñåë a,b -function Max(a, b: byte): byte; -///-- -function Max(a, b: shortint): shortint; -///-- -function Max(a, b: smallint): smallint; -///-- -function Max(a, b: word): word; -///-- -function Max(a, b: integer): integer; -///-- -function Max(a, b: BigInteger): BigInteger; -///-- -function Max(a, b: longword): longword; -///-- -function Max(a, b: int64): int64; -///-- -function Max(a, b: uint64): uint64; -///-- -function Max(a, b: real): real; -///-function Min(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìèíèìàëüíîå èç ÷èñåë a,b -function Min(a, b: byte): byte; -///-- -function Min(a, b: shortint): shortint; -///-- -function Min(a, b: word): word; -///-- -function Min(a, b: smallint): smallint; -///-- -function Min(a, b: integer): integer; -///-- -function Min(a, b: BigInteger): BigInteger; -///-- -function Min(a, b: longword): longword; -///-- -function Min(a, b: int64): int64; -///-- -function Min(a, b: uint64): uint64; -///-- -function Min(a, b: real): real; -///-function Odd(i: öåëîå): boolean; -/// Âîçâðàùàåò True, åñëè i íå÷åòíî, è False â ïðîòèâíîì ñëó÷àå -function Odd(i: byte): boolean; -///-- -function Odd(i: shortint): boolean; -///-- -function Odd(i: word): boolean; -///-- -function Odd(i: smallint): boolean; -///-- -function Odd(i: integer): boolean; -///-- -function Odd(i: BigInteger): boolean; -///-- -function Odd(i: longword): boolean; -///-- -function Odd(i: int64): boolean; -///-- -function Odd(i: uint64): boolean; - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ êîìïëåêñíûìè ÷èñëàìè # Functions for Complex numbers -// ----------------------------------------------------- -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ñ âåùåñòâåííîé ÷àñòüþ re è ìíèìîé ÷àñòüþ im -function Cplx(re, im: real): Complex; -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ïî ïîëÿðíûì êîîðäèíàòàì -function CplxFromPolar(magnitude, phase: real): Complex; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü èç êîìïëåêñíîãî ÷èñëà -function Sqrt(c: Complex): Complex; -/// Âîçâðàùàåò ìîäóëü êîìïëåêñíîãî ÷èñëà -function Abs(c: Complex): Complex; -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå ÷èñëî -function Conjugate(c: Complex): Complex; -/// Âîçâðàùàåò êîñèíóñ êîìïëåêñíîãî ÷èñëà -function Cos(c: Complex): Complex; -/// Âîçâðàùàåò ýêñïîíåíòó êîìïëåêñíîãî ÷èñëà -function Exp(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Ln(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log(c: Complex): Complex; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log10(c: Complex): Complex; -/// Âîçâðàùàåò ñòåïåíü êîìïëåêñíîãî ÷èñëà -function Power(c, power: Complex): Complex; -/// Âîçâðàùàåò ñèíóñ êîìïëåêñíîãî ÷èñëà -function Sin(c: Complex): Complex; - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòàíäàðòíûìè ìíîæåñòâàìè # Subroutines for set of T -// ----------------------------------------------------- -///- procedure Include(var s: set of T; element: T); -///Äîáàâëÿåò ýëåìåíò element âî ìíîæåñòâî s -procedure Include(var s: TypedSet; el: object); -///- procedure Exclude(var s: set of T; element: T); -///Óäàëÿåò ýëåìåíò element èç ìíîæåñòâà s -procedure Exclude(var s: TypedSet; el: object); - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ ñèìâîëàìè # Subroutines for char -// ----------------------------------------------------- -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà 1 -procedure Inc(var c: char); -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà n -procedure Inc(var c: char; n: integer); -/// Óìåíüøàåò êîä ñèìâîëà c íà 1 -procedure Dec(var c: char); -/// Óìåíüøàåò êîä ñèìâîëà c íà n -procedure Dec(var c: char; n: integer); -/// Âîçâðàùàåò ïðåäøåñòâóþùèé x ñèìâîë -function Pred(x: char): char; -/// Âîçâðàùàåò ñëåäóþùèé çà x ñèìâîë -function Succ(x: char): char; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Windows -function ChrAnsi(a: byte): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Windows -function OrdAnsi(a: char): byte; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function Chr(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function Ord(a: char): word; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function ChrUnicode(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function OrdUnicode(a: char): word; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpperCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowerCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowCase(ch: char): char; - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòðîêàìè # Subroutines for string -// ----------------------------------------------------- -///-procedure Str(i: öåëîå; var s: string); -/// Ïðåîáðàçóåò öåëîå çíà÷åíèå i ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(i: integer; var s: string); -///-- -procedure Str(i: longword; var s: string); -///-- -procedure Str(i: int64; var s: string); -///-- -procedure Str(i: uint64; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: real; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: single; var s: string); -///-- -procedure Str(s1: string; var s: string); - -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function Pos(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function PosEx(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string; from: integer): integer; - -/// Âîçâðàùàåò äëèíó ñòðîêè -function Length(s: string): integer; -/// Óñòàíàâëèâàåò äëèíó ñòðîêè s ðàâíîé n -procedure SetLength(var s: string; n: integer); -///-- -procedure SetLengthForShortString(var s: string; n, sz: integer); -/// Âñòàâëÿåò ïîäñòðîêó source â ñòðîêó s ñ ïîçèöèè index -procedure Insert(source: string; var s: string; index: integer); -///-- -procedure InsertInShortString(source: string; var s: string; index, n: integer); -/// Óäàëÿåò èç ñòðîêè s count ñèìâîëîâ ñ ïîçèöèè index -procedure Delete(var s: string; index, count: integer); -/// Âîçâðàùàåò ïîäñòðîêó ñòðîêè s äëèíû count ñ ïîçèöèè index -function Copy(s: string; index, count: integer): string; -///-function Concat(s1,s2,...): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1,s2,... -function Concat(params strs: array of string): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1 è s2 -function Concat(s1, s2: string): string; -/// Âîçâðàùàåò ñòðîêó â íèæíåì ðåãèñòðå -function LowerCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó â âåðõíåì ðåãèñòðå -function UpperCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó, ñîñòîÿùóþ èç count ñèìâîëîâ ch -function StringOfChar(ch: char; count: integer): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó -function ReverseString(s: string): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó â äèàïàçîíå äëèíû length íà÷èíàÿ ñ èíäåêñà index -function ReverseString(s: string; index,length: integer): string; -/// Ñðàâíèâàåò ñòðîêè. Âîçâðàùàåò çíà÷åíèå < 0 åñëè s1 0 åñëè s1>s2 è = 0 åñëè s1=s2 -function CompareStr(s1, s2: string): integer; -/// Âîçâðàùàåò ïåðâûå count ñèìâîëîâ ñòðîêè s -function LeftStr(s: string; count: integer): string; -/// Âîçâðàùàåò ïîñëåäíèå count ñèìâîëîâ ñòðîêè s -function RightStr(s: string; count: integer): string; - -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè è êîíå÷íûìè ïðîáåëàìè -function Trim(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè ïðîáåëàìè -function TrimLeft(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè êîíå÷íûìè ïðîáåëàìè -function TrimRight(s: string): string; - -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt(s: string): integer; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt64(s: string): int64; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToFloat(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToReal(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt(s: string; var value: integer): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt64(s: string; var value: int64): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: single): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToReal(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToSingle(s: string; var value: single): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadIntegerFromString(s: string; var from: integer): integer; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadRealFromString(s: string; var from: integer): real; -/// Ñ÷èòûâàåò èç ñòðîêè ïîñëåäîâàòåëüíîñòü ñèìâîëîâ äî ïðîáåëüíîãî ñèìâîëà íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWordFromString(s: string; var from: integer): string; -/// Âîçâðàùàåò True åñëè äîñòèãíóò êîíåö ñòðîêè èëè â ñòðîêå îñòàëèñü òîëüêî ïðîáåëüíûå ñèìâîëû è False â ïðîòèâíîì ñëó÷àå -function StringIsEmpty(s: string; var from: integer): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì. -///Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadIntegerFromString(s: string; var from: integer; var res: integer): boolean; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì. -///Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadRealFromString(s: string; var from: integer; var res: real): boolean; - -///-procedure Val(s: string; var value: ÷èñëî; var err: integer); -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â ïåðåìåííóþ value. -///Åñëè ïðåîáðàçîâàíèå óñïåøíî, òî err=0, èíà÷å err>0 -procedure Val(s: string; var value: integer; var err: integer); -///-- -procedure Val(s: string; var value: shortint; var err: integer); -///-- -procedure Val(s: string; var value: smallint; var err: integer); -///-- -procedure Val(s: string; var value: int64; var err: integer); -///-- -procedure Val(s: string; var value: byte; var err: integer); -///-- -procedure Val(s: string; var value: word; var err: integer); -///-- -procedure Val(s: string; var value: longword; var err: integer); -///-- -procedure Val(s: string; var value: uint64; var err: integer); -///-- -procedure Val(s: string; var value: real; var err: integer); -///-- -procedure Val(s: string; var value: single; var err: integer); - -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: integer): string; -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: int64): string; -/// Ïðåîáðàçóåò âåùåñòâåííîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function FloatToStr(a: real): string; - -/// Âîçâðàùàåò îòôîðìàòèðîâàííóþ ñòðîêó, ïîñòðîåííóþ ïî ôîðìàòíîé ñòðîêå è ñïèñêó ôîðìàòèðóåìûõ ïàðàìåòðîâ -function Format(formatstring: string; params pars: array of object): string; - -// ----------------------------------------------------- -//>> Îáùèå ïîäïðîãðàììû # Common subroutines -// ----------------------------------------------------- -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Inc(var i: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Inc(var i: integer; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Dec(var i: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Dec(var i: integer; n: integer); -///-procedure Inc(var e: ïåðå÷èñëèìûé òèï); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Inc(var b: byte); -///-procedure Inc(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Inc(var b: byte; n: integer); -///-procedure Dec(var e: ïåðå÷èñëèìûé òèï); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Dec(var b: byte); -///-procedure Dec(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Dec(var b: byte; n: integer); -///-- -procedure Inc(var f: boolean); -///-- -procedure Dec(var f: boolean); -///-function Ord(a: öåëîå): öåëîå; -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: integer): integer; -///-function Ord(a: ïåðå÷èñëèìûé òèï): integer; -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: longword): longword; -///-- -function Ord(a: int64): int64; -///-- -function Ord(a: uint64): uint64; -///-- -function Ord(a: boolean): integer; - -///-function Succ(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: integer): integer; -///-function Succ(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: byte): byte; -///-- -function Succ(x: shortint): shortint; -///-- -function Succ(x: smallint): smallint; -///-- -function Succ(x: word): word; -///-- -function Succ(x: longword): longword; -///-- -function Succ(x: int64): int64; -///-- -function Succ(x: uint64): uint64; -///-- -function Succ(x: boolean): boolean; - -///-function Pred(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: integer): integer; -///-function Pred(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: byte): byte; -///-- -function Pred(x: shortint): shortint; -///-- -function Pred(x: smallint): smallint; -///-- -function Pred(x: word): word; -///-- -function Pred(x: longword): longword; -///-- -function Pred(x: int64): int64; -///-- -function Pred(x: uint64): uint64; -///-- -function Pred(x: boolean): boolean; - -/// Ìåíÿåò ìåñòàìè çíà÷åíèÿ äâóõ ïåðåìåííûõ -procedure Swap(var a, b: T); -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ñòðîêè -function Eoln: boolean; -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ïîòîêà ââîäà -function Eof: boolean; - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äèíàìè÷åñêèìè ìàññèâàìè # Subroutines for array of T -// ----------------------------------------------------- -///- function Low(a: array of T): integer; -/// Âîçâðàùàåò 0 -function Low(i: System.Array): integer; -///- function High(a: array of T): integer; -/// Âîçâðàùàåò âåðõíþþ ãðàíèöó äèíàìè÷åñêîãî ìàññèâà -function High(i: System.Array): integer; -///- function Length(a: array of T): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà -function Length(a: System.Array): integer; -///- function Length(a: array of T; dim: integer): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà ïî ðàçìåðíîñòè dim -function Length(a: System.Array; dim: integer): integer; -///- procedure SetLength(var a: array of T); -/// Óñòàíàâëèâàåò äëèíó îäíîìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -//procedure SetLength(var a: System.Array); -///- procedure SetLength(var a: array of T; n1,n2,...: integer); -/// Óñòàíàâëèâàåò ðàçìåðû n-ìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -//procedure SetLength(var a: System.Array); -///- function Copy(a: array of T): array of T; -/// Ñîçäà¸ò êîïèþ äèíàìè÷åñêîãî ìàññèâà -function Copy(a: System.Array): System.Array; -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(a: array of T); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(a: array of T; cmp: (T,T)->integer); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(a: array of T; less: (T,T)->boolean); -/// Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ -procedure Sort(l: List); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(l: List; cmp: (T,T)->integer); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(l: List; less: (T,T)->boolean); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â äèíàìè÷åñêîì ìàññèâå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: array of T); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå äèíàìè÷åñêîãî ìàññèâà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: array of T; index, count: integer); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â ñïèñêå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: List); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå ñïèñêà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: List; index, count: integer); -/// Ïåðåìåøèâàåò äèíàìè÷åñêèé ìàññèâ ñëó÷àéíûì îáðàçîì -procedure Shuffle(a: array of T); -/// Ïåðåìåøèâàåò ñïèñîê ñëó÷àéíûì îáðàçîì -procedure Shuffle(l: List); - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ãåíåðàöèè ïîñëåäîâàòåëüíîñòåé # Subroutines for sequence generation -// ----------------------------------------------------- -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b -function Range(a, b: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñèìâîëîâ îò c1 äî c2 -function Range(c1, c2: char): sequence of char; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé (Èñïîëüçóéòå Partition) -function Range(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé -function Partition(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b ñ øàãîì step -function Range(a, b, step: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü óêàçàííûõ ýëåìåíòîâ -function Seq(params a: array of T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandom(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ âåùåñòâåííûõ ýëåìåíòîâ -function SeqRandomReal(n: integer := 10; a: real := 0; b: real := 10): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i) -function SeqGen(count: integer; f: integer->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i), íà÷èíàÿ ñ i=from -function SeqGen(count: integer; f: integer->T; from: integer): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function SeqGen(count: integer; first: T; next: T->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second, -///ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function SeqGen(count: integer; first, second: T; next: (T,T) ->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ ñ íà÷àëüíûì çíà÷åíèåì first, -///ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first: T; next: T->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second, -///ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first, second: T; next: (T,T) ->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ x -function SeqFill(count: integer; x: T): sequence of T; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(n: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(n: integer): sequence of string; - -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(prompt: string; n: integer): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(prompt: string; n: integer): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(prompt: string; n: integer): sequence of string; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(cond: integer->boolean): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(cond: real->boolean): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(cond: string->boolean): sequence of string; - -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(prompt: string; cond: integer->boolean): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(prompt: string; cond: real->boolean): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(prompt: string; cond: string->boolean): sequence of string; - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for array of T generation -// ----------------------------------------------------- -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Arr(params a: array of T): array of T; -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíñòè -function Arr(a: sequence of T): array of T; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandom(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function ArrRandomReal(n: integer := 10; a: real := 0; b: real := 10): array of real; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i) -function ArrGen(count: integer; gen: integer->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i), íà÷èíàÿ ñ i=from -function ArrGen(count: integer; gen: integer->T; from: integer): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function ArrGen(count: integer; first: T; next: T->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first è second, ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function ArrGen(count: integer; first, second: T; next: (T,T) ->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ x -function ArrFill(count: integer; x: T): array of T; - -/// Âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(n: integer): array of integer; -/// Âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(n: integer): array of real; -/// Âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(n: integer): array of string; - -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(prompt: string; n: integer): array of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(prompt: string; n: integer): array of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(prompt: string; n: integer): array of string; - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for matrixes -// ----------------------------------------------------- -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè ïî ñòðîêàì -function Matr(m,n: integer; params data: array of T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandom(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandomInteger(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function MatrRandomReal(m: integer := 5; n: integer := 5; a: real := 0; b: real := 10): array [,] of real; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrFill(m, n: integer; x: T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -/// Òðàíñïîíèðóåò äâóìåðíûé ìàññèâ -function Transpose(a: array [,] of T): array [,] of T; -/// Âîçâðàùàåò ìàòðèöó m íà n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrInteger(m, n: integer): array [,] of integer; -/// Âîçâðàùàåò ìàòðèöó m íà n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrReal(m, n: integer): array [,] of real; - - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ êîðòåæåé # Subroutines for tuple generation -// ----------------------------------------------------- -///- function Rec(x1: T1, x2: T2,...): (T1,T2,...); -/// Âîçâðàùàåò êîðòåæ èç ýëåìåíòîâ ðàçíûõ òèïîâ -function Rec(x1: T1; x2: T2): System.Tuple; -///-- -function Rec(x1: T1; x2: T2; x3: T3): (T1, T2, T3); -///-- -function Rec(x1: T1; x2: T2; x3: T3; x4: T4): (T1, T2, T3, T4); -///-- -function Rec(x1: T1; x2: T2; x3: T3; x4: T4; x5: T5): (T1, T2, T3, T4, T5); -///-- -function Rec(x1: T1; x2: T2; x3: T3; x4: T4; x5: T5; x6: T6): (T1, T2, T3, T4, T5, T6); -///-- -function Rec(x1: T1; x2: T2; x3: T3; x4: T4; x5: T5; x6: T6; x7: T7): (T1, T2, T3, T4, T5, T6, T7); - -// ----------------------------------------------------- -//>> Êîðîòêèå ôóíêöèè Lst, LLst, HSet, SSet, Dict, KV # Short functions Lst, HSet, SSet, Dict, KV -// ----------------------------------------------------- -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Lst(params a: array of T): List; -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function Lst(a: sequence of T): List; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function LLst(params a: array of T): LinkedList; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function LLst(a: sequence of T): LinkedList; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå óêàçàííûìè çíà÷åíèÿìè -function HSet(params a: array of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function HSet(a: sequence of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(params a: array of T): SortedSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(a: sequence of T): SortedSet; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of KeyValuePair): Dictionary; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of (TKey, TVal)): Dictionary; -/// Âîçâðàùàåò ïàðó ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function KV(key: TKey; value: TVal): KeyValuePair; - - -// ----------------------------------------------------- -//>> Ãåíåðàöèÿ áåñêîíå÷íûõ ïîñëåäîâàòåëüíîñòåé # Infinite sequences -// ----------------------------------------------------- -// Äîïîëíåíèÿ ôåâðàëü 2016: Iterate, Step, Repeat, Cycle - -// Âîçâðàùàåò áåñêîíå÷íóþ ðåêóððåíòíóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, çàäàâàåìóþ íà÷àëüíûì ýëåìåíòîì è ôóíêöèåé next -///-- -function Iterate(Self: T; next: T->T): sequence of T; extensionmethod; -begin - Result := Iterate(Self, next); -end; - -// Âîçâðàùàåò áåñêîíå÷íóþ ðåêóððåíòíóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, çàäàâàåìóþ íà÷àëüíûì ýëåìåíòîì, ñëåäóþùèì çà íèì ýëåìåíòîì è ôóíêöèåé next -///-- -function Iterate(Self, second: T; next: (T,T) ->T): sequence of T; extensionmethod; -begin - Result := Iterate(Self, second, next); -end; - -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì 1 -function Step(Self: integer): sequence of integer; extensionmethod; -begin - while True do - begin - yield Self; - Self += 1; - end; -end; - -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: integer; step: integer): sequence of integer; extensionmethod; -begin - while True do - begin - yield Self; - Self += step; - end; -end; - -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: real; step: real): sequence of real; extensionmethod; -begin - while True do - begin - yield Self; - Self += step; - end; -end; - -// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, ñîâïàäàþùèõ ñ äàííûì -///-- -function Repeat(Self: T): sequence of T; extensionmethod; -begin - while True do - yield Self; -end; - -/// Ïîâòîðÿåò ïîñëåäîâàòåëüíîñòü áåñêîíå÷íîå ÷èñëî ðàç -function Cycle(Self: sequence of T): sequence of T; extensionmethod; -begin - while True do - begin - foreach var x in Self do - yield x; - end; -end; - -// ----------------------------------------------------- -//>> Ôèêòèâíàÿ ñåêöèÿ XXX - íå óäàëÿòü! # XXX -// ----------------------------------------------------- -type - AdjGroupClass = class - private - cur: T; - enm: IEnumerator; - fin: boolean; - public - constructor Create(a: sequence of T); - begin - enm := a.GetEnumerator(); - fin := enm.MoveNext; - if fin then - cur := enm.Current; - end; - - function TakeGroup: sequence of T; - begin - yield cur; - fin := enm.movenext; - while fin do - begin - if enm.current = cur then - yield enm.current - else - begin - cur := enm.Current; - break; - end; - fin := enm.movenext; - end; - end; - end; - -//------------------------------------------------------------------------------ -//>> Ìåòîä ðàñøèðåíèÿ Print äëÿ ýëåìåíòàðíûõ òèïîâ # Print for elementary types -//------------------------------------------------------------------------------ -function Print(Self: integer): integer; extensionmethod; -begin - PABCSystem.Print(Self); - Result := Self; -end; - -function Print(Self: real): real; extensionmethod; -begin - PABCSystem.Print(Self); - Result := Self; -end; - -function Print(Self: char): char; extensionmethod; -begin - PABCSystem.Print(Self); - Result := Self; -end; - -function Print(Self: boolean): boolean; extensionmethod; -begin - PABCSystem.Print(Self); - Result := Self; -end; - -function Print(Self: BigInteger): BigInteger; extensionmethod; -begin - PABCSystem.Print(Self); - Result := Self; -end; - -function Println(Self: integer): integer; extensionmethod; -begin - PABCSystem.Println(Self); - Result := Self; -end; - -function Println(Self: real): real; extensionmethod; -begin - PABCSystem.Println(Self); - Result := Self; -end; - -function Println(Self: char): char; extensionmethod; -begin - PABCSystem.Println(Self); - Result := Self; -end; - -function Println(Self: boolean): boolean; extensionmethod; -begin - PABCSystem.Println(Self); - Result := Self; -end; - -function Println(Self: BigInteger): BigInteger; extensionmethod; -begin - PABCSystem.Println(Self); - Result := Self; -end; - - - -//------------------------------------------------------------------------------ -//>> Ìåòîäû ðàñøèðåíèÿ ïîñëåäîâàòåëüíîñòåé # Extension methods for sequence of T -//------------------------------------------------------------------------------ -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T; delim: string): sequence of T; extensionmethod; -begin - var g := Self.GetEnumerator(); - if g.MoveNext() then - Write(g.Current); - while g.MoveNext() do - if delim <> '' then - Write(delim, g.Current) - else Write(g.Current); - Result := Self; -end; - -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T): sequence of T; extensionmethod; -begin - if typeof(T) = typeof(char) then - Result := Self.Print('') - else - Result := Self.Print(PrintDelimDefault); -end; - -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T; delim: string): sequence of T; extensionmethod; -begin - Self.Print(delim); - Writeln; - Result := Self; -end; - -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T): sequence of T; extensionmethod; -begin - if typeof(T) = typeof(char) then - Result := Self.Println('') - else - Result := Self.Println(PrintDelimDefault); -end; - -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü ñòðîê â ôàéë -function WriteLines(Self: sequence of string; fname: string): sequence of string; extensionmethod; -begin - WriteLines(fname, Self); - Result := Self -end; - -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T): sequence of T; extensionmethod; -begin - Self.Println(NewLine); - Result := Self -end; - -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò îòîáðàæàåòñÿ ñ ïîìîùüþ ôóíêöèè map è âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T; map: T->T1): sequence of T; extensionmethod; -begin - Self.Select(map).Println(NewLine); - Result := Self -end; - -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T; delim: string): string; extensionmethod; -begin - var g := Self.GetEnumerator(); - var sb := new System.Text.StringBuilder(''); - if g.MoveNext() then - sb.Append(g.Current.ToString()); - while g.MoveNext() do - sb.Append(delim + g.Current.ToString()); - Result := sb.ToString; -end; - -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T): string; extensionmethod; -begin - if typeof(T) = typeof(char) then - Result := Self.JoinIntoString('') - else Result := Self.JoinIntoString(' '); -end; - -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè -procedure ForEach(Self: sequence of T; action: T -> ()); extensionmethod; -begin - foreach x: T in Self do - action(x); -end; - -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè, çàâèñÿùåå îò íîìåðà ýëåìåíòà -procedure ForEach(Self: sequence of T; action: (T,integer) -> ()); extensionmethod; -begin - var i := 0; - foreach x: T in Self do - begin - action(x, i); - i += 1; - end; -end; - -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Sorted(Self: sequence of T): sequence of T; extensionmethod; -begin - Result := Self.OrderBy(x -> x); -end; - -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function SortedDescending(Self: sequence of T): sequence of T; extensionmethod; -begin - Result := Self.OrderByDescending(x -> x); -end; - -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Order(Self: sequence of T): sequence of T; extensionmethod; -begin - Result := Self.OrderBy(x -> x); -end; - -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function OrderDescending(Self: sequence of T): sequence of T; extensionmethod; -begin - Result := Self.OrderByDescending(x -> x); -end; - -/// Âîçâðàùàåò ìíîæåñòâî HashSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToHashSet(Self: sequence of T): HashSet; extensionmethod; -begin - Result := new HashSet(Self); -end; - -/// Âîçâðàùàåò ìíîæåñòâî SortedSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToSortedSet(Self: sequence of T): SortedSet; extensionmethod; -begin - Result := new SortedSet(Self); -end; - -/// Âîçâðàùàåò LinkedList ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToLinkedList(Self: sequence of T): LinkedList; extensionmethod; -begin - Result := new LinkedList(Self); -end; - -// Äîïîëíåíèÿ ôåâðàëü 2016: MinBy, MaxBy, TakeLast, Slice, Cartesian, SplitAt, -// Partition, ZipTuple, UnZipTuple, Interleave, Numerate, Tabulate, Pairwise, Batch - -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function MinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -begin - if selector = nil then - raise new ArgumentNullException('selector'); - if not Self.Any() then - raise new InvalidOperationException('Empty sequence'); - - var comp := Comparer.Default; - Result := Self.Aggregate((min, x)-> comp.Compare(selector(x), selector(min)) < 0 ? x : min); -end; - -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function MaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -begin - if selector = nil then - raise new ArgumentNullException('selector'); - if not Self.Any() then - raise new InvalidOperationException('Empty sequence'); - - var comp := Comparer.Default; - Result := Self.Aggregate((max, x)-> comp.Compare(selector(x), selector(max)) > 0 ? x : max); -end; - -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -begin - if selector = nil then - raise new ArgumentNullException('selector'); - if not Self.Any() then - raise new InvalidOperationException('Empty sequence'); - - var comp := Comparer.Default; - Result := Self.Aggregate((min, x)-> comp.Compare(selector(x), selector(min)) <= 0 ? x : min); -end; - -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -begin - if selector = nil then - raise new ArgumentNullException('selector'); - if not Self.Any() then - raise new InvalidOperationException('Empty sequence'); - - var comp := Comparer.Default; - Result := Self.Aggregate((max, x)-> comp.Compare(selector(x), selector(max)) >= 0 ? x : max); -end; - -/// Âîçâðàùàåò ïîñëåäíèå count ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè -function TakeLast(Self: sequence of T; count: integer): sequence of T; extensionmethod; -begin - Result := Self.Reverse.Take(count).Reverse; -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü áåç ïîñëåäíèõ count ýëåìåíòîâ -function SkipLast(self: sequence of T; count: integer := 1): sequence of T; extensionmethod; -begin - Result := Self.Reverse.Skip(count).Reverse; -end; - -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod; -begin - if b = nil then - raise new System.ArgumentNullException('b'); - - foreach var x in Self do - foreach var y in b do - yield (x, y) -end; - -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod; -begin - if b = nil then - raise new System.ArgumentNullException('b'); - - foreach var x in Self do - foreach var y in b do - yield func(x, y) -end; - -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòè íà äâå â ïîçèöèè ind -function SplitAt(Self: sequence of T; ind: integer): (sequence of T, sequence of T); extensionmethod; -begin - Result := (Self.Take(ind), Self.Skip(ind)); -end; - -// ToDo: òî æå äëÿ TakeWhile - -// ToDo: SequenceCompare - -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ -function Partition(Self: sequence of T; cond: T->boolean): (sequence of T, sequence of T); extensionmethod; -begin - Result := (Self.Where(cond), Self.Where(x -> not cond(x))); -end; - -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ, â êîòîðîì ó÷àñòâóåò èíäåêñ -function Partition(Self: sequence of T; cond: (T,integer)->boolean): (sequence of T, sequence of T); extensionmethod; -begin - Result := (Self.Where(cond), Self.Where((x, i)-> not cond(x, i))); -end; - -/// Îáúåäèíÿåò äâå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod; -begin - if a = nil then - raise new System.ArgumentNullException('a'); - Result := Self.Zip(a, (x, y)-> (x, y)); -end; - -/// Îáúåäèíÿåò òðè ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod; -begin - if a = nil then - raise new System.ArgumentNullException('a'); - if b = nil then - raise new System.ArgumentNullException('b'); - Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z)-> (p[0], p[1], z)); -end; - -/// Îáúåäèíÿåò ÷åòûðå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod; -begin - if a = nil then - raise new System.ArgumentNullException('a'); - if b = nil then - raise new System.ArgumentNullException('b'); - if c = nil then - raise new System.ArgumentNullException('c'); - Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z)-> (p[0], p[1], z)).Zip(c, (p, z)-> (p[0], p[1], p[2], z)); -end; - -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé íà äâå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1)): (sequence of T, sequence of T1); extensionmethod; -begin - Result := (Self.Select(x -> x[0]), Self.Select(x -> x[1])) -end; - -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé íà òðè ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2)): (sequence of T, sequence of T1, sequence of T2); extensionmethod; -begin - Result := (Self.Select(x -> x[0]), Self.Select(x -> x[1]), Self.Select(x -> x[2])) -end; - -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé íà ÷åòûðå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2, T3)): (sequence of T, sequence of T1, sequence of T2, sequence of T3); extensionmethod; -begin - Result := (Self.Select(x -> x[0]), Self.Select(x -> x[1]), Self.Select(x -> x[2]), Self.Select(x -> x[3])) -end; - -// ToDo - ñäåëàòü UnZipTuple ñ ôóíêöèåé-ïðîåêöèåé - -/// ×åðåäóåò ýëåìåíòû äâóõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a: sequence of T): sequence of T; extensionmethod; -begin - if a = nil then - raise new System.ArgumentNullException('a'); - Result := Self.ZipTuple(a).SelectMany(x -> Seq(x[0], x[1])) -end; - -/// ×åðåäóåò ýëåìåíòû òðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b: sequence of T): sequence of T; extensionmethod; -begin - if a = nil then - raise new System.ArgumentNullException('a'); - if b = nil then - raise new System.ArgumentNullException('b'); - Result := Self.ZipTuple(a, b).SelectMany(x -> Seq(x[0], x[1], x[2])) -end; - -/// ×åðåäóåò ýëåìåíòû ÷åòûðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b, c: sequence of T): sequence of T; extensionmethod; -begin - if a = nil then - raise new System.ArgumentNullException('a'); - if b = nil then - raise new System.ArgumentNullException('b'); - if c = nil then - raise new System.ArgumentNullException('c'); - Result := Self.ZipTuple(a, b, c).SelectMany(x -> Seq(x[0], x[1], x[2], x[3])) -end; - -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ åäèíèöû -function Numerate(Self: sequence of T): sequence of (integer, T); extensionmethod; -begin - Result := 1.Step.ZipTuple(Self); -end; - -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ íîìåðà from -function Numerate(Self: sequence of T; from: integer): sequence of (integer, T); extensionmethod; -begin - Result := from.Step.ZipTuple(Self); -end; - -/// Òàáóëèðóåò ôóíêöèþ ïîñëåäîâàòåëüíîñòüþ -function Tabulate(Self: sequence of T; F: T->T1): sequence of (T, T1); extensionmethod; -begin - Result := Self.Select(x -> (x, f(x))); -end; - -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ -function Pairwise(Self: sequence of T): sequence of (T, T); extensionmethod; -begin - var previous: T; - var it := Self.GetEnumerator(); - if (it.MoveNext()) then - previous := it.Current; - - while (it.MoveNext()) do - begin - yield (previous, it.Current); - previous := it.Current; - end -end; - -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ, ïðèìåíÿåò func ê êàæäîé ïàðå ïîëó÷åííûõ ýëåìåíòîâ è ïîëó÷àåò íîâóþ ïîñëåäîâàòåëüíîñòü -function Pairwise(Self: sequence of T; func: (T,T)->Res): sequence of Res; extensionmethod; -begin - var previous: T; - var it := Self.GetEnumerator(); - if (it.MoveNext()) then - previous := it.Current; - - while (it.MoveNext()) do - begin - yield func(previous, it.Current); - previous := it.Current; - end - // Result := Self.ZipTuple(Self.Skip(1)).Select(x->func(x[0],x[1])); -end; - -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size -function Batch(Self: sequence of T; size: integer): sequence of sequence of T; extensionmethod; -begin - Result := SeqWhile(Self, v -> v.Skip(size), v -> v.Count > 0).Select(v -> v.Take(size)) -end; - -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size è ïðèìåíÿåò ïðîåêöèþ ê êàæäîé ñåðèè -function Batch(Self: sequence of T; size: integer; proj: Func, Res>): sequence of Res; extensionmethod; -begin - Result := SeqWhile(Self, v -> v.Skip(size), v -> v.Count > 0).Select(v -> v.Take(size)).Select(ss -> proj(ss)); -end; - -///-- -function SliceSeqImpl(Self: sequence of T; from, step, count: integer): sequence of T; -begin - if step <= 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_GREATER_0)); - - if from < 0 then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - Result := Self.Skip(from).Where((x, i)-> i mod step = 0) -end; - -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 -function Slice(Self: sequence of T; from, step: integer): sequence of T; extensionmethod; -begin - if step <= 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_GREATER_0)); - - if from < 0 then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - Result := Self.Skip(from).Where((x, i)-> i mod step = 0) -end; - -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 äëèíû íå áîëåå count -function Slice(Self: sequence of T; from, step, count: integer): sequence of T; extensionmethod; -begin - if step <= 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_GREATER_0)); - - if from < 0 then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - Result := Self.Skip(from).Where((x, i)-> i mod step = 0).Take(count) -end; - -// Äîïîëíåíèÿ èþëü 2016: Incremental -///-- -function IncrementalSeq(Self: sequence of integer): sequence of integer; -begin - var iter := Self.GetEnumerator(); - if iter.MoveNext() then - begin - var prevItem := iter.Current; - while iter.MoveNext() do - begin - var nextItem := iter.Current; - yield nextItem - prevItem; - prevItem := nextItem; - end - end -end; - -///-- -function IncrementalSeq(Self: sequence of real): sequence of real; -begin - var iter := Self.GetEnumerator(); - if iter.MoveNext() then - begin - var prevItem := iter.Current; - while iter.MoveNext() do - begin - var nextItem := iter.Current; - yield nextItem - prevItem; - prevItem := nextItem; - end - end -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of integer): sequence of integer; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of integer): sequence of integer; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of integer; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of integer; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of real): sequence of real; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of real): sequence of real; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of real; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of real; extensionmethod; -begin - Result := IncrementalSeq(Self); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T)->T1): sequence of T1; extensionmethod; -begin - var iter := Self.GetEnumerator(); - if iter.MoveNext() then - begin - var prevItem := iter.Current; - while iter.MoveNext() do - begin - var nextItem := iter.Current; - yield func(prevItem, nextItem); - prevItem := nextItem; - end - end -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T,integer)->T1): sequence of T1; extensionmethod; -begin - var iter := Self.GetEnumerator(); - if iter.MoveNext() then - begin - var ind := 0; - var prevItem := iter.Current; - while iter.MoveNext() do - begin - var nextItem := iter.Current; - ind += 1; - yield func(prevItem, nextItem, ind); - prevItem := nextItem; - end - end -end; - -/// Ãðóïïèðóåò îäèíàêîâûå ïîäðÿä èäóùèå ýëåìåíòû, ïîëó÷àÿ ïîñëåäîâàòåëüíîñòü ìàññèâîâ -function AdjacentGroup(Self: sequence of T): sequence of array of T; extensionmethod; -begin - var c := new AdjGroupClass(Self); - while c.fin do - yield c.TakeGroup().ToArray; -end; - -// ToDo Ñäåëàòü AdjacentGroup ñ ôóíêöèåé ñðàâíåíèÿ - -// ----------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ ñïèñêîâ # Extension methods for List T -// ----------------------------------------------------- - -/// Ïåðåìåøèâàåò ýëåìåíòû ñïèñêà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: List): List; extensionmethod; -begin - var n := Self.Count; - for var i := 0 to n - 1 do - begin - var r := PABCSystem.Random(n); - var v := Self[i]; - Self[i] := Self[r]; - Self[r] := v; - end; - Result := Self; -end; - -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; start: integer := 0): integer; extensionmethod; -begin - Result := -1; - for var i := start to Self.Count - 2 do - if Self[i] = Self[i + 1] then - begin - Result := i; - exit; - end; -end; - -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -begin - Result := -1; - for var i := start to Self.Count - 2 do - if eq(Self[i], Self[i + 1]) then - begin - Result := i; - exit; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: IList; index: integer := 0): integer; extensionmethod;where T: IComparable; -begin - var min := Self[index]; - Result := index; - for var i := index + 1 to Self.Count - 1 do - if Self[i].CompareTo(min) < 0 then - begin - Result := i; - min := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: IList; index: integer := 0): integer; extensionmethod;where T: System.IComparable; -begin - var max := Self[index]; - Result := index; - for var i := index + 1 to Self.Count - 1 do - if Self[i].CompareTo(max) > 0 then - begin - Result := i; - max := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: IList): integer; extensionmethod;where T: System.IComparable; -begin - var min := Self[Self.Count - 1]; - Result := Self.Count - 1; - for var i := Self.Count - 2 downto 0 do - if Self[i].CompareTo(min) < 0 then - begin - Result := i; - min := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMin(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -begin - var min := Self[index]; - Result := index; - for var i := index - 1 downto 0 do - if Self[i].CompareTo(min) < 0 then - begin - Result := i; - min := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìàêñèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: IList): integer; extensionmethod;where T: System.IComparable; -begin - var max := Self[Self.Count - 1]; - Result := Self.Count - 1; - for var i := Self.Count - 2 downto 0 do - if Self[i].CompareTo(max) > 0 then - begin - Result := i; - max := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMax(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -begin - var max := Self[index]; - Result := index; - for var i := index - 1 downto 0 do - if Self[i].CompareTo(max) > 0 then - begin - Result := i; - max := Self[i]; - end; -end; - -/// Çàìåíÿåò â ìàññèâå èëè ñïèñêå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: IList; oldValue, newValue: T); extensionmethod; -begin - for var i := 0 to Self.Count - 1 do - if Self[i] = oldValue then - Self[i] := newValue; -end; - -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: T->T); extensionmethod; -begin - for var i := 0 to Self.Count - 1 do - Self[i] := f(Self[i]); -end; - -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: (T,integer)->T); extensionmethod; -begin - for var i := 0 to Self.Count - 1 do - Self[i] := f(Self[i],i); -end; - -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà èëè ñïèñêà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: IList; f: integer->T); extensionmethod; -begin - for var i := 0 to Self.Count - 1 do - Self[i] := f(i); -end; - -///-- -function CreateSliceFromListInternal(Self: List; from, step, count: integer): List; -begin - Result := new List(count); - - var f := from; - loop count do - begin - Result.Add(Self[f]); - f += step; - end; -end; - -///-- -procedure CorrectCountForSlice(Len, from, step: integer; var count: integer); -begin - if step = 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_NOT_EQUAL_0)); - - if count < 0 then - raise new ArgumentException(GetTranslation(PARAMETER_COUNT_MUST_BE_GREATER_0)); - - if (from < 0) or (from > Len - 1) then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - var cnt := step > 0 ? Len - from : from + 1; - var cntstep := (cnt - 1) div abs(step) + 1; - if count > cntstep then - count := cntstep; -end; - -///-- -function SliceListImpl(Self: List; from, step, count: integer): List; -begin - CorrectCountForSlice(Self.Count, from, step, count); - Result := CreateSliceFromListInternal(Self, from, step, count); -end; - -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step -function Slice(Self: List; from, step: integer): List; extensionmethod; -begin - Result := SliceListImpl(Self, from, step, integer.MaxValue); -end; - -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: List; from, step, count: integer): List; extensionmethod; -begin - Result := SliceListImpl(Self, from, step, count); -end; - -/// Óäàëÿåò ïîñëåäíèé ýëåìåíò. Åñëè ýëåìåíòîâ íåò, ãåíåðèðóåò èñêëþ÷åíèå -function RemoveLast(Self: List): List; extensionmethod; -begin - Self.RemoveAt(Self.Count - 1); - Result := Self; -end; - -procedure CorrectFromTo(situation: integer; Len: integer; var from, to: integer; step: integer); -begin - if step > 0 then - begin - case situation of - 1: from := 0; - 2: to := Len; - 3: (from, to) := (0, Len) - end; - end - else - begin - case situation of - 1: from := Len - 1; - 2: to := -1; - 3: (from, to) := (Len - 1, -1); - end; - end; -end; - -///-- -function CorrectFromToAndCalcCountForSystemSliceQuestion(situation: integer; Len: integer; var from, to: integer; step: integer): integer; -begin - if step = 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_NOT_EQUAL_0)); - - CorrectFromTo(situation, Len, from, to, step); - - if step > 0 then - begin - if from < 0 then - from += (step - from - 1) div step * step; - // from ìîæåò îêàçàòüñÿ > Len - 1 - var m := Min(Len,to); - if from >= m then - Result := 0 - else Result := (m - from - 1) div step + 1 - end - else - begin - if from > Len - 1 then - from -= (from - Len - step) div step * step; - // from ìîæåò îêàçàòüñÿ < 0 - var m := Max(to,-1); - if from <= m then - Result := 0 - else Result := (from - m - 1) div (-step) + 1 - end; -end; - -///-- -function CheckAndCorrectFromToAndCalcCountForSystemSlice(situation: integer; Len: integer; var from, to: integer; step: integer): integer; -begin - // situation = 0 - âñå ïàðàìåòðû ïðèñóòñòâóþò - // situation = 1 - from îòñóòñòâóåò - // situation = 2 - to îòñóòñòâóåò - // situation = 3 - from è to îòñóòñòâóþò - if step = 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_NOT_EQUAL_0)); - - if (situation = 0) or (situation = 2) then - if (from < 0) or (from > Len - 1) then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - if (situation = 0) or (situation = 1) then - if (to < -1) or (to > Len) then - raise new ArgumentException(GetTranslation(PARAMETER_TO_OUT_OF_RANGE)); - - CorrectFromTo(situation, Len, from, to, step); - - var count: integer; - - if step > 0 then - begin - var cnt := to - from; - if cnt <= 0 then - count := 0 - else count := (cnt - 1) div step + 1; - end - else - begin - var cnt := from - to; - if cnt <= 0 then - count := 0 - else count := (cnt - 1) div (-step) + 1; - end; - - Result := count; -end; - -///-- -procedure CheckStepAndCorrectFromTo(situation: integer; Len: integer; var from, to: integer; step: integer); -begin - // situation = 0 - âñå ïàðàìåòðû ïðèñóòñòâóþò - // situation = 1 - from îòñóòñòâóåò - // situation = 2 - to îòñóòñòâóåò - // situation = 3 - from è to îòñóòñòâóþò - if step = 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_NOT_EQUAL_0)); - - {if (situation=0) or (situation=2) then - if (from < 0) or (from > Len - 1) then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - if (situation=0) or (situation=1) then - if (to < -1) or (to > Len) then - raise new ArgumentException(GetTranslation(PARAMETER_TO_OUT_OF_RANGE));} - - CorrectFromTo(situation, Len, from, to, step); -end; - -///-- -function SystemSliceListImpl(Self: List; situation: integer; from, to: integer; step: integer := 1): List; -begin - var count := CheckAndCorrectFromToAndCalcCountForSystemSlice(situation, Self.Count, from, to, step); - - Result := CreateSliceFromListInternal(Self, from, step, count); -end; - -///-- -function SystemSlice(Self: List; situation: integer; from, to: integer): List; extensionmethod; -begin - Result := SystemSliceListImpl(Self, situation, from, to, 1); -end; - -///-- -function SystemSlice(Self: List; situation: integer; from, to, step: integer): List; extensionmethod; -begin - Result := SystemSliceListImpl(Self, situation, from, to, step); -end; - -///-- -function SystemSliceListImplQuestion(Self: List; situation: integer; from, to: integer; step: integer := 1): List; -begin - var count := CorrectFromToAndCalcCountForSystemSliceQuestion(situation, Self.Count, from, to, step); - - Result := CreateSliceFromListInternal(Self, from, step, count); -end; - -///-- -function SystemSliceQuestion(Self: List; situation: integer; from, to: integer): List; extensionmethod; -begin - Result := SystemSliceListImplQuestion(Self, situation, from, to, 1); -end; - -///-- -function SystemSliceQuestion(Self: List; situation: integer; from, to, step: integer): List; extensionmethod; -begin - Result := SystemSliceListImplQuestion(Self, situation, from, to, step); -end; - -// ----------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array [,] of T -// ----------------------------------------------------- -/// Êîëè÷åñòâî ñòðîê â äâóìåðíîì ìàññèâå -function RowCount(Self: array [,] of T): integer; extensionmethod; -begin - Result := Self.GetLength(0); -end; - -/// Êîëè÷åñòâî ñòîëáöîâ â äâóìåðíîì ìàññèâå -function ColCount(Self: array [,] of T): integer; extensionmethod; -begin - Result := Self.GetLength(1); -end; - -/// Âûâîä äâóìåðíîãî ìàññèâà, w - øèðèíà ïîëÿ âûâîäà -function Print(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - begin - for var j := 0 to Self.ColCount - 1 do - begin - var elem := Self[i, j]; - var s := StructuredObjectToString(elem); - Write(s.PadLeft(w)); - end; - Writeln; - end; - Result := Self; -end; - -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f -function Print(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - begin - for var j := 0 to Self.ColCount - 1 do - Write(FormatValue(Self[i, j], w, f)); - Writeln; - end; - Result := Self; -end; - -/// Âûâîä äâóìåðíîãî ìàññèâà è ïåðåõîä íà ñëåäóþùóþ ñòðîêó, w - øèðèíà ïîëÿ âûâîäà -function Println(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -begin - Self.Print(w); - Result := Self; -end; - -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f è ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function Println(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -begin - Self.Print(w, f); - Result := Self; -end; - -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà -function Row(Self: array [,] of T; k: integer): array of T; extensionmethod; -begin - var n := Self.ColCount; - var res := new T[n]; - for var j := 0 to n - 1 do - res[j] := Self[k, j]; - Result := res; -end; - -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà -function Col(Self: array [,] of T; k: integer): array of T; extensionmethod; -begin - var m := Self.RowCount; - var res := new T[m]; - for var i := 0 to m - 1 do - res[i] := Self[i, k]; - Result := res; -end; - -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function RowSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -begin - for var j := 0 to Self.ColCount - 1 do - yield Self[k, j]; -end; - -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function ColSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - yield Self[i, k]; -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê äâóìåðíîãî ìàññèâà -function Rows(Self: array [,] of T): sequence of sequence of T; extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - yield Self.RowSeq(i); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòîëáöîâ äâóìåðíîãî ìàññèâà -function Cols(Self: array [,] of T): sequence of sequence of T; extensionmethod; -begin - for var j := 0 to Self.ColCount - 1 do - yield Self.ColSeq(j); -end; - -/// Ìåíÿåò ìåñòàìè äâå ñòðîêè äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapRows(Self: array [,] of T; k1, k2: integer); extensionmethod; -begin - for var j := 0 to Self.ColCount - 1 do - Swap(Self[k1, j], Self[k2, j]) -end; - -/// Ìåíÿåò ìåñòàìè äâà ñòîëáöà äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapCols(Self: array [,] of T; k1, k2: integer); extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - Swap(Self[i, k1], Self[i, k2]) -end; - -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -begin - if a.Length <> Self.ColCount then - raise new System.ArgumentException(GetTranslation(ARR_LENGTH_MUST_BE_MATCH_TO_MATR_SIZE)); - for var j := 0 to Self.ColCount - 1 do - Self[k, j] := a[j] -end; - -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetRow(k,a.ToArray); - -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -begin - if a.Length <> Self.RowCount then - raise new System.ArgumentException(GetTranslation(ARR_LENGTH_MUST_BE_MATCH_TO_MATR_SIZE)); - for var i := 0 to Self.RowCount - 1 do - Self[i, k] := a[i] -end; - -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetCol(k,a.ToArray); - -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü (a[i,j],i,j) -function ElementsWithIndexes(Self: array [,] of T): sequence of (T, integer, integer); extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - for var j := 0 to Self.ColCount - 1 do - yield (Self[i, j], i, j) -end; - -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòðîêàì -function ElementsByRow(Self: array [,] of T): sequence of T; extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - for var j := 0 to Self.ColCount - 1 do - yield Self[i, j] -end; - -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòîëáöàì -function ElementsByCol(Self: array [,] of T): sequence of T; extensionmethod; -begin - for var j := 0 to Self.ColCount - 1 do - for var i := 0 to Self.RowCount - 1 do - yield Self[i, j] -end; - -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: T->T1): array [,] of T1; extensionmethod; -begin - Result := new T1[Self.RowCount, Self.ColCount]; - for var i := 0 to Self.RowCount - 1 do - for var j := 0 to Self.ColCount - 1 do - Result[i, j] := converter(Self[i, j]); -end; - -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: (T,integer,integer)->T1): array [,] of T1; extensionmethod; -begin - Result := new T1[Self.RowCount, Self.ColCount]; - for var i := 0 to Self.RowCount - 1 do - for var j := 0 to Self.ColCount - 1 do - Result[i, j] := converter(Self[i, j],i,j); -end; - -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: T->T); extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - for var j := 0 to Self.ColCount - 1 do - Self[i, j] := f(Self[i, j]); -end; - -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: (T,integer,integer)->T); extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - for var j := 0 to Self.ColCount - 1 do - Self[i, j] := f(Self[i, j],i,j); -end; - -/// Çàïîëíÿåò ýëåìåíòû äâóìåðíîãî ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array [,] of T; f: (integer,integer) ->T); extensionmethod; -begin - for var i := 0 to Self.RowCount - 1 do - for var j := 0 to Self.ColCount - 1 do - Self[i, j] := f(i, j); -end; - -// ----------------------------------------------------- -//>> Ôèêòèâíàÿ ñåêöèÿ YYY - íå óäàëÿòü! # YYY -// ----------------------------------------------------- - -function Matr(m,n: integer; params data: array of T): array [,] of T; -begin - if data.Length<>m*n then - raise new System.ArgumentException(GetTranslation(INITELEM_COUNT_MUST_BE_EQUAL_TO_MATRIX_ELEMS_COUNT)); - - Result := new T[m, n]; - var k := 0; - for var i:=0 to Result.RowCount-1 do - for var j:=0 to Result.ColCount-1 do - begin - Result[i,j] := data[k]; - k += 1; - end; -end; - -// Ðåàëèçàöèÿ îïåðàöèé ñ ìàòðèöàìè - òîëüêî ïîñëå ââåäåíèÿ RowCount è ColCount -function MatrRandom(m: integer; n: integer; a, b: integer): array [,] of integer; -begin - Result := new integer[m, n]; - for var i := 0 to Result.RowCount - 1 do - for var j := 0 to Result.ColCount - 1 do - Result[i, j] := Random(a, b); -end; - -function MatrRandomInteger(m: integer; n: integer; a, b: integer): array [,] of integer; -begin - Result := new integer[m, n]; - for var i := 0 to Result.RowCount - 1 do - for var j := 0 to Result.ColCount - 1 do - Result[i, j] := Random(a, b); -end; - -function MatrRandomReal(m: integer; n: integer; a, b: real): array [,] of real; -begin - Result := new real[m, n]; - for var i := 0 to Result.RowCount - 1 do - for var j := 0 to Result.ColCount - 1 do - Result[i, j] := Random() * (b - a) + a; -end; - -function MatrFill(m, n: integer; x: T): array [,] of T; -begin - Result := new T[m, n]; - for var i := 0 to Result.RowCount - 1 do - for var j := 0 to Result.ColCount - 1 do - Result[i, j] := x; -end; - -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -begin - Result := new T[m, n]; - for var i := 0 to Result.RowCount - 1 do - for var j := 0 to Result.ColCount - 1 do - Result[i, j] := gen(i, j); -end; - -function Transpose(a: array [,] of T): array [,] of T; -begin - var m := a.RowCount; - var n := a.ColCount; - Result := new T[n, m]; - for var i := 0 to Result.RowCount - 1 do - for var j := 0 to Result.ColCount - 1 do - Result[i, j] := a[j, i] -end; - -function ReadMatrInteger(m, n: integer): array [,] of integer; -begin - Result := new integer[m, n]; - for var i := 0 to m - 1 do - for var j := 0 to n - 1 do - Result[i, j] := ReadInteger; -end; - -function ReadMatrReal(m, n: integer): array [,] of real; -begin - Result := new real[m, n]; - for var i := 0 to m - 1 do - for var j := 0 to n - 1 do - Result[i, j] := ReadReal; -end; - -// ----------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ îäíîìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array of T -// ----------------------------------------------------- - -// Äîïîëíåíèÿ ôåâðàëü 2016: Shuffle, AdjacentFind, IndexMin, IndexMax, Replace, Transform -// Ñòàòè÷åñêèå ìåòîäû - â ìåòîäû ðàñøèðåíèÿ: BinarySearch, ConvertAll, Find, FindIndex, FindAll, -// FindLast, FindLastIndex, IndexOf, Contains, LastIndexOf, Reverse, Sort - -/// Ïåðåìåøèâàåò ýëåìåíòû ìàññèâà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: array of T): array of T; extensionmethod; -begin - var n := Self.Length; - for var i := 0 to n - 1 do - Swap(Self[i], Self[Random(n)]); - Result := Self; -end; - -{/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; start: integer := 0): integer; extensionmethod; -begin - Result := -1; - for var i:=start to Self.Length-2 do - if Self[i]=Self[i+1] then - begin - Result := i; - exit; - end; -end; - -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -begin - Result := -1; - for var i:=start to Self.Length-2 do - if eq(Self[i],Self[i+1]) then - begin - Result := i; - exit; - end; -end;} - -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of T): T; extensionmethod;where T: System.IComparable; -begin - Result := Self[0]; - for var i := 1 to Self.Length - 1 do - if Self[i].CompareTo(Result) < 0 then - Result := Self[i]; -end; - -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of T): T; extensionmethod;where T: System.IComparable; -begin - Result := Self[0]; - for var i := 1 to Self.Length - 1 do - if Self[i].CompareTo(Result) > 0 then - Result := Self[i]; -end; - -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of integer): integer; extensionmethod; -begin - Result := Self[0]; - for var i := 1 to Self.Length - 1 do - if Self[i] < Result then - Result := Self[i]; -end; - -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of real): real; extensionmethod; -begin - Result := Self[0]; - for var i := 1 to Self.Length - 1 do - if Self[i] < Result then - Result := Self[i]; -end; - -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of integer): integer; extensionmethod; -begin - Result := Self[0]; - for var i := 1 to Self.Length - 1 do - if Self[i] > Result then - Result := Self[i]; -end; - -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of real): real; extensionmethod; -begin - Result := Self[0]; - for var i := 1 to Self.Length - 1 do - if Self[i] > Result then - Result := Self[i]; -end; - -{/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -begin - var min := Self[index]; - Result := index; - for var i:=index+1 to Self.Length-1 do - if Self[i].CompareTo(min)<0 then - begin - Result := i; - min := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -begin - var max := Self[index]; - Result := index; - for var i:=index+1 to Self.Length-1 do - if Self[i].CompareTo(max)>0 then - begin - Result := i; - max := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: array of T): integer; extensionmethod; where T: System.IComparable; -begin - var min := Self[Self.Length-1]; - Result := Self.Length-1; - for var i:=Self.Length-2 downto 0 do - if Self[i].CompareTo(min)<0 then - begin - Result := i; - min := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMin(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -begin - var min := Self[index]; - Result := index; - for var i:=index-1 downto 0 do - if Self[i].CompareTo(min)<0 then - begin - Result := i; - min := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: array of T): integer; extensionmethod; where T: System.IComparable; -begin - var max := Self[Self.Length-1]; - Result := Self.Length-1; - for var i:=Self.Length-2 downto 0 do - if Self[i].CompareTo(max)>0 then - begin - Result := i; - max := Self[i]; - end; -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMax(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -begin - var max := Self[index]; - Result := index; - for var i:=index-1 downto 0 do - if Self[i].CompareTo(max)>0 then - begin - Result := i; - max := Self[i]; - end; -end; - -/// Çàìåíÿåò â ìàññèâå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: array of T; oldValue,newValue: T); extensionmethod; -begin - for var i:=0 to Self.Length-1 do - if Self[i] = oldValue then - Self[i] := newValue; -end; - -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(self: array of T; f: T -> T); extensionmethod; -begin - for var i:=0 to Self.Length-1 do - Self[i] := f(Self[i]); -end; - -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array of T; f: integer -> T); extensionmethod; -begin - for var i:=0 to Self.Length-1 do - Self[i] := f(i); -end;} - -/// Âûïîëíÿåò áèíàðíûé ïîèñê â îòñîðòèðîâàííîì ìàññèâå -function BinarySearch(Self: array of T; x: T): integer; extensionmethod; -begin - Result := System.Array.BinarySearch(self, x); -end; - -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: T->T1): array of T1; extensionmethod; -begin - Result := System.Array.ConvertAll(self, t -> converter(t)); -end; - -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: (T,integer)->T1): array of T1; extensionmethod; -begin - Result := new T1[Self.Length]; - for var i := 0 to Self.Length - 1 do - Result[i] := converter(Self[i],i); -end; - -/// Âûïîëíÿåò ïîèñê ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function Find(Self: array of T; p: T->boolean): T; extensionmethod; -begin - Result := System.Array.Find(self, p); -end; - -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -begin - Result := System.Array.FindIndex(self, p); -end; - -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -begin - Result := System.Array.FindIndex(self, start, p); -end; - -/// Âîçâðàùàåò â âèäå ìàññèâà âñå ýëåìåíòû, óäîâëåòâîðÿþùèå ïðåäèêàòó -function FindAll(Self: array of T; p: T->boolean): array of T; extensionmethod; -begin - Result := System.Array.FindAll(self, p); -end; - -/// Âûïîëíÿåò ïîèñê ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLast(Self: array of T; p: T->boolean): T; extensionmethod; -begin - Result := System.Array.FindLast(self, p); -end; - -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -begin - Result := System.Array.FindLastIndex(self, p); -end; - -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -begin - Result := System.Array.FindLastIndex(Self, start, p); -end; - -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T): integer; extensionmethod; -begin - Result := System.Array.IndexOf(Self, x); -end; - -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -begin - Result := System.Array.IndexOf(Self, x, start); -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T): integer; extensionmethod; -begin - Result := System.Array.LastIndexOf(Self, x); -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -begin - Result := System.Array.LastIndexOf(Self, x, start); -end; - -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(Self: array of T); extensionmethod; -begin - System.Array.Sort(Self); -end; - -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ, èñïîëüçóÿ cmp â êà÷åñòâå ôóíêöèè ñðàâíåíèÿ ýëåìåíòîâ -procedure Sort(Self: array of T; cmp: (T,T) ->integer); extensionmethod; -begin - System.Array.Sort(Self, cmp); -end; - -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ìàññèâà -function High(Self: System.Array); extensionmethod := High(Self); - -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ìàññèâà -function Low(Self: System.Array); extensionmethod := Low(Self); - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ îäíîìåðíîãî ìàññèâà -function Indexes(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1); - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: T->boolean): sequence of integer; extensionmethod; -begin - for var i := 0 to Self.High do - if cond(Self[i]) then - yield i; -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: (T,integer) ->boolean): sequence of integer; extensionmethod; -begin - for var i := 0 to Self.High do - if cond(Self[i], i) then - yield i; -end; - -///-- -function CreateSliceFromArrayInternal(Self: array of T; from, step, count: integer): array of T; -begin - Result := new T[count]; - - var f := from; - for var i := 0 to count - 1 do - begin - Result[i] := Self[f]; - f += step; - end; -end; - -///-- -function SliceArrayImpl(Self: array of T; from, step, count: integer): array of T; -begin - {if step = 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_NOT_EQUAL_0)); - - if (from < 0) or (from > Self.Length - 1) then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - var cnt := step > 0 ? Self.Length - from : from + 1; - var cntstep := (cnt-1) div abs(step) + 1; - if count > cntstep then - count := cntstep;} - - CorrectCountForSlice(Self.Length, from, step, count); - - Result := CreateSliceFromArrayInternal(Self, from, step, count) -end; - -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step -function Slice(Self: array of T; from, step: integer): array of T; extensionmethod; -begin - Result := SliceArrayImpl(Self, from, step, integer.MaxValue); -end; - -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: array of T; from, step, count: integer): array of T; extensionmethod; -begin - Result := SliceArrayImpl(Self, from, step, count); -end; - -///-- -function SystemSliceArrayImpl(Self: array of T; situation: integer; from, to: integer; step: integer := 1): array of T; -begin - var count := CheckAndCorrectFromToAndCalcCountForSystemSlice(situation, Self.Length, from, to, step); - - Result := CreateSliceFromArrayInternal(Self, from, step, count) -end; - -///-- -function SystemSlice(Self: array of T; situation: integer; from, to: integer): array of T; extensionmethod; -begin - Result := SystemSliceArrayImpl(Self, situation, from, to, 1); -end; - -///-- -function SystemSlice(Self: array of T; situation: integer; from, to, step: integer): array of T; extensionmethod; -begin - Result := SystemSliceArrayImpl(Self, situation, from, to, step); -end; - -///-- -function SystemSliceArrayImplQuestion(Self: array of T; situation: integer; from, to: integer; step: integer := 1): array of T; -begin - var count := CorrectFromToAndCalcCountForSystemSliceQuestion(situation, Self.Length, from, to, step); - - Result := CreateSliceFromArrayInternal(Self, from, step, count); -end; - -///-- -function SystemSliceQuestion(Self: array of T; situation: integer; from, to: integer): array of T; extensionmethod; -begin - Result := SystemSliceArrayImplQuestion(Self, situation, from, to, 1); -end; - -///-- -function SystemSliceQuestion(Self: array of T; situation: integer; from, to, step: integer): array of T; extensionmethod; -begin - Result := SystemSliceArrayImplQuestion(Self, situation, from, to, step); -end; - -// ----------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ òèïà integer # Extension methods for integer -// ----------------------------------------------------- -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: integer): real; extensionmethod; -begin - Result := Sqrt(Self); -end; - -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: integer): integer; extensionmethod; -begin - Result := Sqr(Self); -end; - -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: integer; a, b: integer): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: integer; a,b: integer): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - - -// Äîïîëíåíèÿ ôåâðàëü 2016: IsEven, IsOdd - -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå ÷åòíûì -function IsEven(Self: integer): boolean; extensionmethod; -begin - Result := Self mod 2 = 0; -end; - -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå íå÷åòíûì -function IsOdd(Self: integer): boolean; extensionmethod; -begin - Result := Self mod 2 <> 0; -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ÷èñåë îò 1 äî äàííîãî -function Range(Self: integer): sequence of integer; extensionmethod; -begin - Result := Range(1, Self); -end; - -// Äîïîëíåíèÿ ôåâðàëü 2016: To, Downto, Times - -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n -function To(Self: integer; n: integer): sequence of integer; extensionmethod; -begin - Result := Range(Self, n); -end; - -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n â óáûâàþùåì ïîðÿäêå -function Downto(Self: integer; n: integer): sequence of integer; extensionmethod; -begin - Result := Range(Self, n, -1); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ 0,1,...n-1 -function Times(Self: integer): sequence of integer; extensionmethod; -begin - Result := Range(0, Self - 1); -end; - -// ----------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ òèïà BigInteger # Extension methods for BigInteger -// ----------------------------------------------------- -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: BigInteger): real; extensionmethod; -begin - Result := Sqrt(real(Self)); -end; - -// ----------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ òèïà real # Extension methods for real -// ----------------------------------------------------- -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: real; a, b: real): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: real; a,b: real): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: real): real; extensionmethod; -begin - Result := Sqrt(Self); -end; - -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: real): real; extensionmethod; -begin - Result := Sqr(Self); -end; - -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî öåëîãî -function Round(Self: real): integer; extensionmethod; -begin - Result := Round(Self); -end; - -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(Self: real; digits: integer): real; extensionmethod; -begin - Result := Round(Self,digits); -end; - -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(Self: real): BigInteger; extensionmethod; -begin - Result := RoundBigInteger(Self); -end; - -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà -function Trunc(Self: real): integer; extensionmethod; -begin - Result := Trunc(Self); -end; - -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà êàê äëèííîå öåëîå -function TruncBigInteger(Self: real): BigInteger; extensionmethod; -begin - Result := TruncBigInteger(Self); -end; - -/// Âîçâðàùàåò âåùåñòâåííîå, îòôîðìàòèðîâàííîå ê ñòðîêå ñ frac öèôðàìè ïîñëå äåñÿòè÷íîé òî÷êè -function ToString(Self: real; frac: integer): string; extensionmethod; -begin - if frac < 0 then - raise new System.ArgumentOutOfRangeException('frac', 'frac<0'); - if frac >= 100 then - raise new System.ArgumentOutOfRangeException('frac', 'frac>=100'); - Result := Format('{0:f' + frac + '}', Self) -end; - - -//------------------------------------------------------------------------------ -//>> Ìåòîäû ðàñøèðåíèÿ òèïà char # Extension methods for char -//------------------------------------------------------------------------------ -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: char; a, b: char): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: char; a,b: char): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - -/// Ïðåäûäóùèé ñèìâîë -function Pred(Self: char); extensionmethod := PABCSystem.Pred(Self); - -/// Ñëåäóþùèé ñèìâîë -function Succ(Self: char); extensionmethod := PABCSystem.Succ(Self); - -/// Êîä ñèìâîëà â êîäèðîâêå Unicode -function Code(Self: char): integer; extensionmethod := word(Self); - -/// ßâëÿåòñÿ ëè ñèìâîë öèôðîé -function IsDigit(Self: char); extensionmethod := char.IsDigit(Self); - -/// ßâëÿåòñÿ ëè ñèìâîë áóêâîé -function IsLetter(Self: char): boolean; extensionmethod; -begin - Result := char.IsLetter(Self); -end; - -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ íèæíåãî ðåãèñòðà -function IsLower(Self: char): boolean; extensionmethod; -begin - Result := char.IsLower(Self); -end; - -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ âåðõíåãî ðåãèñòðà -function IsUpper(Self: char): boolean; extensionmethod; -begin - Result := char.IsUpper(Self); -end; - -/// Ïðåîáðàçóåò ñèìâîë â öèôðó -function ToDigit(Self: char): integer; extensionmethod; -begin - Result := OrdUnicode(Self) - OrdUnicode('0'); - if (Result < 0) or (Result >= 10) then - raise new System.FormatException('not a Digit'); -end; - -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function ToLower(Self: char): char; extensionmethod; -begin - Result := char.ToLower(Self); -end; - -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function ToUpper(Self: char): char; extensionmethod; -begin - Result := char.ToUpper(Self); -end; - -//------------------------------------------------------------------------------ -//>> Ìåòîäû ðàñøèðåíèÿ òèïà string # Extension methods for string -//------------------------------------------------------------------------------ -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: string; a, b: string): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: string; a,b: string): boolean; extensionmethod; -begin - Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a); -end; - -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadInteger(Self: string; var from: integer): integer; extensionmethod; -begin - Result := ReadIntegerFromString(Self, from); -end; - -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadReal(Self: string; var from: integer): real; extensionmethod; -begin - Result := ReadRealFromString(Self, from); -end; - -/// Ñ÷èòûâàåò ñëîâî èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWord(Self: string; var from: integer): string; extensionmethod; -begin - Result := ReadwordFromString(Self, from); -end; - -/// Ïðåîáðàçóåò ñòðîêó â öåëîå -function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); - -/// Ïðåîáðàçóåò ñòðîêó â BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); - -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå -function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); - -/// Ïðåîáðàçóåò ñòðîêó â öåëîå è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); - -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); - -/// Ïðåîáðàçóåò ñòðîêó â öåëîå -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; -begin - var b := TryStrToInt(Self,Result); - if not b then - Result := defaultvalue -end; - -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToReal(Self: string; defaultvalue: real): real; extensionmethod; -begin - var b := TryStrToReal(Self,Result); - if not b then - Result := defaultvalue -end; - -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ ñëîâ -function ToWords(Self: string; params delim: array of char): array of string; extensionmethod; -begin - Result := Self.Split(delim, System.StringSplitOptions.RemoveEmptyEntries); -end; - -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ öåëûõ -function ToIntegers(Self: string): array of integer; extensionmethod; -begin - Result := Self.ToWords().Select(s -> StrToInt(s)).ToArray(); -end; - -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ âåùåñòâåííûõ -function ToReals(Self: string): array of real; extensionmethod; -begin - Result := Self.ToWords().Select(s -> StrToFloat(s)).ToArray(); -end; - -/// Âîçâðàùàåò èíâåðñèþ ñòðîêè -function Inverse(Self: string): string; extensionmethod; -begin - var sb := new System.Text.StringBuilder(Self.Length); - for var i := Self.Length downto 1 do - sb.Append(Self[i]); - Result := sb.ToString; -end; - -// Äîïîëíåíèÿ ôåâðàëü 2016: Matches, MatchValue, MatchValues, IsMatch, RegexReplace, Remove, Right, Left - -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííîé ñòðîêîé çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg, repl: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -begin - Result := Regex.Replace(Self, reg, repl, options) -end; - -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííûì ïðåîáðàçîâàíèåì çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg: string; repl: Match->string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -begin - Result := Regex.Replace(Self, reg, repl, options) -end; - -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ýëåìåíòîâ òèïà Match -function Matches(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of Match; extensionmethod; -begin - Result := (new Regex(reg, options)).Matches(Self).Cast(); -end; - -/// Èùåò â óêàçàííîé ñòðîêå ïåðâîå âõîæäåíèå ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò åãî â âèäå ñòðîêè -function MatchValue(Self: string; reg: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -begin - Result := (new Regex(reg, options)).Match(Self).Value; -end; - -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ñòðîê -function MatchValues(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of string; extensionmethod; -begin - Result := Self.Matches(reg, options).Select(m -> m.Value); -end; - -/// Óäîâëåòâîðÿåò ëè ñòðîêà ðåãóëÿðíîìó âûðàæåíèþ -function IsMatch(Self: string; reg: string; options: RegexOptions := RegexOptions.None): boolean; extensionmethod := Regex.IsMatch(Self, reg, options); - -/// Óäàëÿåò â ñòðîêå âñå âõîæäåíèÿ óêàçàííûõ ñòðîê -function Remove(Self: string; params targets: array of string): string; extensionmethod; -begin - var builder := new StringBuilder(Self); - - for var i := 0 to targets.Length - 1 do - builder.Replace(targets[i], String.Empty); - - Result := builder.ToString(); -end; - -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ïðàâûõ ñèìâîëîâ -function Right(Self: string; length: integer): string; extensionmethod; -begin - length := Max(length, 0); - - if Self.Length > length then - Result := Self.Substring(Self.Length - length, length) - else Result := Self; -end; - -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ëåâûõ ñèìâîëîâ -function Left(Self: string; length: integer): string; extensionmethod; -begin - length := Max(length, 0); - - if Self.Length > length then - Result := Self.Substring(0, length) - else Result := Self; -end; - -///-- -function CreateSliceFromStringInternal(Self: string; from, step, count: integer): string; -begin - var res := new StringBuilder(count); - - loop count do - begin - res.Append(Self[from]); - from += step; - end; - Result := res.ToString; -end; - -///-- -function SliceStringImpl(Self: string; from, step, count: integer): string; -begin - {if step = 0 then - raise new ArgumentException(GetTranslation(PARAMETER_STEP_MUST_BE_NOT_EQUAL_0)); - - if (from < 0) or (from > Self.Length - 1) then - raise new ArgumentException(GetTranslation(PARAMETER_FROM_OUT_OF_RANGE)); - - var cnt := step > 0 ? Self.Length - from : from + 1; - var cntstep := (cnt-1) div abs(step) + 1; - if count > cntstep then - count := cntstep;} - - CorrectCountForSlice(Self.Length, from, step, count); - - Result := CreateSliceFromStringInternal(Self, from + 1, step, count); -end; - -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step -function Slice(Self: string; from, step: integer): string; extensionmethod; -begin - Result := SliceStringImpl(Self, from, step, integer.MaxValue); -end; - -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: string; from, step, count: integer): string; extensionmethod; -begin - Result := SliceStringImpl(Self, from, step, count); -end; - -///-- -function SystemSliceStringImpl(Self: string; situation: integer; from, to: integer; step: integer := 1): string; -begin - var fromv := from - 1; - var tov := to - 1; - var count := CheckAndCorrectFromToAndCalcCountForSystemSlice(situation, Self.Length, fromv, tov, step); - - Result := CreateSliceFromStringInternal(Self, fromv + 1, step, count) -end; - -///-- -function SystemSlice(Self: string; situation: integer; from, to: integer): string; extensionmethod; -begin - Result := SystemSliceStringImpl(Self, situation, from, to, 1); -end; - -///-- -function SystemSlice(Self: string; situation: integer; from, to, step: integer): string; extensionmethod; -begin - Result := SystemSliceStringImpl(Self, situation, from, to, step); -end; - -///-- -function SystemSliceStringImplQuestion(Self: string; situation: integer; from, to: integer; step: integer := 1): string; -begin - var fromv := from - 1; - var tov := to - 1; - - var count := CorrectFromToAndCalcCountForSystemSliceQuestion(situation, Self.Length, fromv, tov, step); - - Result := CreateSliceFromStringInternal(Self, fromv + 1, step, count); -end; - -///-- -function SystemSliceQuestion(Self: string; situation: integer; from, to: integer): string; extensionmethod; -begin - Result := SystemSliceStringImplQuestion(Self, situation, from, to, 1); -end; - -///-- -function SystemSliceQuestion(Self: string; situation: integer; from, to, step: integer): string; extensionmethod; -begin - Result := SystemSliceStringImplQuestion(Self, situation, from, to, step); -end; -//-------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Func # Extension methods for Func -//-------------------------------------------- -/// Ñóïåðïîçèöèÿ ôóíêöèé -function Compose(Self: T2->TResult; composer: T1->T2): T1->TResult; extensionmethod; -begin - if composer = nil then - raise new System.ArgumentNullException('composer'); - var Slf := Self; - Result := x -> Slf(composer(x)); -end; - -//------------------------------------------------------------------------------ -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Complex # Extension methods for Complex -//------------------------------------------------------------------------------ -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå çíà÷åíèå -function Conjugate(Self: Complex): Complex; extensionmethod; -begin - Result := Complex.Conjugate(Self); -end; - -// ----------------------------------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ ñëîâàðåé # Extension methods for IDictionary -// ----------------------------------------------------------------------------- -/// Âîçâðàùàåò â ñëîâàðå çíà÷åíèå, ñâÿçàííîå ñ óêàçàííûì êëþ÷îì, à åñëè òàêîãî êëþ÷à íåò, òî çíà÷åíèå ïî óìîë÷àíèþ -function Get(Self: IDictionary; K: Key): Value; extensionmethod; -begin - var b := Self.TryGetValue(K, Result); - if not b then - Result := default(Value); -end; - - - -// ----------------------------------------------------- -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òèïèçèðîâàííûìè ôàéëàìè # Subroutines for typed files -// ----------------------------------------------------- - -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenBinary(fname: string): file of T; -begin - PABCSystem.Reset(Result, fname); -end; - -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateBinary(fname: string): file of T; -begin - PABCSystem.Rewrite(Result, fname); -end; - -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFile(fname: string): file of T; -begin - PABCSystem.Reset(Result, fname); -end; - -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFile(fname: string): file of T; -begin - PABCSystem.Rewrite(Result, fname); -end; - -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileInteger(fname: string): file of integer; -begin - Result := OpenFile(fname); -end; - -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileReal(fname: string): file of real; -begin - Result := OpenFile(fname); -end; - -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileInteger(fname: string): file of integer; -begin - Result := CreateFile(fname); -end; - -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileReal(fname: string): file of real; -begin - Result := CreateFile(fname); -end; - -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -procedure WriteElements(fname: string; ss: sequence of T); -begin - var f := CreateBinary(fname); - foreach var x in ss do - f.Write(x); - f.Close -end; - -// ----------------------------------------------------- -//>> Ìåòîäû ðàñøèðåíèÿ òèïèçèðîâàííûõ ôàéëîâ # Extension methods for typed files -// ----------------------------------------------------- - -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â òèïèçèðîâàííîì ôàéëå íà ýëåìåíò ñ íîìåðîì n -function Seek(Self: file of T; n: int64): file of T; extensionmethod; -begin - PABCSystem.Seek(Self, n); - Result := Self; -end; - -/// Ñ÷èòûâàåò è âîçâðàùàåò ñëåäóþùèé ýëåìåíò òèïèçèðîâàííîãî ôàéëà -function Read(Self: file of T): T; extensionmethod; -begin - PABCSystem.Read(Self, Result); -end; - -/// Ñ÷èòûâàåò è âîçâðàùàåò äâà ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read2(Self: file of T): (T,T); extensionmethod; -begin - var a,b: T; - PABCSystem.Read(Self, a); - PABCSystem.Read(Self, b); - Result := (a,b); -end; - -/// Ñ÷èòûâàåò è âîçâðàùàåò òðè ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read3(Self: file of T): (T,T,T); extensionmethod; -begin - var a,b,c: T; - PABCSystem.Read(Self, a); - PABCSystem.Read(Self, b); - PABCSystem.Read(Self, c); - Result := (a,b,c); -end; - -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ îòêðûòîãî òèïèçèðîâàííîãî ôàéëà îò òåêóùåãî ýëåìåíòà äî êîíå÷íîãî -function ReadElements(Self: file of T): sequence of T; extensionmethod; -begin - while not Self.Eof do - begin - var x := Self.Read; - yield x; - end; -end; - -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -function ReadElements(fname: string): sequence of T; -begin - var f := OpenBinary(fname); - while not f.Eof do - begin - var x := f.Read; - yield x; - end; - f.Close -end; - -/// Çàïèñûâàåò äàííûå â òèïèçèðîâàííûé ôàéë -procedure Write(Self: file of T; params vals: array of T); extensionmethod; -begin - foreach var x in vals do - PABCSystem.Write(Self, x); -end; - -/// Îòêðûâàåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Reset(Self: file of T); extensionmethod; -begin - PABCSystem.Reset(Self); -end; - -/// Ñîçäàåò íîâûé èëè îáíóëÿåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Rewrite(Self: file of T); extensionmethod; -begin - PABCSystem.Rewrite(Self); -end; - diff --git a/PABCNetHelp/PABCSystemDocGen/PABC1.pas b/PABCNetHelp/PABCSystemDocGen/PABC1.pas deleted file mode 100644 index 732dc0841..000000000 --- a/PABCNetHelp/PABCSystemDocGen/PABC1.pas +++ /dev/null @@ -1,1583 +0,0 @@ -//>> Ñòàíäàðòíûå êîíñòàíòû # Standard constants -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà shortint -MaxShortInt = shortint.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà byte -MaxByte = byte.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà smallint -MaxSmallInt = smallint.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà word -MaxWord = word.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà longword -MaxLongWord = longword.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà int64 -MaxInt64 = int64.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà uint64 -MaxUInt64 = uint64.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà double -MaxDouble = real.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà double -MinDouble = real.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà real -MaxReal = real.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà real -MinReal = real.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà single -MaxSingle = single.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà single -MinSingle = single.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà integer -MaxInt = integer.MaxValue; -/// Êîíñòàíòà Pi -Pi = 3.141592653589793; -/// Êîíñòàíòà E -E = 2.718281828459045; -/// Êîíñòàíòà ïåðåõîäà íà íîâóþ ñòðîêó -NewLine = System.Environment.NewLine; -//>> Ñòàíäàðòíûå òèïû # Standard types -/// Áàçîâûé òèï îáúåêòîâ -Object = System.Object; -/// Áàçîâûé òèï èñêëþ÷åíèé -Exception = System.Exception; -/// double = real -double = System.Double; -/// longint = integer -longint = System.Int32; -/// cardinal = longword -cardinal = System.UInt32; -/// Ïðåäñòàâëÿåò 128-áèòíîå âåùåñòâåííîå ÷èñëî -decimal = System.Decimal; -/// Ïðåäñòàâëÿåò ïðîèçâîëüíî áîëüøîå öåëîå ÷èñëî -BigInteger = System.Numerics.BigInteger; -/// Ïðåäñòàâëÿåò äàòó è âðåìÿ -DateTime = System.DateTime; -/// Ïðåäñòàâëÿåò êîìïëåêñíîå ÷èñëî -Complex = System.Numerics.Complex; -/// Ïðåäñòàâëÿåò êîðòåæ -Tuple = System.Tuple; -/// Ïðåäñòàâëÿåò ñïèñîê íà áàçå äèíàìè÷åñêîãî ìàññèâà -List = System.Collections.Generic.List; -/// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer -Comparer = System.Collections.Generic.Comparer; -/// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer -IComparable = System.IComparable; -/// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå õåø-òàáëèöû -HashSet = System.Collections.Generic.HashSet; -/// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå áèíàðíîãî äåðåâà ïîèñêà -SortedSet = System.Collections.Generic.SortedSet; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð Êëþ÷-Çíà÷åíèå), ðåàëèçîâàííûé íà áàçå õåø-òàáëèöû -Dictionary = System.Collections.Generic.Dictionary; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ, ðåàëèçîâàííûé íà áàçå áèíàðíîãî äåðåâà ïîèñêà -SortedDictionary = System.Collections.Generic.SortedDictionary; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð êëþ÷-çíà÷åíèå), ðåàëèçîâàííûé íà áàçå äèíàìè÷åñêîãî ìàññèâà ïàð -SortedList = System.Collections.Generic.SortedList; -/// Ïðåäñòàâëÿåò ïàðó Êëþ÷-Çíà÷åíèå äëÿ àññîöèàòèâíîãî ìàññèâà -KeyValuePair = System.Collections.Generic.KeyValuePair; -/// Ïðåäñòàâëÿåò äâóñâÿçíûé ñïèñîê -LinkedList = System.Collections.Generic.LinkedList; -/// Ïðåäñòàâëÿåò óçåë äâóñâÿçíîãî ñïèñêà -LinkedListNode = System.Collections.Generic.LinkedListNode; -/// Ïðåäñòàâëÿåò î÷åðåäü - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïåðâûé âîøåë-ïåðâûé âûøåë" -Queue = System.Collections.Generic.Queue; -/// Ïðåäñòàâëÿåò ñòåê - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïîñëåäíèé âîøåë-ïåðâûé âûøåë" -Stack = System.Collections.Generic.Stack; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè -ICollection = System.Collections.Generic.ICollection; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ñðàâíåíèÿ äâóõ ýëåìåíòîâ -IComparer = System.Collections.Generic.IComparer; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ íàáîðà ïàð Êëþ÷-Çíà÷åíèå -IDictionary = System.Collections.Generic.IDictionary; -/// Ïðåäñòàâëÿåò èíòåðôåéñ, ïðåäîñòàâëÿþùèé ïåðå÷èñëèòåëü äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè -IEnumerable = System.Collections.Generic.IEnumerable; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè -IEnumerator = System.Collections.Generic.IEnumerator; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïîääåðæêè ñðàâíåíèÿ íà ðàâåíñòâî -IEqualityComparer = System.Collections.Generic.IEqualityComparer; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè ñ äîñòóïîì ïî èíäåêñó -IList = System.Collections.Generic.IList; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ìíîæåñòâà -ISet = System.Collections.Generic.ISet; -/// Ïðåäñòàâëÿåò èçìåíÿåìóþ ñòðîêó ñèìâîëîâ -StringBuilder = System.Text.StringBuilder; -/// Òèï êîäèðîâêè ñèìâîëîâ -Encoding = System.Text.Encoding; -/// Ïðåäñòàâëÿåò äåéñòâèå áåç ïàðàìåòðîâ -Action0 = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ îäíèì ïàðàìåòðîì -Action = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ äâóìÿ ïàðàìåòðàìè -Action2 = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ òðåìÿ ïàðàìåòðàìè -Action3 = System.Action; -/// Ïðåäñòàâëÿåò ôóíêöèþ áåç ïàðàìåòðîâ -Func0 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì -Func = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè -Func2 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè -Func3 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì öåëîãî òèïà, âîçâðàùàþùóþ öåëîå -IntFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì âåùåñòâåííîãî òèïà, âîçâðàùàþùóþ âåùåñòâåííîå -RealFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì ñòðîêîâîãî òèïà, âîçâðàùàþùóþ ñòðîêó -StringFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì, âîçâðàùàþùóþ boolean -Predicate = System.Predicate; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean -Predicate2 = function(x1: T1; x2: T2): boolean; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean -Predicate3 = function(x1: T1; x2: T2; x3: T3): boolean; -/// Ïðåäñòàâëÿåò ðåãóëÿðíîå âûðàæåíèå -Regex = System.Text.RegularExpressions.Regex; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îòäåëüíîãî ñîâïàäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ -Match = System.Text.RegularExpressions.Match; -/// Ïðåäñòàâëÿåò ìåòîä, âûçûâàåìûé ïðè îáíàðóæåíèè ñîâïàäåíèÿ â Regex.Replace -MatchEvaluator = System.Text.RegularExpressions.MatchEvaluator; -/// Ïðåäñòàâëÿåò íàáîð óñïåøíûõ ñîâïàäåíèé ðåãóëÿðíîãî âûðàæåíèÿ -MatchCollection = System.Text.RegularExpressions.MatchCollection; -/// Ïðåäñòàâëÿåò ïàðàìåòðû ðåãóëÿðíîãî âûðàæåíèÿ -RegexOptions = System.Text.RegularExpressions.RegexOptions; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îäíîé ãðóïïû ïðè âûïîëíåíèè Regex.Match -RegexGroup = System.Text.RegularExpressions.Group; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç íàáîðà ãðóïï ïðè âûïîëíåíèè Regex.Match -RegexGroupCollection = System.Text.RegularExpressions.GroupCollection; -/// Ïðåäñòàâëÿåò òèï êîðîòêîé ñòðîêè ôèêñèðîâàííîé äëèíû 255 ñèìâîëîâ -ShortString = string[255]; -//>> Ïîäïðîãðàììû ââîäà # Read subroutines -///- procedure Read(a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû -procedure Read; -///- procedure Readln(a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln; -/// Ââîäèò ÷èñëîâîå çíà÷åíèå x êëàâèàòóðû. Âîçâðàùàåò False åñëè ïðè ââîäå ïðîèçîøëà îøèáêà -function TryRead(var x: integer): boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean: boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean: boolean; -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2: (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2: (string, string); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3: (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3: (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2(prompt: string): (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2(prompt: string): (string, string); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3(prompt: string): (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3(prompt: string): (string, string, string); -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean(prompt: string): boolean; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean(prompt: string): boolean; -///- procedure Read(f: ôàéë; a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... èç ôàéëà f -procedure Read(f: Text); -///- procedure Readln(f: Text; a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... èç òåêñòîâîãî ôàéëà f è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln(f: Text); -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadBoolean(f: Text): boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f, -///è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnBoolean(f: Text): boolean; -//>> Ïîäïðîãðàììû âûâîäà # Write subroutines -///- procedure Write(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí -procedure Write; -///- procedure Writeln(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure Writeln; -///- procedure Write(f: ôàéë; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â ôàéë f -procedure Write(f: Text); -///- procedure Writeln(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure Writeln(f: Text); -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(f: Text; formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -///è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(f: Text; formatstr: string; params args: array of object); -///- procedure Print(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(s: string); -///- procedure Print(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(f: Text; params args: array of object); -///- procedure Println(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(params args: array of object); -///- procedure Println(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(f: Text; params args: array of object); -//>> Îáùèå ïîäïðîãðàììû äëÿ ðàáîòû ñ ôàéëàìè # Common subroutines for files -///- procedure Assign(f: ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure Assign(f: AbstractBinaryFile; name: string); -///- procedure AssignFile(f: ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure AssignFile(f: AbstractBinaryFile; name: string); -///- procedure Close(f: ôàéë); -/// Çàêðûâàåò ôàéë -procedure Close(f: AbstractBinaryFile); -///- procedure CloseFile(f: ôàéë); -/// Çàêðûâàåò ôàéë -procedure CloseFile(f: AbstractBinaryFile); -///- function Eof(f: ôàéë): boolean; -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function Eof(f: AbstractBinaryFile): boolean; -///- procedure Erase(f: ôàéë); -/// Óäàëÿåò ôàéë, ñâÿçàííûé ñ ôàéëîâîé ïåðåìåííîé -procedure Erase(f: AbstractBinaryFile); -///- procedure Rename(f: ôàéë; newname: string); -/// Ïåðåèìåíîâûâàåò ôàéë, ñâÿçàíûé ñ ôàéëîâîé ïåðåìåííîé, äàâàÿ åìó èìÿ newname. -procedure Rename(f: AbstractBinaryFile; newname: string); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òåêñòîâûìè ôàéëàìè # Subroutines for text files -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â êîäèðîâêå Windows. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â óêàçàííîé êîäèðîâêå. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â êîäèðîâêå Windows. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â óêàçàííîé êîäèðîâêå. -///Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; name: string; en: Encoding); -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â êîäèðîâêå Windows -function OpenRead(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â óêàçàííîé êîäèðîâêå -function OpenRead(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â êîäèðîâêå Windows -function OpenWrite(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â óêàçàííîé êîäèðîâêå -function OpenWrite(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â êîäèðîâêå Windows -function OpenAppend(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -function OpenAppend(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function Eoln(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function SeekEof(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function SeekEoln(f: Text): boolean; -/// Çàïèñûâàåò ñîäåðæèìîå áóôåðà ôàéëà íà äèñê -procedure Flush(f: Text); -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string; en: Encoding): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string; en: Encoding): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â êîäèðîâêå Windows â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string): string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â óêàçàíîé êîäèðîâêå â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string; en: Encoding): string; -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string; en: Encoding); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äâîè÷íûìè ôàéëàìè # Subroutines for binary files -///- procedure Reset(f: äâîè÷íûé ôàéë); -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: AbstractBinaryFile); -///- procedure Reset(f: äâîè÷íûé ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: AbstractBinaryFile; name: string); -///- procedure Rewrite(f: äâîè÷íûé ôàéë); -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå. Åñëè ôàéë ñóùåñòâîâàë, îí îáíóëÿåòñÿ. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: AbstractBinaryFile); -///- procedure Rewrite(f: äâîè÷íûé ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: AbstractBinaryFile; name: string); -///- procedure Truncate(f: äâîè÷íûé ôàéë); -/// Óñåêàåò äâîè÷íûé ôàéë, îòáðàñûâàÿ âñå ýëåìåíòû ñ ïîçèöèè ôàéëîâîãî óêàçàòåëÿ. -///Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Truncate(f: AbstractBinaryFile); -///- function FilePos(f: äâîè÷íûé ôàéë): int64; -/// Âîçâðàùàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå -function FilePos(f: TypedFile): int64; -///- function FileSize(f: äâîè÷íûé ôàéë): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ â äâîè÷íîì ôàéëå -function FileSize(f: TypedFile): int64; -///- procedure Seek(f: äâîè÷íûé ôàéë; n: int64); -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå íà ýëåìåíò ñ äàííûì íîìåðîì -procedure Seek(f: TypedFile; n: int64); -//>> Cèñòåìíûå ïîäïðîãðàììû # System subroutines -/// Âîçâðàùàåò âåðñèþ PascalABC.NET -function PascalABCVersion: string; -/// Âîçâðàùàåò êîëè÷åñòâî ïàðàìåòðîâ êîìàíäíîé ñòðîêè -function ParamCount: integer; -/// Âîçâðàùàåò i-òûé ïàðàìåòð êîìàíäíîé ñòðîêè -function ParamStr(i: integer): string; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetDir: string; -/// Ìåíÿåò òåêóùèé êàòàëîã -procedure ChDir(s: string); -/// Ñîçäàåò êàòàëîã -procedure MkDir(s: string); -/// Óäàëÿåò êàòàëîã -procedure RmDir(s: string); -/// Ñîçäàåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî ñîçäàí -function CreateDir(s: string): boolean; -/// Óäàëÿåò ôàéë. Åñëè ôàéë íå ìîæåò áûòü óäàëåí, òî âîçâðàùàåò False -function DeleteFile(s: string): boolean; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetCurrentDir: string; -/// Óäàëÿåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function RemoveDir(s: string): boolean; -/// Ïåðåèìåíîâûâàåò ôàéë name, äàâàÿ åìó íîâîå èìÿ newname. Âîçâðàùàåò True, åñëè ôàéë óñïåøíî ïåðåèìåíîâàí -function RenameFile(name, newname: string): boolean; -/// Óñòàíàâëèâàåò òåêóùèé êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function SetCurrentDir(s: string): boolean; -/// Èçìåíÿåò ðàñøèðåíèå ôàéëà ñ èìåíåì name íà newext -function ChangeFileNameExtension(name, newext: string): string; -/// Âîçâðàùàåò True, åñëè ôàéë ñ èìåíåì name ñóùåñòâóåò -function FileExists(name: string): boolean; -/// Âûâîäèò â ñïåöèàëüíîì îêíå ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; sourceFile: string := ''; line: integer := 0); -/// Âûâîäèò â ñïåöèàëüíîì îêíå äèàãíîñòè÷åñêîå ñîîáùåíèå è ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; message: string; sourceFile: string := ''; line: integer := 0); -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskFree(diskname: string): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskSize(diskname: string): int64; -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskFree(disk: integer): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskSize(disk: integer): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà íà÷àëà ðàáîòû ïðîãðàììû -function Milliseconds: integer; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà ïîñëåäíåãî âûçîâà Milliseconds èëè MillisecondsDelta -function MillisecondsDelta: integer; -/// Çàâåðøàåò ðàáîòó ïðîãðàììû -procedure Halt; -/// Çàâåðøàåò ðàáîòó ïðîãðàììû, âîçâðàùàÿ êîä îøèáêè exitCode -procedure Halt(exitCode: integer); -/// Äåëàåò ïàóçó íà ms ìèëëèñåêóíä -procedure Sleep(ms: integer); -/// Âîçâàùàåò èìÿ çàïóùåííîãî .exe-ôàéëà -function GetEXEFileName: string; -/// Ïðåîáðàçóåò óêàçàòåëü ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function PointerToString(p: pointer): string; -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Exec(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Exec(filename: string; args: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Execute(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Execute(filename: string; args: string); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà -function EnumerateFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè -function EnumerateDirectories(path: string): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllDirectories(path: string): sequence of string; -///-procedure New(var p: ^T); -/// Âûäåëÿåò äèíàìè÷åñêóþ ïàìÿòü ðàçìåðà sizeof(T) è âîçâðàùàåò â ïåðåìåííîé p óêàçàòåëü íà íåå. Òèï T äîëæåí áûòü ðàçìåðíûì -//procedure New(var p: ^T); -///-procedure Dispose(var p: ^T); -/// Îñâîáîæäàåò äèíàìè÷åñêóþ ïàìÿòü, íà êîòîðóþ óêàçûâàåò p -//procedure Dispose(var p: ^T); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ èìåíàìè ôàéëîâ # Functions for file names -/// Âûäåëÿåò èìÿ ôàéëà èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileName(fname: string): string; -/// Âûäåëÿåò ðàñøèðåíèå èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileExt(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFilePath(fname: string): string; -/// Âûäåëÿåò èìÿ äèñêà è ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDir(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDrive(fname: string): string; -/// Âîçâðàùàåò ïîëíîå èìÿ ôàéëà fname -function ExpandFileName(fname: string): string; -//>> Ìàòåìàòè÷åñêèå ïîäïðîãðàììû # Math subroutines -///-function Sign(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò çíàê ÷èñëà x -function Sign(x: shortint): integer; -///-function Abs(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìîäóëü ÷èñëà x -function Abs(x: integer): integer; -/// Âîçâðàùàåò ñèíóñ ÷èñëà x -function Sin(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé ñèíóñ ÷èñëà x -function Sinh(x: real): real; -/// Âîçâðàùàåò êîñèíóñ ÷èñëà x -function Cos(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé êîñèíóñ ÷èñëà x -function Cosh(x: real): real; -/// Âîçâðàùàåò òàíãåíñ ÷èñëà x -function Tan(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé òàíãåíñ ÷èñëà x -function Tanh(x: real): real; -/// Âîçâðàùàåò àðêñèíóñ ÷èñëà x -function ArcSin(x: real): real; -/// Âîçâðàùàåò àðêêîñèíóñ ÷èñëà x -function ArcCos(x: real): real; -/// Âîçâðàùàåò àðêòàíãåíñ ÷èñëà x -function ArcTan(x: real): real; -/// Âîçâðàùàåò ýêñïîíåíòó ÷èñëà x -function Exp(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Ln(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Log(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ 2 -function Log2(x: real): real; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì ÷èñëà x -function Log10(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ base -function LogN(base, x: real): real; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà x -function Sqrt(x: real): real; -///-function Sqr(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò êâàäðàò ÷èñëà x -function Sqr(x: integer): int64; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x, y: real): real; -/// Âîçâðàùàåò x â öåëîé ñòåïåíè n -function Power(x: real; n: integer): real; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x: BigInteger; y: integer): BigInteger; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî öåëîãî. Åñëè âåùåñòâåííîå íàõîäèòñÿ ïîñåðåäèíå ìåæäó äâóìÿ öåëûìè, -///òî îêðóãëåíèå îñóùåñòâëÿåòñÿ ê áëèæàéøåìó ÷åòíîìó (áàíêîâñêîå îêðóãëåíèå): Round(2.5)=2, Round(3.5)=4 -function Round(x: real): integer; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(x: real; digits: integer): real; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x -function Trunc(x: real): integer; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x êàê äëèííîå öåëîå -function TruncBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü ÷èñëà x -function Int(x: real): real; -/// Âîçâðàùàåò äðîáíóþ ÷àñòü ÷èñëà x -function Frac(x: real): real; -/// Âîçâðàùàåò íàèáîëüøåå öåëîå <= x -function Floor(x: real): integer; -/// Âîçâðàùàåò íàèìåíüøåå öåëîå >= x -function Ceil(x: real): integer; -/// Ïåðåâîäèò ðàäèàíû â ãðàäóñû -function RadToDeg(x: real): real; -/// Ïåðåâîäèò ãðàäóñû â ðàäèàíû -function DegToRad(x: real): real; -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë -procedure Randomize; -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë, èñïîëüçóÿ çíà÷åíèå seed. Ïðè îäíîì è òîì æå seed ãåíåðèðóþòñÿ îäèíàêîâûå ïñåâäîñëó÷àéíûå ïîñëåäîâàòåëüíîñòè -procedure Randomize(seed: integer); -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò 0 äî maxValue-1 -function Random(maxValue: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0,maxValue) -function Random(maxValue: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò a äî b -function Random(a, b: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [a,b) -function Random(a, b: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0..1) -function Random: real; -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random2(maxValue: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random2(maxValue: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random2(a, b: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random2(a, b: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random3(maxValue: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random3(maxValue: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random3(a, b: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random3(a, b: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random3: (real, real, real); -///-function Max(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìàêñèìàëüíîå èç ÷èñåë a,b -function Max(a, b: byte): byte; -///-function Min(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìèíèìàëüíîå èç ÷èñåë a,b -function Min(a, b: byte): byte; -///-function Odd(i: öåëîå): boolean; -/// Âîçâðàùàåò True, åñëè i íå÷åòíî, è False â ïðîòèâíîì ñëó÷àå -function Odd(i: byte): boolean; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ êîìïëåêñíûìè ÷èñëàìè # Functions for Complex numbers -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ñ âåùåñòâåííîé ÷àñòüþ re è ìíèìîé ÷àñòüþ im -function Cplx(re, im: real): Complex; -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ïî ïîëÿðíûì êîîðäèíàòàì -function CplxFromPolar(magnitude, phase: real): Complex; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü èç êîìïëåêñíîãî ÷èñëà -function Sqrt(c: Complex): Complex; -/// Âîçâðàùàåò ìîäóëü êîìïëåêñíîãî ÷èñëà -function Abs(c: Complex): Complex; -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå ÷èñëî -function Conjugate(c: Complex): Complex; -/// Âîçâðàùàåò êîñèíóñ êîìïëåêñíîãî ÷èñëà -function Cos(c: Complex): Complex; -/// Âîçâðàùàåò ýêñïîíåíòó êîìïëåêñíîãî ÷èñëà -function Exp(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Ln(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log(c: Complex): Complex; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log10(c: Complex): Complex; -/// Âîçâðàùàåò ñòåïåíü êîìïëåêñíîãî ÷èñëà -function Power(c, power: Complex): Complex; -/// Âîçâðàùàåò ñèíóñ êîìïëåêñíîãî ÷èñëà -function Sin(c: Complex): Complex; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòàíäàðòíûìè ìíîæåñòâàìè # Subroutines for set of T -///- procedure Include(var s: set of T; element: T); -///Äîáàâëÿåò ýëåìåíò element âî ìíîæåñòâî s -procedure Include(var s: TypedSet; el: object); -///- procedure Exclude(var s: set of T; element: T); -///Óäàëÿåò ýëåìåíò element èç ìíîæåñòâà s -procedure Exclude(var s: TypedSet; el: object); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ ñèìâîëàìè # Subroutines for char -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà 1 -procedure Inc(var c: char); -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà n -procedure Inc(var c: char; n: integer); -/// Óìåíüøàåò êîä ñèìâîëà c íà 1 -procedure Dec(var c: char); -/// Óìåíüøàåò êîä ñèìâîëà c íà n -procedure Dec(var c: char; n: integer); -/// Âîçâðàùàåò ïðåäøåñòâóþùèé x ñèìâîë -function Pred(x: char): char; -/// Âîçâðàùàåò ñëåäóþùèé çà x ñèìâîë -function Succ(x: char): char; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Windows -function ChrAnsi(a: byte): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Windows -function OrdAnsi(a: char): byte; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function Chr(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function Ord(a: char): word; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function ChrUnicode(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function OrdUnicode(a: char): word; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpperCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowerCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowCase(ch: char): char; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòðîêàìè # Subroutines for string -///-procedure Str(i: öåëîå; var s: string); -/// Ïðåîáðàçóåò öåëîå çíà÷åíèå i ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(i: integer; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: real; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: single; var s: string); -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function Pos(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function PosEx(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string; from: integer): integer; -/// Âîçâðàùàåò äëèíó ñòðîêè -function Length(s: string): integer; -/// Óñòàíàâëèâàåò äëèíó ñòðîêè s ðàâíîé n -procedure SetLength(var s: string; n: integer); -/// Âñòàâëÿåò ïîäñòðîêó source â ñòðîêó s ñ ïîçèöèè index -procedure Insert(source: string; var s: string; index: integer); -/// Óäàëÿåò èç ñòðîêè s count ñèìâîëîâ ñ ïîçèöèè index -procedure Delete(var s: string; index, count: integer); -/// Âîçâðàùàåò ïîäñòðîêó ñòðîêè s äëèíû count ñ ïîçèöèè index -function Copy(s: string; index, count: integer): string; -///-function Concat(s1,s2,...): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1,s2,... -function Concat(params strs: array of string): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1 è s2 -function Concat(s1, s2: string): string; -/// Âîçâðàùàåò ñòðîêó â íèæíåì ðåãèñòðå -function LowerCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó â âåðõíåì ðåãèñòðå -function UpperCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó, ñîñòîÿùóþ èç count ñèìâîëîâ ch -function StringOfChar(ch: char; count: integer): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó -function ReverseString(s: string): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó â äèàïàçîíå äëèíû length íà÷èíàÿ ñ èíäåêñà index -function ReverseString(s: string; index,length: integer): string; -/// Ñðàâíèâàåò ñòðîêè. Âîçâðàùàåò çíà÷åíèå < 0 åñëè s1 0 åñëè s1>s2 è = 0 åñëè s1=s2 -function CompareStr(s1, s2: string): integer; -/// Âîçâðàùàåò ïåðâûå count ñèìâîëîâ ñòðîêè s -function LeftStr(s: string; count: integer): string; -/// Âîçâðàùàåò ïîñëåäíèå count ñèìâîëîâ ñòðîêè s -function RightStr(s: string; count: integer): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè è êîíå÷íûìè ïðîáåëàìè -function Trim(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè ïðîáåëàìè -function TrimLeft(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè êîíå÷íûìè ïðîáåëàìè -function TrimRight(s: string): string; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt(s: string): integer; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt64(s: string): int64; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToFloat(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToReal(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt(s: string; var value: integer): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt64(s: string; var value: int64): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: single): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToReal(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToSingle(s: string; var value: single): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadIntegerFromString(s: string; var from: integer): integer; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadRealFromString(s: string; var from: integer): real; -/// Ñ÷èòûâàåò èç ñòðîêè ïîñëåäîâàòåëüíîñòü ñèìâîëîâ äî ïðîáåëüíîãî ñèìâîëà íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWordFromString(s: string; var from: integer): string; -/// Âîçâðàùàåò True åñëè äîñòèãíóò êîíåö ñòðîêè èëè â ñòðîêå îñòàëèñü òîëüêî ïðîáåëüíûå ñèìâîëû è False â ïðîòèâíîì ñëó÷àå -function StringIsEmpty(s: string; var from: integer): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì. -///Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadIntegerFromString(s: string; var from: integer; var res: integer): boolean; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì. -///Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadRealFromString(s: string; var from: integer; var res: real): boolean; -///-procedure Val(s: string; var value: ÷èñëî; var err: integer); -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â ïåðåìåííóþ value. -///Åñëè ïðåîáðàçîâàíèå óñïåøíî, òî err=0, èíà÷å err>0 -procedure Val(s: string; var value: integer; var err: integer); -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: integer): string; -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: int64): string; -/// Ïðåîáðàçóåò âåùåñòâåííîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function FloatToStr(a: real): string; -/// Âîçâðàùàåò îòôîðìàòèðîâàííóþ ñòðîêó, ïîñòðîåííóþ ïî ôîðìàòíîé ñòðîêå è ñïèñêó ôîðìàòèðóåìûõ ïàðàìåòðîâ -function Format(formatstring: string; params pars: array of object): string; -//>> Îáùèå ïîäïðîãðàììû # Common subroutines -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Inc(var i: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Inc(var i: integer; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Dec(var i: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Dec(var i: integer; n: integer); -///-procedure Inc(var e: ïåðå÷èñëèìûé òèï); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Inc(var b: byte); -///-procedure Inc(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Inc(var b: byte; n: integer); -///-procedure Dec(var e: ïåðå÷èñëèìûé òèï); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Dec(var b: byte); -///-procedure Dec(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Dec(var b: byte; n: integer); -///-function Ord(a: öåëîå): öåëîå; -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: integer): integer; -///-function Ord(a: ïåðå÷èñëèìûé òèï): integer; -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: longword): longword; -///-function Succ(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: integer): integer; -///-function Succ(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: byte): byte; -///-function Pred(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: integer): integer; -///-function Pred(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: byte): byte; -/// Ìåíÿåò ìåñòàìè çíà÷åíèÿ äâóõ ïåðåìåííûõ -procedure Swap(var a, b: T); -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ñòðîêè -function Eoln: boolean; -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ïîòîêà ââîäà -function Eof: boolean; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äèíàìè÷åñêèìè ìàññèâàìè # Subroutines for array of T -///- function Low(a: array of T): integer; -/// Âîçâðàùàåò 0 -function Low(i: System.Array): integer; -///- function High(a: array of T): integer; -/// Âîçâðàùàåò âåðõíþþ ãðàíèöó äèíàìè÷åñêîãî ìàññèâà -function High(i: System.Array): integer; -///- function Length(a: array of T): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà -function Length(a: System.Array): integer; -///- function Length(a: array of T; dim: integer): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà ïî ðàçìåðíîñòè dim -function Length(a: System.Array; dim: integer): integer; -///- procedure SetLength(var a: array of T); -/// Óñòàíàâëèâàåò äëèíó îäíîìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -//procedure SetLength(var a: System.Array); -///- procedure SetLength(var a: array of T; n1,n2,...: integer); -/// Óñòàíàâëèâàåò ðàçìåðû n-ìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -//procedure SetLength(var a: System.Array); -///- function Copy(a: array of T): array of T; -/// Ñîçäà¸ò êîïèþ äèíàìè÷åñêîãî ìàññèâà -function Copy(a: System.Array): System.Array; -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(a: array of T); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(a: array of T; cmp: (T,T)->integer); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(a: array of T; less: (T,T)->boolean); -/// Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ -procedure Sort(l: List); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(l: List; cmp: (T,T)->integer); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(l: List; less: (T,T)->boolean); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â äèíàìè÷åñêîì ìàññèâå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: array of T); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå äèíàìè÷åñêîãî ìàññèâà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: array of T; index, count: integer); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â ñïèñêå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: List); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå ñïèñêà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: List; index, count: integer); -/// Ïåðåìåøèâàåò äèíàìè÷åñêèé ìàññèâ ñëó÷àéíûì îáðàçîì -procedure Shuffle(a: array of T); -/// Ïåðåìåøèâàåò ñïèñîê ñëó÷àéíûì îáðàçîì -procedure Shuffle(l: List); -//>> Ïîäïðîãðàììû äëÿ ãåíåðàöèè ïîñëåäîâàòåëüíîñòåé # Subroutines for sequence generation -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b -function Range(a, b: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñèìâîëîâ îò c1 äî c2 -function Range(c1, c2: char): sequence of char; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé (Èñïîëüçóéòå Partition) -function Range(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé -function Partition(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b ñ øàãîì step -function Range(a, b, step: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü óêàçàííûõ ýëåìåíòîâ -function Seq(params a: array of T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandom(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ âåùåñòâåííûõ ýëåìåíòîâ -function SeqRandomReal(n: integer := 10; a: real := 0; b: real := 10): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i) -function SeqGen(count: integer; f: integer->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i), íà÷èíàÿ ñ i=from -function SeqGen(count: integer; f: integer->T; from: integer): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function SeqGen(count: integer; first: T; next: T->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second, -///ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function SeqGen(count: integer; first, second: T; next: (T,T) ->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ ñ íà÷àëüíûì çíà÷åíèåì first, -///ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first: T; next: T->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second, -///ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first, second: T; next: (T,T) ->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ x -function SeqFill(count: integer; x: T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(n: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(n: integer): sequence of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(prompt: string; n: integer): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(prompt: string; n: integer): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(prompt: string; n: integer): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(cond: integer->boolean): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(cond: real->boolean): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(cond: string->boolean): sequence of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(prompt: string; cond: integer->boolean): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(prompt: string; cond: real->boolean): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(prompt: string; cond: string->boolean): sequence of string; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for array of T generation -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Arr(params a: array of T): array of T; -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíñòè -function Arr(a: sequence of T): array of T; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandom(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function ArrRandomReal(n: integer := 10; a: real := 0; b: real := 10): array of real; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i) -function ArrGen(count: integer; gen: integer->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i), íà÷èíàÿ ñ i=from -function ArrGen(count: integer; gen: integer->T; from: integer): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function ArrGen(count: integer; first: T; next: T->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first è second, ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function ArrGen(count: integer; first, second: T; next: (T,T) ->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ x -function ArrFill(count: integer; x: T): array of T; -/// Âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(n: integer): array of integer; -/// Âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(n: integer): array of real; -/// Âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(n: integer): array of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(prompt: string; n: integer): array of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(prompt: string; n: integer): array of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(prompt: string; n: integer): array of string; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for matrixes -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè ïî ñòðîêàì -function Matr(m,n: integer; params data: array of T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandom(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandomInteger(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function MatrRandomReal(m: integer := 5; n: integer := 5; a: real := 0; b: real := 10): array [,] of real; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrFill(m, n: integer; x: T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -/// Òðàíñïîíèðóåò äâóìåðíûé ìàññèâ -function Transpose(a: array [,] of T): array [,] of T; -/// Âîçâðàùàåò ìàòðèöó m íà n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrInteger(m, n: integer): array [,] of integer; -/// Âîçâðàùàåò ìàòðèöó m íà n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrReal(m, n: integer): array [,] of real; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ êîðòåæåé # Subroutines for tuple generation -///- function Rec(x1: T1, x2: T2,...): (T1,T2,...); -/// Âîçâðàùàåò êîðòåæ èç ýëåìåíòîâ ðàçíûõ òèïîâ -function Rec(x1: T1; x2: T2): System.Tuple; -//>> Êîðîòêèå ôóíêöèè Lst, LLst, HSet, SSet, Dict, KV # Short functions Lst, HSet, SSet, Dict, KV -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Lst(params a: array of T): List; -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function Lst(a: sequence of T): List; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function LLst(params a: array of T): LinkedList; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function LLst(a: sequence of T): LinkedList; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå óêàçàííûìè çíà÷åíèÿìè -function HSet(params a: array of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function HSet(a: sequence of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(params a: array of T): SortedSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(a: sequence of T): SortedSet; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of KeyValuePair): Dictionary; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of (TKey, TVal)): Dictionary; -/// Âîçâðàùàåò ïàðó ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function KV(key: TKey; value: TVal): KeyValuePair; -//>> Ãåíåðàöèÿ áåñêîíå÷íûõ ïîñëåäîâàòåëüíîñòåé # Infinite sequences -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì 1 -function Step(Self: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: integer; step: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: real; step: real): sequence of real; extensionmethod; -/// Ïîâòîðÿåò ïîñëåäîâàòåëüíîñòü áåñêîíå÷íîå ÷èñëî ðàç -function Cycle(Self: sequence of T): sequence of T; extensionmethod; -//>> Ôèêòèâíàÿ ñåêöèÿ XXX - íå óäàëÿòü! # XXX -AdjGroupClass = class -private -cur: T; -enm: IEnumerator; -fin: boolean; -public -begin -enm := a.GetEnumerator(); -fin := enm.MoveNext; -if fin then -cur := enm.Current; -end; -function TakeGroup: sequence of T; -begin -yield cur; -fin := enm.movenext; -while fin do -begin -if enm.current = cur then -yield enm.current -else -begin -cur := enm.Current; -break; -end; -fin := enm.movenext; -end; -end; -end; -//>> Ìåòîä ðàñøèðåíèÿ Print äëÿ ýëåìåíòàðíûõ òèïîâ # Print for elementary types -function Print(Self: integer): integer; extensionmethod; -function Print(Self: real): real; extensionmethod; -function Print(Self: char): char; extensionmethod; -function Print(Self: boolean): boolean; extensionmethod; -function Print(Self: BigInteger): BigInteger; extensionmethod; -function Println(Self: integer): integer; extensionmethod; -function Println(Self: real): real; extensionmethod; -function Println(Self: char): char; extensionmethod; -function Println(Self: boolean): boolean; extensionmethod; -function Println(Self: BigInteger): BigInteger; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ïîñëåäîâàòåëüíîñòåé # Extension methods for sequence of T -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T; delim: string): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T; delim: string): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü ñòðîê â ôàéë -function WriteLines(Self: sequence of string; fname: string): sequence of string; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò îòîáðàæàåòñÿ ñ ïîìîùüþ ôóíêöèè map è âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T; map: T->T1): sequence of T; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T; delim: string): string; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T): string; extensionmethod; -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè -procedure ForEach(Self: sequence of T; action: T -> ()); extensionmethod; -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè, çàâèñÿùåå îò íîìåðà ýëåìåíòà -procedure ForEach(Self: sequence of T; action: (T,integer) -> ()); extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Sorted(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function SortedDescending(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Order(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function OrderDescending(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò ìíîæåñòâî HashSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToHashSet(Self: sequence of T): HashSet; extensionmethod; -/// Âîçâðàùàåò ìíîæåñòâî SortedSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToSortedSet(Self: sequence of T): SortedSet; extensionmethod; -/// Âîçâðàùàåò LinkedList ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToLinkedList(Self: sequence of T): LinkedList; extensionmethod; -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function MinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function MaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèå count ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè -function TakeLast(Self: sequence of T; count: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü áåç ïîñëåäíèõ count ýëåìåíòîâ -function SkipLast(self: sequence of T; count: integer := 1): sequence of T; extensionmethod; -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod; -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòè íà äâå â ïîçèöèè ind -function SplitAt(Self: sequence of T; ind: integer): (sequence of T, sequence of T); extensionmethod; -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ -function Partition(Self: sequence of T; cond: T->boolean): (sequence of T, sequence of T); extensionmethod; -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ, â êîòîðîì ó÷àñòâóåò èíäåêñ -function Partition(Self: sequence of T; cond: (T,integer)->boolean): (sequence of T, sequence of T); extensionmethod; -/// Îáúåäèíÿåò äâå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod; -/// Îáúåäèíÿåò òðè ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod; -/// Îáúåäèíÿåò ÷åòûðå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé íà äâå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1)): (sequence of T, sequence of T1); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé íà òðè ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2)): (sequence of T, sequence of T1, sequence of T2); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé íà ÷åòûðå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2, T3)): (sequence of T, sequence of T1, sequence of T2, sequence of T3); extensionmethod; -/// ×åðåäóåò ýëåìåíòû äâóõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a: sequence of T): sequence of T; extensionmethod; -/// ×åðåäóåò ýëåìåíòû òðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b: sequence of T): sequence of T; extensionmethod; -/// ×åðåäóåò ýëåìåíòû ÷åòûðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b, c: sequence of T): sequence of T; extensionmethod; -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ åäèíèöû -function Numerate(Self: sequence of T): sequence of (integer, T); extensionmethod; -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ íîìåðà from -function Numerate(Self: sequence of T; from: integer): sequence of (integer, T); extensionmethod; -/// Òàáóëèðóåò ôóíêöèþ ïîñëåäîâàòåëüíîñòüþ -function Tabulate(Self: sequence of T; F: T->T1): sequence of (T, T1); extensionmethod; -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ -function Pairwise(Self: sequence of T): sequence of (T, T); extensionmethod; -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ, ïðèìåíÿåò func ê êàæäîé ïàðå ïîëó÷åííûõ ýëåìåíòîâ è ïîëó÷àåò íîâóþ ïîñëåäîâàòåëüíîñòü -function Pairwise(Self: sequence of T; func: (T,T)->Res): sequence of Res; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size -function Batch(Self: sequence of T; size: integer): sequence of sequence of T; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size è ïðèìåíÿåò ïðîåêöèþ ê êàæäîé ñåðèè -function Batch(Self: sequence of T; size: integer; proj: Func, Res>): sequence of Res; extensionmethod; -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 -function Slice(Self: sequence of T; from, step: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 äëèíû íå áîëåå count -function Slice(Self: sequence of T; from, step, count: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of real): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of real): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T)->T1): sequence of T1; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T,integer)->T1): sequence of T1; extensionmethod; -/// Ãðóïïèðóåò îäèíàêîâûå ïîäðÿä èäóùèå ýëåìåíòû, ïîëó÷àÿ ïîñëåäîâàòåëüíîñòü ìàññèâîâ -function AdjacentGroup(Self: sequence of T): sequence of array of T; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ñïèñêîâ # Extension methods for List T -/// Ïåðåìåøèâàåò ýëåìåíòû ñïèñêà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: List): List; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; start: integer := 0): integer; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: IList; index: integer := 0): integer; extensionmethod;where T: IComparable; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: IList; index: integer := 0): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: IList): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMin(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìàêñèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: IList): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMax(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -/// Çàìåíÿåò â ìàññèâå èëè ñïèñêå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: IList; oldValue, newValue: T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: T->T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: (T,integer)->T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà èëè ñïèñêà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: IList; f: integer->T); extensionmethod; -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step -function Slice(Self: List; from, step: integer): List; extensionmethod; -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: List; from, step, count: integer): List; extensionmethod; -/// Óäàëÿåò ïîñëåäíèé ýëåìåíò. Åñëè ýëåìåíòîâ íåò, ãåíåðèðóåò èñêëþ÷åíèå -function RemoveLast(Self: List): List; extensionmethod; -procedure CorrectFromTo(situation: integer; Len: integer; var from, to: integer; step: integer); -//>> Ìåòîäû ðàñøèðåíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array [,] of T -/// Êîëè÷åñòâî ñòðîê â äâóìåðíîì ìàññèâå -function RowCount(Self: array [,] of T): integer; extensionmethod; -/// Êîëè÷åñòâî ñòîëáöîâ â äâóìåðíîì ìàññèâå -function ColCount(Self: array [,] of T): integer; extensionmethod; -/// Âûâîä äâóìåðíîãî ìàññèâà, w - øèðèíà ïîëÿ âûâîäà -function Print(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f -function Print(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -/// Âûâîä äâóìåðíîãî ìàññèâà è ïåðåõîä íà ñëåäóþùóþ ñòðîêó, w - øèðèíà ïîëÿ âûâîäà -function Println(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f è ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function Println(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà -function Row(Self: array [,] of T; k: integer): array of T; extensionmethod; -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà -function Col(Self: array [,] of T; k: integer): array of T; extensionmethod; -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function RowSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function ColSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê äâóìåðíîãî ìàññèâà -function Rows(Self: array [,] of T): sequence of sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòîëáöîâ äâóìåðíîãî ìàññèâà -function Cols(Self: array [,] of T): sequence of sequence of T; extensionmethod; -/// Ìåíÿåò ìåñòàìè äâå ñòðîêè äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapRows(Self: array [,] of T; k1, k2: integer); extensionmethod; -/// Ìåíÿåò ìåñòàìè äâà ñòîëáöà äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapCols(Self: array [,] of T; k1, k2: integer); extensionmethod; -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetRow(k,a.ToArray); -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetCol(k,a.ToArray); -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü (a[i,j],i,j) -function ElementsWithIndexes(Self: array [,] of T): sequence of (T, integer, integer); extensionmethod; -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòðîêàì -function ElementsByRow(Self: array [,] of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòîëáöàì -function ElementsByCol(Self: array [,] of T): sequence of T; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: T->T1): array [,] of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: (T,integer,integer)->T1): array [,] of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: T->T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: (T,integer,integer)->T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû äâóìåðíîãî ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array [,] of T; f: (integer,integer) ->T); extensionmethod; -//>> Ôèêòèâíàÿ ñåêöèÿ YYY - íå óäàëÿòü! # YYY -function Matr(m,n: integer; params data: array of T): array [,] of T; -function MatrRandom(m: integer; n: integer; a, b: integer): array [,] of integer; -function MatrRandomInteger(m: integer; n: integer; a, b: integer): array [,] of integer; -function MatrRandomReal(m: integer; n: integer; a, b: real): array [,] of real; -function MatrFill(m, n: integer; x: T): array [,] of T; -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -function Transpose(a: array [,] of T): array [,] of T; -function ReadMatrInteger(m, n: integer): array [,] of integer; -function ReadMatrReal(m, n: integer): array [,] of real; -//>> Ìåòîäû ðàñøèðåíèÿ îäíîìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array of T -/// Ïåðåìåøèâàåò ýëåìåíòû ìàññèâà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: array of T): array of T; extensionmethod; -{/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; start: integer := 0): integer; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of T): T; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of T): T; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of integer): integer; extensionmethod; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of real): real; extensionmethod; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of integer): integer; extensionmethod; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of real): real; extensionmethod; -{/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: array of T): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMin(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: array of T): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMax(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -/// Çàìåíÿåò â ìàññèâå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: array of T; oldValue,newValue: T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(self: array of T; f: T -> T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array of T; f: integer -> T); extensionmethod; -/// Âûïîëíÿåò áèíàðíûé ïîèñê â îòñîðòèðîâàííîì ìàññèâå -function BinarySearch(Self: array of T; x: T): integer; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: T->T1): array of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: (T,integer)->T1): array of T1; extensionmethod; -/// Âûïîëíÿåò ïîèñê ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function Find(Self: array of T; p: T->boolean): T; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -/// Âîçâðàùàåò â âèäå ìàññèâà âñå ýëåìåíòû, óäîâëåòâîðÿþùèå ïðåäèêàòó -function FindAll(Self: array of T; p: T->boolean): array of T; extensionmethod; -/// Âûïîëíÿåò ïîèñê ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLast(Self: array of T; p: T->boolean): T; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(Self: array of T); extensionmethod; -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ, èñïîëüçóÿ cmp â êà÷åñòâå ôóíêöèè ñðàâíåíèÿ ýëåìåíòîâ -procedure Sort(Self: array of T; cmp: (T,T) ->integer); extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ìàññèâà -function High(Self: System.Array); extensionmethod := High(Self); -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ìàññèâà -function Low(Self: System.Array); extensionmethod := Low(Self); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ îäíîìåðíîãî ìàññèâà -function Indexes(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: T->boolean): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: (T,integer) ->boolean): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step -function Slice(Self: array of T; from, step: integer): array of T; extensionmethod; -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: array of T; from, step, count: integer): array of T; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà integer # Extension methods for integer -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: integer): real; extensionmethod; -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: integer): integer; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: integer; a, b: integer): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: integer; a,b: integer): boolean; extensionmethod; -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå ÷åòíûì -function IsEven(Self: integer): boolean; extensionmethod; -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå íå÷åòíûì -function IsOdd(Self: integer): boolean; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ÷èñåë îò 1 äî äàííîãî -function Range(Self: integer): sequence of integer; extensionmethod; -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n -function To(Self: integer; n: integer): sequence of integer; extensionmethod; -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n â óáûâàþùåì ïîðÿäêå -function Downto(Self: integer; n: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ 0,1,...n-1 -function Times(Self: integer): sequence of integer; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà BigInteger # Extension methods for BigInteger -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: BigInteger): real; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà real # Extension methods for real -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: real; a, b: real): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: real; a,b: real): boolean; extensionmethod; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: real): real; extensionmethod; -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: real): real; extensionmethod; -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî öåëîãî -function Round(Self: real): integer; extensionmethod; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(Self: real; digits: integer): real; extensionmethod; -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(Self: real): BigInteger; extensionmethod; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà -function Trunc(Self: real): integer; extensionmethod; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà êàê äëèííîå öåëîå -function TruncBigInteger(Self: real): BigInteger; extensionmethod; -/// Âîçâðàùàåò âåùåñòâåííîå, îòôîðìàòèðîâàííîå ê ñòðîêå ñ frac öèôðàìè ïîñëå äåñÿòè÷íîé òî÷êè -function ToString(Self: real; frac: integer): string; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà char # Extension methods for char -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: char; a, b: char): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: char; a,b: char): boolean; extensionmethod; -/// Ïðåäûäóùèé ñèìâîë -function Pred(Self: char); extensionmethod := PABCSystem.Pred(Self); -/// Ñëåäóþùèé ñèìâîë -function Succ(Self: char); extensionmethod := PABCSystem.Succ(Self); -/// Êîä ñèìâîëà â êîäèðîâêå Unicode -function Code(Self: char): integer; extensionmethod := word(Self); -/// ßâëÿåòñÿ ëè ñèìâîë öèôðîé -function IsDigit(Self: char); extensionmethod := char.IsDigit(Self); -/// ßâëÿåòñÿ ëè ñèìâîë áóêâîé -function IsLetter(Self: char): boolean; extensionmethod; -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ íèæíåãî ðåãèñòðà -function IsLower(Self: char): boolean; extensionmethod; -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ âåðõíåãî ðåãèñòðà -function IsUpper(Self: char): boolean; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â öèôðó -function ToDigit(Self: char): integer; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function ToLower(Self: char): char; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function ToUpper(Self: char): char; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà string # Extension methods for string -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: string; a, b: string): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: string; a,b: string): boolean; extensionmethod; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadInteger(Self: string; var from: integer): integer; extensionmethod; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadReal(Self: string; var from: integer): real; extensionmethod; -/// Ñ÷èòûâàåò ñëîâî èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWord(Self: string; var from: integer): string; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â öåëîå -function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); -/// Ïðåîáðàçóåò ñòðîêó â BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå -function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); -/// Ïðåîáðàçóåò ñòðîêó â öåëîå è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå è çàïèñûâàåò åãî â value. -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); -/// Ïðåîáðàçóåò ñòðîêó â öåëîå -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå -///Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToReal(Self: string; defaultvalue: real): real; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ ñëîâ -function ToWords(Self: string; params delim: array of char): array of string; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ öåëûõ -function ToIntegers(Self: string): array of integer; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ âåùåñòâåííûõ -function ToReals(Self: string): array of real; extensionmethod; -/// Âîçâðàùàåò èíâåðñèþ ñòðîêè -function Inverse(Self: string): string; extensionmethod; -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííîé ñòðîêîé çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg, repl: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííûì ïðåîáðàçîâàíèåì çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg: string; repl: Match->string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ýëåìåíòîâ òèïà Match -function Matches(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of Match; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå ïåðâîå âõîæäåíèå ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò åãî â âèäå ñòðîêè -function MatchValue(Self: string; reg: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ñòðîê -function MatchValues(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of string; extensionmethod; -/// Óäîâëåòâîðÿåò ëè ñòðîêà ðåãóëÿðíîìó âûðàæåíèþ -function IsMatch(Self: string; reg: string; options: RegexOptions := RegexOptions.None): boolean; extensionmethod := Regex.IsMatch(Self, reg, options); -/// Óäàëÿåò â ñòðîêå âñå âõîæäåíèÿ óêàçàííûõ ñòðîê -function Remove(Self: string; params targets: array of string): string; extensionmethod; -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ïðàâûõ ñèìâîëîâ -function Right(Self: string; length: integer): string; extensionmethod; -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ëåâûõ ñèìâîëîâ -function Left(Self: string; length: integer): string; extensionmethod; -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step -function Slice(Self: string; from, step: integer): string; extensionmethod; -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: string; from, step, count: integer): string; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Func # Extension methods for Func -/// Ñóïåðïîçèöèÿ ôóíêöèé -function Compose(Self: T2->TResult; composer: T1->T2): T1->TResult; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Complex # Extension methods for Complex -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå çíà÷åíèå -function Conjugate(Self: Complex): Complex; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ñëîâàðåé # Extension methods for IDictionary -/// Âîçâðàùàåò â ñëîâàðå çíà÷åíèå, ñâÿçàííîå ñ óêàçàííûì êëþ÷îì, à åñëè òàêîãî êëþ÷à íåò, òî çíà÷åíèå ïî óìîë÷àíèþ -function Get(Self: IDictionary; K: Key): Value; extensionmethod; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òèïèçèðîâàííûìè ôàéëàìè # Subroutines for typed files -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenBinary(fname: string): file of T; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateBinary(fname: string): file of T; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFile(fname: string): file of T; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFile(fname: string): file of T; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileInteger(fname: string): file of integer; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileReal(fname: string): file of real; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileInteger(fname: string): file of integer; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileReal(fname: string): file of real; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -procedure WriteElements(fname: string; ss: sequence of T); -//>> Ìåòîäû ðàñøèðåíèÿ òèïèçèðîâàííûõ ôàéëîâ # Extension methods for typed files -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â òèïèçèðîâàííîì ôàéëå íà ýëåìåíò ñ íîìåðîì n -function Seek(Self: file of T; n: int64): file of T; extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò ñëåäóþùèé ýëåìåíò òèïèçèðîâàííîãî ôàéëà -function Read(Self: file of T): T; extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò äâà ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read2(Self: file of T): (T,T); extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò òðè ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read3(Self: file of T): (T,T,T); extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ îòêðûòîãî òèïèçèðîâàííîãî ôàéëà îò òåêóùåãî ýëåìåíòà äî êîíå÷íîãî -function ReadElements(Self: file of T): sequence of T; extensionmethod; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -function ReadElements(fname: string): sequence of T; -/// Çàïèñûâàåò äàííûå â òèïèçèðîâàííûé ôàéë -procedure Write(Self: file of T; params vals: array of T); extensionmethod; -/// Îòêðûâàåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Reset(Self: file of T); extensionmethod; -/// Ñîçäàåò íîâûé èëè îáíóëÿåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Rewrite(Self: file of T); extensionmethod; diff --git a/PABCNetHelp/PABCSystemDocGen/PABC2.pas b/PABCNetHelp/PABCSystemDocGen/PABC2.pas deleted file mode 100644 index 4b353fad4..000000000 --- a/PABCNetHelp/PABCSystemDocGen/PABC2.pas +++ /dev/null @@ -1,1546 +0,0 @@ -//>> Ñòàíäàðòíûå êîíñòàíòû # Standard constants -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà shortint -MaxShortInt = shortint.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà byte -MaxByte = byte.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà smallint -MaxSmallInt = smallint.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà word -MaxWord = word.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà longword -MaxLongWord = longword.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà int64 -MaxInt64 = int64.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà uint64 -MaxUInt64 = uint64.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà double -MaxDouble = real.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà double -MinDouble = real.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà real -MaxReal = real.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà real -MinReal = real.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà single -MaxSingle = single.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà single -MinSingle = single.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà integer -MaxInt = integer.MaxValue; -/// Êîíñòàíòà Pi -Pi = 3.141592653589793; -/// Êîíñòàíòà E -E = 2.718281828459045; -/// Êîíñòàíòà ïåðåõîäà íà íîâóþ ñòðîêó -NewLine = System.Environment.NewLine; -//>> Ñòàíäàðòíûå òèïû # Standard types -/// Áàçîâûé òèï îáúåêòîâ -Object = System.Object; -/// Áàçîâûé òèï èñêëþ÷åíèé -Exception = System.Exception; -/// double = real -double = System.Double; -/// longint = integer -longint = System.Int32; -/// cardinal = longword -cardinal = System.UInt32; -/// Ïðåäñòàâëÿåò 128-áèòíîå âåùåñòâåííîå ÷èñëî -decimal = System.Decimal; -/// Ïðåäñòàâëÿåò ïðîèçâîëüíî áîëüøîå öåëîå ÷èñëî -BigInteger = System.Numerics.BigInteger; -/// Ïðåäñòàâëÿåò äàòó è âðåìÿ -DateTime = System.DateTime; -/// Ïðåäñòàâëÿåò êîìïëåêñíîå ÷èñëî -Complex = System.Numerics.Complex; -/// Ïðåäñòàâëÿåò êîðòåæ -Tuple = System.Tuple; -/// Ïðåäñòàâëÿåò ñïèñîê íà áàçå äèíàìè÷åñêîãî ìàññèâà -List = System.Collections.Generic.List; -/// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer -Comparer = System.Collections.Generic.Comparer; -/// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer -IComparable = System.IComparable; -/// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå õåø-òàáëèöû -HashSet = System.Collections.Generic.HashSet; -/// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå áèíàðíîãî äåðåâà ïîèñêà -SortedSet = System.Collections.Generic.SortedSet; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð Êëþ÷-Çíà÷åíèå), ðåàëèçîâàííûé íà áàçå õåø-òàáëèöû -Dictionary = System.Collections.Generic.Dictionary; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ, ðåàëèçîâàííûé íà áàçå áèíàðíîãî äåðåâà ïîèñêà -SortedDictionary = System.Collections.Generic.SortedDictionary; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð êëþ÷-çíà÷åíèå), ðåàëèçîâàííûé íà áàçå äèíàìè÷åñêîãî ìàññèâà ïàð -SortedList = System.Collections.Generic.SortedList; -/// Ïðåäñòàâëÿåò ïàðó Êëþ÷-Çíà÷åíèå äëÿ àññîöèàòèâíîãî ìàññèâà -KeyValuePair = System.Collections.Generic.KeyValuePair; -/// Ïðåäñòàâëÿåò äâóñâÿçíûé ñïèñîê -LinkedList = System.Collections.Generic.LinkedList; -/// Ïðåäñòàâëÿåò óçåë äâóñâÿçíîãî ñïèñêà -LinkedListNode = System.Collections.Generic.LinkedListNode; -/// Ïðåäñòàâëÿåò î÷åðåäü - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïåðâûé âîøåë-ïåðâûé âûøåë" -Queue = System.Collections.Generic.Queue; -/// Ïðåäñòàâëÿåò ñòåê - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïîñëåäíèé âîøåë-ïåðâûé âûøåë" -Stack = System.Collections.Generic.Stack; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè -ICollection = System.Collections.Generic.ICollection; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ñðàâíåíèÿ äâóõ ýëåìåíòîâ -IComparer = System.Collections.Generic.IComparer; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ íàáîðà ïàð Êëþ÷-Çíà÷åíèå -IDictionary = System.Collections.Generic.IDictionary; -/// Ïðåäñòàâëÿåò èíòåðôåéñ, ïðåäîñòàâëÿþùèé ïåðå÷èñëèòåëü äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè -IEnumerable = System.Collections.Generic.IEnumerable; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè -IEnumerator = System.Collections.Generic.IEnumerator; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïîääåðæêè ñðàâíåíèÿ íà ðàâåíñòâî -IEqualityComparer = System.Collections.Generic.IEqualityComparer; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè ñ äîñòóïîì ïî èíäåêñó -IList = System.Collections.Generic.IList; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ìíîæåñòâà -ISet = System.Collections.Generic.ISet; -/// Ïðåäñòàâëÿåò èçìåíÿåìóþ ñòðîêó ñèìâîëîâ -StringBuilder = System.Text.StringBuilder; -/// Òèï êîäèðîâêè ñèìâîëîâ -Encoding = System.Text.Encoding; -/// Ïðåäñòàâëÿåò äåéñòâèå áåç ïàðàìåòðîâ -Action0 = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ îäíèì ïàðàìåòðîì -Action = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ äâóìÿ ïàðàìåòðàìè -Action2 = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ òðåìÿ ïàðàìåòðàìè -Action3 = System.Action; -/// Ïðåäñòàâëÿåò ôóíêöèþ áåç ïàðàìåòðîâ -Func0 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì -Func = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè -Func2 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè -Func3 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì öåëîãî òèïà, âîçâðàùàþùóþ öåëîå -IntFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì âåùåñòâåííîãî òèïà, âîçâðàùàþùóþ âåùåñòâåííîå -RealFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì ñòðîêîâîãî òèïà, âîçâðàùàþùóþ ñòðîêó -StringFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì, âîçâðàùàþùóþ boolean -Predicate = System.Predicate; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean -Predicate2 = function(x1: T1; x2: T2): boolean; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean -Predicate3 = function(x1: T1; x2: T2; x3: T3): boolean; -/// Ïðåäñòàâëÿåò ðåãóëÿðíîå âûðàæåíèå -Regex = System.Text.RegularExpressions.Regex; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îòäåëüíîãî ñîâïàäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ -Match = System.Text.RegularExpressions.Match; -/// Ïðåäñòàâëÿåò ìåòîä, âûçûâàåìûé ïðè îáíàðóæåíèè ñîâïàäåíèÿ â Regex.Replace -MatchEvaluator = System.Text.RegularExpressions.MatchEvaluator; -/// Ïðåäñòàâëÿåò íàáîð óñïåøíûõ ñîâïàäåíèé ðåãóëÿðíîãî âûðàæåíèÿ -MatchCollection = System.Text.RegularExpressions.MatchCollection; -/// Ïðåäñòàâëÿåò ïàðàìåòðû ðåãóëÿðíîãî âûðàæåíèÿ -RegexOptions = System.Text.RegularExpressions.RegexOptions; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îäíîé ãðóïïû ïðè âûïîëíåíèè Regex.Match -RegexGroup = System.Text.RegularExpressions.Group; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç íàáîðà ãðóïï ïðè âûïîëíåíèè Regex.Match -RegexGroupCollection = System.Text.RegularExpressions.GroupCollection; -/// Ïðåäñòàâëÿåò òèï êîðîòêîé ñòðîêè ôèêñèðîâàííîé äëèíû 255 ñèìâîëîâ -ShortString = string[255]; -//>> Ïîäïðîãðàììû ââîäà # Read subroutines -///- procedure Read(a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû -procedure Read; -///- procedure Readln(a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln; -/// Ââîäèò ÷èñëîâîå çíà÷åíèå x êëàâèàòóðû. Âîçâðàùàåò False åñëè ïðè ââîäå ïðîèçîøëà îøèáêà -function TryRead(var x: integer): boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean: boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean: boolean; -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2: (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2: (string, string); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3: (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3: (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2(prompt: string): (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2(prompt: string): (string, string); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3(prompt: string): (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3(prompt: string): (string, string, string); -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean(prompt: string): boolean; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean(prompt: string): boolean; -///- procedure Read(f: ôàéë; a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... èç ôàéëà f -procedure Read(f: Text); -///- procedure Readln(f: Text; a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... èç òåêñòîâîãî ôàéëà f è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln(f: Text); -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadBoolean(f: Text): boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnBoolean(f: Text): boolean; -//>> Ïîäïðîãðàììû âûâîäà # Write subroutines -///- procedure Write(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí -procedure Write; -///- procedure Writeln(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure Writeln; -///- procedure Write(f: ôàéë; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â ôàéë f -procedure Write(f: Text); -///- procedure Writeln(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure Writeln(f: Text); -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(f: Text; formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstrè îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(f: Text; formatstr: string; params args: array of object); -///- procedure Print(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(s: string); -///- procedure Print(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(f: Text; params args: array of object); -///- procedure Println(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(params args: array of object); -///- procedure Println(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(f: Text; params args: array of object); -//>> Îáùèå ïîäïðîãðàììû äëÿ ðàáîòû ñ ôàéëàìè # Common subroutines for files -///- procedure Assign(f: ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure Assign(f: AbstractBinaryFile; name: string); -///- procedure AssignFile(f: ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure AssignFile(f: AbstractBinaryFile; name: string); -///- procedure Close(f: ôàéë); -/// Çàêðûâàåò ôàéë -procedure Close(f: AbstractBinaryFile); -///- procedure CloseFile(f: ôàéë); -/// Çàêðûâàåò ôàéë -procedure CloseFile(f: AbstractBinaryFile); -///- function Eof(f: ôàéë): boolean; -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function Eof(f: AbstractBinaryFile): boolean; -///- procedure Erase(f: ôàéë); -/// Óäàëÿåò ôàéë, ñâÿçàííûé ñ ôàéëîâîé ïåðåìåííîé -procedure Erase(f: AbstractBinaryFile); -///- procedure Rename(f: ôàéë; newname: string); -/// Ïåðåèìåíîâûâàåò ôàéë, ñâÿçàíûé ñ ôàéëîâîé ïåðåìåííîé, äàâàÿ åìó èìÿ newname. -procedure Rename(f: AbstractBinaryFile; newname: string); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òåêñòîâûìè ôàéëàìè # Subroutines for text files -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â êîäèðîâêå Windows.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â óêàçàííîé êîäèðîâêå.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â êîäèðîâêå Windows.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â óêàçàííîé êîäèðîâêå.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; name: string; en: Encoding); -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â êîäèðîâêå Windows -function OpenRead(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â óêàçàííîé êîäèðîâêå -function OpenRead(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â êîäèðîâêå Windows -function OpenWrite(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â óêàçàííîé êîäèðîâêå -function OpenWrite(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â êîäèðîâêå Windows -function OpenAppend(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -function OpenAppend(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function Eoln(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function SeekEof(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function SeekEoln(f: Text): boolean; -/// Çàïèñûâàåò ñîäåðæèìîå áóôåðà ôàéëà íà äèñê -procedure Flush(f: Text); -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string; en: Encoding): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string; en: Encoding): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â êîäèðîâêå Windows â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string): string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â óêàçàíîé êîäèðîâêå â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string; en: Encoding): string; -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string; en: Encoding); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äâîè÷íûìè ôàéëàìè # Subroutines for binary files -///- procedure Reset(f: äâîè÷íûé ôàéë); -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: AbstractBinaryFile); -///- procedure Reset(f: äâîè÷íûé ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: AbstractBinaryFile; name: string); -///- procedure Rewrite(f: äâîè÷íûé ôàéë); -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå. Åñëè ôàéë ñóùåñòâîâàë, îí îáíóëÿåòñÿ.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: AbstractBinaryFile); -///- procedure Rewrite(f: äâîè÷íûé ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: AbstractBinaryFile; name: string); -///- procedure Truncate(f: äâîè÷íûé ôàéë); -/// Óñåêàåò äâîè÷íûé ôàéë, îòáðàñûâàÿ âñå ýëåìåíòû ñ ïîçèöèè ôàéëîâîãî óêàçàòåëÿ.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Truncate(f: AbstractBinaryFile); -///- function FilePos(f: äâîè÷íûé ôàéë): int64; -/// Âîçâðàùàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå -function FilePos(f: TypedFile): int64; -///- function FileSize(f: äâîè÷íûé ôàéë): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ â äâîè÷íîì ôàéëå -function FileSize(f: TypedFile): int64; -///- procedure Seek(f: äâîè÷íûé ôàéë; n: int64); -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå íà ýëåìåíò ñ äàííûì íîìåðîì -procedure Seek(f: TypedFile; n: int64); -//>> Cèñòåìíûå ïîäïðîãðàììû # System subroutines -/// Âîçâðàùàåò âåðñèþ PascalABC.NET -function PascalABCVersion: string; -/// Âîçâðàùàåò êîëè÷åñòâî ïàðàìåòðîâ êîìàíäíîé ñòðîêè -function ParamCount: integer; -/// Âîçâðàùàåò i-òûé ïàðàìåòð êîìàíäíîé ñòðîêè -function ParamStr(i: integer): string; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetDir: string; -/// Ìåíÿåò òåêóùèé êàòàëîã -procedure ChDir(s: string); -/// Ñîçäàåò êàòàëîã -procedure MkDir(s: string); -/// Óäàëÿåò êàòàëîã -procedure RmDir(s: string); -/// Ñîçäàåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî ñîçäàí -function CreateDir(s: string): boolean; -/// Óäàëÿåò ôàéë. Åñëè ôàéë íå ìîæåò áûòü óäàëåí, òî âîçâðàùàåò False -function DeleteFile(s: string): boolean; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetCurrentDir: string; -/// Óäàëÿåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function RemoveDir(s: string): boolean; -/// Ïåðåèìåíîâûâàåò ôàéë name, äàâàÿ åìó íîâîå èìÿ newname. Âîçâðàùàåò True, åñëè ôàéë óñïåøíî ïåðåèìåíîâàí -function RenameFile(name, newname: string): boolean; -/// Óñòàíàâëèâàåò òåêóùèé êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function SetCurrentDir(s: string): boolean; -/// Èçìåíÿåò ðàñøèðåíèå ôàéëà ñ èìåíåì name íà newext -function ChangeFileNameExtension(name, newext: string): string; -/// Âîçâðàùàåò True, åñëè ôàéë ñ èìåíåì name ñóùåñòâóåò -function FileExists(name: string): boolean; -/// Âûâîäèò â ñïåöèàëüíîì îêíå ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; sourceFile: string := ''; line: integer := 0); -/// Âûâîäèò â ñïåöèàëüíîì îêíå äèàãíîñòè÷åñêîå ñîîáùåíèå è ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; message: string; sourceFile: string := ''; line: integer := 0); -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskFree(diskname: string): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskSize(diskname: string): int64; -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskFree(disk: integer): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskSize(disk: integer): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà íà÷àëà ðàáîòû ïðîãðàììû -function Milliseconds: integer; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà ïîñëåäíåãî âûçîâà Milliseconds èëè MillisecondsDelta -function MillisecondsDelta: integer; -/// Çàâåðøàåò ðàáîòó ïðîãðàììû -procedure Halt; -/// Çàâåðøàåò ðàáîòó ïðîãðàììû, âîçâðàùàÿ êîä îøèáêè exitCode -procedure Halt(exitCode: integer); -/// Äåëàåò ïàóçó íà ms ìèëëèñåêóíä -procedure Sleep(ms: integer); -/// Âîçâàùàåò èìÿ çàïóùåííîãî .exe-ôàéëà -function GetEXEFileName: string; -/// Ïðåîáðàçóåò óêàçàòåëü ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function PointerToString(p: pointer): string; -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Exec(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Exec(filename: string; args: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Execute(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Execute(filename: string; args: string); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà -function EnumerateFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè -function EnumerateDirectories(path: string): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllDirectories(path: string): sequence of string; -///-procedure New(var p: ^T); -/// Âûäåëÿåò äèíàìè÷åñêóþ ïàìÿòü ðàçìåðà sizeof(T) è âîçâðàùàåò â ïåðåìåííîé p óêàçàòåëü íà íåå. Òèï T äîëæåí áûòü ðàçìåðíûì -//procedure New(var p: ^T); -///-procedure Dispose(var p: ^T); -/// Îñâîáîæäàåò äèíàìè÷åñêóþ ïàìÿòü, íà êîòîðóþ óêàçûâàåò p -//procedure Dispose(var p: ^T); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ èìåíàìè ôàéëîâ # Functions for file names -/// Âûäåëÿåò èìÿ ôàéëà èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileName(fname: string): string; -/// Âûäåëÿåò ðàñøèðåíèå èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileExt(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFilePath(fname: string): string; -/// Âûäåëÿåò èìÿ äèñêà è ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDir(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDrive(fname: string): string; -/// Âîçâðàùàåò ïîëíîå èìÿ ôàéëà fname -function ExpandFileName(fname: string): string; -//>> Ìàòåìàòè÷åñêèå ïîäïðîãðàììû # Math subroutines -///-function Sign(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò çíàê ÷èñëà x -function Sign(x: shortint): integer; -///-function Abs(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìîäóëü ÷èñëà x -function Abs(x: integer): integer; -/// Âîçâðàùàåò ñèíóñ ÷èñëà x -function Sin(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé ñèíóñ ÷èñëà x -function Sinh(x: real): real; -/// Âîçâðàùàåò êîñèíóñ ÷èñëà x -function Cos(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé êîñèíóñ ÷èñëà x -function Cosh(x: real): real; -/// Âîçâðàùàåò òàíãåíñ ÷èñëà x -function Tan(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé òàíãåíñ ÷èñëà x -function Tanh(x: real): real; -/// Âîçâðàùàåò àðêñèíóñ ÷èñëà x -function ArcSin(x: real): real; -/// Âîçâðàùàåò àðêêîñèíóñ ÷èñëà x -function ArcCos(x: real): real; -/// Âîçâðàùàåò àðêòàíãåíñ ÷èñëà x -function ArcTan(x: real): real; -/// Âîçâðàùàåò ýêñïîíåíòó ÷èñëà x -function Exp(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Ln(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Log(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ 2 -function Log2(x: real): real; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì ÷èñëà x -function Log10(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ base -function LogN(base, x: real): real; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà x -function Sqrt(x: real): real; -///-function Sqr(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò êâàäðàò ÷èñëà x -function Sqr(x: integer): int64; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x, y: real): real; -/// Âîçâðàùàåò x â öåëîé ñòåïåíè n -function Power(x: real; n: integer): real; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x: BigInteger; y: integer): BigInteger; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî öåëîãî. Åñëè âåùåñòâåííîå íàõîäèòñÿ ïîñåðåäèíå ìåæäó äâóìÿ öåëûìè,òî îêðóãëåíèå îñóùåñòâëÿåòñÿ ê áëèæàéøåìó ÷åòíîìó (áàíêîâñêîå îêðóãëåíèå): Round(2.5)=2, Round(3.5)=4 -function Round(x: real): integer; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(x: real; digits: integer): real; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x -function Trunc(x: real): integer; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x êàê äëèííîå öåëîå -function TruncBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü ÷èñëà x -function Int(x: real): real; -/// Âîçâðàùàåò äðîáíóþ ÷àñòü ÷èñëà x -function Frac(x: real): real; -/// Âîçâðàùàåò íàèáîëüøåå öåëîå <= x -function Floor(x: real): integer; -/// Âîçâðàùàåò íàèìåíüøåå öåëîå >= x -function Ceil(x: real): integer; -/// Ïåðåâîäèò ðàäèàíû â ãðàäóñû -function RadToDeg(x: real): real; -/// Ïåðåâîäèò ãðàäóñû â ðàäèàíû -function DegToRad(x: real): real; -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë -procedure Randomize; -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë, èñïîëüçóÿ çíà÷åíèå seed. Ïðè îäíîì è òîì æå seed ãåíåðèðóþòñÿ îäèíàêîâûå ïñåâäîñëó÷àéíûå ïîñëåäîâàòåëüíîñòè -procedure Randomize(seed: integer); -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò 0 äî maxValue-1 -function Random(maxValue: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0,maxValue) -function Random(maxValue: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò a äî b -function Random(a, b: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [a,b) -function Random(a, b: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0..1) -function Random: real; -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random2(maxValue: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random2(maxValue: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random2(a, b: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random2(a, b: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random3(maxValue: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random3(maxValue: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random3(a, b: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random3(a, b: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random3: (real, real, real); -///-function Max(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìàêñèìàëüíîå èç ÷èñåë a,b -function Max(a, b: byte): byte; -///-function Min(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìèíèìàëüíîå èç ÷èñåë a,b -function Min(a, b: byte): byte; -///-function Odd(i: öåëîå): boolean; -/// Âîçâðàùàåò True, åñëè i íå÷åòíî, è False â ïðîòèâíîì ñëó÷àå -function Odd(i: byte): boolean; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ êîìïëåêñíûìè ÷èñëàìè # Functions for Complex numbers -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ñ âåùåñòâåííîé ÷àñòüþ re è ìíèìîé ÷àñòüþ im -function Cplx(re, im: real): Complex; -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ïî ïîëÿðíûì êîîðäèíàòàì -function CplxFromPolar(magnitude, phase: real): Complex; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü èç êîìïëåêñíîãî ÷èñëà -function Sqrt(c: Complex): Complex; -/// Âîçâðàùàåò ìîäóëü êîìïëåêñíîãî ÷èñëà -function Abs(c: Complex): Complex; -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå ÷èñëî -function Conjugate(c: Complex): Complex; -/// Âîçâðàùàåò êîñèíóñ êîìïëåêñíîãî ÷èñëà -function Cos(c: Complex): Complex; -/// Âîçâðàùàåò ýêñïîíåíòó êîìïëåêñíîãî ÷èñëà -function Exp(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Ln(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log(c: Complex): Complex; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log10(c: Complex): Complex; -/// Âîçâðàùàåò ñòåïåíü êîìïëåêñíîãî ÷èñëà -function Power(c, power: Complex): Complex; -/// Âîçâðàùàåò ñèíóñ êîìïëåêñíîãî ÷èñëà -function Sin(c: Complex): Complex; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòàíäàðòíûìè ìíîæåñòâàìè # Subroutines for set of T -///- procedure Include(var s: set of T; element: T); -///Äîáàâëÿåò ýëåìåíò element âî ìíîæåñòâî s -procedure Include(var s: TypedSet; el: object); -///- procedure Exclude(var s: set of T; element: T); -///Óäàëÿåò ýëåìåíò element èç ìíîæåñòâà s -procedure Exclude(var s: TypedSet; el: object); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ ñèìâîëàìè # Subroutines for char -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà 1 -procedure Inc(var c: char); -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà n -procedure Inc(var c: char; n: integer); -/// Óìåíüøàåò êîä ñèìâîëà c íà 1 -procedure Dec(var c: char); -/// Óìåíüøàåò êîä ñèìâîëà c íà n -procedure Dec(var c: char; n: integer); -/// Âîçâðàùàåò ïðåäøåñòâóþùèé x ñèìâîë -function Pred(x: char): char; -/// Âîçâðàùàåò ñëåäóþùèé çà x ñèìâîë -function Succ(x: char): char; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Windows -function ChrAnsi(a: byte): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Windows -function OrdAnsi(a: char): byte; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function Chr(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function Ord(a: char): word; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function ChrUnicode(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function OrdUnicode(a: char): word; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpperCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowerCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowCase(ch: char): char; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòðîêàìè # Subroutines for string -///-procedure Str(i: öåëîå; var s: string); -/// Ïðåîáðàçóåò öåëîå çíà÷åíèå i ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(i: integer; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: real; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: single; var s: string); -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function Pos(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function PosEx(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string; from: integer): integer; -/// Âîçâðàùàåò äëèíó ñòðîêè -function Length(s: string): integer; -/// Óñòàíàâëèâàåò äëèíó ñòðîêè s ðàâíîé n -procedure SetLength(var s: string; n: integer); -/// Âñòàâëÿåò ïîäñòðîêó source â ñòðîêó s ñ ïîçèöèè index -procedure Insert(source: string; var s: string; index: integer); -/// Óäàëÿåò èç ñòðîêè s count ñèìâîëîâ ñ ïîçèöèè index -procedure Delete(var s: string; index, count: integer); -/// Âîçâðàùàåò ïîäñòðîêó ñòðîêè s äëèíû count ñ ïîçèöèè index -function Copy(s: string; index, count: integer): string; -///-function Concat(s1,s2,...): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1,s2,... -function Concat(params strs: array of string): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1 è s2 -function Concat(s1, s2: string): string; -/// Âîçâðàùàåò ñòðîêó â íèæíåì ðåãèñòðå -function LowerCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó â âåðõíåì ðåãèñòðå -function UpperCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó, ñîñòîÿùóþ èç count ñèìâîëîâ ch -function StringOfChar(ch: char; count: integer): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó -function ReverseString(s: string): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó â äèàïàçîíå äëèíû length íà÷èíàÿ ñ èíäåêñà index -function ReverseString(s: string; index,length: integer): string; -/// Ñðàâíèâàåò ñòðîêè. Âîçâðàùàåò çíà÷åíèå < 0 åñëè s1 0 åñëè s1>s2 è = 0 åñëè s1=s2 -function CompareStr(s1, s2: string): integer; -/// Âîçâðàùàåò ïåðâûå count ñèìâîëîâ ñòðîêè s -function LeftStr(s: string; count: integer): string; -/// Âîçâðàùàåò ïîñëåäíèå count ñèìâîëîâ ñòðîêè s -function RightStr(s: string; count: integer): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè è êîíå÷íûìè ïðîáåëàìè -function Trim(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè ïðîáåëàìè -function TrimLeft(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè êîíå÷íûìè ïðîáåëàìè -function TrimRight(s: string): string; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt(s: string): integer; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt64(s: string): int64; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToFloat(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToReal(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt(s: string; var value: integer): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt64(s: string; var value: int64): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: single): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToReal(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToSingle(s: string; var value: single): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadIntegerFromString(s: string; var from: integer): integer; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadRealFromString(s: string; var from: integer): real; -/// Ñ÷èòûâàåò èç ñòðîêè ïîñëåäîâàòåëüíîñòü ñèìâîëîâ äî ïðîáåëüíîãî ñèìâîëà íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWordFromString(s: string; var from: integer): string; -/// Âîçâðàùàåò True åñëè äîñòèãíóò êîíåö ñòðîêè èëè â ñòðîêå îñòàëèñü òîëüêî ïðîáåëüíûå ñèìâîëû è False â ïðîòèâíîì ñëó÷àå -function StringIsEmpty(s: string; var from: integer): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì.Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadIntegerFromString(s: string; var from: integer; var res: integer): boolean; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì.Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadRealFromString(s: string; var from: integer; var res: real): boolean; -///-procedure Val(s: string; var value: ÷èñëî; var err: integer); -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â ïåðåìåííóþ value.Åñëè ïðåîáðàçîâàíèå óñïåøíî, òî err=0, èíà÷å err>0 -procedure Val(s: string; var value: integer; var err: integer); -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: integer): string; -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: int64): string; -/// Ïðåîáðàçóåò âåùåñòâåííîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function FloatToStr(a: real): string; -/// Âîçâðàùàåò îòôîðìàòèðîâàííóþ ñòðîêó, ïîñòðîåííóþ ïî ôîðìàòíîé ñòðîêå è ñïèñêó ôîðìàòèðóåìûõ ïàðàìåòðîâ -function Format(formatstring: string; params pars: array of object): string; -//>> Îáùèå ïîäïðîãðàììû # Common subroutines -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Inc(var i: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Inc(var i: integer; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Dec(var i: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Dec(var i: integer; n: integer); -///-procedure Inc(var e: ïåðå÷èñëèìûé òèï); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Inc(var b: byte); -///-procedure Inc(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Inc(var b: byte; n: integer); -///-procedure Dec(var e: ïåðå÷èñëèìûé òèï); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Dec(var b: byte); -///-procedure Dec(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Dec(var b: byte; n: integer); -///-function Ord(a: öåëîå): öåëîå; -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: integer): integer; -///-function Ord(a: ïåðå÷èñëèìûé òèï): integer; -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: longword): longword; -///-function Succ(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: integer): integer; -///-function Succ(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: byte): byte; -///-function Pred(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: integer): integer; -///-function Pred(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: byte): byte; -/// Ìåíÿåò ìåñòàìè çíà÷åíèÿ äâóõ ïåðåìåííûõ -procedure Swap(var a, b: T); -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ñòðîêè -function Eoln: boolean; -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ïîòîêà ââîäà -function Eof: boolean; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äèíàìè÷åñêèìè ìàññèâàìè # Subroutines for array of T -///- function Low(a: array of T): integer; -/// Âîçâðàùàåò 0 -function Low(i: System.Array): integer; -///- function High(a: array of T): integer; -/// Âîçâðàùàåò âåðõíþþ ãðàíèöó äèíàìè÷åñêîãî ìàññèâà -function High(i: System.Array): integer; -///- function Length(a: array of T): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà -function Length(a: System.Array): integer; -///- function Length(a: array of T; dim: integer): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà ïî ðàçìåðíîñòè dim -function Length(a: System.Array; dim: integer): integer; -///- procedure SetLength(var a: array of T); -/// Óñòàíàâëèâàåò äëèíó îäíîìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -//procedure SetLength(var a: System.Array); -///- procedure SetLength(var a: array of T; n1,n2,...: integer); -/// Óñòàíàâëèâàåò ðàçìåðû n-ìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -//procedure SetLength(var a: System.Array); -///- function Copy(a: array of T): array of T; -/// Ñîçäà¸ò êîïèþ äèíàìè÷åñêîãî ìàññèâà -function Copy(a: System.Array): System.Array; -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(a: array of T); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(a: array of T; cmp: (T,T)->integer); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(a: array of T; less: (T,T)->boolean); -/// Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ -procedure Sort(l: List); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(l: List; cmp: (T,T)->integer); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(l: List; less: (T,T)->boolean); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â äèíàìè÷åñêîì ìàññèâå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: array of T); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå äèíàìè÷åñêîãî ìàññèâà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: array of T; index, count: integer); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â ñïèñêå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: List); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå ñïèñêà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: List; index, count: integer); -/// Ïåðåìåøèâàåò äèíàìè÷åñêèé ìàññèâ ñëó÷àéíûì îáðàçîì -procedure Shuffle(a: array of T); -/// Ïåðåìåøèâàåò ñïèñîê ñëó÷àéíûì îáðàçîì -procedure Shuffle(l: List); -//>> Ïîäïðîãðàììû äëÿ ãåíåðàöèè ïîñëåäîâàòåëüíîñòåé # Subroutines for sequence generation -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b -function Range(a, b: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñèìâîëîâ îò c1 äî c2 -function Range(c1, c2: char): sequence of char; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé (Èñïîëüçóéòå Partition) -function Range(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé -function Partition(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b ñ øàãîì step -function Range(a, b, step: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü óêàçàííûõ ýëåìåíòîâ -function Seq(params a: array of T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandom(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ âåùåñòâåííûõ ýëåìåíòîâ -function SeqRandomReal(n: integer := 10; a: real := 0; b: real := 10): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i) -function SeqGen(count: integer; f: integer->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i), íà÷èíàÿ ñ i=from -function SeqGen(count: integer; f: integer->T; from: integer): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function SeqGen(count: integer; first: T; next: T->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second,ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function SeqGen(count: integer; first, second: T; next: (T,T) ->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ ñ íà÷àëüíûì çíà÷åíèåì first,ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first: T; next: T->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second,ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first, second: T; next: (T,T) ->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ x -function SeqFill(count: integer; x: T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(n: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(n: integer): sequence of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(prompt: string; n: integer): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(prompt: string; n: integer): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(prompt: string; n: integer): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(cond: integer->boolean): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(cond: real->boolean): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(cond: string->boolean): sequence of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(prompt: string; cond: integer->boolean): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(prompt: string; cond: real->boolean): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(prompt: string; cond: string->boolean): sequence of string; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for array of T generation -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Arr(params a: array of T): array of T; -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíñòè -function Arr(a: sequence of T): array of T; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandom(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function ArrRandomReal(n: integer := 10; a: real := 0; b: real := 10): array of real; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i) -function ArrGen(count: integer; gen: integer->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i), íà÷èíàÿ ñ i=from -function ArrGen(count: integer; gen: integer->T; from: integer): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function ArrGen(count: integer; first: T; next: T->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first è second, ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function ArrGen(count: integer; first, second: T; next: (T,T) ->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ x -function ArrFill(count: integer; x: T): array of T; -/// Âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(n: integer): array of integer; -/// Âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(n: integer): array of real; -/// Âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(n: integer): array of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(prompt: string; n: integer): array of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(prompt: string; n: integer): array of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(prompt: string; n: integer): array of string; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for matrixes -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè ïî ñòðîêàì -function Matr(m,n: integer; params data: array of T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandom(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandomInteger(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function MatrRandomReal(m: integer := 5; n: integer := 5; a: real := 0; b: real := 10): array [,] of real; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrFill(m, n: integer; x: T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -/// Òðàíñïîíèðóåò äâóìåðíûé ìàññèâ -function Transpose(a: array [,] of T): array [,] of T; -/// Âîçâðàùàåò ìàòðèöó m íà n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrInteger(m, n: integer): array [,] of integer; -/// Âîçâðàùàåò ìàòðèöó m íà n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrReal(m, n: integer): array [,] of real; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ êîðòåæåé # Subroutines for tuple generation -///- function Rec(x1: T1, x2: T2,...): (T1,T2,...); -/// Âîçâðàùàåò êîðòåæ èç ýëåìåíòîâ ðàçíûõ òèïîâ -function Rec(x1: T1; x2: T2): System.Tuple; -//>> Êîðîòêèå ôóíêöèè Lst, LLst, HSet, SSet, Dict, KV # Short functions Lst, HSet, SSet, Dict, KV -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Lst(params a: array of T): List; -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function Lst(a: sequence of T): List; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function LLst(params a: array of T): LinkedList; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function LLst(a: sequence of T): LinkedList; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå óêàçàííûìè çíà÷åíèÿìè -function HSet(params a: array of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function HSet(a: sequence of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(params a: array of T): SortedSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(a: sequence of T): SortedSet; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of KeyValuePair): Dictionary; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of (TKey, TVal)): Dictionary; -/// Âîçâðàùàåò ïàðó ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function KV(key: TKey; value: TVal): KeyValuePair; -//>> Ãåíåðàöèÿ áåñêîíå÷íûõ ïîñëåäîâàòåëüíîñòåé # Infinite sequences -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì 1 -function Step(Self: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: integer; step: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: real; step: real): sequence of real; extensionmethod; -/// Ïîâòîðÿåò ïîñëåäîâàòåëüíîñòü áåñêîíå÷íîå ÷èñëî ðàç -function Cycle(Self: sequence of T): sequence of T; extensionmethod; -//>> Ôèêòèâíàÿ ñåêöèÿ XXX - íå óäàëÿòü! # XXX -AdjGroupClass = class -private -cur: T; -enm: IEnumerator; -fin: boolean; -public -begin -enm := a.GetEnumerator(); -fin := enm.MoveNext; -if fin then -cur := enm.Current; -end; -function TakeGroup: sequence of T; -begin -yield cur; -fin := enm.movenext; -while fin do -begin -if enm.current = cur then -yield enm.current -else -begin -cur := enm.Current; -break; -end; -fin := enm.movenext; -end; -end; -end; -//>> Ìåòîä ðàñøèðåíèÿ Print äëÿ ýëåìåíòàðíûõ òèïîâ # Print for elementary types -function Print(Self: integer): integer; extensionmethod; -function Print(Self: real): real; extensionmethod; -function Print(Self: char): char; extensionmethod; -function Print(Self: boolean): boolean; extensionmethod; -function Print(Self: BigInteger): BigInteger; extensionmethod; -function Println(Self: integer): integer; extensionmethod; -function Println(Self: real): real; extensionmethod; -function Println(Self: char): char; extensionmethod; -function Println(Self: boolean): boolean; extensionmethod; -function Println(Self: BigInteger): BigInteger; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ïîñëåäîâàòåëüíîñòåé # Extension methods for sequence of T -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T; delim: string): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T; delim: string): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü ñòðîê â ôàéë -function WriteLines(Self: sequence of string; fname: string): sequence of string; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò îòîáðàæàåòñÿ ñ ïîìîùüþ ôóíêöèè map è âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T; map: T->T1): sequence of T; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T; delim: string): string; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T): string; extensionmethod; -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè -procedure ForEach(Self: sequence of T; action: T -> ()); extensionmethod; -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè, çàâèñÿùåå îò íîìåðà ýëåìåíòà -procedure ForEach(Self: sequence of T; action: (T,integer) -> ()); extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Sorted(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function SortedDescending(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Order(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function OrderDescending(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò ìíîæåñòâî HashSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToHashSet(Self: sequence of T): HashSet; extensionmethod; -/// Âîçâðàùàåò ìíîæåñòâî SortedSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToSortedSet(Self: sequence of T): SortedSet; extensionmethod; -/// Âîçâðàùàåò LinkedList ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToLinkedList(Self: sequence of T): LinkedList; extensionmethod; -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function MinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function MaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèå count ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè -function TakeLast(Self: sequence of T; count: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü áåç ïîñëåäíèõ count ýëåìåíòîâ -function SkipLast(self: sequence of T; count: integer := 1): sequence of T; extensionmethod; -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod; -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòè íà äâå â ïîçèöèè ind -function SplitAt(Self: sequence of T; ind: integer): (sequence of T, sequence of T); extensionmethod; -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ -function Partition(Self: sequence of T; cond: T->boolean): (sequence of T, sequence of T); extensionmethod; -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ, â êîòîðîì ó÷àñòâóåò èíäåêñ -function Partition(Self: sequence of T; cond: (T,integer)->boolean): (sequence of T, sequence of T); extensionmethod; -/// Îáúåäèíÿåò äâå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod; -/// Îáúåäèíÿåò òðè ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod; -/// Îáúåäèíÿåò ÷åòûðå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé íà äâå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1)): (sequence of T, sequence of T1); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé íà òðè ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2)): (sequence of T, sequence of T1, sequence of T2); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé íà ÷åòûðå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2, T3)): (sequence of T, sequence of T1, sequence of T2, sequence of T3); extensionmethod; -/// ×åðåäóåò ýëåìåíòû äâóõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a: sequence of T): sequence of T; extensionmethod; -/// ×åðåäóåò ýëåìåíòû òðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b: sequence of T): sequence of T; extensionmethod; -/// ×åðåäóåò ýëåìåíòû ÷åòûðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b, c: sequence of T): sequence of T; extensionmethod; -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ åäèíèöû -function Numerate(Self: sequence of T): sequence of (integer, T); extensionmethod; -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ íîìåðà from -function Numerate(Self: sequence of T; from: integer): sequence of (integer, T); extensionmethod; -/// Òàáóëèðóåò ôóíêöèþ ïîñëåäîâàòåëüíîñòüþ -function Tabulate(Self: sequence of T; F: T->T1): sequence of (T, T1); extensionmethod; -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ -function Pairwise(Self: sequence of T): sequence of (T, T); extensionmethod; -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ, ïðèìåíÿåò func ê êàæäîé ïàðå ïîëó÷åííûõ ýëåìåíòîâ è ïîëó÷àåò íîâóþ ïîñëåäîâàòåëüíîñòü -function Pairwise(Self: sequence of T; func: (T,T)->Res): sequence of Res; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size -function Batch(Self: sequence of T; size: integer): sequence of sequence of T; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size è ïðèìåíÿåò ïðîåêöèþ ê êàæäîé ñåðèè -function Batch(Self: sequence of T; size: integer; proj: Func, Res>): sequence of Res; extensionmethod; -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 -function Slice(Self: sequence of T; from, step: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 äëèíû íå áîëåå count -function Slice(Self: sequence of T; from, step, count: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of real): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of real): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T)->T1): sequence of T1; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T,integer)->T1): sequence of T1; extensionmethod; -/// Ãðóïïèðóåò îäèíàêîâûå ïîäðÿä èäóùèå ýëåìåíòû, ïîëó÷àÿ ïîñëåäîâàòåëüíîñòü ìàññèâîâ -function AdjacentGroup(Self: sequence of T): sequence of array of T; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ñïèñêîâ # Extension methods for List T -/// Ïåðåìåøèâàåò ýëåìåíòû ñïèñêà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: List): List; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; start: integer := 0): integer; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: IList; index: integer := 0): integer; extensionmethod;where T: IComparable; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: IList; index: integer := 0): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: IList): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMin(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìàêñèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: IList): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMax(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -/// Çàìåíÿåò â ìàññèâå èëè ñïèñêå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: IList; oldValue, newValue: T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: T->T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: (T,integer)->T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà èëè ñïèñêà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: IList; f: integer->T); extensionmethod; -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step -function Slice(Self: List; from, step: integer): List; extensionmethod; -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: List; from, step, count: integer): List; extensionmethod; -/// Óäàëÿåò ïîñëåäíèé ýëåìåíò. Åñëè ýëåìåíòîâ íåò, ãåíåðèðóåò èñêëþ÷åíèå -function RemoveLast(Self: List): List; extensionmethod; -procedure CorrectFromTo(situation: integer; Len: integer; var from, to: integer; step: integer); -//>> Ìåòîäû ðàñøèðåíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array [,] of T -/// Êîëè÷åñòâî ñòðîê â äâóìåðíîì ìàññèâå -function RowCount(Self: array [,] of T): integer; extensionmethod; -/// Êîëè÷åñòâî ñòîëáöîâ â äâóìåðíîì ìàññèâå -function ColCount(Self: array [,] of T): integer; extensionmethod; -/// Âûâîä äâóìåðíîãî ìàññèâà, w - øèðèíà ïîëÿ âûâîäà -function Print(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f -function Print(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -/// Âûâîä äâóìåðíîãî ìàññèâà è ïåðåõîä íà ñëåäóþùóþ ñòðîêó, w - øèðèíà ïîëÿ âûâîäà -function Println(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f è ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function Println(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà -function Row(Self: array [,] of T; k: integer): array of T; extensionmethod; -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà -function Col(Self: array [,] of T; k: integer): array of T; extensionmethod; -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function RowSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function ColSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê äâóìåðíîãî ìàññèâà -function Rows(Self: array [,] of T): sequence of sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòîëáöîâ äâóìåðíîãî ìàññèâà -function Cols(Self: array [,] of T): sequence of sequence of T; extensionmethod; -/// Ìåíÿåò ìåñòàìè äâå ñòðîêè äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapRows(Self: array [,] of T; k1, k2: integer); extensionmethod; -/// Ìåíÿåò ìåñòàìè äâà ñòîëáöà äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapCols(Self: array [,] of T; k1, k2: integer); extensionmethod; -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetRow(k,a.ToArray); -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetCol(k,a.ToArray); -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü (a[i,j],i,j) -function ElementsWithIndexes(Self: array [,] of T): sequence of (T, integer, integer); extensionmethod; -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòðîêàì -function ElementsByRow(Self: array [,] of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòîëáöàì -function ElementsByCol(Self: array [,] of T): sequence of T; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: T->T1): array [,] of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: (T,integer,integer)->T1): array [,] of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: T->T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: (T,integer,integer)->T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû äâóìåðíîãî ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array [,] of T; f: (integer,integer) ->T); extensionmethod; -//>> Ôèêòèâíàÿ ñåêöèÿ YYY - íå óäàëÿòü! # YYY -function Matr(m,n: integer; params data: array of T): array [,] of T; -function MatrRandom(m: integer; n: integer; a, b: integer): array [,] of integer; -function MatrRandomInteger(m: integer; n: integer; a, b: integer): array [,] of integer; -function MatrRandomReal(m: integer; n: integer; a, b: real): array [,] of real; -function MatrFill(m, n: integer; x: T): array [,] of T; -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -function Transpose(a: array [,] of T): array [,] of T; -function ReadMatrInteger(m, n: integer): array [,] of integer; -function ReadMatrReal(m, n: integer): array [,] of real; -//>> Ìåòîäû ðàñøèðåíèÿ îäíîìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array of T -/// Ïåðåìåøèâàåò ýëåìåíòû ìàññèâà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: array of T): array of T; extensionmethod; -{/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; start: integer := 0): integer; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of T): T; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of T): T; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of integer): integer; extensionmethod; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of real): real; extensionmethod; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of integer): integer; extensionmethod; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of real): real; extensionmethod; -{/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: array of T): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMin(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: array of T): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMax(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -/// Çàìåíÿåò â ìàññèâå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: array of T; oldValue,newValue: T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(self: array of T; f: T -> T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array of T; f: integer -> T); extensionmethod; -/// Âûïîëíÿåò áèíàðíûé ïîèñê â îòñîðòèðîâàííîì ìàññèâå -function BinarySearch(Self: array of T; x: T): integer; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: T->T1): array of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: (T,integer)->T1): array of T1; extensionmethod; -/// Âûïîëíÿåò ïîèñê ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function Find(Self: array of T; p: T->boolean): T; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -/// Âîçâðàùàåò â âèäå ìàññèâà âñå ýëåìåíòû, óäîâëåòâîðÿþùèå ïðåäèêàòó -function FindAll(Self: array of T; p: T->boolean): array of T; extensionmethod; -/// Âûïîëíÿåò ïîèñê ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLast(Self: array of T; p: T->boolean): T; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(Self: array of T); extensionmethod; -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ, èñïîëüçóÿ cmp â êà÷åñòâå ôóíêöèè ñðàâíåíèÿ ýëåìåíòîâ -procedure Sort(Self: array of T; cmp: (T,T) ->integer); extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ìàññèâà -function High(Self: System.Array); extensionmethod := High(Self); -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ìàññèâà -function Low(Self: System.Array); extensionmethod := Low(Self); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ îäíîìåðíîãî ìàññèâà -function Indexes(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: T->boolean): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: (T,integer) ->boolean): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step -function Slice(Self: array of T; from, step: integer): array of T; extensionmethod; -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: array of T; from, step, count: integer): array of T; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà integer # Extension methods for integer -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: integer): real; extensionmethod; -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: integer): integer; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: integer; a, b: integer): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: integer; a,b: integer): boolean; extensionmethod; -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå ÷åòíûì -function IsEven(Self: integer): boolean; extensionmethod; -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå íå÷åòíûì -function IsOdd(Self: integer): boolean; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ÷èñåë îò 1 äî äàííîãî -function Range(Self: integer): sequence of integer; extensionmethod; -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n -function To(Self: integer; n: integer): sequence of integer; extensionmethod; -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n â óáûâàþùåì ïîðÿäêå -function Downto(Self: integer; n: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ 0,1,...n-1 -function Times(Self: integer): sequence of integer; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà BigInteger # Extension methods for BigInteger -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: BigInteger): real; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà real # Extension methods for real -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: real; a, b: real): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: real; a,b: real): boolean; extensionmethod; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: real): real; extensionmethod; -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: real): real; extensionmethod; -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî öåëîãî -function Round(Self: real): integer; extensionmethod; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(Self: real; digits: integer): real; extensionmethod; -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(Self: real): BigInteger; extensionmethod; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà -function Trunc(Self: real): integer; extensionmethod; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà êàê äëèííîå öåëîå -function TruncBigInteger(Self: real): BigInteger; extensionmethod; -/// Âîçâðàùàåò âåùåñòâåííîå, îòôîðìàòèðîâàííîå ê ñòðîêå ñ frac öèôðàìè ïîñëå äåñÿòè÷íîé òî÷êè -function ToString(Self: real; frac: integer): string; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà char # Extension methods for char -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: char; a, b: char): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: char; a,b: char): boolean; extensionmethod; -/// Ïðåäûäóùèé ñèìâîë -function Pred(Self: char); extensionmethod := PABCSystem.Pred(Self); -/// Ñëåäóþùèé ñèìâîë -function Succ(Self: char); extensionmethod := PABCSystem.Succ(Self); -/// Êîä ñèìâîëà â êîäèðîâêå Unicode -function Code(Self: char): integer; extensionmethod := word(Self); -/// ßâëÿåòñÿ ëè ñèìâîë öèôðîé -function IsDigit(Self: char); extensionmethod := char.IsDigit(Self); -/// ßâëÿåòñÿ ëè ñèìâîë áóêâîé -function IsLetter(Self: char): boolean; extensionmethod; -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ íèæíåãî ðåãèñòðà -function IsLower(Self: char): boolean; extensionmethod; -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ âåðõíåãî ðåãèñòðà -function IsUpper(Self: char): boolean; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â öèôðó -function ToDigit(Self: char): integer; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function ToLower(Self: char): char; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function ToUpper(Self: char): char; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà string # Extension methods for string -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: string; a, b: string): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: string; a,b: string): boolean; extensionmethod; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadInteger(Self: string; var from: integer): integer; extensionmethod; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadReal(Self: string; var from: integer): real; extensionmethod; -/// Ñ÷èòûâàåò ñëîâî èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWord(Self: string; var from: integer): string; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â öåëîå -function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); -/// Ïðåîáðàçóåò ñòðîêó â BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå -function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); -/// Ïðåîáðàçóåò ñòðîêó â öåëîå è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); -/// Ïðåîáðàçóåò ñòðîêó â öåëîåÏðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîåÏðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToReal(Self: string; defaultvalue: real): real; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ ñëîâ -function ToWords(Self: string; params delim: array of char): array of string; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ öåëûõ -function ToIntegers(Self: string): array of integer; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ âåùåñòâåííûõ -function ToReals(Self: string): array of real; extensionmethod; -/// Âîçâðàùàåò èíâåðñèþ ñòðîêè -function Inverse(Self: string): string; extensionmethod; -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííîé ñòðîêîé çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg, repl: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííûì ïðåîáðàçîâàíèåì çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg: string; repl: Match->string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ýëåìåíòîâ òèïà Match -function Matches(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of Match; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå ïåðâîå âõîæäåíèå ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò åãî â âèäå ñòðîêè -function MatchValue(Self: string; reg: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ñòðîê -function MatchValues(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of string; extensionmethod; -/// Óäîâëåòâîðÿåò ëè ñòðîêà ðåãóëÿðíîìó âûðàæåíèþ -function IsMatch(Self: string; reg: string; options: RegexOptions := RegexOptions.None): boolean; extensionmethod := Regex.IsMatch(Self, reg, options); -/// Óäàëÿåò â ñòðîêå âñå âõîæäåíèÿ óêàçàííûõ ñòðîê -function Remove(Self: string; params targets: array of string): string; extensionmethod; -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ïðàâûõ ñèìâîëîâ -function Right(Self: string; length: integer): string; extensionmethod; -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ëåâûõ ñèìâîëîâ -function Left(Self: string; length: integer): string; extensionmethod; -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step -function Slice(Self: string; from, step: integer): string; extensionmethod; -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: string; from, step, count: integer): string; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Func # Extension methods for Func -/// Ñóïåðïîçèöèÿ ôóíêöèé -function Compose(Self: T2->TResult; composer: T1->T2): T1->TResult; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Complex # Extension methods for Complex -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå çíà÷åíèå -function Conjugate(Self: Complex): Complex; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ñëîâàðåé # Extension methods for IDictionary -/// Âîçâðàùàåò â ñëîâàðå çíà÷åíèå, ñâÿçàííîå ñ óêàçàííûì êëþ÷îì, à åñëè òàêîãî êëþ÷à íåò, òî çíà÷åíèå ïî óìîë÷àíèþ -function Get(Self: IDictionary; K: Key): Value; extensionmethod; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òèïèçèðîâàííûìè ôàéëàìè # Subroutines for typed files -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenBinary(fname: string): file of T; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateBinary(fname: string): file of T; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFile(fname: string): file of T; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFile(fname: string): file of T; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileInteger(fname: string): file of integer; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileReal(fname: string): file of real; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileInteger(fname: string): file of integer; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileReal(fname: string): file of real; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -procedure WriteElements(fname: string; ss: sequence of T); -//>> Ìåòîäû ðàñøèðåíèÿ òèïèçèðîâàííûõ ôàéëîâ # Extension methods for typed files -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â òèïèçèðîâàííîì ôàéëå íà ýëåìåíò ñ íîìåðîì n -function Seek(Self: file of T; n: int64): file of T; extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò ñëåäóþùèé ýëåìåíò òèïèçèðîâàííîãî ôàéëà -function Read(Self: file of T): T; extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò äâà ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read2(Self: file of T): (T,T); extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò òðè ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read3(Self: file of T): (T,T,T); extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ îòêðûòîãî òèïèçèðîâàííîãî ôàéëà îò òåêóùåãî ýëåìåíòà äî êîíå÷íîãî -function ReadElements(Self: file of T): sequence of T; extensionmethod; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -function ReadElements(fname: string): sequence of T; -/// Çàïèñûâàåò äàííûå â òèïèçèðîâàííûé ôàéë -procedure Write(Self: file of T; params vals: array of T); extensionmethod; -/// Îòêðûâàåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Reset(Self: file of T); extensionmethod; -/// Ñîçäàåò íîâûé èëè îáíóëÿåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Rewrite(Self: file of T); extensionmethod; diff --git a/PABCNetHelp/PABCSystemDocGen/PABCdoc.pas b/PABCNetHelp/PABCSystemDocGen/PABCdoc.pas deleted file mode 100644 index 221428897..000000000 --- a/PABCNetHelp/PABCSystemDocGen/PABCdoc.pas +++ /dev/null @@ -1,1488 +0,0 @@ -//>> Ñòàíäàðòíûå êîíñòàíòû # Standard constants -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà shortint -MaxShortInt = shortint.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà byte -MaxByte = byte.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà smallint -MaxSmallInt = smallint.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà word -MaxWord = word.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà longword -MaxLongWord = longword.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà int64 -MaxInt64 = int64.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà uint64 -MaxUInt64 = uint64.MaxValue; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà double -MaxDouble = real.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà double -MinDouble = real.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà real -MaxReal = real.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà real -MinReal = real.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà single -MaxSingle = single.MaxValue; -/// Ìèíèìàëüíîå ïîëîæèòåëüíîå çíà÷åíèå òèïà single -MinSingle = single.Epsilon; -/// Ìàêñèìàëüíîå çíà÷åíèå òèïà integer -MaxInt = integer.MaxValue; -/// Êîíñòàíòà Pi -Pi = 3.141592653589793; -/// Êîíñòàíòà E -E = 2.718281828459045; -/// Êîíñòàíòà ïåðåõîäà íà íîâóþ ñòðîêó -NewLine = System.Environment.NewLine; -//>> Ñòàíäàðòíûå òèïû # Standard types -/// Áàçîâûé òèï îáúåêòîâ -Object = System.Object; -/// Áàçîâûé òèï èñêëþ÷åíèé -Exception = System.Exception; -/// double = real -double = System.Double; -/// longint = integer -longint = System.Int32; -/// cardinal = longword -cardinal = System.UInt32; -/// Ïðåäñòàâëÿåò 128-áèòíîå âåùåñòâåííîå ÷èñëî -decimal = System.Decimal; -/// Ïðåäñòàâëÿåò ïðîèçâîëüíî áîëüøîå öåëîå ÷èñëî -BigInteger = System.Numerics.BigInteger; -/// Ïðåäñòàâëÿåò äàòó è âðåìÿ -DateTime = System.DateTime; -/// Ïðåäñòàâëÿåò êîìïëåêñíîå ÷èñëî -Complex = System.Numerics.Complex; -/// Ïðåäñòàâëÿåò êîðòåæ -Tuple = System.Tuple; -/// Ïðåäñòàâëÿåò ñïèñîê íà áàçå äèíàìè÷åñêîãî ìàññèâà -List = System.Collections.Generic.List; -/// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer -Comparer = System.Collections.Generic.Comparer; -/// Ïðåäñòàâëÿåò áàçîâûé êëàññ äëÿ ðåàëèçàöèè èíòåðôåéñà IComparer -IComparable = System.IComparable; -/// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå õåø-òàáëèöû -HashSet = System.Collections.Generic.HashSet; -/// Ïðåäñòàâëÿåò ìíîæåñòâî çíà÷åíèé, ðåàëèçîâàííîå íà áàçå áèíàðíîãî äåðåâà ïîèñêà -SortedSet = System.Collections.Generic.SortedSet; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð Êëþ÷-Çíà÷åíèå), ðåàëèçîâàííûé íà áàçå õåø-òàáëèöû -Dictionary = System.Collections.Generic.Dictionary; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ, ðåàëèçîâàííûé íà áàçå áèíàðíîãî äåðåâà ïîèñêà -SortedDictionary = System.Collections.Generic.SortedDictionary; -/// Ïðåäñòàâëÿåò àññîöèàòèâíûé ìàññèâ (íàáîð ïàð êëþ÷-çíà÷åíèå), ðåàëèçîâàííûé íà áàçå äèíàìè÷åñêîãî ìàññèâà ïàð -SortedList = System.Collections.Generic.SortedList; -/// Ïðåäñòàâëÿåò ïàðó Êëþ÷-Çíà÷åíèå äëÿ àññîöèàòèâíîãî ìàññèâà -KeyValuePair = System.Collections.Generic.KeyValuePair; -/// Ïðåäñòàâëÿåò äâóñâÿçíûé ñïèñîê -LinkedList = System.Collections.Generic.LinkedList; -/// Ïðåäñòàâëÿåò óçåë äâóñâÿçíîãî ñïèñêà -LinkedListNode = System.Collections.Generic.LinkedListNode; -/// Ïðåäñòàâëÿåò î÷åðåäü - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïåðâûé âîøåë-ïåðâûé âûøåë" -Queue = System.Collections.Generic.Queue; -/// Ïðåäñòàâëÿåò ñòåê - íàáîð ýëåìåíòîâ, ðåàëèçîâàííûõ ïî ïðèíöèïó "ïîñëåäíèé âîøåë-ïåðâûé âûøåë" -Stack = System.Collections.Generic.Stack; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè -ICollection = System.Collections.Generic.ICollection; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ñðàâíåíèÿ äâóõ ýëåìåíòîâ -IComparer = System.Collections.Generic.IComparer; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ íàáîðà ïàð Êëþ÷-Çíà÷åíèå -IDictionary = System.Collections.Generic.IDictionary; -/// Ïðåäñòàâëÿåò èíòåðôåéñ, ïðåäîñòàâëÿþùèé ïåðå÷èñëèòåëü äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè -IEnumerable = System.Collections.Generic.IEnumerable; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïåðåáîðà ýëåìåíòîâ êîëëåêöèè -IEnumerator = System.Collections.Generic.IEnumerator; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ïîääåðæêè ñðàâíåíèÿ íà ðàâåíñòâî -IEqualityComparer = System.Collections.Generic.IEqualityComparer; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ êîëëåêöèè ñ äîñòóïîì ïî èíäåêñó -IList = System.Collections.Generic.IList; -/// Ïðåäñòàâëÿåò èíòåðôåéñ äëÿ ìíîæåñòâà -ISet = System.Collections.Generic.ISet; -/// Ïðåäñòàâëÿåò èçìåíÿåìóþ ñòðîêó ñèìâîëîâ -StringBuilder = System.Text.StringBuilder; -/// Òèï êîäèðîâêè ñèìâîëîâ -Encoding = System.Text.Encoding; -/// Ïðåäñòàâëÿåò äåéñòâèå áåç ïàðàìåòðîâ -Action0 = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ îäíèì ïàðàìåòðîì -Action = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ äâóìÿ ïàðàìåòðàìè -Action2 = System.Action; -/// Ïðåäñòàâëÿåò äåéñòâèå ñ òðåìÿ ïàðàìåòðàìè -Action3 = System.Action; -/// Ïðåäñòàâëÿåò ôóíêöèþ áåç ïàðàìåòðîâ -Func0 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì -Func = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè -Func2 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè -Func3 = System.Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì öåëîãî òèïà, âîçâðàùàþùóþ öåëîå -IntFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì âåùåñòâåííîãî òèïà, âîçâðàùàþùóþ âåùåñòâåííîå -RealFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì ñòðîêîâîãî òèïà, âîçâðàùàþùóþ ñòðîêó -StringFunc = Func; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ îäíèì ïàðàìåòðîì, âîçâðàùàþùóþ boolean -Predicate = System.Predicate; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ äâóìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean -Predicate2 = function(x1: T1; x2: T2): boolean; -/// Ïðåäñòàâëÿåò ôóíêöèþ ñ òðåìÿ ïàðàìåòðàìè, âîçâðàùàþùóþ boolean -Predicate3 = function(x1: T1; x2: T2; x3: T3): boolean; -/// Ïðåäñòàâëÿåò ðåãóëÿðíîå âûðàæåíèå -Regex = System.Text.RegularExpressions.Regex; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îòäåëüíîãî ñîâïàäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ -Match = System.Text.RegularExpressions.Match; -/// Ïðåäñòàâëÿåò ìåòîä, âûçûâàåìûé ïðè îáíàðóæåíèè ñîâïàäåíèÿ â Regex.Replace -MatchEvaluator = System.Text.RegularExpressions.MatchEvaluator; -/// Ïðåäñòàâëÿåò íàáîð óñïåøíûõ ñîâïàäåíèé ðåãóëÿðíîãî âûðàæåíèÿ -MatchCollection = System.Text.RegularExpressions.MatchCollection; -/// Ïðåäñòàâëÿåò ïàðàìåòðû ðåãóëÿðíîãî âûðàæåíèÿ -RegexOptions = System.Text.RegularExpressions.RegexOptions; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç îäíîé ãðóïïû ïðè âûïîëíåíèè Regex.Match -RegexGroup = System.Text.RegularExpressions.Group; -/// Ïðåäñòàâëÿåò ðåçóëüòàòû èç íàáîðà ãðóïï ïðè âûïîëíåíèè Regex.Match -RegexGroupCollection = System.Text.RegularExpressions.GroupCollection; -/// Ïðåäñòàâëÿåò òèï êîðîòêîé ñòðîêè ôèêñèðîâàííîé äëèíû 255 ñèìâîëîâ -ShortString = string[255]; -//>> Ïîäïðîãðàììû ââîäà # Read subroutines -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû -procedure Read(a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... ñ êëàâèàòóðû è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln(a,b,...); -/// Ââîäèò ÷èñëîâîå çíà÷åíèå x êëàâèàòóðû. Âîçâðàùàåò False åñëè ïðè ââîäå ïðîèçîøëà îøèáêà -function TryRead(var x: integer): boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean: boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger: integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal: real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar: char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString: string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean: boolean; -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2: (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2: (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2: (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2: (string, string); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3: (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3: (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3: (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3: (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3: (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString2(prompt: string): (string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger2(prompt: string): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal2(prompt: string): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar2(prompt: string): (char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString2(prompt: string): (string, string); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû -function ReadInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû -function ReadReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû -function ReadChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç òð¸õ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû -function ReadString3(prompt: string): (string, string, string); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà integer, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger3(prompt: string): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà real, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal3(prompt: string): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà char, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar3(prompt: string): (char, char, char); -/// Âîçâðàùàåò êîðòåæ èç äâóõ çíà÷åíèé òèïà string, ââåäåííûõ ñ êëàâèàòóðû, è ïåðåõîäèò íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString3(prompt: string): (string, string, string); -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû -function ReadInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû -function ReadReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû -function ReadChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû -function ReadString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû -function ReadBoolean(prompt: string): boolean; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnInteger(prompt: string): integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnReal(prompt: string): real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnChar(prompt: string): char; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnString(prompt: string): string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå ñ êëàâèàòóðû,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó ââîäà -function ReadlnBoolean(prompt: string): boolean; -/// Ââîäèò çíà÷åíèÿ a,b,... èç ôàéëà f -procedure Read(f: ôàéë; a,b,...); -/// Ââîäèò çíà÷åíèÿ a,b,... èç òåêñòîâîãî ôàéëà f è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -procedure Readln(f: Text; a,b,...); -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f -function ReadBoolean(f: Text): boolean; -/// Âîçâðàùàåò çíà÷åíèå òèïà integer, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnInteger(f: Text): integer; -/// Âîçâðàùàåò çíà÷åíèå òèïà real, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnReal(f: Text): real; -/// Âîçâðàùàåò çíà÷åíèå òèïà char, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnChar(f: Text): char; -/// Âîçâðàùàåò çíà÷åíèå òèïà string, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnString(f: Text): string; -/// Âîçâðàùàåò çíà÷åíèå òèïà boolean, ââåäåííîå èç òåêñòîâîãî ôàéëà f,è îñóùåñòâëÿåò ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function ReadlnBoolean(f: Text): boolean; -//>> Ïîäïðîãðàììû âûâîäà # Write subroutines -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí -procedure Write(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure Writeln(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â ôàéë f -procedure Write(f: ôàéë; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure Writeln(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr è îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstr -procedure WriteFormat(f: Text; formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ args â òåêñòîâûé ôàéë f ñîãëàñíî ôîðìàòíîé ñòðîêå formatstrè îñóùåñòâëÿåò ïåðåõîä íà íîâóþ ñòðîêó -procedure WritelnFormat(f: Text; formatstr: string; params args: array of object); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë -procedure Print(f: Text; a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... íà ýêðàí, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(a,b,...); -/// Âûâîäèò çíà÷åíèÿ a,b,... â òåêñòîâûé ôàéë f, ïîñëå êàæäîãî çíà÷åíèÿ âûâîäèò ïðîáåë è ïåðåõîäèò íà íîâóþ ñòðîêó -procedure Println(f: Text; a,b,...); -//>> Îáùèå ïîäïðîãðàììû äëÿ ðàáîòû ñ ôàéëàìè # Common subroutines for files -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure Assign(f: ôàéë; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ ôàéëîì íà äèñêå -procedure AssignFile(f: ôàéë; name: string); -/// Çàêðûâàåò ôàéë -procedure Close(f: ôàéë); -/// Çàêðûâàåò ôàéë -procedure CloseFile(f: ôàéë); -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function Eof(f: ôàéë): boolean; -/// Óäàëÿåò ôàéë, ñâÿçàííûé ñ ôàéëîâîé ïåðåìåííîé -procedure Erase(f: ôàéë); -/// Ïåðåèìåíîâûâàåò ôàéë, ñâÿçàíûé ñ ôàéëîâîé ïåðåìåííîé, äàâàÿ åìó èìÿ newname. -procedure Rename(f: ôàéë; newname: string); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òåêñòîâûìè ôàéëàìè # Subroutines for text files -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â êîäèðîâêå Windows -procedure Reset(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà ÷òåíèå â óêàçàííîé êîäèðîâêå -procedure Reset(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â êîäèðîâêå Windows.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà çàïèñü â óêàçàííîé êîäèðîâêå.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â êîäèðîâêå Windows.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë f íà çàïèñü â óêàçàííîé êîäèðîâêå.Åñëè ôàéë ñóùåñòâîâàë - îí îáíóëÿåòñÿ, åñëè íåò - ñîçäàåòñÿ ïóñòîé -procedure Rewrite(f: Text; name: string; en: Encoding); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text); -/// Îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; en: Encoding); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â êîäèðîâêå Windows -procedure Append(f: Text; name: string); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ èìåíåì ôàéëà name è îòêðûâàåò òåêñòîâûé ôàéë íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -procedure Append(f: Text; name: string; en: Encoding); -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â êîäèðîâêå Windows -function OpenRead(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà ÷òåíèå â óêàçàííîé êîäèðîâêå -function OpenRead(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â êîäèðîâêå Windows -function OpenWrite(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà çàïèñü â óêàçàííîé êîäèðîâêå -function OpenWrite(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â êîäèðîâêå Windows -function OpenAppend(fname: string): Text; -/// Âîçâðàùàåò òåêñòîâûé ôàéë ñ èìåíåì fname, îòêðûòûé íà äîïîëíåíèå â óêàçàííîé êîäèðîâêå -function OpenAppend(fname: string; en: Encoding): Text; -/// Âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function Eoln(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ôàéëà -function SeekEof(f: Text): boolean; -/// Ïðîïóñêàåò ïðîáåëüíûå ñèìâîëû, ïîñëå ÷åãî âîçâðàùàåò True, åñëè â ôàéëå äîñòèãíóò êîíåö ñòðîêè -function SeekEoln(f: Text): boolean; -/// Çàïèñûâàåò ñîäåðæèìîå áóôåðà ôàéëà íà äèñê -procedure Flush(f: Text); -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå è çàêðûâàåò ôàéë.  êàæäûé ìîìåíò â ïàìÿòè õðàíèòñÿ òîëüêî òåêóùàÿ ñòðîêà -function ReadLines(path: string; en: Encoding): sequence of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â êîäèðîâêå Windows â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò èç íåãî ñòðîêè â óêàçàíîé êîäèðîâêå â âèäå ìàññèâà ñòðîê, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllLines(path: string; en: Encoding): array of string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â êîäèðîâêå Windows â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string): string; -/// Îòêðûâàåò ôàéë, ñ÷èòûâàåò åãî ñîäåðæèìîå â óêàçàíîé êîäèðîâêå â âèäå ñòðîêè, ïîñëå ÷åãî çàêðûâàåò ôàéë -function ReadAllText(path: string; en: Encoding): string; -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ïîñëåäîâàòåëüíîñòè â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteLines(path: string; ss: sequence of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêè èç ìàññèâà â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllLines(path: string; ss: array of string; en: Encoding); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â êîäèðîâêå Windows, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string); -/// Ñîçäàåò íîâûé ôàéë, çàïèñûâàåò â íåãî ñòðîêó â óêàçàííîé êîäèðîâêå, ïîñëå ÷åãî çàêðûâàåò ôàéë -procedure WriteAllText(path: string; s: string; en: Encoding); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äâîè÷íûìè ôàéëàìè # Subroutines for binary files -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: äâîè÷íûé ôàéë); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Reset(f: äâîè÷íûé ôàéë; name: string); -/// Îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå. Åñëè ôàéë ñóùåñòâîâàë, îí îáíóëÿåòñÿ.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: äâîè÷íûé ôàéë); -/// Ñâÿçûâàåò ôàéëîâóþ ïåðåìåííóþ f ñ ôàéëîì name íà äèñêå è îòêðûâàåò äâîè÷íûé ôàéë íà ÷òåíèå è çàïèñü, ïðè ýòîì îáíóëÿÿ åãî ñîäåðæèìîå.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Rewrite(f: äâîè÷íûé ôàéë; name: string); -/// Óñåêàåò äâîè÷íûé ôàéë, îòáðàñûâàÿ âñå ýëåìåíòû ñ ïîçèöèè ôàéëîâîãî óêàçàòåëÿ.Äâîè÷íûé ôàéë - ýòî ëèáî òèïèçèðîâàííûé ôàéë file of T, ëèáî áåñòèïîâîé ôàéë file -procedure Truncate(f: äâîè÷íûé ôàéë); -/// Âîçâðàùàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå -function FilePos(f: äâîè÷íûé ôàéë): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ â äâîè÷íîì ôàéëå -function FileSize(f: äâîè÷íûé ôàéë): int64; -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â äâîè÷íîì ôàéëå íà ýëåìåíò ñ äàííûì íîìåðîì -procedure Seek(f: äâîè÷íûé ôàéë; n: int64); -//>> Cèñòåìíûå ïîäïðîãðàììû # System subroutines -/// Âîçâðàùàåò âåðñèþ PascalABC.NET -function PascalABCVersion: string; -/// Âîçâðàùàåò êîëè÷åñòâî ïàðàìåòðîâ êîìàíäíîé ñòðîêè -function ParamCount: integer; -/// Âîçâðàùàåò i-òûé ïàðàìåòð êîìàíäíîé ñòðîêè -function ParamStr(i: integer): string; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetDir: string; -/// Ìåíÿåò òåêóùèé êàòàëîã -procedure ChDir(s: string); -/// Ñîçäàåò êàòàëîã -procedure MkDir(s: string); -/// Óäàëÿåò êàòàëîã -procedure RmDir(s: string); -/// Ñîçäàåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî ñîçäàí -function CreateDir(s: string): boolean; -/// Óäàëÿåò ôàéë. Åñëè ôàéë íå ìîæåò áûòü óäàëåí, òî âîçâðàùàåò False -function DeleteFile(s: string): boolean; -/// Âîçâðàùàåò òåêóùèé êàòàëîã -function GetCurrentDir: string; -/// Óäàëÿåò êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function RemoveDir(s: string): boolean; -/// Ïåðåèìåíîâûâàåò ôàéë name, äàâàÿ åìó íîâîå èìÿ newname. Âîçâðàùàåò True, åñëè ôàéë óñïåøíî ïåðåèìåíîâàí -function RenameFile(name, newname: string): boolean; -/// Óñòàíàâëèâàåò òåêóùèé êàòàëîã. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî óäàëåí -function SetCurrentDir(s: string): boolean; -/// Èçìåíÿåò ðàñøèðåíèå ôàéëà ñ èìåíåì name íà newext -function ChangeFileNameExtension(name, newext: string): string; -/// Âîçâðàùàåò True, åñëè ôàéë ñ èìåíåì name ñóùåñòâóåò -function FileExists(name: string): boolean; -/// Âûâîäèò â ñïåöèàëüíîì îêíå ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; sourceFile: string := ''; line: integer := 0); -/// Âûâîäèò â ñïåöèàëüíîì îêíå äèàãíîñòè÷åñêîå ñîîáùåíèå è ñòåê âûçîâîâ ïîäïðîãðàìì åñëè óñëîâèå íå âûïîëíÿåòñÿ -procedure Assert(cond: boolean; message: string; sourceFile: string := ''; line: integer := 0); -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskFree(diskname: string): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå ñ èìåíåì diskname -function DiskSize(diskname: string): int64; -/// Âîçâðàùàåò ñâîáîäíîå ìåñòî â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskFree(disk: integer): int64; -/// Âîçâðàùàåò ðàçìåð â áàéòàõ íà äèñêå disk. disk=0 - òåêóùèé äèñê, disk=1 - äèñê A: , disk=2 - äèñê B: è ò.ä. -function DiskSize(disk: integer): int64; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà íà÷àëà ðàáîòû ïðîãðàììû -function Milliseconds: integer; -/// Âîçâðàùàåò êîëè÷åñòâî ìèëëèñåêóíä ñ ìîìåíòà ïîñëåäíåãî âûçîâà Milliseconds èëè MillisecondsDelta -function MillisecondsDelta: integer; -/// Çàâåðøàåò ðàáîòó ïðîãðàììû -procedure Halt; -/// Çàâåðøàåò ðàáîòó ïðîãðàììû, âîçâðàùàÿ êîä îøèáêè exitCode -procedure Halt(exitCode: integer); -/// Äåëàåò ïàóçó íà ms ìèëëèñåêóíä -procedure Sleep(ms: integer); -/// Âîçâàùàåò èìÿ çàïóùåííîãî .exe-ôàéëà -function GetEXEFileName: string; -/// Ïðåîáðàçóåò óêàçàòåëü ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function PointerToString(p: pointer): string; -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Exec(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Exec(filename: string; args: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename -procedure Execute(filename: string); -/// Çàïóñêàåò ïðîãðàììó èëè äîêóìåíò ñ èìåíåì filename è ïàðàìåòðàìè êîìàíäíîé ñòðîêè args -procedure Execute(filename: string; args: string); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà -function EnumerateFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí ôàéëîâ ïî çàäàííîìó ïóòè, ñîîòâåòñòâóþùèõ øàáëîíó ïîèñêà, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllFiles(path: string; searchPattern: string := '*.*'): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè -function EnumerateDirectories(path: string): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èìåí êàòàëîãîâ ïî çàäàííîìó ïóòè, âêëþ÷àÿ ïîäêàòàëîãè -function EnumerateAllDirectories(path: string): sequence of string; -/// Âûäåëÿåò äèíàìè÷åñêóþ ïàìÿòü ðàçìåðà sizeof(T) è âîçâðàùàåò â ïåðåìåííîé p óêàçàòåëü íà íåå. Òèï T äîëæåí áûòü ðàçìåðíûì -procedure New(var p: ^T); -/// Îñâîáîæäàåò äèíàìè÷åñêóþ ïàìÿòü, íà êîòîðóþ óêàçûâàåò p -procedure Dispose(var p: ^T); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ èìåíàìè ôàéëîâ # Functions for file names -/// Âûäåëÿåò èìÿ ôàéëà èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileName(fname: string): string; -/// Âûäåëÿåò ðàñøèðåíèå èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileExt(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFilePath(fname: string): string; -/// Âûäåëÿåò èìÿ äèñêà è ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDir(fname: string): string; -/// Âûäåëÿåò ïóòü èç ïîëíîãî èìåíè ôàéëà fname -function ExtractFileDrive(fname: string): string; -/// Âîçâðàùàåò ïîëíîå èìÿ ôàéëà fname -function ExpandFileName(fname: string): string; -//>> Ìàòåìàòè÷åñêèå ïîäïðîãðàììû # Math subroutines -/// Âîçâðàùàåò çíàê ÷èñëà x -function Sign(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìîäóëü ÷èñëà x -function Abs(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ñèíóñ ÷èñëà x -function Sin(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé ñèíóñ ÷èñëà x -function Sinh(x: real): real; -/// Âîçâðàùàåò êîñèíóñ ÷èñëà x -function Cos(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé êîñèíóñ ÷èñëà x -function Cosh(x: real): real; -/// Âîçâðàùàåò òàíãåíñ ÷èñëà x -function Tan(x: real): real; -/// Âîçâðàùàåò ãèïåðáîëè÷åñêèé òàíãåíñ ÷èñëà x -function Tanh(x: real): real; -/// Âîçâðàùàåò àðêñèíóñ ÷èñëà x -function ArcSin(x: real): real; -/// Âîçâðàùàåò àðêêîñèíóñ ÷èñëà x -function ArcCos(x: real): real; -/// Âîçâðàùàåò àðêòàíãåíñ ÷èñëà x -function ArcTan(x: real): real; -/// Âîçâðàùàåò ýêñïîíåíòó ÷èñëà x -function Exp(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Ln(x: real): real; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x -function Log(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ 2 -function Log2(x: real): real; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì ÷èñëà x -function Log10(x: real): real; -/// Âîçâðàùàåò ëîãàðèôì ÷èñëà x ïî îñíîâàíèþ base -function LogN(base, x: real): real; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà x -function Sqrt(x: real): real; -/// Âîçâðàùàåò êâàäðàò ÷èñëà x -function Sqr(x: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x, y: real): real; -/// Âîçâðàùàåò x â öåëîé ñòåïåíè n -function Power(x: real; n: integer): real; -/// Âîçâðàùàåò x â ñòåïåíè y -function Power(x: BigInteger; y: integer): BigInteger; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî öåëîãî. Åñëè âåùåñòâåííîå íàõîäèòñÿ ïîñåðåäèíå ìåæäó äâóìÿ öåëûìè,òî îêðóãëåíèå îñóùåñòâëÿåòñÿ ê áëèæàéøåìó ÷åòíîìó (áàíêîâñêîå îêðóãëåíèå): Round(2.5)=2, Round(3.5)=4 -function Round(x: real): integer; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(x: real; digits: integer): real; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x -function Trunc(x: real): integer; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà x êàê äëèííîå öåëîå -function TruncBigInteger(x: real): BigInteger; -/// Âîçâðàùàåò öåëóþ ÷àñòü ÷èñëà x -function Int(x: real): real; -/// Âîçâðàùàåò äðîáíóþ ÷àñòü ÷èñëà x -function Frac(x: real): real; -/// Âîçâðàùàåò íàèáîëüøåå öåëîå <= x -function Floor(x: real): integer; -/// Âîçâðàùàåò íàèìåíüøåå öåëîå >= x -function Ceil(x: real): integer; -/// Ïåðåâîäèò ðàäèàíû â ãðàäóñû -function RadToDeg(x: real): real; -/// Ïåðåâîäèò ãðàäóñû â ðàäèàíû -function DegToRad(x: real): real; -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë -procedure Randomize; -/// Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë, èñïîëüçóÿ çíà÷åíèå seed. Ïðè îäíîì è òîì æå seed ãåíåðèðóþòñÿ îäèíàêîâûå ïñåâäîñëó÷àéíûå ïîñëåäîâàòåëüíîñòè -procedure Randomize(seed: integer); -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò 0 äî maxValue-1 -function Random(maxValue: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0,maxValue) -function Random(maxValue: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå öåëîå â äèàïàçîíå îò a äî b -function Random(a, b: integer): integer; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [a,b) -function Random(a, b: real): real; -/// Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [0..1) -function Random: real; -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random2(maxValue: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random2(maxValue: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random2(a, b: integer): (integer, integer); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random2(a, b: real): (real, real); -/// Âîçâðàùàåò êîðòåæ èç äâóõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random2: (real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò 0 äî maxValue-1 -function Random3(maxValue: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0,maxValue) -function Random3(maxValue: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ öåëûõ â äèàïàçîíå îò a äî b -function Random3(a, b: integer): (integer, integer, integer); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [a,b) -function Random3(a, b: real): (real, real, real); -/// Âîçâðàùàåò êîðòåæ èç òðåõ ñëó÷àéíûõ âåùåñòâåííûõ â äèàïàçîíå [0..1) -function Random3: (real, real, real); -/// Âîçâðàùàåò ìàêñèìàëüíîå èç ÷èñåë a,b -function Max(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò ìèíèìàëüíîå èç ÷èñåë a,b -function Min(a: ÷èñëî, b: ÷èñëî): ÷èñëî; -/// Âîçâðàùàåò True, åñëè i íå÷åòíî, è False â ïðîòèâíîì ñëó÷àå -function Odd(i: öåëîå): boolean; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ êîìïëåêñíûìè ÷èñëàìè # Functions for Complex numbers -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ñ âåùåñòâåííîé ÷àñòüþ re è ìíèìîé ÷àñòüþ im -function Cplx(re, im: real): Complex; -/// Êîíñòðóèðóåò êîìïëåêñíîå ÷èñëî ïî ïîëÿðíûì êîîðäèíàòàì -function CplxFromPolar(magnitude, phase: real): Complex; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü èç êîìïëåêñíîãî ÷èñëà -function Sqrt(c: Complex): Complex; -/// Âîçâðàùàåò ìîäóëü êîìïëåêñíîãî ÷èñëà -function Abs(c: Complex): Complex; -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå ÷èñëî -function Conjugate(c: Complex): Complex; -/// Âîçâðàùàåò êîñèíóñ êîìïëåêñíîãî ÷èñëà -function Cos(c: Complex): Complex; -/// Âîçâðàùàåò ýêñïîíåíòó êîìïëåêñíîãî ÷èñëà -function Exp(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Ln(c: Complex): Complex; -/// Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log(c: Complex): Complex; -/// Âîçâðàùàåò äåñÿòè÷íûé ëîãàðèôì êîìïëåêñíîãî ÷èñëà -function Log10(c: Complex): Complex; -/// Âîçâðàùàåò ñòåïåíü êîìïëåêñíîãî ÷èñëà -function Power(c, power: Complex): Complex; -/// Âîçâðàùàåò ñèíóñ êîìïëåêñíîãî ÷èñëà -function Sin(c: Complex): Complex; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòàíäàðòíûìè ìíîæåñòâàìè # Subroutines for set of T -///Äîáàâëÿåò ýëåìåíò element âî ìíîæåñòâî s -procedure Include(var s: set of T; element: T); -///Óäàëÿåò ýëåìåíò element èç ìíîæåñòâà s -procedure Exclude(var s: set of T; element: T); -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ ñèìâîëàìè # Subroutines for char -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà 1 -procedure Inc(var c: char); -/// Óâåëè÷èâàåò êîä ñèìâîëà c íà n -procedure Inc(var c: char; n: integer); -/// Óìåíüøàåò êîä ñèìâîëà c íà 1 -procedure Dec(var c: char); -/// Óìåíüøàåò êîä ñèìâîëà c íà n -procedure Dec(var c: char; n: integer); -/// Âîçâðàùàåò ïðåäøåñòâóþùèé x ñèìâîë -function Pred(x: char): char; -/// Âîçâðàùàåò ñëåäóþùèé çà x ñèìâîë -function Succ(x: char): char; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Windows -function ChrAnsi(a: byte): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Windows -function OrdAnsi(a: char): byte; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function Chr(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function Ord(a: char): word; -/// Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode -function ChrUnicode(a: word): char; -/// Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode -function OrdUnicode(a: char): word; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpperCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowerCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function UpCase(ch: char): char; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function LowCase(ch: char): char; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñî ñòðîêàìè # Subroutines for string -/// Ïðåîáðàçóåò öåëîå çíà÷åíèå i ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(i: öåëîå; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: real; var s: string); -/// Ïðåîáðàçóåò âåùåñòâåííîå çíà÷åíèå r ê ñòðîêîâîìó ïðåäñòàâëåíèþ è çàïèñûâàåò ðåçóëüòàò â s -procedure Str(r: single; var s: string); -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function Pos(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function PosEx(subs, s: string; from: integer := 1): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string): integer; -/// Âîçâðàùàåò ïîçèöèþ ïîñëåäíåãî âõîæäåíèÿ ïîäñòðîêè subs â ñòðîêå s íà÷èíàÿ ñ ïîçèöèè from. Åñëè íå íàéäåíà, âîçâðàùàåò 0 -function LastPos(subs, s: string; from: integer): integer; -/// Âîçâðàùàåò äëèíó ñòðîêè -function Length(s: string): integer; -/// Óñòàíàâëèâàåò äëèíó ñòðîêè s ðàâíîé n -procedure SetLength(var s: string; n: integer); -/// Âñòàâëÿåò ïîäñòðîêó source â ñòðîêó s ñ ïîçèöèè index -procedure Insert(source: string; var s: string; index: integer); -/// Óäàëÿåò èç ñòðîêè s count ñèìâîëîâ ñ ïîçèöèè index -procedure Delete(var s: string; index, count: integer); -/// Âîçâðàùàåò ïîäñòðîêó ñòðîêè s äëèíû count ñ ïîçèöèè index -function Copy(s: string; index, count: integer): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1,s2,... -function Concat(s1,s2,...): string; -/// Âîçâðàùàåò ñòðîêó, ÿâëÿþùóþñÿ ðåçóëüòàòîì ñëèÿíèÿ ñòðîê s1 è s2 -function Concat(s1, s2: string): string; -/// Âîçâðàùàåò ñòðîêó â íèæíåì ðåãèñòðå -function LowerCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó â âåðõíåì ðåãèñòðå -function UpperCase(s: string): string; -/// Âîçâðàùàåò ñòðîêó, ñîñòîÿùóþ èç count ñèìâîëîâ ch -function StringOfChar(ch: char; count: integer): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó -function ReverseString(s: string): string; -/// Âîçâðàùàåò èíâåðòèðîâàííóþ ñòðîêó â äèàïàçîíå äëèíû length íà÷èíàÿ ñ èíäåêñà index -function ReverseString(s: string; index,length: integer): string; -/// Ñðàâíèâàåò ñòðîêè. Âîçâðàùàåò çíà÷åíèå < 0 åñëè s1 0 åñëè s1>s2 è = 0 åñëè s1=s2 -function CompareStr(s1, s2: string): integer; -/// Âîçâðàùàåò ïåðâûå count ñèìâîëîâ ñòðîêè s -function LeftStr(s: string; count: integer): string; -/// Âîçâðàùàåò ïîñëåäíèå count ñèìâîëîâ ñòðîêè s -function RightStr(s: string; count: integer): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè è êîíå÷íûìè ïðîáåëàìè -function Trim(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè íà÷àëüíûìè ïðîáåëàìè -function TrimLeft(s: string): string; -/// Âîçâðàùàåò ñòðîêó ñ óäàëåííûìè êîíå÷íûìè ïðîáåëàìè -function TrimRight(s: string): string; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt(s: string): integer; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToInt64(s: string): int64; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToFloat(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ -function StrToReal(s: string): real; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt(s: string; var value: integer): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToInt64(s: string; var value: int64): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToFloat(s: string; var value: single): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToReal(s: string; var value: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s âåùåñòâåííîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryStrToSingle(s: string; var value: single): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadIntegerFromString(s: string; var from: integer): integer; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadRealFromString(s: string; var from: integer): real; -/// Ñ÷èòûâàåò èç ñòðîêè ïîñëåäîâàòåëüíîñòü ñèìâîëîâ äî ïðîáåëüíîãî ñèìâîëà íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWordFromString(s: string; var from: integer): string; -/// Âîçâðàùàåò True åñëè äîñòèãíóò êîíåö ñòðîêè èëè â ñòðîêå îñòàëèñü òîëüêî ïðîáåëüíûå ñèìâîëû è False â ïðîòèâíîì ñëó÷àå -function StringIsEmpty(s: string; var from: integer): boolean; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì.Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadIntegerFromString(s: string; var from: integer; var res: integer): boolean; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì.Âîçâðàùàåò True åñëè ñ÷èòûâàíèå óäà÷íî è False â ïðîòèâíîì ñëó÷àå -function TryReadRealFromString(s: string; var from: integer; var res: real): boolean; -/// Ïðåîáðàçóåò ñòðîêîâîå ïðåäñòàâëåíèå s öåëîãî ÷èñëà ê ÷èñëîâîìó çíà÷åíèþ è çàïèñûâàåò åãî â ïåðåìåííóþ value.Åñëè ïðåîáðàçîâàíèå óñïåøíî, òî err=0, èíà÷å err>0 -procedure Val(s: string; var value: ÷èñëî; var err: integer); -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: integer): string; -/// Ïðåîáðàçóåò öåëîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function IntToStr(a: int64): string; -/// Ïðåîáðàçóåò âåùåñòâåííîå ÷èñëî ê ñòðîêîâîìó ïðåäñòàâëåíèþ -function FloatToStr(a: real): string; -/// Âîçâðàùàåò îòôîðìàòèðîâàííóþ ñòðîêó, ïîñòðîåííóþ ïî ôîðìàòíîé ñòðîêå è ñïèñêó ôîðìàòèðóåìûõ ïàðàìåòðîâ -function Format(formatstring: string; params pars: array of object): string; -//>> Îáùèå ïîäïðîãðàììû # Common subroutines -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Inc(var i: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Inc(var i: integer; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà 1 -procedure Dec(var i: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà n -procedure Dec(var i: integer; n: integer); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Inc(var e: ïåðå÷èñëèìûé òèï); -/// Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Inc(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1 -procedure Dec(var e: ïåðå÷èñëèìûé òèï); -/// Óìåíüøàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n -procedure Dec(var e: ïåðå÷èñëèìûé òèï; n: integer); -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: öåëîå): öåëîå; -/// Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a -function Ord(a: ïåðå÷èñëèìûé òèï): integer; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå -function Succ(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: öåëîå): öåëîå; -/// Âîçâðàùàåò ïðåäøåñòâóþùåå x çíà÷åíèå -function Pred(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï; -/// Ìåíÿåò ìåñòàìè çíà÷åíèÿ äâóõ ïåðåìåííûõ -procedure Swap(var a, b: T); -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ñòðîêè -function Eoln: boolean; -/// Âîçâðàùàåò True, åñëè äîñòèãíóò êîíåö ïîòîêà ââîäà -function Eof: boolean; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ äèíàìè÷åñêèìè ìàññèâàìè # Subroutines for array of T -/// Âîçâðàùàåò 0 -function Low(a: array of T): integer; -/// Âîçâðàùàåò âåðõíþþ ãðàíèöó äèíàìè÷åñêîãî ìàññèâà -function High(a: array of T): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà -function Length(a: array of T): integer; -/// Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà ïî ðàçìåðíîñòè dim -function Length(a: array of T; dim: integer): integer; -/// Óñòàíàâëèâàåò äëèíó îäíîìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -procedure SetLength(var a: array of T); -/// Óñòàíàâëèâàåò ðàçìåðû n-ìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ -procedure SetLength(var a: array of T; n1,n2,...: integer); -/// Ñîçäà¸ò êîïèþ äèíàìè÷åñêîãî ìàññèâà -function Copy(a: array of T): array of T; -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(a: array of T); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(a: array of T; cmp: (T,T)->integer); -/// Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(a: array of T; less: (T,T)->boolean); -/// Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ -procedure Sort(l: List); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp -procedure Sort(l: List; cmp: (T,T)->integer); -/// Ñîðòèðóåò ñïèñîê ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less -procedure Sort(l: List; less: (T,T)->boolean); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â äèíàìè÷åñêîì ìàññèâå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: array of T); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå äèíàìè÷åñêîãî ìàññèâà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: array of T; index, count: integer); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â ñïèñêå íà ïðîòèâîïîëîæíûé -procedure Reverse(a: List); -/// Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå ñïèñêà äëèíû count, íà÷èíàÿ ñ èíäåêñà index -procedure Reverse(a: List; index, count: integer); -/// Ïåðåìåøèâàåò äèíàìè÷åñêèé ìàññèâ ñëó÷àéíûì îáðàçîì -procedure Shuffle(a: array of T); -/// Ïåðåìåøèâàåò ñïèñîê ñëó÷àéíûì îáðàçîì -procedure Shuffle(l: List); -//>> Ïîäïðîãðàììû äëÿ ãåíåðàöèè ïîñëåäîâàòåëüíîñòåé # Subroutines for sequence generation -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b -function Range(a, b: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñèìâîëîâ îò c1 äî c2 -function Range(c1, c2: char): sequence of char; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé (Èñïîëüçóéòå Partition) -function Range(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé -function Partition(a, b: real; n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ îò a äî b ñ øàãîì step -function Range(a, b, step: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü óêàçàííûõ ýëåìåíòîâ -function Seq(params a: array of T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandom(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ öåëûõ ýëåìåíòîâ -function SeqRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñëó÷àéíûõ âåùåñòâåííûõ ýëåìåíòîâ -function SeqRandomReal(n: integer := 10; a: real := 0; b: real := 10): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i) -function SeqGen(count: integer; f: integer->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè f(i), íà÷èíàÿ ñ i=from -function SeqGen(count: integer; f: integer->T; from: integer): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function SeqGen(count: integer; first: T; next: T->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second,ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function SeqGen(count: integer; first, second: T; next: (T,T) ->T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ ñ íà÷àëüíûì çíà÷åíèåì first,ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first: T; next: T->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, íà÷èíàþùóþñÿ ñ first è second,ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó è óñëîâèåì pred ïðîäîëæåíèÿ ïîñëåäîâàòåëüíîñòè -function SeqWhile(first, second: T; next: (T,T) ->T; pred: T->boolean): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ x -function SeqFill(count: integer; x: T): sequence of T; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(n: integer): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(n: integer): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(n: integer): sequence of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqInteger(prompt: string; n: integer): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqReal(prompt: string; n: integer): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadSeqString(prompt: string; n: integer): sequence of string; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(cond: integer->boolean): sequence of integer; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(cond: real->boolean): sequence of real; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(cond: string->boolean): sequence of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqIntegerWhile(prompt: string; cond: integer->boolean): sequence of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqRealWhile(prompt: string; cond: real->boolean): sequence of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå -function ReadSeqStringWhile(prompt: string; cond: string->boolean): sequence of string; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for array of T generation -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Arr(params a: array of T): array of T; -/// Âîçâðàùàåò ìàññèâ, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíñòè -function Arr(a: sequence of T): array of T; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandom(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function ArrRandomInteger(n: integer := 10; a: integer := 0; b: integer := 100): array of integer; -/// Âîçâðàùàåò ìàññèâ ðàçìåðà n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function ArrRandomReal(n: integer := 10; a: real := 0; b: real := 10): array of real; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i) -function ArrGen(count: integer; gen: integer->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, çàïîëíåííûõ çíà÷åíèÿìè gen(i), íà÷èíàÿ ñ i=from -function ArrGen(count: integer; gen: integer->T; from: integer): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first, ñ ôóíêöèåé next ïåðåõîäà îò ïðåäûäóùåãî ê ñëåäóþùåìó -function ArrGen(count: integer; first: T; next: T->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ, íà÷èíàþùèõñÿ ñ first è second, ñ ôóíêöèåé next ïåðåõîäà îò äâóõ ïðåäûäóùèõ ê ñëåäóþùåìó -function ArrGen(count: integer; first, second: T; next: (T,T) ->T): array of T; -/// Âîçâðàùàåò ìàññèâ èç count ýëåìåíòîâ x -function ArrFill(count: integer; x: T): array of T; -/// Âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(n: integer): array of integer; -/// Âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(n: integer): array of real; -/// Âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(n: integer): array of string; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrInteger(prompt: string; n: integer): array of integer; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrReal(prompt: string; n: integer): array of real; -/// Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ìàññèâ èç n ñòðîê, ââåäåííûõ ñ êëàâèàòóðû -function ReadArrString(prompt: string; n: integer): array of string; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Subroutines for matrixes -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè ïî ñòðîêàì -function Matr(m,n: integer; params data: array of T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandom(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè öåëûìè çíà÷åíèÿìè -function MatrRandomInteger(m: integer := 5; n: integer := 5; a: integer := 0; b: integer := 100): array [,] of integer; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè -function MatrRandomReal(m: integer := 5; n: integer := 5; a: real := 0; b: real := 10): array [,] of real; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrFill(m, n: integer; x: T): array [,] of T; -/// Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ýëåìåíòàìè x -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -/// Òðàíñïîíèðóåò äâóìåðíûé ìàññèâ -function Transpose(a: array [,] of T): array [,] of T; -/// Âîçâðàùàåò ìàòðèöó m íà n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrInteger(m, n: integer): array [,] of integer; -/// Âîçâðàùàåò ìàòðèöó m íà n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû -function ReadMatrReal(m, n: integer): array [,] of real; -//>> Ïîäïðîãðàììû äëÿ ñîçäàíèÿ êîðòåæåé # Subroutines for tuple generation -/// Âîçâðàùàåò êîðòåæ èç ýëåìåíòîâ ðàçíûõ òèïîâ -function Rec(x1: T1, x2: T2,...): (T1,T2,...); -//>> Êîðîòêèå ôóíêöèè Lst, LLst, HSet, SSet, Dict, KV # Short functions Lst, HSet, SSet, Dict, KV -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function Lst(params a: array of T): List; -/// Âîçâðàùàåò ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function Lst(a: sequence of T): List; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè -function LLst(params a: array of T): LinkedList; -/// Âîçâðàùàåò äâóñâÿçíûé ñïèñîê, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function LLst(a: sequence of T): LinkedList; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå óêàçàííûìè çíà÷åíèÿìè -function HSet(params a: array of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function HSet(a: sequence of T): HashSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(params a: array of T): SortedSet; -/// Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè -function SSet(a: sequence of T): SortedSet; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of KeyValuePair): Dictionary; -/// Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function Dict(params pairs: array of (TKey, TVal)): Dictionary; -/// Âîçâðàùàåò ïàðó ýëåìåíòîâ (êëþ÷, çíà÷åíèå) -function KV(key: TKey; value: TVal): KeyValuePair; -//>> Ãåíåðàöèÿ áåñêîíå÷íûõ ïîñëåäîâàòåëüíîñòåé # Infinite sequences -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì 1 -function Step(Self: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: integer; step: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò áåñêîíå÷íóþ ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ îò òåêóùåãî çíà÷åíèÿ ñ øàãîì step -function Step(Self: real; step: real): sequence of real; extensionmethod; -/// Ïîâòîðÿåò ïîñëåäîâàòåëüíîñòü áåñêîíå÷íîå ÷èñëî ðàç -function Cycle(Self: sequence of T): sequence of T; extensionmethod; -//>> Ôèêòèâíàÿ ñåêöèÿ XXX - íå óäàëÿòü! # XXX -AdjGroupClass = class -private -cur: T; -enm: IEnumerator; -fin: boolean; -public -begin -enm := a.GetEnumerator(); -fin := enm.MoveNext; -if fin then -cur := enm.Current; -end; -function TakeGroup: sequence of T; -begin -yield cur; -fin := enm.movenext; -while fin do -begin -if enm.current = cur then -yield enm.current -else -begin -cur := enm.Current; -break; -end; -fin := enm.movenext; -end; -end; -end; -//>> Ìåòîä ðàñøèðåíèÿ Print äëÿ ýëåìåíòàðíûõ òèïîâ # Print for elementary types -function Print(Self: integer): integer; extensionmethod; -function Print(Self: real): real; extensionmethod; -function Print(Self: char): char; extensionmethod; -function Print(Self: boolean): boolean; extensionmethod; -function Print(Self: BigInteger): BigInteger; extensionmethod; -function Println(Self: integer): integer; extensionmethod; -function Println(Self: real): real; extensionmethod; -function Println(Self: char): char; extensionmethod; -function Println(Self: boolean): boolean; extensionmethod; -function Println(Self: BigInteger): BigInteger; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ïîñëåäîâàòåëüíîñòåé # Extension methods for sequence of T -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T; delim: string): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function Print(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T; delim: string): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü íà ýêðàí, èñïîëüçóÿ ïðîáåë êà÷åñòâå ðàçäåëèòåëÿ, è ïåðåõîäèò íà íîâóþ ñòðîêó -function Println(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü ñòðîê â ôàéë -function WriteLines(Self: sequence of string; fname: string): sequence of string; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T): sequence of T; extensionmethod; -/// Âûâîäèò ïîñëåäîâàòåëüíîñòü, êàæäûé ýëåìåíò îòîáðàæàåòñÿ ñ ïîìîùüþ ôóíêöèè map è âûâîäèòñÿ íà íîâîé ñòðîêå -function PrintLines(Self: sequence of T; map: T->T1): sequence of T; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T; delim: string): string; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ ïðîáåë â êà÷åñòâå ðàçäåëèòåëÿ -function JoinIntoString(Self: sequence of T): string; extensionmethod; -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè -procedure ForEach(Self: sequence of T; action: T -> ()); extensionmethod; -/// Ïðèìåíÿåò äåéñòâèå ê êàæäîìó ýëåìåíòó ïîñëåäîâàòåëüíîñòè, çàâèñÿùåå îò íîìåðà ýëåìåíòà -procedure ForEach(Self: sequence of T; action: (T,integer) -> ()); extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Sorted(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function SortedDescending(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî âîçðàñòàíèþ ïîñëåäîâàòåëüíîñòü -function Order(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò îòñîðòèðîâàííóþ ïî óáûâàíèþ ïîñëåäîâàòåëüíîñòü -function OrderDescending(Self: sequence of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò ìíîæåñòâî HashSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToHashSet(Self: sequence of T): HashSet; extensionmethod; -/// Âîçâðàùàåò ìíîæåñòâî SortedSet ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToSortedSet(Self: sequence of T): SortedSet; extensionmethod; -/// Âîçâðàùàåò LinkedList ïî äàííîé ïîñëåäîâàòåëüíîñòè -function ToLinkedList(Self: sequence of T): LinkedList; extensionmethod; -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function MinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function MaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMinBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à -function LastMaxBy(Self: sequence of T; selector: T->TKey): T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäíèå count ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè -function TakeLast(Self: sequence of T; count: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü áåç ïîñëåäíèõ count ýëåìåíòîâ -function SkipLast(self: sequence of T; count: integer := 1): sequence of T; extensionmethod; -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod; -/// Äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé -function Cartesian(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòè íà äâå â ïîçèöèè ind -function SplitAt(Self: sequence of T; ind: integer): (sequence of T, sequence of T); extensionmethod; -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ -function Partition(Self: sequence of T; cond: T->boolean): (sequence of T, sequence of T); extensionmethod; -/// Ðàçäåëÿåò ïîñëåäîâàòåëüíîñòè íà äâå ïî çàäàííîìó óñëîâèþ, â êîòîðîì ó÷àñòâóåò èíäåêñ -function Partition(Self: sequence of T; cond: (T,integer)->boolean): (sequence of T, sequence of T); extensionmethod; -/// Îáúåäèíÿåò äâå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod; -/// Îáúåäèíÿåò òðè ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod; -/// Îáúåäèíÿåò ÷åòûðå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé -function ZipTuple(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé íà äâå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1)): (sequence of T, sequence of T1); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé íà òðè ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2)): (sequence of T, sequence of T1, sequence of T2); extensionmethod; -/// Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé íà ÷åòûðå ïîñëåäîâàòåëüíîñòè -function UnZipTuple(Self: sequence of (T, T1, T2, T3)): (sequence of T, sequence of T1, sequence of T2, sequence of T3); extensionmethod; -/// ×åðåäóåò ýëåìåíòû äâóõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a: sequence of T): sequence of T; extensionmethod; -/// ×åðåäóåò ýëåìåíòû òðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b: sequence of T): sequence of T; extensionmethod; -/// ×åðåäóåò ýëåìåíòû ÷åòûðåõ ïîñëåäîâàòåëüíîñòåé -function Interleave(Self: sequence of T; a, b, c: sequence of T): sequence of T; extensionmethod; -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ åäèíèöû -function Numerate(Self: sequence of T): sequence of (integer, T); extensionmethod; -/// Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ íîìåðà from -function Numerate(Self: sequence of T; from: integer): sequence of (integer, T); extensionmethod; -/// Òàáóëèðóåò ôóíêöèþ ïîñëåäîâàòåëüíîñòüþ -function Tabulate(Self: sequence of T; F: T->T1): sequence of (T, T1); extensionmethod; -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ -function Pairwise(Self: sequence of T): sequence of (T, T); extensionmethod; -/// Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ïàð ñîñåäíèõ ýëåìåíòîâ, ïðèìåíÿåò func ê êàæäîé ïàðå ïîëó÷åííûõ ýëåìåíòîâ è ïîëó÷àåò íîâóþ ïîñëåäîâàòåëüíîñòü -function Pairwise(Self: sequence of T; func: (T,T)->Res): sequence of Res; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size -function Batch(Self: sequence of T; size: integer): sequence of sequence of T; extensionmethod; -/// Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà ñåðèè äëèíû size è ïðèìåíÿåò ïðîåêöèþ ê êàæäîé ñåðèè -function Batch(Self: sequence of T; size: integer; proj: Func, Res>): sequence of Res; extensionmethod; -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 -function Slice(Self: sequence of T; from, step: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ñðåç ïîñëåäîâàòåëüíîñòè îò íîìåðà from ñ øàãîì step > 0 äëèíû íå áîëåå count -function Slice(Self: sequence of T; from, step, count: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: sequence of real): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: array of real): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: List): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè -function Incremental(Self: LinkedList): sequence of real; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T)->T1): sequence of T1; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðàçíîñòåé ñîñåäíèõ ýëåìåíòîâ èñõîäíîé ïîñëåäîâàòåëüíîñòè.  êà÷åñòâå ôóíêöèè ðàçíîñòè èñïîëüçóåòñÿ func -function Incremental(Self: sequence of T; func: (T,T,integer)->T1): sequence of T1; extensionmethod; -/// Ãðóïïèðóåò îäèíàêîâûå ïîäðÿä èäóùèå ýëåìåíòû, ïîëó÷àÿ ïîñëåäîâàòåëüíîñòü ìàññèâîâ -function AdjacentGroup(Self: sequence of T): sequence of array of T; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ñïèñêîâ # Extension methods for List T -/// Ïåðåìåøèâàåò ýëåìåíòû ñïèñêà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: List): List; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; start: integer := 0): integer; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: IList; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: IList; index: integer := 0): integer; extensionmethod;where T: IComparable; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: IList; index: integer := 0): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: IList): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMin(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìàêñèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: IList): integer; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1] -function LastIndexMax(Self: IList; index: integer): integer; extensionmethod;where T: System.IComparable; -/// Çàìåíÿåò â ìàññèâå èëè ñïèñêå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: IList; oldValue, newValue: T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: T->T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: IList; f: (T,integer)->T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà èëè ñïèñêà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: IList; f: integer->T); extensionmethod; -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step -function Slice(Self: List; from, step: integer): List; extensionmethod; -/// Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: List; from, step, count: integer): List; extensionmethod; -/// Óäàëÿåò ïîñëåäíèé ýëåìåíò. Åñëè ýëåìåíòîâ íåò, ãåíåðèðóåò èñêëþ÷åíèå -function RemoveLast(Self: List): List; extensionmethod; -procedure CorrectFromTo(situation: integer; Len: integer; var from, to: integer; step: integer); -//>> Ìåòîäû ðàñøèðåíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array [,] of T -/// Êîëè÷åñòâî ñòðîê â äâóìåðíîì ìàññèâå -function RowCount(Self: array [,] of T): integer; extensionmethod; -/// Êîëè÷åñòâî ñòîëáöîâ â äâóìåðíîì ìàññèâå -function ColCount(Self: array [,] of T): integer; extensionmethod; -/// Âûâîä äâóìåðíîãî ìàññèâà, w - øèðèíà ïîëÿ âûâîäà -function Print(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f -function Print(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -/// Âûâîä äâóìåðíîãî ìàññèâà è ïåðåõîä íà ñëåäóþùóþ ñòðîêó, w - øèðèíà ïîëÿ âûâîäà -function Println(Self: array [,] of T; w: integer := 4): array [,] of T; extensionmethod; -/// Âûâîä äâóìåðíîãî âåùåñòâåííîãî ìàññèâà ïî ôîðìàòó :w:f è ïåðåõîä íà ñëåäóþùóþ ñòðîêó -function Println(Self: array [,] of real; w: integer := 7; f: integer := 2): array [,] of real; extensionmethod; -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà -function Row(Self: array [,] of T; k: integer): array of T; extensionmethod; -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà -function Col(Self: array [,] of T; k: integer): array of T; extensionmethod; -/// k-òàÿ ñòðîêà äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function RowSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -/// k-òûé ñòîëáåö äâóìåðíîãî ìàññèâà êàê ïîñëåäîâàòåëüíîñòü -function ColSeq(Self: array [,] of T; k: integer): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê äâóìåðíîãî ìàññèâà -function Rows(Self: array [,] of T): sequence of sequence of T; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòîëáöîâ äâóìåðíîãî ìàññèâà -function Cols(Self: array [,] of T): sequence of sequence of T; extensionmethod; -/// Ìåíÿåò ìåñòàìè äâå ñòðîêè äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapRows(Self: array [,] of T; k1, k2: integer); extensionmethod; -/// Ìåíÿåò ìåñòàìè äâà ñòîëáöà äâóìåðíîãî ìàññèâà ñ íîìåðàìè k1 è k2 -procedure SwapCols(Self: array [,] of T; k1, k2: integer); extensionmethod; -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -/// Ìåíÿåò ñòðîêó k äâóìåðíîãî ìàññèâà íà äðóãóþ ñòðîêó -procedure SetRow(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetRow(k,a.ToArray); -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: array of T); extensionmethod; -/// Ìåíÿåò ñòîëáåö k äâóìåðíîãî ìàññèâà íà äðóãîé ñòîëáåö -procedure SetCol(Self: array [,] of T; k: integer; a: sequence of T); extensionmethod := Self.SetCol(k,a.ToArray); -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü (a[i,j],i,j) -function ElementsWithIndexes(Self: array [,] of T): sequence of (T, integer, integer); extensionmethod; -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòðîêàì -function ElementsByRow(Self: array [,] of T): sequence of T; extensionmethod; -/// Âîçâðàùàåò ïî çàäàííîìó äâóìåðíîìó ìàññèâó ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ ïî ñòîëáöàì -function ElementsByCol(Self: array [,] of T): sequence of T; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: T->T1): array [,] of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array [,] of T; converter: (T,integer,integer)->T1): array [,] of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: T->T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû äâóìåðíîãî ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(Self: array [,] of T; f: (T,integer,integer)->T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû äâóìåðíîãî ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array [,] of T; f: (integer,integer) ->T); extensionmethod; -//>> Ôèêòèâíàÿ ñåêöèÿ YYY - íå óäàëÿòü! # YYY -function Matr(m,n: integer; params data: array of T): array [,] of T; -function MatrRandom(m: integer; n: integer; a, b: integer): array [,] of integer; -function MatrRandomInteger(m: integer; n: integer; a, b: integer): array [,] of integer; -function MatrRandomReal(m: integer; n: integer; a, b: real): array [,] of real; -function MatrFill(m, n: integer; x: T): array [,] of T; -function MatrGen(m, n: integer; gen: (integer,integer)->T): array [,] of T; -function Transpose(a: array [,] of T): array [,] of T; -function ReadMatrInteger(m, n: integer): array [,] of integer; -function ReadMatrReal(m, n: integer): array [,] of real; -//>> Ìåòîäû ðàñøèðåíèÿ îäíîìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ # Extension methods for array of T -/// Ïåðåìåøèâàåò ýëåìåíòû ìàññèâà ñëó÷àéíûì îáðàçîì -function Shuffle(Self: array of T): array of T; extensionmethod; -{/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; start: integer := 0): integer; extensionmethod; -/// Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function AdjacentFind(Self: array of T; eq: (T,T)->boolean; start: integer := 0): integer; extensionmethod; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of T): T; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of T): T; extensionmethod;where T: System.IComparable; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of integer): integer; extensionmethod; -/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò -function Min(Self: array of real): real; extensionmethod; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of integer): integer; extensionmethod; -/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò -function Max(Self: array of real): real; extensionmethod; -{/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMin(Self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index -function IndexMax(self: array of T; index: integer := 0): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMin(Self: array of T): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMin(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà -function LastIndexMax(Self: array of T): integer; extensionmethod; where T: System.IComparable; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index] -function LastIndexMax(Self: array of T; index: integer): integer; extensionmethod; where T: System.IComparable; -/// Çàìåíÿåò â ìàññèâå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå -procedure Replace(Self: array of T; oldValue,newValue: T); extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform(self: array of T; f: T -> T); extensionmethod; -/// Çàïîëíÿåò ýëåìåíòû ìàññèâà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó -procedure Fill(Self: array of T; f: integer -> T); extensionmethod; -/// Âûïîëíÿåò áèíàðíûé ïîèñê â îòñîðòèðîâàííîì ìàññèâå -function BinarySearch(Self: array of T; x: T): integer; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: T->T1): array of T1; extensionmethod; -/// Ïðåîáðàçóåò ýëåìåíòû ìàññèâà è âîçâðàùàåò ïðåîáðàçîâàííûé ìàññèâ -function ConvertAll(Self: array of T; converter: (T,integer)->T1): array of T1; extensionmethod; -/// Âûïîëíÿåò ïîèñê ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function Find(Self: array of T; p: T->boolean): T; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïåðâîãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -function FindIndex(Self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -/// Âîçâðàùàåò â âèäå ìàññèâà âñå ýëåìåíòû, óäîâëåòâîðÿþùèå ïðåäèêàòó -function FindAll(Self: array of T; p: T->boolean): array of T; extensionmethod; -/// Âûïîëíÿåò ïîèñê ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLast(Self: array of T; p: T->boolean): T; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(Self: array of T; p: T->boolean): integer; extensionmethod; -/// Âûïîëíÿåò ïîèñê èíäåêñà ïîñëåäíåãî ýëåìåíòà â ìàññèâå, óäîâëåòâîðÿþùåãî ïðåäèêàòó, íà÷èíàÿ ñ èíäåêñà start. Åñëè íå íàéäåí, âîçâðàùàåòñÿ íóëåâîå çíà÷åíèå ñîîòâåòñòâóþùåãî òèïà -function FindLastIndex(self: array of T; start: integer; p: T->boolean): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function IndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T): integer; extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî âõîæäåíèÿ ýëåìåíòà íà÷èíàÿ ñ èíäåêñà start èëè -1 åñëè ýëåìåíò íå íàéäåí -function LastIndexOf(Self: array of T; x: T; start: integer): integer; extensionmethod; -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ -procedure Sort(Self: array of T); extensionmethod; -/// Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ, èñïîëüçóÿ cmp â êà÷åñòâå ôóíêöèè ñðàâíåíèÿ ýëåìåíòîâ -procedure Sort(Self: array of T; cmp: (T,T) ->integer); extensionmethod; -/// Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ìàññèâà -function High(Self: System.Array); extensionmethod := High(Self); -/// Âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ìàññèâà -function Low(Self: System.Array); extensionmethod := Low(Self); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ îäíîìåðíîãî ìàññèâà -function Indexes(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1); -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: T->boolean): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ -function IndexesOf(Self: array of T; cond: (T,integer) ->boolean): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step -function Slice(Self: array of T; from, step: integer): array of T; extensionmethod; -/// Âîçâðàùàåò ñðåç ìàññèâà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: array of T; from, step, count: integer): array of T; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà integer # Extension methods for integer -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: integer): real; extensionmethod; -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: integer): integer; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: integer; a, b: integer): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: integer; a,b: integer): boolean; extensionmethod; -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå ÷åòíûì -function IsEven(Self: integer): boolean; extensionmethod; -/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå íå÷åòíûì -function IsOdd(Self: integer): boolean; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ÷èñåë îò 1 äî äàííîãî -function Range(Self: integer): sequence of integer; extensionmethod; -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n -function To(Self: integer; n: integer): sequence of integer; extensionmethod; -/// Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n â óáûâàþùåì ïîðÿäêå -function Downto(Self: integer; n: integer): sequence of integer; extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü öåëûõ 0,1,...n-1 -function Times(Self: integer): sequence of integer; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà BigInteger # Extension methods for BigInteger -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: BigInteger): real; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà real # Extension methods for real -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: real; a, b: real): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: real; a,b: real): boolean; extensionmethod; -/// Âîçâðàùàåò êâàäðàòíûé êîðåíü ÷èñëà -function Sqrt(Self: real): real; extensionmethod; -/// Âîçâðàùàåò êâàäðàò ÷èñëà -function Sqr(Self: real): real; extensionmethod; -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî öåëîãî -function Round(Self: real): integer; extensionmethod; -/// Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè -function Round(Self: real; digits: integer): real; extensionmethod; -/// Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî -function RoundBigInteger(Self: real): BigInteger; extensionmethod; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà -function Trunc(Self: real): integer; extensionmethod; -/// Âîçâðàùàåò öåëóþ ÷àñòü âåùåñòâåííîãî ÷èñëà êàê äëèííîå öåëîå -function TruncBigInteger(Self: real): BigInteger; extensionmethod; -/// Âîçâðàùàåò âåùåñòâåííîå, îòôîðìàòèðîâàííîå ê ñòðîêå ñ frac öèôðàìè ïîñëå äåñÿòè÷íîé òî÷êè -function ToString(Self: real; frac: integer): string; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà char # Extension methods for char -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: char; a, b: char): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: char; a,b: char): boolean; extensionmethod; -/// Ïðåäûäóùèé ñèìâîë -function Pred(Self: char); extensionmethod := PABCSystem.Pred(Self); -/// Ñëåäóþùèé ñèìâîë -function Succ(Self: char); extensionmethod := PABCSystem.Succ(Self); -/// Êîä ñèìâîëà â êîäèðîâêå Unicode -function Code(Self: char): integer; extensionmethod := word(Self); -/// ßâëÿåòñÿ ëè ñèìâîë öèôðîé -function IsDigit(Self: char); extensionmethod := char.IsDigit(Self); -/// ßâëÿåòñÿ ëè ñèìâîë áóêâîé -function IsLetter(Self: char): boolean; extensionmethod; -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ íèæíåãî ðåãèñòðà -function IsLower(Self: char): boolean; extensionmethod; -/// Ïðèíàäëåæèò ëè ñèìâîë ê êàòåãîðèè áóêâ âåðõíåãî ðåãèñòðà -function IsUpper(Self: char): boolean; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â öèôðó -function ToDigit(Self: char): integer; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð -function ToLower(Self: char): char; extensionmethod; -/// Ïðåîáðàçóåò ñèìâîë â âåðõíèé ðåãèñòð -function ToUpper(Self: char): char; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà string # Extension methods for string -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function Between(Self: string; a, b: string): boolean; extensionmethod; -/// Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè -function InRange(Self: string; a,b: string): boolean; extensionmethod; -/// Ñ÷èòûâàåò öåëîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadInteger(Self: string; var from: integer): integer; extensionmethod; -/// Ñ÷èòûâàåò âåùåñòâåííîå èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadReal(Self: string; var from: integer): real; extensionmethod; -/// Ñ÷èòûâàåò ñëîâî èç ñòðîêè íà÷èíàÿ ñ ïîçèöèè from è óñòàíàâëèâàåò from çà ñ÷èòàííûì çíà÷åíèåì -function ReadWord(Self: string; var from: integer): string; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â öåëîå -function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); -/// Ïðåîáðàçóåò ñòðîêó â BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå -function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); -/// Ïðåîáðàçóåò ñòðîêó â öåëîå è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå è çàïèñûâàåò åãî â value.Ïðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ False -function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); -/// Ïðåîáðàçóåò ñòðîêó â öåëîåÏðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîåÏðè íåâîçìîæíîñòè ïðåîáðàçîâàíèÿ âîçâðàùàåòñÿ defaultvalue -function ToReal(Self: string; defaultvalue: real): real; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ ñëîâ -function ToWords(Self: string; params delim: array of char): array of string; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ öåëûõ -function ToIntegers(Self: string): array of integer; extensionmethod; -/// Ïðåîáðàçóåò ñòðîêó â ìàññèâ âåùåñòâåííûõ -function ToReals(Self: string): array of real; extensionmethod; -/// Âîçâðàùàåò èíâåðñèþ ñòðîêè -function Inverse(Self: string): string; extensionmethod; -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííîé ñòðîêîé çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg, repl: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Çàìåíÿåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ óêàçàííûì ïðåîáðàçîâàíèåì çàìåíû è âîçâðàùàåò ïðåîáðàçîâàííóþ ñòðîêó -function RegexReplace(Self: string; reg: string; repl: Match->string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ýëåìåíòîâ òèïà Match -function Matches(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of Match; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå ïåðâîå âõîæäåíèå ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò åãî â âèäå ñòðîêè -function MatchValue(Self: string; reg: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; -/// Èùåò â óêàçàííîé ñòðîêå âñå âõîæäåíèÿ ðåãóëÿðíîãî âûðàæåíèÿ è âîçâðàùàåò èõ â âèäå ïîñëåäîâàòåëüíîñòè ñòðîê -function MatchValues(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of string; extensionmethod; -/// Óäîâëåòâîðÿåò ëè ñòðîêà ðåãóëÿðíîìó âûðàæåíèþ -function IsMatch(Self: string; reg: string; options: RegexOptions := RegexOptions.None): boolean; extensionmethod := Regex.IsMatch(Self, reg, options); -/// Óäàëÿåò â ñòðîêå âñå âõîæäåíèÿ óêàçàííûõ ñòðîê -function Remove(Self: string; params targets: array of string): string; extensionmethod; -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ïðàâûõ ñèìâîëîâ -function Right(Self: string; length: integer): string; extensionmethod; -/// Âîçâðàùàåò ïîäñòðîêó, ïîëó÷åííóþ âûðåçàíèåì èç ñòðîêè length ñàìûõ ëåâûõ ñèìâîëîâ -function Left(Self: string; length: integer): string; extensionmethod; -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step -function Slice(Self: string; from, step: integer): string; extensionmethod; -/// Âîçâðàùàåò ñðåç ñòðîêè îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -function Slice(Self: string; from, step, count: integer): string; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Func # Extension methods for Func -/// Ñóïåðïîçèöèÿ ôóíêöèé -function Compose(Self: T2->TResult; composer: T1->T2): T1->TResult; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ òèïà Complex # Extension methods for Complex -/// Âîçâðàùàåò êîìïëåêñíî ñîïðÿæåííîå çíà÷åíèå -function Conjugate(Self: Complex): Complex; extensionmethod; -//>> Ìåòîäû ðàñøèðåíèÿ ñëîâàðåé # Extension methods for IDictionary -/// Âîçâðàùàåò â ñëîâàðå çíà÷åíèå, ñâÿçàííîå ñ óêàçàííûì êëþ÷îì, à åñëè òàêîãî êëþ÷à íåò, òî çíà÷åíèå ïî óìîë÷àíèþ -function Get(Self: IDictionary; K: Key): Value; extensionmethod; -//>> Ïîäïðîãðàììû äëÿ ðàáîòû ñ òèïèçèðîâàííûìè ôàéëàìè # Subroutines for typed files -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenBinary(fname: string): file of T; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateBinary(fname: string): file of T; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFile(fname: string): file of T; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFile(fname: string): file of T; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileInteger(fname: string): file of integer; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function OpenFileReal(fname: string): file of real; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë öåëûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileInteger(fname: string): file of integer; -/// Ñîçäà¸ò èëè îáíóëÿåò òèïèçèðîâàííûé ôàéë âåùåñòâåííûõ è âîçâðàùàåò çíà÷åíèå äëÿ èíèöèàëèçàöèè ôàéëîâîé ïåðåìåííîé -function CreateFileReal(fname: string): file of real; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -procedure WriteElements(fname: string; ss: sequence of T); -//>> Ìåòîäû ðàñøèðåíèÿ òèïèçèðîâàííûõ ôàéëîâ # Extension methods for typed files -/// Óñòàíàâëèâàåò òåêóùóþ ïîçèöèþ ôàéëîâîãî óêàçàòåëÿ â òèïèçèðîâàííîì ôàéëå íà ýëåìåíò ñ íîìåðîì n -function Seek(Self: file of T; n: int64): file of T; extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò ñëåäóþùèé ýëåìåíò òèïèçèðîâàííîãî ôàéëà -function Read(Self: file of T): T; extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò äâà ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read2(Self: file of T): (T,T); extensionmethod; -/// Ñ÷èòûâàåò è âîçâðàùàåò òðè ñëåäóþùèõ ýëåìåíòà òèïèçèðîâàííîãî ôàéëà â âèäå êîðòåæà -function Read3(Self: file of T): (T,T,T); extensionmethod; -/// Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ îòêðûòîãî òèïèçèðîâàííîãî ôàéëà îò òåêóùåãî ýëåìåíòà äî êîíå÷íîãî -function ReadElements(Self: file of T): sequence of T; extensionmethod; -/// Îòêðûâàåò òèïèçèðîâàííûé ôàéë, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü åãî ýëåìåíòîâ è çàêðûâàåò åãî -function ReadElements(fname: string): sequence of T; -/// Çàïèñûâàåò äàííûå â òèïèçèðîâàííûé ôàéë -procedure Write(Self: file of T; params vals: array of T); extensionmethod; -/// Îòêðûâàåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Reset(Self: file of T); extensionmethod; -/// Ñîçäàåò íîâûé èëè îáíóëÿåò ñóùåñòâóþùèé òèïèçèðîâàííûé ôàéë -procedure Rewrite(Self: file of T); extensionmethod; diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs index 90199c489..5284c8476 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs @@ -2,7 +2,7 @@ // This CSharp output file generated by Gardens Point LEX // Version: 1.1.3.301 // Machine: DESKTOP-A6LT9RI -// DateTime: 22.08.2018 11:25:53 +// DateTime: 22.08.2018 20:27:04 // UserName: ????????? // GPLEX input file // GPLEX frame file diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs index 0e526aa47..24c1737d1 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -2,7 +2,7 @@ // GPPG version 1.3.6 // Machine: DESKTOP-A6LT9RI -// DateTime: 22.08.2018 11:25:54 +// DateTime: 22.08.2018 20:27:05 // UserName: ????????? // Input file diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.ymc b/Parsers/PascalABCParserNewSaushkin/PABC.ymc index e070b0fbb..c22e8b924 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.ymc +++ b/Parsers/PascalABCParserNewSaushkin/PABC.ymc @@ -212,5 +212,6 @@ script= + diff --git a/bin/Lib/ABCObjects.pas b/bin/Lib/ABCObjects.pas index b65f86c25..45fc696bd 100644 --- a/bin/Lib/ABCObjects.pas +++ b/bin/Lib/ABCObjects.pas @@ -112,7 +112,7 @@ type property Top: integer read fy write SetY; /// Ширина графичеÑ�кого объекта property Width: integer read fw write SetWidth; - /// Ð’Ñ‹Ñ�ота графичеÑ�кого объекта + /// Ð’Ñ‹Ñ�ота графичеÑ�кого объекта property Height: integer read fh write SetHeight; ///x-координата вектора перемещениÑ� объекта при вызове метода Move. ///По умолчанию уÑ�тановлено в 0. ДлÑ� неподвижных объектов может быть иÑ�пользовано diff --git a/bin/Lib/GraphWPF.pas b/bin/Lib/GraphWPF.pas index c683d4c0e..f08d1bdb8 100644 --- a/bin/Lib/GraphWPF.pas +++ b/bin/Lib/GraphWPF.pas @@ -304,6 +304,8 @@ function RGB(r,g,b: byte): Color; function ARGB(a,r,g,b: byte): Color; /// Возвращает Ñ�лучайный цвет function RandomColor: Color; +/// Возвращает полноÑ�тью прозрачный цвет +function EmptyColor: Color; /// Возвращает Ñ�лучайный цвет function clRandom: Color; /// Возвращает точку Ñ� координатами (x,y) @@ -402,6 +404,7 @@ implementation function RGB(r,g,b: byte) := Color.Fromrgb(r, g, b); function ARGB(a,r,g,b: byte) := Color.FromArgb(a, r, g, b); function RandomColor := RGB(PABCSystem.Random(256), PABCSystem.Random(256), PABCSystem.Random(256)); +function EmptyColor: Color := ARGB(0,0,0,0); function clRandom := RandomColor(); function Pnt(x,y: real) := new Point(x,y); function Rect(x,y,w,h: real) := new System.Windows.Rect(x,y,w,h); diff --git a/bin/Lib/GraphWPFBase.pas b/bin/Lib/GraphWPFBase.pas index eda8c365d..05809118d 100644 --- a/bin/Lib/GraphWPFBase.pas +++ b/bin/Lib/GraphWPFBase.pas @@ -143,13 +143,13 @@ function WindowType.GetTop := InvokeReal(WindowTypeGetTopP); procedure WindowTypeSetWidthP(w: real) := MainWindow.Width := w + wplus; procedure WindowType.SetWidth(w: real) := Invoke(WindowTypeSetWidthP,w); -function WindowTypeGetWidthP := MainWindow.Width - wplus; +function WindowTypeGetWidthP := MainWindow.ActualWidth - wplus; function WindowType.GetWidth := InvokeReal(WindowTypeGetWidthP); procedure WindowTypeSetHeightP(h: real) := MainWindow.Height := h + hplus; procedure WindowType.SetHeight(h: real) := Invoke(WindowTypeSetHeightP,h); -function WindowTypeGetHeightP := MainWindow.Height - hplus; +function WindowTypeGetHeightP := MainWindow.ActualHeight - hplus; function WindowType.GetHeight := InvokeReal(WindowTypeGetHeightP); procedure WindowTypeSetCaptionP(c: string) := MainWindow.Title := c; diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index c8754c78b..8b682e83a 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -9858,13 +9858,13 @@ begin Result := System.Array.FindLast(self, p); end; -/// ВыполнÑ�ет поиÑ�к индекÑ�а поÑ�леднего Ñ�лемента в маÑ�Ñ�иве, удовлетворÑ�ющего предикату. ЕÑ�ли не найден, возвращаетÑ�Ñ� нулевое значение Ñ�оответÑ�твующего типа +/// ВыполнÑ�ет поиÑ�к индекÑ�а поÑ�леднего Ñ�лемента в маÑ�Ñ�иве, удовлетворÑ�ющего предикату. ЕÑ�ли не найден, возвращаетÑ�Ñ� -1 function FindLastIndex(Self: array of T; p: T->boolean): integer; extensionmethod; begin Result := System.Array.FindLastIndex(self, p); end; -/// ВыполнÑ�ет поиÑ�к индекÑ�а поÑ�леднего Ñ�лемента в маÑ�Ñ�иве, удовлетворÑ�ющего предикату, начинаÑ� Ñ� индекÑ�а start. ЕÑ�ли не найден, возвращаетÑ�Ñ� нулевое значение Ñ�оответÑ�твующего типа +/// ВыполнÑ�ет поиÑ�к индекÑ�а поÑ�леднего Ñ�лемента в маÑ�Ñ�иве, удовлетворÑ�ющего предикату, в диапазоне индекÑ�ов от 0 до start. ЕÑ�ли не найден, возвращаетÑ�Ñ� -1 function FindLastIndex(self: array of T; start: integer; p: T->boolean): integer; extensionmethod; begin Result := System.Array.FindLastIndex(Self, start, p); diff --git a/bin/Lib/WPFObjects.pas b/bin/Lib/WPFObjects.pas index b9c2f67b4..52fde33ef 100644 --- a/bin/Lib/WPFObjects.pas +++ b/bin/Lib/WPFObjects.pas @@ -63,6 +63,7 @@ function ColorBrush(c: Color): GBrush; type + /// КлаÑ�Ñ� графичеÑ�кого окна GraphWindowType = class private function GetTop: real; @@ -80,9 +81,11 @@ type property Height: real read GetHeight; end; + /// ПеречиÑ�лимый тип выравниваниÑ� текÑ�та в Ñ�войÑ�тве Text или Number Alignment = (LeftTop,CenterTop,RightTop,LeftCenter,Center,RightCenter,LeftBottom,CenterBottom,RightBottom); ObjectWPF = class; ///!# + /// КлаÑ�Ñ� Ñ�пиÑ�ка графичеÑ�ких объектов ObjectsType = class private l := new List; @@ -93,16 +96,21 @@ type procedure ToFrontP(ob: ObjectWPF); function GetItem(i: integer): ObjectWPF := l[i]; procedure SetItem(i: integer; value: ObjectWPF) := l[i] := value; - public procedure Add(ob: ObjectWPF) := Invoke(AddP,ob); procedure Destroy(ob: ObjectWPF) := Invoke(DeleteP,ob); + public + /// Перемещает объект на задний план procedure ToBack(ob: ObjectWPF) := Invoke(ToBackP,ob); + /// Перемещает объект на передний план procedure ToFront(ob: ObjectWPF) := Invoke(ToFrontP,ob); + /// Возвращает количеÑ�тво объектов ObjectWPF property Count: integer read l.Count; + /// Возвращает или уÑ�танавливает i-тый объект ObjectWPF property Items[i: integer]: ObjectWPF read GetItem write SetItem; default; end; ///!# + /// Базовый клаÑ�Ñ� графичеÑ�ких объектов ObjectWPF = class private can: Canvas; @@ -113,12 +121,21 @@ type ChildrenWPF := new List; procedure InitOb(x,y,w,h: real; o: FrameworkElement; SetWH: boolean := True); public - dx,dy: real; + /// Ð�аправление движениÑ� по оÑ�и X. ИÑ�пользуетÑ�Ñ� методом Move + dx: real; + /// Ð�аправление движениÑ� по оÑ�и Y. ИÑ�пользуетÑ�Ñ� методом Move + dy: real; + /// ОтÑ�туп графичеÑ�кого объекта от левого краÑ� property Left: real read InvokeReal(()->Canvas.GetLeft(can)) write Invoke(procedure->Canvas.SetLeft(can,value)); + /// ОтÑ�туп графичеÑ�кого объекта от верхнего краÑ� property Top: real read InvokeReal(()->Canvas.GetTop(can)) write Invoke(procedure->Canvas.SetTop(can,value)); + /// Ширина графичеÑ�кого объекта property Width: real read InvokeReal(()->gr.Width) write Invoke(procedure->begin gr.Width := value; ob.Width := value end); virtual; + /// Ð’Ñ‹Ñ�ота графичеÑ�кого объекта property Height: real read InvokeReal(()->gr.Height) write Invoke(procedure->begin gr.Height := value; ob.Height := value end); virtual; + /// ТекÑ�Ñ‚ внутри графичеÑ�кого объекта property Text: string read InvokeString(()->t.Text) write Invoke(procedure->t.Text := value); + /// Целое чиÑ�ло, выводимое в центре графичеÑ�кого объекта. ИÑ�пользуетÑ�Ñ� Ñ�войÑ�тво Text property Number: integer read Text.ToInteger(0) write Text := Value.ToString; private procedure WTA(value: Alignment); @@ -146,45 +163,81 @@ type Result.Transform := g; // верÑ�иÑ� end; public + /// Выравнивание текÑ�та внутри графичеÑ�кого объекта property TextAlignment: Alignment write Invoke(WTA,Value); + /// Размер текÑ�та внутри графичеÑ�кого объекта property FontSize: real read InvokeReal(()->t.FontSize) write Invoke(procedure->t.FontSize := value); + /// ИмÑ� шрифта текÑ�та внутри графичеÑ�кого объекта property FontName: string write Invoke(procedure->t.FontFamily := new FontFamily(value)); + /// Цвет шрифта текÑ�та внутри графичеÑ�кого объекта property FontColor: Color read Invoke&(()->(t.Foreground as SolidColorBrush).Color) write Invoke(procedure->t.Foreground := new SolidColorBrush(value)); + /// Центр графичеÑ�кого объекта property Center: Point read Pnt(Left + Width/2, Top + Height/2) write MoveTo(Value.X - Width/2, Value.Y - Height/2); + /// Левый верхний угол графичеÑ�кого объекта property LeftTop: Point read Pnt(Left,Top); + /// Левый нижний угол графичеÑ�кого объекта property LeftBottom: Point read Pnt(Left,Top + Height); + /// Правый верхний угол графичеÑ�кого объекта property RightTop: Point read Pnt(Left + Height,Top); + /// Правый нижний угол графичеÑ�кого объекта property RightBottom: Point read Pnt(Left + Height,Top + Height); - + /// Угол поворота графичеÑ�кого объекта (по чаÑ�овой Ñ�трелке) property RotateAngle: real read InvokeReal(()->r.Angle) write Invoke(procedure->r.Angle := value); + /// Центр поворота графичеÑ�кого объекта property RotateCenter: Point read Invoke&(()->new Point(r.CenterX,r.CenterY)) write Invoke(procedure->begin r.CenterX := value.X; r.CenterY := value.Y; end); + /// Цвет графичеÑ�кого объекта property Color: GColor read RGB(0,0,0) write begin end; virtual; + /// Перемещает левый верхний угол графичеÑ�кого объекта к точке (x,y) procedure MoveTo(x,y: real) := (Self.Left,Self.Top) := (x,y); + /// Перемещает графичеÑ�кий объект в направлении RotateAngle (вверх при RotateAngle=0) procedure MoveForward(r: real); begin Left := Left + r*Cos(Pi/180*(90-RotateAngle)); Top := Top - r*Sin(Pi/180*(90-RotateAngle)); end; - - procedure MoveOn(dx,dy: real) := MoveTo(Left+dx,Top+dy); + /// Перемещает графичеÑ�кий объект на вектор (a,b) + procedure MoveOn(a,b: real) := MoveTo(Left+a,Top+b); + /// Перемещает графичеÑ�кий объект на вектор (dx,dy) procedure Move := MoveOn(dx,dy); + /// Поворачивает графичеÑ�кий объект по чаÑ�овой Ñ�трелке на угол da procedure Rotate(da: real) := RotateAngle += da; + /// ДобавлÑ�ет к графичеÑ�кому объекту дочерний procedure AddChild(ch: ObjectWPF) := Invoke(AddChildP,ch); + /// УдалÑ�ет из графичеÑ�кого объекта дочерний procedure DeleteChild(ch: ObjectWPF) := Invoke(DeleteChildP,ch); + /// УдалÑ�ет графичеÑ�кий объект procedure Destroy; + /// ПереноÑ�ит графичеÑ�кий объект на передний план procedure ToFront; + /// ПереноÑ�ит графичеÑ�кий объект на задний план procedure ToBack; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black): ObjectWPF; + begin + Text := txt; + FontSize := size; + Self.FontName := fontname; + Self.FontColor := c; + Result := Self; + end; + /// Декоратор поворота объекта + function WithRotate(da: real): ObjectWPF; + begin + Rotate(da); + Result := Self; + end; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов Ñ� границей BoundedObjectWPF = class(ObjectWPF) private function Element := ob as Shape; @@ -197,29 +250,61 @@ type procedure EF(value: GColor) := Element.Fill := new SolidColorBrush(Value); procedure ES(value: GColor) := Element.Stroke := new SolidColorBrush(Value); procedure EST(value: real) := Element.StrokeThickness := Value; + function WithNoBorderP: BoundedObjectWPF; + begin + Element.Stroke := nil; + Result := Self; + end; public + /// Цвет графичеÑ�кого объекта property Color: GColor read Invoke&(()->(Element.Fill as SolidColorBrush).Color) write Invoke(EF,value); override; + /// Цвет границы графичеÑ�кого объекта property BorderColor: GColor read Invoke&(()->begin var scb := Element.Stroke as SolidColorBrush; - Result := scb<>nil ? scb.Color : ARGB(0,255,255,255); + Result := scb<>nil ? scb.Color : ARGB(255,0,0,0); end) write Invoke(ES,value); + /// Ширина границы графичеÑ�кого объекта property BorderWidth: real read InvokeReal(()->Element.StrokeThickness) write Invoke(EST,value); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1): BoundedObjectWPF; + begin + BorderColor := BorderColor; + if (w>=0) then + BorderWidth := w; + Result := Self; + end; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder: BoundedObjectWPF := Invoke&(WithNoBorderP); end; - + + /// КлаÑ�Ñ� графичеÑ�ких объектов "ЭллипÑ�" EllipseWPF = class(BoundedObjectWPF) private procedure InitOb2(x,y,w,h: real; c: GColor) := InitOb1(x,y,w,h,c,new Ellipse()); function GetInternalGeometry: Geometry; override := (ob as Shape).RenderedGeometry; public + /// Создает Ñ�ллипÑ� размера (w,h) заданного цвета Ñ� координатами левого верхнего угла (x,y) constructor (x,y,w,h: real; c: GColor) := Invoke(InitOb2,x,y,w,h,c); + /// Создает Ñ�ллипÑ� размера (w,h) заданного цвета Ñ� координатами левого верхнего угла, задаваемыми точкой + constructor (p: Point; w,h: real; c: GColor) := Invoke(InitOb2,p.x,p.y,w,h,c); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as EllipseWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as EllipseWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as EllipseWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as EllipseWPF; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "ОкружноÑ�ть" CircleWPF = class(BoundedObjectWPF) private procedure InitOb2(x,y,r: real; c: GColor) := InitOb1(x-r,y-r,2*r,2*r,c,new Ellipse()); @@ -234,19 +319,34 @@ type end; function GetInternalGeometry: Geometry; override := (ob as Shape).RenderedGeometry; public + /// Создает круг радиуÑ�а r заданного цвета Ñ� координатами центра (x,y) constructor (x,y,r: real; c: GColor) := Invoke(InitOb2,x,y,r,c); + /// Создает круг радиуÑ�а r заданного цвета Ñ� центром p constructor (p: Point; r: real; c: GColor) := Invoke(InitOb2,p.x,p.y,r,c); + /// Ширина круга property Width: real read InvokeReal(()->ob.Width) write Invoke(WT,Value); override; + /// Ð’Ñ‹Ñ�ота круга property Height: real read InvokeReal(()->ob.Height) write Invoke(HT,Value); override; + /// РадиуÑ� круга property Radius: real read InvokeReal(()->ob.Height/2) write Invoke(Rad,Value); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as CircleWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as CircleWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as CircleWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as CircleWPF; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "ПрÑ�моугольник" RectangleWPF = class(BoundedObjectWPF) private procedure InitOb2(x,y,w,h: real; c: GColor); @@ -256,17 +356,43 @@ type end; function GetInternalGeometry: Geometry; override := (ob as Shape).RenderedGeometry; public + /// Создает прÑ�моугольник размера (w,h) заданного цвета Ñ� координатами левого верхнего угла (x,y) constructor (x,y,w,h: real; c: GColor) := Invoke(InitOb2,x,y,w,h,c); + /// Создает прÑ�моугольник размера (w,h) заданного цвета Ñ� координатами левого верхнего угла, задаваемыми точкой + constructor (p: Point; w,h: real; c: GColor) := Invoke(InitOb2,p.x,p.y,w,h,c); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as RectangleWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as RectangleWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as RectangleWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as RectangleWPF; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "Квадрат" SquareWPF = class(CircleWPF) private procedure InitOb2(x,y,w: real; c: GColor) := InitOb1(x,y,w,w,c,new Rectangle()); function GetInternalGeometry: Geometry; override := (ob as Shape).RenderedGeometry; public + /// Создает квадрат Ñ�о Ñ�тороной w заданного цвета Ñ� координатами левого верхнего угла (x,y) constructor (x,y,w: real; c: GColor) := Invoke(InitOb2,x,y,w,c); + /// Создает квадрат Ñ�о Ñ�тороной w заданного цвета Ñ� координатами левого верхнего угла, задаваемыми точкой + constructor (p: Point; w: real; c: GColor) := Invoke(InitOb2,p.x,p.y,w,c); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as SquareWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as SquareWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as SquareWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as SquareWPF; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "ПрÑ�моугольник Ñ�о Ñ�кругленными краÑ�ми" RoundRectWPF = class(BoundedObjectWPF) procedure InitOb2(x,y,w,h,r: real; c: GColor); begin @@ -277,9 +403,28 @@ type end; function GetInternalGeometry: Geometry; override := (ob as Shape).RenderedGeometry; public + /// Создает прÑ�моугольник Ñ�о Ñ�кругленными краÑ�ми размера (w,h) Ñ� радиуÑ�ом Ñ�круглениÑ� r заданного цвета Ñ� координатами левого верхнего угла (x,y) constructor (x,y,w,h,r: real; c: GColor) := Invoke(InitOb2,x,y,w,h,r,c); + /// Создает прÑ�моугольник Ñ�о Ñ�кругленными краÑ�ми размера (w,h) Ñ� радиуÑ�ом Ñ�круглениÑ� r заданного цвета Ñ� координатами левого верхнего угла, задаваемыми точкой + constructor (p: Point; w,h,r: real; c: GColor) := Invoke(InitOb2,p.x,p.y,w,h,r,c); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as RoundRectWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as RoundRectWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as RoundRectWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as RoundRectWPF; + property RoundRadius: real + read InvokeReal(()->(ob as Rectangle).RadiusX) + write begin + var ob1 := ob; + Invoke(procedure->begin var r := ob1 as Rectangle; r.RadiusX := value; r.Radiusy := value end); + end; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "Квадрат Ñ�о Ñ�кругленными краÑ�ми" RoundSquareWPF = class(CircleWPF) procedure InitOb2(x,y,w,r: real; c: GColor); begin @@ -290,9 +435,22 @@ type end; function GetInternalGeometry: Geometry; override := (ob as Shape).RenderedGeometry; public + /// Создает квадрат Ñ�о Ñ�кругленными краÑ�ми Ñ�о Ñ�тороной w Ñ� радиуÑ�ом Ñ�круглениÑ� r заданного цвета Ñ� координатами левого верхнего угла (x,y) constructor (x,y,w,r: real; c: GColor) := Invoke(InitOb2,x,y,w,r,c); + /// Создает квадрат Ñ�о Ñ�кругленными краÑ�ми Ñ�о Ñ�тороной w Ñ� радиуÑ�ом Ñ�круглениÑ� r заданного цвета Ñ� координатами левого верхнего угла, задаваемыми точкой + constructor (p: Point; w,r: real; c: GColor) := Invoke(InitOb2,p.x,p.y,w,r,c); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as RoundSquareWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as RoundSquareWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as RoundSquareWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as RoundSquareWPF; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "Отрезок" LineWPF = class(ObjectWPF) private function Element := ob as Line; @@ -346,18 +504,31 @@ type end; function GetInternalGeometry: Geometry; override := (ob as Shape).RenderedGeometry; public + /// Создает отрезок, Ñ�оединÑ�ющий точки (x1,y1) и (x2,y2) constructor (x1,y1,x2,y2: real; c: GColor) := Invoke(InitOb2,x1,y1,x2,y2,c); + /// Создает отрезок, Ñ�оединÑ�ющий точки p1 и p2 + constructor (p1,p2: Point; c: GColor) := Invoke(InitOb2,p1.x,p1.y,p2.x,p2.y,c); + /// Цвет отрезка property Color: GColor read Invoke&(()->(Element.Stroke as SolidColorBrush).Color) write Invoke(ES,value); override; + /// Ширина линии отрезка property LineWidth: real read InvokeReal(()->Element.StrokeThickness) write Invoke(EST,value); + /// Координата x начальной точки отрезка property X1: real read InvokeReal(()->Element.X1 + Left) write Invoke(WX1,value); + /// Координата x конечной точки отрезка property X2: real read InvokeReal(()->Element.X2 + Left) write Invoke(WX2,value); + /// Координата y начальной точки отрезка property Y1: real read InvokeReal(()->Element.Y1 + Top) write Invoke(WY1,value); + /// Координата y конечной точки отрезка property Y2: real read InvokeReal(()->Element.Y2 + Top) write Invoke(WY2,value); + /// Ð�ачальнаÑ� точка отрезка property P1: Point read Pnt(X1,Y1) write begin X1 := Value.X; Y1 := Value.Y end; + /// КонечнаÑ� точка отрезка + property P2: Point read Pnt(X2,Y2) write begin X2 := Value.X; Y2 := Value.Y end; + /// Ширина отрезка property Width: real read InvokeReal(()->gr.Width) write @@ -365,6 +536,7 @@ type var gr1 := gr; Invoke(procedure->begin gr1.Width := value; end); end; override; + /// Ð’Ñ‹Ñ�ота отрезка property Height: real read InvokeReal(()->gr.Height) write @@ -372,8 +544,20 @@ type var gr1 := gr; Invoke(procedure->begin gr1.Height := value; end); end; override; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as LineWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as LineWPF; + /// Декоратор ширины линии отрезка + function WithLineWidth(lw: real): LineWPF; + begin + LineWidth := lw; + Result := Self; + end; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "Правильный многоугольник" RegularPolygonWPF = class(BoundedObjectWPF) private n: integer; @@ -385,8 +569,7 @@ type end; function ChangePointCollection(r: real; n: integer): PointCollection; begin - var pp := Partition(0,2*Pi,n).Select(phi->Pnt(r+r*cos(phi-Pi/2),r+r*sin(phi-Pi/2))).ToArray; - Result := new PointCollection(pp); + var pp := Partition(0,2*Pi,n).Select(phi->Pnt(r+r*cos(phi-Pi/2),r+r*sin(phi-Pi/2))).ToArray; Result := new PointCollection(pp); end; function CreatePolygon(r: real; n: integer): Polygon; begin @@ -409,22 +592,38 @@ type end; function GetInternalGeometry: Geometry; override := new EllipseGeometry(Center,Width/2,Height/2); public + /// Создает правильный многоугольник заданного цвета Ñ� координатами центра (x,y) и радиуÑ�ом опиÑ�анной окружноÑ�ти r constructor (x,y,r: real; n: integer; c: GColor) := Invoke(InitOb2,x,y,r,n,c); + /// Создает правильный многоугольник заданного цвета Ñ� центром в заданной точке и радиуÑ�ом опиÑ�анной окружноÑ�ти r constructor (p: Point; r: real; n: integer; c: GColor) := Create(p.X,p.Y,r,n,c); + /// Ширина объекта property Width: real read InvokeReal(()->gr.Width) write begin end; override; + /// Ð’Ñ‹Ñ�ота объекта property Height: real read InvokeReal(()->gr.Height) write begin end; override; + /// РадиуÑ� опиÑ�анной окрежноÑ�ти property Radius: real read InvokeReal(()->gr.Height/2) write Invoke(Rad,Value); virtual; + /// КоличеÑ�тво вершин property Count: integer read InvokeInteger(()->n) write Invoke(Cnt,Value); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as RegularPolygonWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as RegularPolygonWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as RegularPolygonWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as RegularPolygonWPF; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "Звезда" StarWPF = class(RegularPolygonWPF) private rint: real; @@ -465,21 +664,37 @@ type Element.Points := ChangePointCollection(Radius,rint,value); end; public + /// Создает звезду заданного цвета Ñ� координатами центра (x,y), радиуÑ�ом опиÑ�анной окружноÑ�ти r и внутренним радиуÑ�ом rinternal constructor (x,y,r,rinternal: real; n: integer; c: GColor); begin if rinternalgr.Height/2) write Invoke(Rad,Value); override; + /// Внутренний радиуÑ� property InternalRadius: real read rint write Invoke(IntRad,Value); + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as StarWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as StarWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as StarWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as StarWPF; end; + PointsArray = array of Point; + + /// КлаÑ�Ñ� графичеÑ�ких объектов "Многоугольник" PolygonWPF = class(BoundedObjectWPF) private procedure InitOb2(pp: array of Point; c: GColor); @@ -489,7 +704,7 @@ type var y1 := pp.Min(p->p.y); var y2 := pp.Max(p->p.y); var a := pp.Select(p->Pnt(p.x-x1,p.y-y1)).ToArray; - InitOb1(x1,y1,x2-x1,y2-y1,c,CreatePolygon(a)); + InitOb1(x1,y1,x2-x1,y2-y1,c,CreatePolygon(a),false); end; function CreatePolygon(pp: array of Point): Polygon; begin @@ -498,9 +713,35 @@ type Result := p; end; public + /// Создает многоугольник заданного цвета Ñ� координатами вершин, заданными маÑ�Ñ�ивом точек pp constructor (pp: array of Point; c: GColor) := Invoke(InitOb2,pp,c); + /// МаÑ�Ñ�ив вершин + property Points: array of Point + read Invoke&(()->(ob as Polygon).Points.Select(p->p).ToArray) + write begin + var ob1 := ob; + var pp := value; + var x1 := pp.Min(p->p.x); + var x2 := pp.Max(p->p.x); + var y1 := pp.Min(p->p.y); + var y2 := pp.Max(p->p.y); + var a := pp.Select(p->Pnt(p.x-x1,p.y-y1)).ToArray; + MoveTo(x1,y1); + //(gr.Width,gr.Height) := (x2-x1,y2-y1); + Invoke(procedure -> (ob1 as Polygon).Points := new PointCollection(a)); + end; + /// Декоратор включениÑ� границы объекта + function WithBorder(w: real := -1) := inherited WithBorder(w) as PolygonWPF; + /// Декоратор выключениÑ� границы объекта + function WithNoBorder := inherited WithNoBorder as PolygonWPF; + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as PolygonWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as PolygonWPF; end; + /// КлаÑ�Ñ� графичеÑ�ких объектов "РиÑ�унок" PictureWPF = class(ObjectWPF) private function CreateBitmapImage(fname: string) := new BitmapImage(new System.Uri(fname,System.UriKind.Relative)); @@ -526,8 +767,19 @@ type end; function GetInternalGeometry: Geometry; override := new RectangleGeometry(Rect(Left,Top,Width,Height)); public + /// Создает риÑ�унок из файла fname Ñ� координатами левого верхнего угла (x,y) constructor (x,y: real; fname: string) := Invoke(InitOb2,x,y,fname); + /// Создает риÑ�унок из файла fname Ñ� координатами левого верхнего угла (x,y) и размерами (w,h) constructor (x,y,w,h: real; fname: string) := Invoke(InitOb3,x,y,w,h,fname); + /// Создает риÑ�унок из файла fname Ñ� координатой левого верхнего угла, заданной точкой p + constructor (p: Point; fname: string) := Invoke(InitOb2,p.x,p.y,fname); + /// Создает риÑ�унок из файла fname Ñ� координатой левого верхнего угла, заданной точкой p, и размерами (w,h) + constructor (p: Point; w,h: real; fname: string) := Invoke(InitOb3,p.x,p.y,w,h,fname); + /// Декоратор текÑ�та объекта + function WithText(txt: string; size: real := 16; fontname: string := 'Arial'; c: GColor := Colors.Black) + := inherited WithText(txt,size,fontname,c) as PictureWPF; + /// Декоратор поворота объекта + function WithRotate(da: real) := inherited WithRotate(da) as PictureWPF; end; /// Главное окно @@ -553,7 +805,9 @@ var Objects := new ObjectsType; +/// Возвращает графичеÑ�кий объект под точкой Ñ� координатами (x,y) или nil function ObjectUnderPoint(x,y: real): ObjectWPF; +/// Возвращает True еÑ�ли графичеÑ�кие объекты переÑ�екаютÑ�Ñ� function ObjectsIntersect(o1,o2: ObjectWPF): boolean; implementation diff --git a/bin/PascalABCNET.chm b/bin/PascalABCNET.chm index 24233139f..99c230dd3 100644 Binary files a/bin/PascalABCNET.chm and b/bin/PascalABCNET.chm differ