diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 11e5d9de5..f438bea6a 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "11"; public const string Build = "0"; - public const string Revision = "3673"; + public const string Revision = "3676"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 032c2b919..d147780c6 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%MINOR%=11 -%REVISION%=3673 %COREVERSION%=0 +%REVISION%=3676 +%MINOR%=11 %MAJOR%=3 diff --git a/InstallerSamples/WhatsNew/3_11_1/CountOf_s.pas b/InstallerSamples/WhatsNew/3_11_1/CountOf_s.pas new file mode 100644 index 000000000..a1b718a87 --- /dev/null +++ b/InstallerSamples/WhatsNew/3_11_1/CountOf_s.pas @@ -0,0 +1,5 @@ +begin + var s := 'arara'; + s.CountOf('ara').Println; + s.CountOf('ara',allowOverlap := True).Println; +end. \ No newline at end of file diff --git a/InstallerSamples/WhatsNew/3_11_1/TurtleABCExample.pas b/InstallerSamples/WhatsNew/3_11_1/TurtleABCExample.pas new file mode 100644 index 000000000..724ccf799 --- /dev/null +++ b/InstallerSamples/WhatsNew/3_11_1/TurtleABCExample.pas @@ -0,0 +1,55 @@ +uses TurtleABC; + +begin + Mark; + SetScale(4); + SetOrigin(5,-35); + //SetOrigin(-20,-50); + Mark; + SetColor(Color.Blue); + Down; + + loop 4 do + begin + Forw(20); + Turn(90); + end; + + Up; + MoveTo(-30, 30); + Down; + SetColor(Color.Red); + + Mark; + loop 3 do + begin + Forw(15); + Turn(120); + end; + + Up; + MoveTo(30, 40); + Down; + SetColor(Color.Green); + + Mark; + loop 20 do + begin + Forw(30); + Turn(100); + end; + + Up; + MoveTo(-30, 90); + Mark; + Down; + SetColor(Color.Orange); + + loop 5 do + begin + Forw(30); + Turn(144); + end; + + DrawCoordPoints; +end. \ No newline at end of file diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Common subroutines.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Common subroutines.html index 1b200a4ee..d2c82a3d7 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Common subroutines.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Common subroutines.html @@ -1,5 +1,6 @@ + @@ -15,10 +16,12 @@

Îáùèå ïîäïðîãðàììû

- +
function Between<T>(val, a, b: T): boolean; where T: IComparable<T>; -
        Âîçâðàùàåò True, åñëè çíà÷åíèå val íàõîäèòñÿ ìåæäó a è b (âêëþ÷èòåëüíî) íåçàâèñèìî îò ïîðÿäêà a è b
+ +
        Âîçâðàùàåò ñïèñîê àðãóìåíòîâ êîìàíäîé ñòðîêè, ñ êîòîðûìè áûëà çàïóùåíà ïðîãðàììà +
        Îáìåíèâàåò ìåñòàìè çíà÷åíèÿ äâóõ ïåðåìåííûõ
function Between<T>(val, a, b: T; inclusive: boolean := true): boolean; where T: IComparable<T>; +
        Âîçâðàùàåò True, åñëè çíà÷åíèå val íàõîäèòñÿ ìåæäó a è b íåçàâèñèìî îò ïîðÿäêà a è b
function Clamp<T>(x,bottom,top: T): T; where T: IComparable<T>; +
        Îãðàíè÷èâàåò çíà÷åíèå x äèàïàçîíîì [bottom, top]
function CommandLineArgs: array of string; -
        Âîçâðàùàåò àðãóìåíû êîìàíäîé ñòðîêè, ñ êîòîðûìè áûëà çàïóùåíà ïðîãðàììà
procedure Dec(var i: integer);
        Óìåíüøàåò çíà÷åíèå ïåðåìåííîé i íà 1
procedure Dec(var i: integer; n: integer); @@ -60,6 +63,6 @@
function Succ(x: ïåðå÷èñëèìûé òèï): ïåðå÷èñëèìûé òèï;
        Âîçâðàùàåò ñëåäóþùåå çà x çíà÷åíèå
procedure Swap<T>(var a, b: T); -
        Ìåíÿåò ìåñòàìè çíà÷åíèÿ äâóõ ïåðåìåííûõ
\ No newline at end of file diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for List T.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for List T.html index f4c2ab3bf..7666c7793 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for List T.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for List T.html @@ -15,6 +15,7 @@ +

Ìåòîäû ðàñøèðåíèÿ ñïèñêîâ

