Добавлены примеры в Whats New

This commit is contained in:
Mikhalkovich Stanislav 2022-04-18 21:34:18 +03:00
parent 8682125251
commit 69e057c576
19 changed files with 122 additions and 57 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "8";
public const string Build = "3";
public const string Revision = "3104";
public const string Revision = "3105";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%COREVERSION%=3
%REVISION%=3104
%MINOR%=8
%REVISION%=3105
%COREVERSION%=3
%MAJOR%=3

View file

@ -12,7 +12,7 @@ type
const fname = 'a.dat';
begin
var m := new Node(5,new Node(3,new Node(4,nil)));
var m := new Node(5,new Node(3,new Node(4,nil))); // Связный список
Serialize(fname,m); // Сериализуем объект в файл
var m1 := Deserialize(fname) as Node; // Десериализуем из файла
Print(m1);

View file

@ -1,20 +1,12 @@
Uses Timers;
uses Timers;
var t1, t2: Timer;
procedure OnTimer1 := Write('!');
procedure OnTimer1;
begin
Write('!');
end;
procedure OnTimer2;
begin
Write('?');
end;
procedure OnTimer2 := Write('?');
begin
t1 := new Timer(200, OnTimer1);
t2 := new Timer(300, OnTimer2);
var t1 := new Timer(200, OnTimer1);
var t2 := new Timer(300, OnTimer2);
t1.Start;
t2.Start;
Sleep(10000);

View file

@ -1,59 +1,37 @@
// "Собачка". Иллюстрация использования таймера.
uses GraphABC, Timers;
// "Собачка". Иллюстрация использования таймера.
uses GraphWPF, Timers;
var
t: Timer;
xx,yy,px,py: integer;
xx,yy,px,py: real;
procedure Draw;
begin
FillCircle(xx,yy,11);
end;
procedure Show;
begin
Brush.Color := clBlack;
Draw;
end;
procedure Hide;
begin
Brush.Color := clWhite;
Draw;
end;
procedure Move(x,y: integer);
begin
Hide;
xx := x;
yy := y;
show;
end;
procedure Timer1;
procedure TimerProc;
begin
if (xx<>px) or (yy<>py) then
begin
var t := 1/10;
var newx := round((1-t)*xx+t*px);
var newy := round((1-t)*yy+t*py);
Move(newx,newy);
(xx,yy) := (newx,newy);
end;
end;
procedure MouseMove(x,y,mb: integer);
begin
px := x; py := y;
end;
Window.Title := '"Собачка"';
Brush.Color := Colors.Black;
begin
SetWindowCaption('"Собачка"');
SetSmoothingOff;
OnMouseMove:=MouseMove;
xx := 100; yy := 100;
px := xx; py := yy;
Show;
Timer1;
t := new Timer(20,Timer1);
OnMouseMove := procedure(x,y,mb) -> (px,py) := (x,y);
OnDrawFrame := dt -> begin
FillCircle(xx,yy,11);
end;
var t := new Timer(20,TimerProc);
t.Start;
end.

View file

@ -43,7 +43,7 @@ begin
end;
begin
Init4;
Init1;
ToPoint(x0,y0);
SetWidth(0.5);
//SetColor(Colors.Red);

View file

@ -0,0 +1,7 @@
// Разделитель AllDelimiters содержит все основные символы,
// которые могут служить разделителями между словами
begin
var s := '123@!45 @#$678\/|?90~;';
s.ToWords(AllDelimiters).Println;
end.

View file

@ -0,0 +1,5 @@
// Методы .Sum, .Average и .Product для последовательности BigInteger
begin
var s := SeqGen(10,i->BigInteger(i)**i);
Print(s.Sum,s.Product,s.Average);
end.

View file

@ -0,0 +1,5 @@
// Стандартный метод последовательности CountOf
begin
var a := Arr(1,3,5,7,1,2,1,3,1,5);
a.CountOf(1).Print;
end.

View file

@ -0,0 +1,12 @@
// Методы строк .IsInteger и .IsReal
begin
var s := '123.4 3 5 6.6 a v 67';
var (si,sr) := (0,0.0);
foreach var w in s.ToWords do
if w.IsInteger then
si += w.ToInteger
else if w.IsReal then
sr += w.Toreal;
Print(si,sr);
end.

View file

@ -0,0 +1,14 @@
// Все виды использования Permutations, Combinations, Cartesian
##
var a := Arr(1,3,5,7);
a.Permutations.Println;
a.Cartesian(2).Println;
a.Permutations(2).Println;
a.Combinations(2).Println;
Println;
var s := Seq(1,3,5,7);
s.Permutations.Println;
s.Cartesian(2).Println;
s.Permutations(2).Println;
s.Combinations(2).Println;

View file

@ -0,0 +1,6 @@
// Метод строк .ToWords со строкой, содержащей разделители
begin
var s := '123.4, 6.6; 67';
s.ToWords(' ,;').PrintLines
end.

View file

@ -0,0 +1,9 @@
// Литералы BigInteger
begin
Println(25bi ** 25 + 17bi ** 17);
var p := 1bi;
for var i:=2 to 50 do
p *= i;
Println($'50! = {p}');
end.

View file

@ -0,0 +1,10 @@
// Расширенный foreach с распаковкой значений в переменные
begin
var a := Arr((1,2),(3,4),(5,6));
foreach var (x,y) in a do // Распаковка кортежей
Print(x,y);
Println;
var b := Arr(|1,2,3|,|4,5|,|6,7,8,9|);
foreach var (x,y) in b do // Распаковка последовательностей
Print(x,y);
end.

View file

@ -0,0 +1,4 @@
// В коротких подпрограммах можно использовать подключение модулей
##
uses Graph3D;
Sphere(Origin,1);

View file

@ -0,0 +1,14 @@
// Срезы многомерных массивов
begin
var m := MatrByRow(||1,2,3,4|,|5,6,7,8|,|9,10,11,12||);
Println(m[:,:]); // [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Println(m[::1,::1]); // [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Println(m[1:3,1:4]); // [[6,7,8],[10,11,12]]
Println(m[::2,::3]); // [[1,4],[9,12]]
Println(m[::-2,::-1]); // [[12,11,10,9],[4,3,2,1]]
Println(m[^2::-1,^2::-1]); // [[7,6,5],[3,2,1]]
Println(m[:^1,:^1]); // [[1,2,3],[5,6,7]]
Println(m[1,:]); // Одномерный массив [5,6,7,8]
Println(m[^1,:]); // Одномерный массив [9,10,11,12]
Println(m[:,^1]); // Одномерный массив [4,8,12]
end.

View file

@ -0,0 +1,9 @@
// Распаковка составного параметра лямбда-выражения в переменные
begin
var s := Seq(('Умнова',16),('Иванов',23),
('Попова',17),('Козлов',24));
Println('Совершеннолетние:');
s.Where(\(name,age) -> age >= 18).Println;
Println('Сортировка по фамилии:');
s.OrderBy(\(name,age) -> name).Println;
end.

View file

@ -1 +1 @@
3.8.3.3104
3.8.3.3105

View file

@ -1 +1 @@
!define VERSION '3.8.3.3104'
!define VERSION '3.8.3.3105'