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