@@ -22,9 +23,9 @@
        Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 function AdjacentFind<T>(Self: IList<T>; eq: (T,T)->boolean; start: integer := 0): integer;
        Íàõîäèò ïåðâóþ ïàðó ïîäðÿä èäóùèõ îäèíàêîâûõ ýëåìåíòîâ, èñïîëüçóÿ ôóíêöèþ ñðàâíåíèÿ eq, è âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ïàðû. Åñëè íå íàéäåí, âîçâðàùàåòñÿ -1 -procedure Fill<T>(Self: List<T>; x: T); +function Fill<T>(Self: List<T>; x: T): List<T>;
        Çàïîëíÿåò ýëåìåíòû ñïèñêà óêàçàííûì çíà÷åíèåì -procedure Fill<T>(Self: List<T>; f: integer->T); +function Fill<T>(Self: List<T>; f: integer->T): List<T>;
        Çàïîëíÿåò ýëåìåíòû ñïèñêà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó function IndexMax<T>(Self: List<T>; index: integer := 0): integer; where T: IComparable<T>;
        Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index @@ -56,17 +57,19 @@
        Âîçâðàùàåò ñëó÷àéíûé ýëåìåíò ñïèñêà function RemoveLast<T>(Self: List<T>): List<T>;
        Óäàëÿåò ïîñëåäíèé ýëåìåíò. Åñëè ýëåìåíòîâ íåò, ãåíåðèðóåò èñêëþ÷åíèå -procedure Replace<T>(Self: List<T>; oldValue, newValue: T); -
        Çàìåíÿåò â ìàññèâå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîåÇàìåíÿåò â ñïèñêå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå +function Replace<T>(Self: List<T>; oldValue, newValue: T): List<T>; +
        Çàìåíÿåò â ñïèñêå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå function Shuffle<T>(Self: List<T>): List<T>;
        Ïåðåìåøèâàåò ýëåìåíòû ñïèñêà ñëó÷àéíûì îáðàçîì function Slice<T>(Self: List<T>; from, step: integer): List<T>;
        Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step function Slice<T>(Self: List<T>; from, step, count: integer): List<T>;
        Âîçâðàùàåò ñðåç ñïèñêà îò èíäåêñà from ñ øàãîì step äëèíû íå áîëåå count -procedure Transform<T>(Self: List<T>; f: T->T); +function Swap<T>(Self: List<T>; i, j: integer): List<T>; +
        Ìåíÿåò ìåñòàìè ýëåìåíòû ñïèñêà ñ èíäåêñàìè i è j +function Transform<T>(Self: List<T>; f: T->T): List<T>;
        Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó -procedure Transform<T>(Self: List<T>; f: (T,integer)->T); +function Transform<T>(Self: List<T>; f: (T,integer)->T): List<T>;
        Ïðåîáðàçóåò ýëåìåíòû ìàññèâà èëè ñïèñêà ïî çàäàííîìó ïðàâèëó \ No newline at end of file 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 4fcf82e86..8fc7ca3f0 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 @@ -29,10 +29,12 @@ + + @@ -144,9 +146,9 @@ function Min(Self: array of real): real;
        Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò function Permutations<T>(Self: array of T): sequence of array of T; -
        Âîçâðàùàåò âñå ïåðåñòàíîâêè ìíîæåñòâà ýëåìåíòîâ, çàäàííîãî ìàññèâîì +
        Âîçâðàùàåò âñå ïåðåñòàíîâêè ýëåìåíòîâ ìàññèâà function Permutations<T>(Self: sequence of T): sequence of array of T; -
        Âîçâðàùàåò âñå ïåðåñòàíîâêè ìíîæåñòâà ýëåìåíòîâ, çàäàííîãî ïîñëåäîâàòåëüíîñòüþ +
        Âîçâðàùàåò âñå ïåðåñòàíîâêè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè function Permutations<T>(Self: array of T; m: integer): sequence of array of T;
        Âîçâðàùàåò âñå ÷àñòè÷íûå ïåðåñòàíîâêè èç n ýëåìåíòîâ ïî m function Permutations<T>(Self: sequence of T; m: integer): sequence of array of T; @@ -157,6 +159,8 @@
        Âîçâðàùàåò âñå ÷àñòè÷íûå ïåðåñòàíîâêè áóêâ ñòðîêè ïî m ñèìâîëîâ â âèäå ïîñëåäîâàòåëüíîñòè ñòðîê function RandomElement<T>(Self: array of T): T;
        Âîçâðàùàåò ñëó÷àéíûé ýëåìåíò ìàññèâà +function Replace<T>(Self: array of T; oldValue, newValue: T): array of T; +
        Çàìåíÿåò â ìàññèâå âñå âõîæäåíèÿ îäíîãî çíà÷åíèÿ íà äðóãîå function Shuffle<T>(Self: array of T): array of T;
        Ïåðåìåøèâàåò ýëåìåíòû ìàññèâà ñëó÷àéíûì îáðàçîì function Slice<T>(Self: array of T; from, step: integer): array of T; @@ -181,9 +185,11 @@
        Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó procedure SortDescending<T>(Self: array of T; keySelector: T -> string);
        Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó -procedure Transform<T>(Self: array of T; f: T->T); +function Swap<T>(Self: array of T; i, j: integer): array of T; +
        Ìåíÿåò ìåñòàìè ýëåìåíòû ìàññèâà ñ èíäåêñàìè i è j +function Transform<T>(Self: array of T; f: T->T): array of T;
        Ïðåîáðàçóåò ýëåìåíòû ìàññèâà ïî çàäàííîìó ïðàâèëó -procedure Transform<T>(Self: array of T; f: (T,integer)->T); +function Transform<T>(Self: array of T; f: (T,integer)->T): array of T;
        Ïðåîáðàçóåò ýëåìåíòû ìàññèâà ïî çàäàííîìó ïðàâèëó \ No newline at end of file diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for char.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for char.html index ee1351dce..532bf221b 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for char.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for char.html @@ -13,7 +13,7 @@

Ìåòîäû ðàñøèðåíèÿ òèïà char

-
function Between(Self: char; a, b: char): boolean; + diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for integer.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for integer.html index 966c779c7..282dccb22 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for integer.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for integer.html @@ -18,7 +18,7 @@

Ìåòîäû ðàñøèðåíèÿ òèïà integer

-
function Between(Self: char; a, b: char; inclusive: boolean := True): boolean;
        Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè
function Code(Self: char): integer;
        Êîä ñèìâîëà â êîäèðîâêå Unicode
function Between(Self: integer; a, b: integer): boolean; + diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for real.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for real.html index 234c3eafb..f15336653 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for real.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for real.html @@ -15,8 +15,8 @@

Ìåòîäû ðàñøèðåíèÿ òèïà real

-
function Between(Self: integer; a, b: integer; inclusive: boolean := true): boolean;
        Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè
function Clamp(Self: integer; bottom,top: integer): integer;
        Âîçâðàùàåò ÷èñëî, îãðàíè÷åííîå äèàïàçîíîì îò bottom äî top âêëþ÷èòåëüíî
+
function Between(Self: real; a, b: real): boolean; -
        Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ â äèàïàçîíå [a,b]
+ - @@ -231,6 +235,8 @@
        Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé íà òðè ïîñëåäîâàòåëüíîñòè. Ðåàëèçóåòñÿ ìíîãîïðîõîäíûì àëãîðèòìîì +
function Between(Self: real; a, b: real; inclusive: boolean := True): boolean; +
        Âîçâðàùàåò True åñëè çíà÷åíèå íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè
function Ceil(Self: real): integer;
        Âîçâðàùàåò íàìåíüøåå öåëîå, áîëüøåå èëè ðàâíîå âåùåñòâåííîìó ÷èñëó
function Clamp(Self: real; bottom,top: real): real; diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for sequence of T.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for sequence of T.html index 303cb94a9..51efd899c 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for sequence of T.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for sequence of T.html @@ -19,6 +19,7 @@ + @@ -44,6 +45,7 @@ + @@ -143,6 +145,8 @@
        Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à
function MinBy<T, TKey>(Self: sequence of T; keySelector: T -> TKey): T;
        Âîçâðàùàåò ïåðâûé ýëåìåíò ïîñëåäîâàòåëüíîñòè ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à
function None<T>(Self: sequence of T; pred: T->boolean): boolean; +
        Âîçâðàùàåò True, åñëè íè îäèí ýëåìåíò íå óäîâëåòâîðÿåò óñëîâèþ
function Numerate<T>(Self: sequence of T): sequence of (integer, T);
        Íóìåðóåò ïîñëåäîâàòåëüíîñòü ñ åäèíèöû
function Numerate<T>(Self: sequence of T; from: integer): sequence of (integer, T); @@ -213,7 +217,7 @@
        Ðàçáèâàåò ïîñëåäîâàòåëüíîñòü íà äâå â ïîçèöèè ind. Ðåàëèçóåòñÿ äâóõïðîõîäíûì àëãîðèòìîì
function Sum(Self: sequence of BigInteger): BigInteger;
        Âîçâðàùàåò ñóììó ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè
function Tabulate<T, T1>(Self: sequence of T; F: T->T1): sequence of (T, T1); +
function Tabulate<T, T1>(Self: sequence of T; f: T->T1): sequence of (T, T1);
        Òàáóëèðóåò ôóíêöèþ ïîñëåäîâàòåëüíîñòüþ
function TakeLast<T>(Self: sequence of T; count: integer): sequence of T;
        Âîçâðàùàåò ïîñëåäíèå count ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè
function UnZipTuple<T, T1, T2, T3>(Self: sequence of (T, T1, T2, T3)): (sequence of T, sequence of T1, sequence of T2, sequence of T3);
        Ðàçúåäèíÿåò ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé íà ÷åòûðå ïîñëåäîâàòåëüíîñòè. Ðåàëèçóåòñÿ ìíîãîïðîõîäíûì àëãîðèòìîì
function Windowed<T>(Self: sequence of T; n: integer): sequence of array of T; +
        Ïðåâðàùàåò ïîñëåäîâàòåëüíîñòü â ïîñëåäîâàòåëüíîñòü ìàññèâîâ, ñîäåðæàùèõ n ñîñåäíèõ ýëåìåíòîâ
function WriteLines(Self: sequence of string; fname: string): sequence of string;
        Âûâîäèò ïîñëåäîâàòåëüíîñòü ñòðîê â ôàéë
function Zip<T, T1, T2, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2) -> TRes): sequence of TRes; diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html index 73c75b87f..e82ff4112 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html @@ -1,5 +1,6 @@ + @@ -30,8 +31,10 @@

Ìåòîäû ðàñøèðåíèÿ òèïà string

-
function Between(Self: string; a, b: string): boolean; + + + + + + + + + + + + + +
        Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [a,b], îêðóãëåííîå äî digits çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè + +
function Between(Self: string; a, b: string; inclusive: boolean := True): boolean;
        Âîçâðàùàåò True åñëè ñòðîêà íàõîäèòñÿ ìåæäó äâóìÿ äðóãèìè (ëåêñèêîãðàôè÷åñêîå ñðàâíåíèå)
function CountOf(Self: string; substring: string; allowOverlap: boolean := false): integer; +
        Âîçâðàùàåò êîëè÷åñòâî âõîæäåíèé ïîäñòðîêè â ñòðîêó
function IndicesOf(Self, SubS: string; overlay: boolean := False): sequence of integer;
        Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ âõîæäåíèé ïîäñòðîêè â îñíîâíóþ ñòðîêóÏàðàìåòð overlay îïðåäåëÿåò, ðàçðåøåíû ëè ïåðåêðûòèÿ âõîæäåíèé ïîäñòðîê
function InRange(Self: string; a, b: string): boolean; diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Math subroutines.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Math subroutines.html index 21b92c818..11943bd5d 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Math subroutines.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Math subroutines.html @@ -3,6 +3,8 @@ + + @@ -10,7 +12,12 @@ + + + + + @@ -26,8 +33,10 @@ + + @@ -47,6 +56,10 @@
        Âîçâðàùàåò óãîë â ðàäèàíàõ, ñèíóñ êîòîðîãî ðàâåí x, -1<=x<=1
function ArcTan(x: real): real;
        Âîçâðàùàåò óãîë â ðàäèàíàõ, òàíãåíñ êîòîðîãî ðàâåí x
function Atan2(y, x: real): real; +
        Âîçâðàùàåò óãîë (â ðàäèàíàõ) ìåæäó ïîëîæèòåëüíîé îñüþ X è âåêòîðîì (x, y) ñ ó÷¸òîì êâàäðàíòà
function Cbrt(x: real): real; +
        Âîçâðàùàåò êóáè÷åñêèé êîðåíü ÷èñëà x (x ìîæåò áûòü < 0)
function Ceil(x: real): integer;
        Âîçâðàùàåò íàèìåíüøåå öåëîå >= x
function Cos(x: real): real; @@ -61,8 +74,26 @@
        Âîçâðàùàåò íàèáîëüøåå öåëîå <= x
function Frac(x: real): real;
        Âîçâðàùàåò äðîáíóþ ÷àñòü ÷èñëà x
function GCD(a, b: integer): integer; +
        Âîçâðàùàåò íàèáîëüøèé îáùèé äåëèòåëü äâóõ öåëûõ ÷èñåë
