Обновление примеров и bug fix #132
This commit is contained in:
parent
24a92cb5ce
commit
560122eebc
|
|
@ -2790,7 +2790,9 @@ namespace CodeFormatters
|
||||||
{
|
{
|
||||||
//multiline_stack_push(at);
|
//multiline_stack_push(at);
|
||||||
visit_node(at.vars);
|
visit_node(at.vars);
|
||||||
sb.Append(" := ");
|
//add_space_before = true;
|
||||||
|
add_space_after = true;
|
||||||
|
//sb.Append(" := ");
|
||||||
visit_node(at.expr);
|
visit_node(at.expr);
|
||||||
//multiline_stack_pop(at);
|
//multiline_stack_pop(at);
|
||||||
}
|
}
|
||||||
|
|
@ -2804,9 +2806,10 @@ namespace CodeFormatters
|
||||||
/*if (i > 0)
|
/*if (i > 0)
|
||||||
sb.Append(", ");*/
|
sb.Append(", ");*/
|
||||||
visit_node(av);
|
visit_node(av);
|
||||||
|
add_space_after = true;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
sb.Append(")");
|
//sb.Append(")");
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// "Решето Эратосфена" - вычисление простых чисел
|
// "Решето Эратосфена" - вычисление простых чисел
|
||||||
const n = 100000;
|
const n = 100000;
|
||||||
|
|
||||||
var primes: set of integer;
|
var primes: set of integer;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
primes := [2..n];
|
primes := [2..n];
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Все перестановки
|
// Все перестановки
|
||||||
const n = 4;
|
const n = 4;
|
||||||
|
|
||||||
var a: array of integer;
|
var a: array of integer;
|
||||||
|
|
@ -16,6 +16,6 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
a := Range(1,n).ToArray(); // заполнение массива a числами от 1 до n
|
a := Range(1,n).ToArray; // заполнение массива a числами от 1 до n
|
||||||
Perm(n);
|
Perm(n);
|
||||||
end.
|
end.
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Самообучающаяся игра "Угадай животное".
|
// Самообучающаяся игра "Угадай животное".
|
||||||
// Старайтесь на вопрос "Чем отличается" вводить самый общий ответ
|
// Старайтесь на вопрос "Чем отличается" вводить самый общий ответ
|
||||||
// Например: "Чем отличается чиж от ежа" - "Умеет летать"
|
// Например: "Чем отличается чиж от ежа" - "Умеет летать"
|
||||||
type
|
type
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
// Демонстрация фрактальной графики. Множество Мандельброта
|
// Демонстрация фрактальной графики. Множество Мандельброта
|
||||||
// Для каждой точки комплексной плоскости z=(x,y) выполняем итерационный процесс z=z^2+c, c=(cx,cy)
|
// Для каждой точки комплексной плоскости z=(x,y) выполняем итерационный процесс z=z*2+c, c=(cx,cy)
|
||||||
// Считаем количество итераций i до тех пор пока не выполнится условие |x|>max и |y|>max
|
// Считаем количество итераций i до тех пор пока не выполнится условие |z|>max
|
||||||
// После этого рисуем точку x,y с насыщенностью красного цвета, пропорциональной i
|
// После этого рисуем точку z=(x,y) с насыщенностью красного цвета, пропорциональной i
|
||||||
uses GraphABC,Utils;
|
uses GraphABC;
|
||||||
|
|
||||||
const
|
const
|
||||||
max = 10;
|
max = 10;
|
||||||
|
|
@ -20,18 +20,16 @@ begin
|
||||||
for var ix:=0 to Window.Width-1 do
|
for var ix:=0 to Window.Width-1 do
|
||||||
for var iy:=0 to Window.Height-1 do
|
for var iy:=0 to Window.Height-1 do
|
||||||
begin
|
begin
|
||||||
var x := 0.0;
|
|
||||||
var y := 0.0;
|
|
||||||
var cx := scalex * (ix - dx);
|
var cx := scalex * (ix - dx);
|
||||||
var cy := scaley * (iy - dy);
|
var cy := scaley * (iy - dy);
|
||||||
|
var c := Cplx(cx,cy);
|
||||||
|
var z := Cplx(0,0);
|
||||||
|
|
||||||
var i := 1;
|
var i := 1;
|
||||||
while i<255 do
|
while i<255 do
|
||||||
begin
|
begin
|
||||||
var x1 := x*x-y*y+cx;
|
z := z*z+c;
|
||||||
var y1 := 2*x*y+cy;
|
if z.Magnitude>max then break;
|
||||||
x := x1;
|
|
||||||
y := y1;
|
|
||||||
if (abs(x)>max) and (abs(y)>max) then break;
|
|
||||||
i += 1;
|
i += 1;
|
||||||
end;
|
end;
|
||||||
if i>=255 then SetPixel(ix,iy,clRed)
|
if i>=255 then SetPixel(ix,iy,clRed)
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -1,10 +1,9 @@
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
//Draw(-20,20,100,100,500,400,x->x*sin(x));
|
Brush.Color := ARGB(0,0,0,0); // ďđîçđŕ÷íŕ˙ ęčńňü
|
||||||
Draw(-20,20,x->x*sin(x));
|
Draw(x->x*sin(x),-20,20);
|
||||||
Draw(sin);
|
Draw(sin);
|
||||||
Draw(cos);
|
Draw(cos);
|
||||||
Draw(exp);
|
Draw(exp);
|
||||||
//Draw(x->x*sin(x));
|
|
||||||
end.
|
end.
|
||||||
Binary file not shown.
|
|
@ -15,15 +15,13 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
//Draw(-20,20,100,100,500,400,x->x*sin(x));
|
|
||||||
var r := ClientRectangle;
|
var r := ClientRectangle;
|
||||||
r := r.Scale(0.5);
|
r := r.Scale(0.5);
|
||||||
var r1 := r.Move(r.Width,0);
|
var r1 := r.Move(r.Width,0);
|
||||||
var r2 := r.Move(0,r.Height);
|
var r2 := r.Move(0,r.Height);
|
||||||
var r3 := r.Move(r.Width,r.Height);
|
var r3 := r.Move(r.Width,r.Height);
|
||||||
Draw(-20,20,r,x->x*sin(x));
|
Draw(x->x*sin(x),-20,20,r);
|
||||||
Draw(r1,sin);
|
Draw(sin,r1);
|
||||||
Draw(r2,cos);
|
Draw(cos,r2);
|
||||||
Draw(20,10,r3,exp);
|
Draw(exp,20,10,r3);
|
||||||
//Draw(x->x*sin(x));
|
|
||||||
end.
|
end.
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
// Иллюстрация прозрачности
|
// Иллюстрация прозрачности
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
for var Transparency:=0 to 255 do
|
for var Transparency:=0 to 255 do
|
||||||
begin
|
begin
|
||||||
Brush.Color:=ARGB(Transparency,Random(256),Random(256),Random(256));
|
Brush.Color := ARGB(Transparency,Random(256),Random(256),Random(256));
|
||||||
FillCircle(Random(Window.Width),Random(Window.Height),Random(20,60));
|
FillCircle(Random(Window.Width),Random(Window.Height),Random(20,60));
|
||||||
sleep(100);
|
sleep(100);
|
||||||
end;
|
end;
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,12 @@
|
||||||
// Штампы - это классы графических фигур, хранящие их параметры
|
// Штампы - это классы графических фигур, хранящие их параметры
|
||||||
// В любой момент можно нарисовать графическую фигуру, вызвав метод Stamp.
|
// В любой момент можно нарисовать графическую фигуру, вызвав метод Stamp.
|
||||||
|
|
||||||
// Класс штампа прямоугольника
|
// Класс штампа прямоугольника
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
type
|
type
|
||||||
RectangleStamp = class
|
RectangleStamp = auto class
|
||||||
x,y,w,h: integer;
|
x,y,w,h: integer;
|
||||||
constructor (xx,yy,ww,hh: integer);
|
|
||||||
begin
|
|
||||||
x := xx; y := yy;
|
|
||||||
w := ww; h := hh;
|
|
||||||
end;
|
|
||||||
procedure Stamp;
|
procedure Stamp;
|
||||||
begin
|
begin
|
||||||
Rectangle(x,y,x+w,y+h);
|
Rectangle(x,y,x+w,y+h);
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,17 @@
|
||||||
// Класс штампа ряда прямоугольников
|
// Класс штампа ряда прямоугольников
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
type
|
type
|
||||||
RectangleStamp = class
|
RectangleStamp = auto class
|
||||||
x,y,w,h: integer;
|
x,y,w,h: integer;
|
||||||
constructor (xx,yy,ww,hh: integer);
|
|
||||||
begin
|
|
||||||
x := xx; y := yy;
|
|
||||||
w := ww; h := hh;
|
|
||||||
end;
|
|
||||||
procedure Stamp;
|
procedure Stamp;
|
||||||
begin
|
begin
|
||||||
Rectangle(x,y,x+w,y+h);
|
Rectangle(x,y,x+w,y+h);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
RowRectanglesStamp = class
|
RowRectanglesStamp = auto class
|
||||||
x,y,w,h,n: integer;
|
x,y,w,h,n: integer;
|
||||||
constructor (xx,yy,ww,hh,nn: integer);
|
|
||||||
begin
|
|
||||||
x := xx; y := yy;
|
|
||||||
w := ww; h := hh;
|
|
||||||
n := nn;
|
|
||||||
end;
|
|
||||||
procedure Stamp;
|
procedure Stamp;
|
||||||
begin
|
begin
|
||||||
var r := new RectangleStamp(x,y,w,h);
|
var r := new RectangleStamp(x,y,w,h);
|
||||||
|
|
|
||||||
|
|
@ -1,26 +1,15 @@
|
||||||
// Класс штампа прямоугольника с методами увеличения-уменьшения
|
// Класс штампа прямоугольника с методами увеличения-уменьшения
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
type
|
type
|
||||||
RectangleStamp = class
|
RectangleStamp = auto class
|
||||||
x,y,w,h: integer;
|
x,y,w,h: integer;
|
||||||
constructor (xx,yy,ww,hh: integer);
|
procedure Stamp := Rectangle(x,y,x+w,y+h);
|
||||||
begin
|
|
||||||
x := xx; y := yy;
|
|
||||||
w := ww; h := hh;
|
|
||||||
end;
|
|
||||||
procedure Stamp;
|
|
||||||
begin
|
|
||||||
Rectangle(x,y,x+w,y+h);
|
|
||||||
end;
|
|
||||||
procedure Increase(dw,dh: integer);
|
procedure Increase(dw,dh: integer);
|
||||||
begin
|
begin
|
||||||
w += dw; h += dh;
|
w += dw; h += dh;
|
||||||
end;
|
end;
|
||||||
procedure Decrease(dw,dh: integer);
|
procedure Decrease(dw,dh: integer) := Increase(-dw,-dh);
|
||||||
begin
|
|
||||||
Increase(-dw,-dh);
|
|
||||||
end;
|
|
||||||
procedure MoveOn(dx,dy: integer);
|
procedure MoveOn(dx,dy: integer);
|
||||||
begin
|
begin
|
||||||
x += dx; y += dy;
|
x += dx; y += dy;
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,9 @@
|
||||||
// Класс штампа треугольника
|
// Класс штампа треугольника
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
type
|
type
|
||||||
TriangleStamp = class
|
TriangleStamp = auto class
|
||||||
x,y,w,orient: integer;
|
x,y,w,orient: integer;
|
||||||
constructor (xx,yy,ww,o: integer);
|
|
||||||
begin
|
|
||||||
x := xx; y := yy;
|
|
||||||
w := ww; orient := o;
|
|
||||||
end;
|
|
||||||
procedure Stamp;
|
procedure Stamp;
|
||||||
begin
|
begin
|
||||||
MoveTo(x,y);
|
MoveTo(x,y);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Класс штампа креста
|
// Класс штампа креста
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
@ -33,10 +33,7 @@ type
|
||||||
begin
|
begin
|
||||||
MoveOn(a*w,b*w);
|
MoveOn(a*w,b*w);
|
||||||
end;
|
end;
|
||||||
function Clone(): CrossStamp;
|
function Clone := new CrossStamp(x,y,w);
|
||||||
begin
|
|
||||||
Result := new CrossStamp(x,y,w);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
|
||||||
|
|
@ -62,18 +62,8 @@ type
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function f(x: real): real;
|
|
||||||
begin
|
begin
|
||||||
Result := x*sin(5*x);
|
var fs := new FuncStamp(10,10,310,230,0,-2*Pi,2*Pi,2*Pi,x->x*sin(5*x));
|
||||||
end;
|
|
||||||
|
|
||||||
function g(x: real): real;
|
|
||||||
begin
|
|
||||||
Result := sin(3*x)+sin(4*x);
|
|
||||||
end;
|
|
||||||
|
|
||||||
begin
|
|
||||||
var fs := new FuncStamp(10,10,310,230,0,-2*Pi,2*Pi,2*Pi,f);
|
|
||||||
fs.Stamp;
|
fs.Stamp;
|
||||||
fs.MoveOn(320,0);
|
fs.MoveOn(320,0);
|
||||||
fs.SetFuncWindow(-Pi,-1,Pi,1);
|
fs.SetFuncWindow(-Pi,-1,Pi,1);
|
||||||
|
|
@ -84,6 +74,6 @@ begin
|
||||||
fs.Stamp;
|
fs.Stamp;
|
||||||
fs.MoveOn(320,0);
|
fs.MoveOn(320,0);
|
||||||
fs.SetFuncWindow(-2*Pi,-2,2*Pi,2);
|
fs.SetFuncWindow(-2*Pi,-2,2*Pi,2);
|
||||||
fs.f := g;
|
fs.f := x->sin(3*x)+sin(4*x);
|
||||||
fs.Stamp;
|
fs.Stamp;
|
||||||
end.
|
end.
|
||||||
|
|
@ -1,16 +1,10 @@
|
||||||
// Класс штампа текста
|
// Класс штампа текста
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
type
|
type
|
||||||
TextStamp = class
|
TextStamp = auto class
|
||||||
x,y,pt: integer;
|
x,y,pt: integer;
|
||||||
Text: string;
|
Text: string;
|
||||||
constructor (xx,yy,ppt: integer; t: string);
|
|
||||||
begin
|
|
||||||
x := xx; y := yy;
|
|
||||||
pt := ppt;
|
|
||||||
Text := t;
|
|
||||||
end;
|
|
||||||
procedure Stamp;
|
procedure Stamp;
|
||||||
begin
|
begin
|
||||||
Font.Size := pt;
|
Font.Size := pt;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// Вывод английских согласных
|
// Вывод английских согласных
|
||||||
var vowel: string := 'aeiouy';
|
var vowel: string := 'aeiouy';
|
||||||
|
|
||||||
begin
|
begin
|
||||||
var all := Range('a','z').Aggregate('',(s,x)->s+x);
|
var all := Range('a','z').JoinIntoString('');
|
||||||
all.Except(vowel).Println;
|
all.Except(vowel).Println;
|
||||||
end.
|
end.
|
||||||
13
InstallerSamples/LanguageFeatures/AutoClassPoint.pas
Normal file
13
InstallerSamples/LanguageFeatures/AutoClassPoint.pas
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
type
|
||||||
|
Point = auto class
|
||||||
|
x,y: integer;
|
||||||
|
procedure MoveOn(dx,dy: integer) := (x,y) := (x+dx,y+dy);
|
||||||
|
function Distance(p: Point) := sqrt(sqr(x-p.x)+sqr(y-p.y));
|
||||||
|
class function operator implicit(t: (integer,integer)): Point := new Point(t[0],t[1]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
var p: Point;
|
||||||
|
p := (2,3);
|
||||||
|
Println(p);
|
||||||
|
end.
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
// Это - главная программа
|
// Это - главная программа
|
||||||
// Именами из dll-библиотеки, написанной на PascalABC.NET, можно пользоваться,
|
// Именами из dll-библиотеки, написанной на PascalABC.NET, можно пользоваться,
|
||||||
// не подключая пространства имен
|
// не подключая пространства имен
|
||||||
#reference 'mydll.dll'
|
{$reference 'mydll.dll'}
|
||||||
|
|
||||||
begin
|
begin
|
||||||
PrintPascalABCNET;
|
PrintPascalABCNET;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
var a: array of integer := (1,3,5,7);
|
// Ïîìåíÿòü äâå ïîëîâèíû ìàññèâà
|
||||||
|
var a := Arr(1,3,5,7);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
a.Skip(2).Concat(a.Take(2)).Print;
|
a.Skip(2).Concat(a.Take(2)).Print;
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,9 @@
|
||||||
// Пример иллюстрирует всевозможные типы контейнеров,
|
// Пример иллюстрирует всевозможные типы контейнеров,
|
||||||
// по которым можно перемещаться с помощью оператора foreach
|
// по которым можно перемещаться с помощью оператора foreach
|
||||||
|
|
||||||
uses System.Collections.Generic;
|
|
||||||
|
|
||||||
const n = 10;
|
const n = 10;
|
||||||
|
|
||||||
var
|
var
|
||||||
x: integer;
|
|
||||||
a: array [1..n] of integer;
|
a: array [1..n] of integer;
|
||||||
b: array of integer;
|
b: array of integer;
|
||||||
s: set of integer;
|
s: set of integer;
|
||||||
|
|
@ -16,8 +13,8 @@ begin
|
||||||
for var i:=1 to n do
|
for var i:=1 to n do
|
||||||
a[i] := Random(100);
|
a[i] := Random(100);
|
||||||
// Цикл foreach по статическому массиву
|
// Цикл foreach по статическому массиву
|
||||||
foreach x in a do
|
foreach var x in a do
|
||||||
write(x,' ');
|
Print(x);
|
||||||
writeln;
|
writeln;
|
||||||
|
|
||||||
SetLength(b,n);
|
SetLength(b,n);
|
||||||
|
|
@ -25,20 +22,22 @@ begin
|
||||||
b[i] := Random(100);
|
b[i] := Random(100);
|
||||||
|
|
||||||
// Цикл foreach по динамическому массиву
|
// Цикл foreach по динамическому массиву
|
||||||
foreach x in b do
|
foreach var x in b do
|
||||||
write(x,' ');
|
Print(x);
|
||||||
writeln;
|
writeln;
|
||||||
|
|
||||||
s := [2..5,10..14];
|
s := [2..5,10..14];
|
||||||
foreach x in s do
|
// Цикл foreach по множеству
|
||||||
write(x,' ');
|
foreach var x in s do
|
||||||
|
Print(x);
|
||||||
writeln;
|
writeln;
|
||||||
|
|
||||||
l := new List<integer>;
|
l := new List<integer>;
|
||||||
l.AddRange(b);
|
l.AddRange(b);
|
||||||
l.Reverse;
|
l.Reverse;
|
||||||
foreach x in l do
|
// Цикл foreach по списку
|
||||||
write(x,' ');
|
foreach var x in l do
|
||||||
|
Print(x);
|
||||||
writeln;
|
writeln;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// Цикл по множеству. Порядок - не по алфавиту, поскольку множества реализованы на базе хеш-таблиц
|
// Цикл по множеству. Порядок - не по алфавиту, поскольку множества реализованы на базе хеш-таблиц
|
||||||
begin
|
begin
|
||||||
foreach c: char in ['a'..'z'] do
|
foreach var c in ['a'..'z'] do
|
||||||
Write(c);
|
Write(c);
|
||||||
end.
|
end.
|
||||||
|
|
@ -1,10 +1,8 @@
|
||||||
// Пример иллюстрирует реализацию классом интерфейса IEnumerable
|
// Пример иллюстрирует реализацию классом интерфейса IEnumerable
|
||||||
// для использования его в операторе foreach
|
// для использования его в операторе foreach
|
||||||
uses System.Collections;
|
|
||||||
|
|
||||||
type
|
type
|
||||||
// Генератор чисел Фибоначчи
|
// Генератор чисел Фибоначчи
|
||||||
FibGen = class(IEnumerable, IEnumerator)
|
FibGen = class(IEnumerable<integer>, IEnumerator<integer>)
|
||||||
private
|
private
|
||||||
a,b,n,i: integer;
|
a,b,n,i: integer;
|
||||||
public
|
public
|
||||||
|
|
@ -15,37 +13,34 @@ type
|
||||||
b := 1;
|
b := 1;
|
||||||
Self.n := n;
|
Self.n := n;
|
||||||
end;
|
end;
|
||||||
function Get_Current: Object;
|
function Get_Current: integer;
|
||||||
begin
|
begin
|
||||||
if i=0 then
|
if i=0 then
|
||||||
Result := 1
|
Result := 1
|
||||||
else Result := b;
|
else Result := b;
|
||||||
end;
|
end;
|
||||||
function GetEnumerator: IEnumerator;
|
function System.Collections.IEnumerator.Get_Current: object := Get_Current;
|
||||||
begin
|
function GetEnumerator: IEnumerator<integer> := Self;
|
||||||
Result := Self;
|
function System.Collections.IEnumerable.GetEnumerator: System.Collections.IEnumerator := Self;
|
||||||
end;
|
|
||||||
function MoveNext: boolean;
|
function MoveNext: boolean;
|
||||||
begin
|
begin
|
||||||
i += 1;
|
i += 1;
|
||||||
Result := i<n;
|
Result := i<n;
|
||||||
if i=0 then exit;
|
if i=0 then exit;
|
||||||
var c := a + b;
|
(a,b) := (b,a+b);
|
||||||
a := b;
|
|
||||||
b := c;
|
|
||||||
end;
|
end;
|
||||||
property Current: Object read Get_Current;
|
property Current: integer read Get_Current;
|
||||||
procedure Reset;
|
procedure Reset;
|
||||||
begin
|
begin
|
||||||
i := -1;
|
end;
|
||||||
|
procedure Dispose;
|
||||||
|
begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var f: FibGen;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
writeln('Числа Фибоначчи');
|
writeln('Числа Фибоначчи');
|
||||||
f := new FibGen(25);
|
var f := new FibGen(25);
|
||||||
foreach var x in f do
|
foreach var x in f do
|
||||||
write(x,' ');
|
Print(x);
|
||||||
end.
|
end.
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Перегрузка операций. Класс "Дробь"
|
// Перегрузка операций. Класс "Дробь"
|
||||||
type
|
type
|
||||||
Frac = record
|
Frac = record
|
||||||
private
|
private
|
||||||
|
|
@ -25,11 +25,9 @@ type
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var f,f1: Frac;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
f := new Frac(2,3);
|
var f := new Frac(2,3);
|
||||||
f1 := new Frac(1,2);
|
var f1 := new Frac(1,2);
|
||||||
writelnFormat('{0} + {1} = {2} ',f,f1,f+f1);
|
writelnFormat('{0} + {1} = {2} ',f,f1,f+f1);
|
||||||
// f+f1 переводится компилятором в Frac.operator+(f,f1)
|
// f+f1 переводится компилятором в Frac.operator+(f,f1)
|
||||||
writelnFormat('{0} - {1} = {2} ',f,f1,f-f1);
|
writelnFormat('{0} - {1} = {2} ',f,f1,f-f1);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Обобщенные функции
|
// Обобщенные функции
|
||||||
// Выведение типа T по типам параметров
|
// Выведение типа T по типам параметров
|
||||||
|
|
||||||
function IndexOf<T>(a: array of T; val: T): integer;
|
function IndexOf<T>(a: array of T; val: T): integer;
|
||||||
|
|
@ -12,7 +12,7 @@ begin
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var a: array of string := ('Ваня', 'Коля', 'Саша', 'Сережа');
|
var a := Arr('Ваня', 'Коля', 'Саша', 'Сережа');
|
||||||
|
|
||||||
begin
|
begin
|
||||||
var s := 'Сережа';
|
var s := 'Сережа';
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Индексные свойства. Массив цветных квадратов
|
// Индексные свойства. Массив цветных квадратов
|
||||||
uses GraphABC;
|
uses GraphABC;
|
||||||
|
|
||||||
const
|
const
|
||||||
|
|
@ -27,9 +27,7 @@ type
|
||||||
public
|
public
|
||||||
constructor (n: integer);
|
constructor (n: integer);
|
||||||
begin
|
begin
|
||||||
SetLength(a,n);
|
a := ArrFill(n,Color.White);
|
||||||
for var i:=0 to n-1 do
|
|
||||||
a[i] := clWhite;
|
|
||||||
Draw;
|
Draw;
|
||||||
end;
|
end;
|
||||||
/// Рисует i-тый квадрат
|
/// Рисует i-тый квадрат
|
||||||
|
|
@ -53,7 +51,7 @@ var arr: VisualArray;
|
||||||
begin
|
begin
|
||||||
Window.Title := 'Иллюстрация индексных свойств';
|
Window.Title := 'Иллюстрация индексных свойств';
|
||||||
arr := new VisualArray(dim);
|
arr := new VisualArray(dim);
|
||||||
SetWindowSize(sz*(dim+2),3*sz);
|
Window.SetSize(sz*(dim+2),3*sz);
|
||||||
arr[0] := clGreen; // arr.Items[0] = arr[0] поскольку свойство Items является свойством по умолчанию
|
arr[0] := clGreen; // arr.Items[0] = arr[0] поскольку свойство Items является свойством по умолчанию
|
||||||
Sleep(delay);
|
Sleep(delay);
|
||||||
arr[1] := clBlack;
|
arr[1] := clBlack;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
// Создание функции Concat с переменным числом параметров
|
// Создание функции Concat с переменным числом параметров
|
||||||
|
|
||||||
function Concat(params strs: array of string): string;
|
function Concat(params strs: array of string): string;
|
||||||
begin
|
begin
|
||||||
var sb := new System.Text.StringBuilder;
|
var sb := new StringBuilder;
|
||||||
foreach x: string in strs do
|
foreach var x in strs do
|
||||||
sb.Append(x);
|
sb.Append(x);
|
||||||
Result := sb.ToString;
|
Result := sb.ToString;
|
||||||
end;
|
end;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
// Создание процедуры MyWriteln с переменным числом параметров
|
// Создание процедуры MyWriteln с переменным числом параметров
|
||||||
|
|
||||||
procedure MyWriteln(params args: array of object);
|
procedure MyWriteln(params args: array of object);
|
||||||
begin
|
begin
|
||||||
foreach x: Object in args do
|
foreach var x in args do
|
||||||
System.Console.Write(x);
|
Write(x);
|
||||||
System.Console.WriteLine;
|
WriteLn;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,15 @@
|
||||||
// Иллюстрация процедурных переменных как параметров подпрограмм
|
// Иллюстрация процедурных переменных как параметров подпрограмм
|
||||||
// Для процедурного типа в PascalABC.NET реализована структурная эквивалентность типов
|
// Для процедурного типа в PascalABC.NET реализована структурная эквивалентность типов
|
||||||
// Процедурный тип реализован через делегаты .NET
|
// Процедурный тип реализован через делегаты .NET
|
||||||
procedure for_each(var a: array of real; p: procedure(var r: real));
|
procedure for_each(a: array of real; p: procedure(var r: real));
|
||||||
var i: integer;
|
|
||||||
begin
|
begin
|
||||||
for i := 0 to a.Length-1 do
|
for var i := 0 to a.Length-1 do
|
||||||
p(a[i]);
|
p(a[i]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure mult2(var r: real);
|
procedure mult2(var r: real) := r := 2*r;
|
||||||
begin
|
|
||||||
r := 2*r
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure print(var r: real);
|
procedure print(var r: real) := write(r,' ');
|
||||||
begin
|
|
||||||
write(r,' ');
|
|
||||||
end;
|
|
||||||
|
|
||||||
var a: array of real := (1,2,3,6,7);
|
var a: array of real := (1,2,3,6,7);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,18 @@
|
||||||
//Перегрузка операторов
|
// Перегрузка операторов
|
||||||
type
|
type
|
||||||
Student = class
|
Student = auto class
|
||||||
Name: string;
|
Name: string;
|
||||||
Height: integer;
|
Height: integer;
|
||||||
public
|
public
|
||||||
constructor(Name: string; Height: integer);
|
|
||||||
begin
|
|
||||||
Self.Name := Name;
|
|
||||||
Self.Height := Height;
|
|
||||||
end;
|
|
||||||
class function operator<(left,right: Student): boolean;
|
|
||||||
// Сравнение по росту
|
// Сравнение по росту
|
||||||
begin
|
class function operator<(left,right: Student): boolean := left.Height < right.Height;
|
||||||
Result := left.Height < right.Height;
|
class function operator>(left,right: Student): boolean := left.Height > right.Height;
|
||||||
end;
|
function ToString: string; override := string.Format('{0} ({1})', Name, Height);
|
||||||
class function operator>(left,right: Student): boolean;
|
|
||||||
begin
|
|
||||||
Result := left.Height > right.Height;
|
|
||||||
end;
|
|
||||||
function ToString: string; override;
|
|
||||||
begin
|
|
||||||
Result := string.Format('{0} ({1})', Name, Height);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
|
||||||
s1,s2: Student;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
s1 := new Student('Stepa Morkovkin',188);
|
var s1 := new Student('Stepa Morkovkin',188);
|
||||||
s2 := new Student('Petya Pomidorov',180);
|
var s2 := new Student('Petya Pomidorov',180);
|
||||||
Writeln('s1: ',s1);
|
Writeln('s1: ',s1);
|
||||||
Writeln('s2: ',s2);
|
Writeln('s2: ',s2);
|
||||||
Writeln;
|
Writeln;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue