Added & Changed examples
This commit is contained in:
parent
621eda6352
commit
8682125251
28
InstallerSamples/StandardUnits/PlotWPF/PlotWPFExample1.pas
Normal file
28
InstallerSamples/StandardUnits/PlotWPF/PlotWPFExample1.pas
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// пример вывода графиков разных видов
|
||||
uses PlotWPF;
|
||||
|
||||
begin
|
||||
var g := new GridWPF(2,2,10);
|
||||
|
||||
var c := new LineGraphWPF(0,Pi,v -> v*Sin(v*10));
|
||||
c.PlotRect := Rect(0,0,10,10);
|
||||
c.Graph[0].ChangeData(0,Pi,x->x*x);
|
||||
c.Graph[0].Color := Colors.Green;
|
||||
c.Graph[0].Thickness := 3;
|
||||
c.AddLineGraph(0,Pi,v -> Sqrt(v));
|
||||
|
||||
var c2 := new LineGraphWPF(0,Pi,v -> Sin(v*10)-Cos(v*7));
|
||||
|
||||
var c4 := new MarkerGraphWPF(|1.0,2,3,4,5|,|5.0,15,7,12,2|);
|
||||
c4.AddLineGraph(|1.0,2,3,4,5|,|5.0+1,15+1,7+1,12+1,2+1|);
|
||||
c4.AddMarkerGraph(|1.0,2,3,4,5|,|5.0+1,15+1,7+1,12+1,2+1|,Colors.Bisque,MarkerType.Diamond,8);
|
||||
c4.Graph[0].Thickness := 0.7;
|
||||
c4.Graph[1].MarkerType := MarkerType.Box;
|
||||
c4.Graph[2].Thickness := 0.7;
|
||||
|
||||
var gg := new GridWPF(2,2,3);
|
||||
new LineGraphWPF(0,2,x->Cos(10*x));
|
||||
new LineGraphWPF(0,2,x->Sqrt(x));
|
||||
new LineGraphWPF(0,2,x->Sin(10*x));
|
||||
new LineGraphWPF(0,2,x->exp(x));
|
||||
end.
|
||||
53
InstallerSamples/StandardUnits/Turtle/Turtle2.pas
Normal file
53
InstallerSamples/StandardUnits/Turtle/Turtle2.pas
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
uses Turtle,GraphWPF;
|
||||
|
||||
var
|
||||
Atom,FStr,XStr,YStr: string;
|
||||
angle,len,x0,y0: real;
|
||||
n: integer;
|
||||
|
||||
procedure Init1; // Dragon
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('fx','f','x+yf+','-fx-y');
|
||||
(angle,len,n,x0,y0) := (90,3,15,300,450);
|
||||
end;
|
||||
|
||||
procedure Init2; // Koch curve
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('F', 'F-F++F-F', '', '');
|
||||
(angle,len,n,x0,y0) := (60,5,7,10,550);
|
||||
end;
|
||||
|
||||
procedure Init3; // Quadratic Koch Island
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('F+F+F+F', 'F+F-FF+F+F-F', '', '');
|
||||
(angle,len,n,x0,y0) := (90,4,4,250,450);
|
||||
end;
|
||||
|
||||
procedure Init4; // Gosper hexagonal curve
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('XF', 'F', 'X+YF++YF-FX--FXFX-YF+','-FX+YFYF++YF+FX--FX-Y');
|
||||
(angle,len,n,x0,y0) := (60,4,5,580,56);
|
||||
end;
|
||||
|
||||
procedure RunStr(s: string; n: integer);
|
||||
begin
|
||||
foreach var c in s do
|
||||
case c of
|
||||
'+': Turn(angle);
|
||||
'-': Turn(-angle);
|
||||
'f','F': if n>0 then RunStr(FStr,n-1) else Forw(len);
|
||||
'x','X': if n>0 then RunStr(XStr,n-1);
|
||||
'y','Y': if n>0 then RunStr(YStr,n-1);
|
||||
else Print('error')
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
Init2;
|
||||
ToPoint(x0,y0);
|
||||
SetWidth(0.5);
|
||||
//SetColor(Colors.Red);
|
||||
Down;
|
||||
RunStr(Atom,n);
|
||||
Up;
|
||||
end.
|
||||
53
InstallerSamples/StandardUnits/Turtle/Turtle3.pas
Normal file
53
InstallerSamples/StandardUnits/Turtle/Turtle3.pas
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
uses Turtle,GraphWPF;
|
||||
|
||||
var
|
||||
Atom,FStr,XStr,YStr: string;
|
||||
angle,len,x0,y0: real;
|
||||
n: integer;
|
||||
|
||||
procedure Init1; // Dragon
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('fx','f','x+yf+','-fx-y');
|
||||
(angle,len,n,x0,y0) := (90,3,15,300,450);
|
||||
end;
|
||||
|
||||
procedure Init2; // Koch curve
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('F', 'F-F++F-F', '', '');
|
||||
(angle,len,n,x0,y0) := (60,5,7,10,550);
|
||||
end;
|
||||
|
||||
procedure Init3; // Quadratic Koch Island
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('F+F+F+F', 'F+F-FF+F+F-F', '', '');
|
||||
(angle,len,n,x0,y0) := (90,4,4,250,450);
|
||||
end;
|
||||
|
||||
procedure Init4; // Gosper hexagonal curve
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('XF', 'F', 'X+YF++YF-FX--FXFX-YF+','-FX+YFYF++YF+FX--FX-Y');
|
||||
(angle,len,n,x0,y0) := (60,4,5,580,56);
|
||||
end;
|
||||
|
||||
procedure RunStr(s: string; n: integer);
|
||||
begin
|
||||
foreach var c in s do
|
||||
case c of
|
||||
'+': Turn(angle);
|
||||
'-': Turn(-angle);
|
||||
'f','F': if n>0 then RunStr(FStr,n-1) else Forw(len);
|
||||
'x','X': if n>0 then RunStr(XStr,n-1);
|
||||
'y','Y': if n>0 then RunStr(YStr,n-1);
|
||||
else Print('error')
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
Init3;
|
||||
ToPoint(x0,y0);
|
||||
SetWidth(0.5);
|
||||
//SetColor(Colors.Red);
|
||||
Down;
|
||||
RunStr(Atom,n);
|
||||
Up;
|
||||
end.
|
||||
52
InstallerSamples/StandardUnits/Turtle/Turtle4.pas
Normal file
52
InstallerSamples/StandardUnits/Turtle/Turtle4.pas
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
uses Turtle,GraphWPF;
|
||||
|
||||
var
|
||||
Atom,FStr,XStr,YStr: string;
|
||||
angle,len,x0,y0: real;
|
||||
n: integer;
|
||||
|
||||
procedure Init1; // Dragon
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('fx','f','x+yf+','-fx-y');
|
||||
(angle,len,n,x0,y0) := (90,3,15,300,450);
|
||||
end;
|
||||
|
||||
procedure Init2; // Koch curve
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('F', 'F-F++F-F', '', '');
|
||||
(angle,len,n,x0,y0) := (60,5,7,10,550);
|
||||
end;
|
||||
|
||||
procedure Init3; // Quadratic Koch Island
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('F+F+F+F', 'F+F-FF+F+F-F', '', '');
|
||||
(angle,len,n,x0,y0) := (90,4,4,250,450);
|
||||
end;
|
||||
|
||||
procedure Init4; // Gosper hexagonal curve
|
||||
begin
|
||||
(Atom,FStr,XStr,YStr) := ('XF', 'F', 'X+YF++YF-FX--FXFX-YF+','-FX+YFYF++YF+FX--FX-Y');
|
||||
(angle,len,n,x0,y0) := (60,4,5,580,56);
|
||||
end;
|
||||
|
||||
procedure RunStr(s: string; n: integer);
|
||||
begin
|
||||
foreach var c in s do
|
||||
case c of
|
||||
'+': Turn(angle);
|
||||
'-': Turn(-angle);
|
||||
'f','F': if n>0 then RunStr(FStr,n-1) else Forw(len);
|
||||
'x','X': if n>0 then RunStr(XStr,n-1);
|
||||
'y','Y': if n>0 then RunStr(YStr,n-1);
|
||||
else Print('error')
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
Init4;
|
||||
ToPoint(x0,y0);
|
||||
SetWidth(0.5);
|
||||
Down;
|
||||
RunStr(Atom,n);
|
||||
Up;
|
||||
end.
|
||||
18
InstallerSamples/WhatsNew/3_8_1/CacheAttribute.pas
Normal file
18
InstallerSamples/WhatsNew/3_8_1/CacheAttribute.pas
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// Результат функции кешируется в словаре
|
||||
[Cache]
|
||||
function fib(n: integer): integer :=
|
||||
if n in 1..2 then 1
|
||||
else fib(n-1) + fib(n-2);
|
||||
|
||||
function fib1(n: integer): integer :=
|
||||
if n in 1..2 then 1
|
||||
else fib1(n-1) + fib1(n-2);
|
||||
|
||||
begin
|
||||
// Кеширование есть. Работает сотые доли секунды
|
||||
Println(fib(42),MillisecondsDelta/1000);
|
||||
|
||||
// Кеширования нет - быстродействие катастрофически падает
|
||||
// из-за многочисленных повторяющихся вычислений
|
||||
Println(fib1(42),MillisecondsDelta/1000);
|
||||
end.
|
||||
4
InstallerSamples/WhatsNew/3_8_1/EachCount.pas
Normal file
4
InstallerSamples/WhatsNew/3_8_1/EachCount.pas
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
##
|
||||
var s := 'каракатица так и катится';
|
||||
// EachCount возвращает частотный словарь (элемент,количество)
|
||||
s.EachCount.Println
|
||||
5
InstallerSamples/WhatsNew/3_8_1/FunInShortPrograms.pas
Normal file
5
InstallerSamples/WhatsNew/3_8_1/FunInShortPrograms.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
##
|
||||
// В коротких программах можно описывать подпрограммы
|
||||
function Add(a,b: integer) := a + b;
|
||||
|
||||
Print(Add(2,3));
|
||||
7
InstallerSamples/WhatsNew/3_8_1/LambdaBodyAssignment.pas
Normal file
7
InstallerSamples/WhatsNew/3_8_1/LambdaBodyAssignment.pas
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
begin
|
||||
var f: procedure(x: integer);
|
||||
var sum := 0;
|
||||
f := x -> begin sum += x end; // ранее
|
||||
f := x -> (sum += x); // сейчас
|
||||
// f := x -> sum += x; // ошибка компиляции
|
||||
end.
|
||||
28
InstallerSamples/WhatsNew/3_8_1/PlotWPFExample1.pas
Normal file
28
InstallerSamples/WhatsNew/3_8_1/PlotWPFExample1.pas
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// пример вывода графиков разных видов
|
||||
uses PlotWPF;
|
||||
|
||||
begin
|
||||
var g := new GridWPF(2,2,10);
|
||||
|
||||
var c := new LineGraphWPF(0,Pi,v -> v*Sin(v*10));
|
||||
c.PlotRect := Rect(0,0,10,10);
|
||||
c.Graph[0].ChangeData(0,Pi,x->x*x);
|
||||
c.Graph[0].Color := Colors.Green;
|
||||
c.Graph[0].Thickness := 3;
|
||||
c.AddLineGraph(0,Pi,v -> Sqrt(v));
|
||||
|
||||
var c2 := new LineGraphWPF(0,Pi,v -> Sin(v*10)-Cos(v*7));
|
||||
|
||||
var c4 := new MarkerGraphWPF(|1.0,2,3,4,5|,|5.0,15,7,12,2|);
|
||||
c4.AddLineGraph(|1.0,2,3,4,5|,|5.0+1,15+1,7+1,12+1,2+1|);
|
||||
c4.AddMarkerGraph(|1.0,2,3,4,5|,|5.0+1,15+1,7+1,12+1,2+1|,Colors.Bisque,MarkerType.Diamond,8);
|
||||
c4.Graph[0].Thickness := 0.7;
|
||||
c4.Graph[1].MarkerType := MarkerType.Box;
|
||||
c4.Graph[2].Thickness := 0.7;
|
||||
|
||||
var gg := new GridWPF(2,2,3);
|
||||
new LineGraphWPF(0,2,x->Cos(10*x));
|
||||
new LineGraphWPF(0,2,x->Sqrt(x));
|
||||
new LineGraphWPF(0,2,x->Sin(10*x));
|
||||
new LineGraphWPF(0,2,x->exp(x));
|
||||
end.
|
||||
10
InstallerSamples/WhatsNew/3_8_1/SortKeyProjection.pas
Normal file
10
InstallerSamples/WhatsNew/3_8_1/SortKeyProjection.pas
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
begin
|
||||
var pp := |('Сидоров',21),('Петров',23), ('Попов',20),('Иванов',22)|;
|
||||
// Сортировка с проекцией на ключ
|
||||
Sort(pp, p->p[0]);
|
||||
Println('По фамилии');
|
||||
pp.Println;
|
||||
Sort(pp, p->p[1]);
|
||||
Println('По возрасту');
|
||||
pp.Println;
|
||||
end.
|
||||
5
InstallerSamples/WhatsNew/3_8_1/UnpackValueTuple.pas
Normal file
5
InstallerSamples/WhatsNew/3_8_1/UnpackValueTuple.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
begin
|
||||
// Можно распаковывать также тип System.ValueTuple
|
||||
var (n,s) := System.ValueTuple.Create(2,'ab');
|
||||
Print(n,s);
|
||||
end.
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{$zerobasedstrings}
|
||||
begin
|
||||
// Директива воздействует на доступ по индексу и на срезы
|
||||
// Директива глобальна и распространяется на весь файл
|
||||
var s := '0123456789';
|
||||
Println(s[0:5],s[5:8],s[8:]); // 01234 567 89
|
||||
// Директива НЕ воздействует на доступ по индексу с конца
|
||||
Print(s[^1]);
|
||||
end.
|
||||
|
||||
Loading…
Reference in a new issue