function GCD(a, b: int64): int64; +
        Âîçâðàùàåò íàèáîëüøèé îáùèé äåëèòåëü äâóõ öåëûõ ÷èñåë
function GCD(a, b: BigInteger): BigInteger; +
        Âîçâðàùàåò íàèáîëüøèé îáùèé äåëèòåëü äâóõ BigInteger
function Hypot(x, y: real): real; +
        Âîçâðàùàåò ãèïîòåíóçó òðåóãîëüíèêà ñ êàòåòàìè x,y
function Int(x: real): real;
        Âîçâðàùàåò öåëóþ ÷àñòü ÷èñëà x
function ISqrt(n: int64): int64; +
        Âû÷èñëÿåò öåëî÷èñëåííûé êâàäðàòíûé êîðåíü èç n.Âîçâðàùàåò íàèáîëüøåå öåëîå ÷èñëî r, òàêîå ÷òî r? ? n < (r+1)?Åñëè n ÿâëÿåòñÿ òî÷íûì êâàäðàòîì, âîçâðàùàåò òî÷íûé êîðåíü
function ISqrt(n: BigInteger): BigInteger; +
        Âû÷èñëÿåò öåëî÷èñëåííûé êâàäðàòíûé êîðåíü èç n.Âîçâðàùàåò íàèáîëüøåå öåëîå ÷èñëî r, òàêîå ÷òî r? ? n < (r+1)?Åñëè n ÿâëÿåòñÿ òî÷íûì êâàäðàòîì, âîçâðàùàåò òî÷íûé êîðåíü
function LCM(a, b: int64): int64; +
        Âîçâðàùàåò íàèìåíüøåå îáùåå êðàòíîå äâóõ öåëûõ ÷èñåë
function LCM(a, b: BigInteger): BigInteger; +
        Âîçâðàùàåò íàèìåíüøåå îáùåå êðàòíîå äâóõ BigInteger
function Lerp(a, b, t: real): real; +
        Âîçâðàùàåò çíà÷åíèå íà îòðåçêå [a, b] â ïîçèöèè t ? [0, 1]Ïðè t=0 — a, ïðè t=1 — b, ïðè t=0.5 — ñåðåäèíà ìåæäó íèìè
function Ln(x: real): real;
        Âîçâðàùàåò íàòóðàëüíûé ëîãàðèôì ÷èñëà x
function Log(x: real): real; @@ -150,13 +181,17 @@
procedure Randomize;
        Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë
function RandomReal(a, b: real; digits: integer := 2): real; -
        Âîçâðàùàåò ñëó÷àéíîå âåùåñòâåííîå â äèàïàçîíå [a,b] c êîëè÷åñòâîì çíà÷àùèõ öèôð ïîñëå òî÷êè, ðàâíûì digits
function Remap(x, a1, b1, a2, b2: real): real; +
        Ïðåîáðàçóåò x èç äèàïàçîíà [a1,b1] â äèàïàçîí [a2,b2] ñ ñîõðàíåíèåì îòíîñèòåëüíîé ïîçèöèè
function Round(x: real): integer;
        Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî öåëîãî. Åñëè âåùåñòâåííîå íàõîäèòñÿ ïîñåðåäèíå ìåæäó äâóìÿ öåëûìè,òî îêðóãëåíèå îñóùåñòâëÿåòñÿ ê áëèæàéøåìó ÷åòíîìó (áàíêîâñêîå îêðóãëåíèå): Round(2.5)=2, Round(3.5)=4
function Round(x: real; digits: integer): real;
        Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî âåùåñòâåííîãî ñ digits çíàêàìè ïîñëå äåñÿòè÷íîé òî÷êè
function RoundBigInteger(x: real): BigInteger;
        Âîçâðàùàåò x, îêðóãëåííîå äî áëèæàéøåãî äëèííîãî öåëîãî
procedure SetRandomSeed(seed: integer); +
        Èíèöèàëèçèðóåò äàò÷èê ïñåâäîñëó÷àéíûõ ÷èñåë, èñïîëüçóÿ çíà÷åíèå seed. Ïðè îäíîì è òîì æå seed ãåíåðèðóþòñÿ îäèíàêîâûå ïñåâäîñëó÷àéíûå ïîñëåäîâàòåëüíîñòè
function Sign(x: ÷èñëî): integer;
        Âîçâðàùàåò -1, 0 èëè +1 â çàâèñèìîñòè îò çíàêà ÷èñëà x
function Sin(x: real): real; diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Short functions Lst, HSet, SSet, Dict, KV.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Short functions Lst, HSet, SSet, Dict, KV.html index d6495751e..b8e1976c1 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Short functions Lst, HSet, SSet, Dict, KV.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Short functions Lst, HSet, SSet, Dict, KV.html @@ -19,21 +19,21 @@

Êîðîòêèå ôóíêöèè Lst, LLst, HSet, SSet, Dict, KV

+
        Âîçâðàùàåò ñëîâàðü èç íàáîðà ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) +
        Âîçâðàùàåò ñëîâàðü èç íàáîðà ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå), çàäàííûõ êàê êîðòåæè +
        Âîçâðàùàåò ñëîâàðü èç ïîñëåäîâàòåëüíîñòè ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå) +
        Âîçâðàùàåò ñëîâàðü èç ïîñëåäîâàòåëüíîñòè ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå), çàäàííûõ êàê êîðòåæè +
        Âîçâðàùàåò ñëîâàðü ñëîâàðü èç äâóõ ïîñëåäîâàòåëüíîñòåé — êëþ÷åé è çíà÷åíèé +
        Âîçâðàùàåò ñëîâàðü èç íàáîðà ïàð ýëåìåíòîâ (öåëîå, öåëîå) +
        Âîçâðàùàåò ñëîâàðü èç íàáîðà ïàð ýëåìåíòîâ (ñòðîêà, ñòðîêà) +
        Âîçâðàùàåò ñëîâàðü èç íàáîðà ïàð ýëåìåíòîâ (ñòðîêà, öåëîå)
function Dict<TKey, TVal>(params pairs: array of KeyValuePair<TKey, TVal>): Dictionary<TKey, TVal>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå)
function Dict<TKey, TVal>(params pairs: array of (TKey, TVal)): Dictionary<TKey, TVal>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå)
function Dict<TKey, TVal>(pairs: sequence of KeyValuePair<TKey, TVal>): Dictionary<TKey, TVal>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå), ïîñòðîåííûé ïî ïîñëåäîâàòåëüíîñòè ïàð
function Dict<TKey, TVal>(pairs: sequence of (TKey, TVal)): Dictionary<TKey, TVal>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå), ïîñòðîåííûé ïî ïîñëåäîâàòåëüíîñòè ïàð
function Dict<TKey, TVal>(keys: sequence of TKey; values: sequence of TVal): Dictionary<TKey, TVal>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå), ïîñòðîåííûé ïî ïîñëåäîâàòåëüíîñòÿì êëþ÷åé è çíà÷åíèé
function DictInt(params pairs: array of (integer, integer)): Dictionary<integer, integer>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (öåëîå, öåëîå)
function DictStr(params pairs: array of (string, string)): Dictionary<string, string>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (ñòðîêà, ñòðîêà)
function DictStrInt(params pairs: array of (string, integer)): Dictionary<string, integer>; -
        Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (ñòðîêà, öåëîå)
function HSet<T>(params a: array of T): HashSet<T>;
        Âîçâðàùàåò ìíîæåñòâî íà áàçå õåø òàáëèöû, çàïîëíåííîå óêàçàííûìè çíà÷åíèÿìè
function HSet<T>(a: sequence of T): HashSet<T>; diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T generation.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T generation.html index 27d7f2fdf..887bd0b48 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T generation.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T generation.html @@ -10,11 +10,11 @@ -

Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äèíàìè÷åñêèõ ìàññèâîâ

+

Ïîäïðîãðàììû äëÿ ñîçäàíèÿ îäíîìåðíûõ ìàññèâîâ

+
        Âîçâðàùàåò ìàññèâ, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíîñòè
function Arr<T>(params a: array of T): array of T;
        Âîçâðàùàåò ìàññèâ, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè
function Arr<T>(a: sequence of T): array of T; -
        Âîçâðàùàåò ìàññèâ, çàïîëíåííûé çíà÷åíèÿìè èç ïîñëåäîâàòåëüíñòè
function Arr(a: IntRange): array of integer;
        Âîçâðàùàåò ìàññèâ, çàïîëíåííûé äèàïàçîíîì çíà÷åíèé
function Arr(a: CharRange): array of char; diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T.html index 5df3431a0..bc565fe5d 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for array of T.html @@ -14,25 +14,25 @@

Ïîäïðîãðàììû äëÿ ðàáîòû ñ äèíàìè÷åñêèìè ìàññèâàìè

+
        Ïðîâåðÿåò ðàâåíñòâî äâóõ ìàññèâîâ +
        Ñîçäà¸ò êîïèþ ìàññèâà +
        Âîçâðàùàåò âåðõíþþ ãðàíèöó ìàññèâà +
        Âîçâðàùàåò äëèíó ìàññèâà +
        Âîçâðàùàåò äëèíó ìàññèâà ïî ðàçìåðíîñòè dim +
        Ïðîâåðÿåò ðàâåíñòâî äâóõ ìàòðèö +
        Âîçâðàùàåò ñëåäóþùóþ ïåðåñòàíîâêó â ìàññèâå; âîçâðàùàåò False, åñëè ýòî ïîñëåäíÿÿ +
        Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â ìàññèâå íà ïðîòèâîïîëîæíûé +
        Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå ìàññèâà äëèíû count, íà÷èíàÿ ñ èíäåêñà index +
        Óñòàíàâëèâàåò äëèíó îäíîìåðíîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ +
        Óñòàíàâëèâàåò ðàçìåðû n-ìåðíîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ +
        Ñëó÷àéíî ïåðåìåøèâàåò ýëåìåíòû ìàññèâà +
        Ñëó÷àéíî ïåðåìåøèâàåò ýëåìåíòû ñïèñêà +
        Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ +
        Ñîðòèðóåò ìàññèâ ïî âîçðàñòàíèþ +
        Ñîðòèðóåò ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp +
        Ñîðòèðóåò ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less +
        Ñîðòèðóåò ìàññèâ ïî êëþ÷ó +
        Ñîðòèðóåò ìàññèâ ïî êëþ÷ó +
        Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ +
        Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ +
        Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó +
        Ñîðòèðóåò ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó
function ArrEqual<T>(a, b: array of T): boolean; -
        Âîçâðàùàåò, ñîâïàäàþò ëè ìàññèâû
function Copy(a: array of T): array of T; -
        Ñîçäà¸ò êîïèþ äèíàìè÷åñêîãî ìàññèâà
function High(a: array of T): integer; -
        Âîçâðàùàåò âåðõíþþ ãðàíèöó äèíàìè÷åñêîãî ìàññèâà
function Length(a: array of T): integer; -
        Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà
function Length(a: array of T; dim: integer): integer; -
        Âîçâðàùàåò äëèíó äèíàìè÷åñêîãî ìàññèâà ïî ðàçìåðíîñòè dim
function Low(a: array of T): integer;
        Âîçâðàùàåò 0
function MatrEqual<T>(a, b: array [,] of T): boolean; -
        Ñðàâíèâàåò ìàòðèöû íà ðàâåíñòâî
function NextPermutation(a: array of integer): boolean; -
        Âîçâðàùàåò ñëåäóþùóþ ïåðåñòàíîâêó â ìàññèâå
procedure Reverse<T>(a: array of T); -
        Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â äèíàìè÷åñêîì ìàññèâå íà ïðîòèâîïîëîæíûé
procedure Reverse<T>(a: array of T; index, count: integer); -
        Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ íà ïðîòèâîïîëîæíûé â äèàïàçîíå äèíàìè÷åñêîãî ìàññèâà äëèíû count, íà÷èíàÿ ñ èíäåêñà index
procedure Reverse<T>(a: List<T>);
        Èçìåíÿåò ïîðÿäîê ýëåìåíòîâ â ñïèñêå íà ïðîòèâîïîëîæíûé
procedure Reverse<T>(a: List<T>; index, count: integer); @@ -42,25 +42,25 @@
procedure Reverse(var s: string; index, count: integer);
        Èçìåíÿåò ïîðÿäîê ñèìâîëîâ â ÷àñòè ñòðîêè äëèíû count íà ïðîòèâîïîëîæíûé, íà÷èíàÿ ñ èíäåêñà index
procedure SetLength(var a: array of T; n: integer); -
        Óñòàíàâëèâàåò äëèíó îäíîìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ
procedure SetLength(var a: array [,...,] of T; n1,n2,...: integer); -
        Óñòàíàâëèâàåò ðàçìåðû n-ìåðíîãî äèíàìè÷åñêîãî ìàññèâà. Ñòàðîå ñîäåðæèìîå ñîõðàíÿåòñÿ
procedure Shuffle<T>(a: array of T); -
        Ïåðåìåøèâàåò äèíàìè÷åñêèé ìàññèâ ñëó÷àéíûì îáðàçîì
procedure Shuffle<T>(l: List<T>); -
        Ïåðåìåøèâàåò ñïèñîê ñëó÷àéíûì îáðàçîì
procedure Sort<T>(a: array of T); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ
procedure Sort(a: array of string); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî âîçðàñòàíèþ
procedure Sort<T>(a: array of T; cmp: (T,T)->integer); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ cmp
procedure Sort<T>(a: array of T; less: (T,T)->boolean); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êðèòåðèþ ñîðòèðîâêè, çàäàâàåìîìó ôóíêöèåé ñðàâíåíèÿ less
procedure Sort<T,TKey>(a: array of T; keySelector: T->TKey); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êëþ÷ó
procedure Sort<T>(a: array of T; keySelector: T->string); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî êëþ÷ó
procedure Sort<T>(l: List<T>);
        Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ
procedure Sort(var l: List<string>); @@ -74,13 +74,13 @@
procedure Sort<T>(var l: List<T>; keySelector: T->string);
        Ñîðòèðóåò ñïèñîê ïî âîçðàñòàíèþ ïî êëþ÷ó
procedure SortDescending<T>(a: array of T); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ
procedure SortDescending(a: array of string); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ
procedure SortDescending<T,T1>(var a: array of T; keySelector: T->T1); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó
procedure SortDescending<T>(var a: array of T; keySelector: T->string); -
        Ñîðòèðóåò äèíàìè÷åñêèé ìàññèâ ïî óáûâàíèþ ïî êëþ÷ó
procedure SortDescending<T>(l: List<T>);
        Ñîðòèðóåò ñïèñîê ïî óáûâàíèþ
procedure SortDescending(var l: List<string>); diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for char.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for char.html index 6ee772752..0ff3eb8e8 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for char.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for char.html @@ -1,5 +1,6 @@ + @@ -7,6 +8,7 @@ + @@ -17,6 +19,8 @@

Ïîäïðîãðàììû äëÿ ðàáîòû ñ ñèìâîëàìè

+ +
function Chr(a: word): char;
        Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode
function ChrAnsi(a: byte): char; +
        Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Windows. Óñòàðåëî. Èñïîëüçóéòå ChrWindows
function ChrUnicode(a: word): char;
        Ïðåîáðàçóåò êîä â ñèìâîë â êîäèðîâêå Unicode
function ChrWindows(a: byte): char; @@ -35,6 +39,8 @@
        Ïðåîáðàçóåò ñèìâîë â íèæíèé ðåãèñòð
function Ord(a: char): word;
        Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode
function OrdAnsi(a: char): byte; +
        Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Windows. Óñòàðåëî. Èñïîëüçóéòå OrdWindows
function OrdUnicode(a: char): word;
        Ïðåîáðàçóåò ñèìâîë â êîä â êîäèðîâêå Unicode
function OrdWindows(a: char): byte; diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for matrixes.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for matrixes.html index b4b2bb3e5..8ce83d057 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for matrixes.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for matrixes.html @@ -11,7 +11,7 @@ -

Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äâóìåðíûõ äèíàìè÷åñêèõ ìàññèâîâ

+

Ïîäïðîãðàììû äëÿ ñîçäàíèÿ äâóìåðíûõ ìàññèâîâ

+
        Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n èç öåëûõ, ââåäåííûõ ñ êëàâèàòóðû +
        Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n èç âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû
function Matr<T>(m,n: integer; params data: array of T): array [,] of T;
        Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé óêàçàííûìè çíà÷åíèÿìè ïî ñòðîêàì
function Matr<T>(params aa: array of array of T): array [,] of T; @@ -43,9 +43,9 @@
function MatrRandomReal(m: integer := 5; n: integer := 5; a: real := 0; b: real := 10; digits: integer := 2): array [,] of real;
        Âîçâðàùàåò äâóìåðíûé ìàññèâ ðàçìåðà m x n, çàïîëíåííûé ñëó÷àéíûìè âåùåñòâåííûìè çíà÷åíèÿìè
function ReadMatrInteger(m, n: integer): array [,] of integer; -
        Âîçâðàùàåò ìàòðèöó m íà n öåëûõ, ââåäåííûõ ñ êëàâèàòóðû
function ReadMatrReal(m, n: integer): array [,] of real; -
        Âîçâðàùàåò ìàòðèöó m íà n âåùåñòâåííûõ, ââåäåííûõ ñ êëàâèàòóðû
function Transpose<T>(a: array [,] of T): array [,] of T;
        Òðàíñïîíèðóåò äâóìåðíûé ìàññèâ
diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for sequence generation.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for sequence generation.html index c35279d7c..8e5265fcf 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for sequence generation.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Subroutines for sequence generation.html @@ -1,6 +1,7 @@ + @@ -20,23 +21,25 @@

Ïîäïðîãðàììû äëÿ ãåíåðàöèè ïîñëåäîâàòåëüíîñòåé

+
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ äâóõ ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ ïàðó íà çíà÷åíèå +
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ òðîéêó íà çíà÷åíèå +
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ ÷åòâ¸ðêó íà çíà÷åíèå +
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ ïÿò¸ðêó íà çíà÷åíèå +
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè ïàð +
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè òðîåê +
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè ÷åòâ¸ðîê +
        Âîçâðàùàåò âñå êîìáèíàöèè ýëåìåíòîâ ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè ïÿò¸ðîê + +
        Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç óêàçàííûõ ýëåìåíòîâ
function Cartesian<T, T1, TRes>(a: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes; -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ ïàðó íà çíà÷åíèå
function Cartesian<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes; -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ òðîéêó íà çíà÷åíèå
function Cartesian<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes; -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ ÷åòâ¸ðêó íà çíà÷åíèå
function Cartesian<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes; -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé, ïðîåêòèðóÿ êàæäóþ ïÿò¸ðêó íà çíà÷åíèå
function Cartesian<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1); -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè ïàð
function Cartesian<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2); -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè òðîåê
function Cartesian<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3); -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè ÷åòâ¸ðîê
function Cartesian<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4); -
        Âîçâðàùàåò äåêàðòîâî ïðîèçâåäåíèå ïîñëåäîâàòåëüíîñòåé â âèäå ïîñëåäîâàòåëüíîñòè ïÿò¸ðîê
function Iterate<T>(first: T; next: T->T): sequence of T;
        Âîçâðàùàåò áåñêîíå÷íóþ ðåêóððåíòíóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ, çàäàâàåìóþ íà÷àëüíûì ýëåìåíòîì first è ôóíêöèåé next
function Linspace(a, b: real; n: integer): sequence of real; +
        Âîçâðàùàåò n ðàâíîìåðíî ðàñïðåäåë¸ííûõ òî÷åê ìåæäó a è b âêëþ÷èòåëüíî (àíàëîã numpy.linspace)
function PartitionPoints(a, b: real; n: integer): sequence of real;
        Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü âåùåñòâåííûõ â òî÷êàõ ðàçáèåíèÿ îòðåçêà [a,b] íà n ðàâíûõ ÷àñòåé
function Range(a, b: integer): sequence of integer; @@ -78,7 +81,7 @@
function ReadSeqStringWhile(prompt: string; cond: string->boolean): sequence of string;
        Âûâîäèò ïðèãëàøåíèå ê ââîäó è âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ñòðîê, ââîäèìûõ ñ êëàâèàòóðû ïîêà âûïîëíÿåòñÿ îïðåäåëåííîå óñëîâèå
function Seq<T>(params a: array of T): sequence of T; -
        Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü óêàçàííûõ ýëåìåíòîâ
function SeqFill<T>(count: integer; x: T): sequence of T;
        Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èç count ýëåìåíòîâ x
function SeqGen<T>(count: integer; f: integer->T): sequence of T; diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index 8c009b583..4dd76ab74 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.11.0.3673 +3.11.0.3676 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 3b8a5800e..85fe93a58 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.11.0.3673' +!define VERSION '3.11.0.3676' diff --git a/TestSuite/CompilationSamples/PABCSystem.pas b/TestSuite/CompilationSamples/PABCSystem.pas index 95872fa60..d41300d78 100644 --- a/TestSuite/CompilationSamples/PABCSystem.pas +++ b/TestSuite/CompilationSamples/PABCSystem.pas @@ -1902,6 +1902,17 @@ function Lerp(a, b, t: real): real; /// Преобразует x из диапазона [a1,b1] в диапазон [a2,b2] � �охранением отно�ительной позиции function Remap(x, a1, b1, a2, b2: real): real; +/// Возвращает наибольший общий делитель двух целых чи�ел +function GCD(a, b: integer): integer; +/// Возвращает наибольший общий делитель двух целых чи�ел +function GCD(a, b: int64): int64; +/// Возвращает наибольший общий делитель двух BigInteger +function GCD(a, b: BigInteger): BigInteger; +/// Возвращает наименьшее общее кратное двух целых чи�ел +function LCM(a, b: int64): int64; +/// Возвращает наименьшее общее кратное двух BigInteger +function LCM(a, b: BigInteger): BigInteger; + /// Инициализирует датчик п�евдо�лучайных чи�ел procedure Randomize; /// Инициализирует датчик п�евдо�лучайных чи�ел, и�пользу� значение seed. При одном и том же seed генерируют�� одинаковые п�евдо�лучайные по�ледовательно�ти @@ -9525,6 +9536,48 @@ function Lerp(a, b, t: real): real := a + (b - a) * t; function Remap(x, a1, b1, a2, b2: real): real := a2 + (x - a1) * (b2 - a2) / (b1 - a1); +/// Возвращает наибольший общий делитель двух целых чи�ел +function GCD(a, b: integer): integer; +begin + var (x, y) := (Abs(a), Abs(b)); + while y <> 0 do + (x, y) := (y, x mod y); + Result := x; +end; + +/// Возвращает наибольший общий делитель двух больших целых чи�ел +function GCD(a, b: int64): int64; +begin + var (x, y) := (Abs(a), Abs(b)); + while y <> 0 do + (x, y) := (y, x mod y); + Result := x; +end; + +/// Возвращает наибольший общий делитель двух BigInteger +function GCD(a, b: BigInteger): BigInteger; +begin + var (x, y) := (Abs(a), Abs(b)); + while y <> 0 do + (x, y) := (y, x mod y); + Result := x; +end; + +/// Возвращает наименьшее общее кратное двух больших целых чи�ел +function LCM(a, b: int64): int64; +begin + if (a = 0) or (b = 0) then + Result := 0 + else Result := Abs(a div GCD(a, b)) * Abs(b); +end; + +/// Возвращает наименьшее общее кратное двух BigInteger +function LCM(a, b: BigInteger): BigInteger; +begin + if (a = 0) or (b = 0) then + Result := 0 + else Result := Abs(a div GCD(a, b)) * Abs(b); +end; procedure Randomize; begin @@ -13878,7 +13931,7 @@ begin Result := True; end; -/// Возвращает в�е пере�тановки множе�тва �лементов, заданного ма��ивом +/// Возвращает в�е пере�тановки �лементов ма��ива function Permutations(Self: array of T): sequence of array of T; extensionmethod; begin var a := Self; @@ -13892,7 +13945,7 @@ begin until not NextPermutation(ind); end; -/// Возвращает в�е пере�тановки множе�тва �лементов, заданного по�ледовательно�тью +/// Возвращает в�е пере�тановки �лементов по�ледовательно�ти function Permutations(Self: sequence of T): sequence of array of T; extensionmethod; begin Result := Self.ToArray.Permutations @@ -15021,6 +15074,31 @@ begin Result := Self[Random(Self.Length)+1]; end; +/// Возвращает количе�тво вхождений под�троки в �троку +function CountOf(Self: string; substring: string; allowOverlap: boolean := false): integer; extensionmethod; +begin + if string.IsNullOrEmpty(substring) then + raise new System.ArgumentException('Под�трока не может быть пу�той'); + + Result := 0; + var index := 0; + var substringLength := substring.Length; + + while true do + begin + index := Self.IndexOf(substring, index); + if index = -1 then + break; + + Result += 1; + + if allowOverlap then + index += 1 // Дл� пере�екающих�� вхождений �двигаем на 1 �имвол + else index += substringLength; // Дл� непере�екающих�� - на длину под�троки + end; +end; + + ///-- function CreateSliceFromStringInternal(Self: string; from, step, count: integer): string; begin diff --git a/TestSuite/CompilationSamples/TurtleABC.pas b/TestSuite/CompilationSamples/TurtleABC.pas index bd82ffbbc..06efb8074 100644 --- a/TestSuite/CompilationSamples/TurtleABC.pas +++ b/TestSuite/CompilationSamples/TurtleABC.pas @@ -65,7 +65,7 @@ procedure SetScale(s: real); procedure SetOrigin(x,y: real); /// Ри�ует точки в целочи�ленных координатах на в�ём �кране -procedure DrawCoordPoints; +procedure DrawCoordPoints(R: integer := 0; DotsColor: GraphABC.Color := Color.Black); implementation @@ -199,9 +199,8 @@ begin GraphABC.MoveTo(Round(screenOriginX),Round(screenOriginY)); end; -procedure DrawCoordPoints; +procedure DrawCoordPoints(R: integer; DotsColor: GraphABC.Color); begin - SetColor(color.Gray); var x1 := screenOriginX; while x1 >= 0 do x1 -= scale; @@ -223,13 +222,15 @@ begin Swap(yy1,yy2); LockDrawing; + Brush.Color := DotsColor; for var x := xx1 to xx2 do for var y := yy1 to yy2 do begin var screenX := RealToScreenX(x); var screenY := RealToScreenY(y); - Brush.Color := Color.Black; - PutPixel(screenX,screenY,Color.Black); + if R = 0 then + PutPixel(screenX,screenY,DotsColor) + else FillCircle(screenX,screenY,R) end; UnLockDrawing end; diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index daf2d676e..d41300d78 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -15074,6 +15074,31 @@ begin Result := Self[Random(Self.Length)+1]; end; +/// Возвращает количе�тво вхождений под�троки в �троку +function CountOf(Self: string; substring: string; allowOverlap: boolean := false): integer; extensionmethod; +begin + if string.IsNullOrEmpty(substring) then + raise new System.ArgumentException('Под�трока не может быть пу�той'); + + Result := 0; + var index := 0; + var substringLength := substring.Length; + + while true do + begin + index := Self.IndexOf(substring, index); + if index = -1 then + break; + + Result += 1; + + if allowOverlap then + index += 1 // Дл� пере�екающих�� вхождений �двигаем на 1 �имвол + else index += substringLength; // Дл� непере�екающих�� - на длину под�троки + end; +end; + + ///-- function CreateSliceFromStringInternal(Self: string; from, step, count: integer): string; begin diff --git a/bin/Lib/TurtleABC.pas b/bin/Lib/TurtleABC.pas index bd82ffbbc..06efb8074 100644 --- a/bin/Lib/TurtleABC.pas +++ b/bin/Lib/TurtleABC.pas @@ -65,7 +65,7 @@ procedure SetScale(s: real); procedure SetOrigin(x,y: real); /// Ри�ует точки в целочи�ленных координатах на в�ём �кране -procedure DrawCoordPoints; +procedure DrawCoordPoints(R: integer := 0; DotsColor: GraphABC.Color := Color.Black); implementation @@ -199,9 +199,8 @@ begin GraphABC.MoveTo(Round(screenOriginX),Round(screenOriginY)); end; -procedure DrawCoordPoints; +procedure DrawCoordPoints(R: integer; DotsColor: GraphABC.Color); begin - SetColor(color.Gray); var x1 := screenOriginX; while x1 >= 0 do x1 -= scale; @@ -223,13 +222,15 @@ begin Swap(yy1,yy2); LockDrawing; + Brush.Color := DotsColor; for var x := xx1 to xx2 do for var y := yy1 to yy2 do begin var screenX := RealToScreenX(x); var screenY := RealToScreenY(y); - Brush.Color := Color.Black; - PutPixel(screenX,screenY,Color.Black); + if R = 0 then + PutPixel(screenX,screenY,DotsColor) + else FillCircle(screenX,screenY,R) end; UnLockDrawing end; diff --git a/bin/PascalABCNET.chm b/bin/PascalABCNET.chm index 4f6d35a5b..089e00746 100644 Binary files a/bin/PascalABCNET.chm and b/bin/PascalABCNET.chm differ