This commit is contained in:
RedGuy 2024-03-10 20:32:51 +03:00
parent 82de4615a5
commit 128600a1b3
636 changed files with 53276 additions and 0 deletions

View File

@ -0,0 +1,11 @@
// Пример иллюстрирует использование знака "&" для снятия атрибута ключевого слова
var
&begin,&end: integer;
begin
&begin := 1;
&end := 2;
var t: System.Type := &begin.GetType; // в System.Type использовать & не надо
write(&begin,' ',&end,' ',t);
end.

View File

@ -0,0 +1,29 @@
// Пример иллюстрирует использование знака "&" для явного указания шаблонного типа подпрограммы
function GetDefault<T>: T :=
default(T);
type
GenericType<T> = class
constructor := exit;
static procedure p1 := writeln(typeof(T));
end;
begin
// var o := GetDefault<byte>; //Ошибка: Встречено ';', а ожидалось выражение
// компилятор не отличает знак сравнения < от открытия угловой скобки
// и поэтому видит эту строчку как "(GetDefault < byte) > ;"
// ";" там оказывается неожиданно, потому что компилятор ожидал ещё какое то выражение для сравнения
// но, знаком "&" можно экранировать "<"
// то есть переключить значение "<" со знака сравнения на открывающуюся скобочку:
var o := GetDefault&<byte>;
// в случае с шаблонными типами - обычно "&" не нужен
var a := new GenericType<word>;
// однако для вызова статичного метода - его так же надо поставить
GenericType&<real>.p1;
end.

View File

@ -0,0 +1,18 @@
// Присваивания += -= *= /=
var
i: integer;
r: real;
begin
i := 1;
writeln('i := 1; i = ',i);
i += 2; // Увеличение на 2
writeln('i += 2; i = ',i);
i *= 3; // Умножение на 3
writeln('i *= 3; i = ',i);
writeln;
r := 6;
writeln('r := 6; r = ',r);
r /= 2;
writeln('r /= 2; r = ',r);
end.

View File

@ -0,0 +1,10 @@
// Автоопределение типа переменной
// Описание переменной в заголовке цикла for
begin
var x := 2;
for var i:=1 to 10 do
begin
write(x,' ');
x += 2;
end;
end.

View File

@ -0,0 +1,11 @@
// Перемена местами значений двух переменных с использованием третьей
var x,y: real;
begin
write('Введите x,y: ');
readln(x,y);
var v: real := x; // вспомогательная переменная
x := y;
y := v;
writeln('Новые значения x,y: ',x,' ',y);
end.

View File

@ -0,0 +1,24 @@
// Пример иллюстрирует возможности оператора foreach
var
a: array [1..5] of integer := (1,3,5,7,9);
s: set of integer;
l: List<integer>;
begin
write('foreach по обычному массиву: ':35);
foreach x: integer in a do
Print(x);
writeln;
s := [2..5,10..14];
write('foreach по множеству: ':35);
foreach var x in s do
Print(x);
writeln;
l := new List<integer>;
l.Add(7); l.Add(2); l.Add(5);
write('foreach по динамическому массиву: ':35);
foreach var x in l do
Print(x);
end.

View File

@ -0,0 +1,4 @@
/// Вывод с помощью Print
begin
Print(1,2,3)
end.

View File

@ -0,0 +1,5 @@
// Генерация случайного числа в заданном диапазоне
begin
var i := Random(2,5);
writeln('Случайное целое в диапазоне 2..5: ',i);
end.

View File

@ -0,0 +1,5 @@
// При работе с вещественными числами невозможно получить ошибку выполнения
begin
writeln(1/0);
writeln(sqrt(-1));
end.

View File

@ -0,0 +1,27 @@
// Простейшие новые возможности языка PascalABC.NET
// Инициализация переменной при описании
var i: integer := 1;
// Автоопределение типа переменной при инициализации
var r := 2.5;
begin
// Внутриблочные описания переменных
var s: real := 1.0;
// Описание переменной в заголовке цикла (время жизни переменной - до конца тела цикла)
for j: integer := 1 to 10 do
s += j; // Операция += для чисел
var p := 1;
// Описание переменной в заголовке цикла с автоопределением типа
for var j := 1 to 10 do
p *= j; // Операция *=
var str := '';
for c: char := 'a' to 'z' do
str += c; // Операция += для строк
end.

View File

@ -0,0 +1,33 @@
/// Стандартные размерные типы данных и их размер
var
i: integer;
j: shortint;
k: smallint;
l: longint; // синоним integer
i64: int64;
b: byte;
w: word;
lw: longword;
car: cardinal; // синоним longword
ui64: uint64;
r: real;
d: double; // синоним real
sn: single;
c: char;
begin
writeln('sizeof(integer) = ':20, sizeof(integer));
writeln('sizeof(shortint) = ':20,sizeof(shortint));
writeln('sizeof(smallint) = ':20,sizeof(smallint));
writeln('sizeof(longint) = ':20, sizeof(longint));
writeln('sizeof(int64) = ':20, sizeof(int64));
writeln('sizeof(byte) = ':20, sizeof(byte));
writeln('sizeof(word) = ':20, sizeof(word));
writeln('sizeof(longword) = ':20,sizeof(longword));
writeln('sizeof(cardinal) = ':20,sizeof(cardinal));
writeln('sizeof(uint64) = ':20, sizeof(uint64));
writeln('sizeof(real) = ':20, sizeof(real));
writeln('sizeof(double) = ':20, sizeof(double));
writeln('sizeof(single) = ':20, sizeof(single));
writeln('sizeof(char) = ':20, sizeof(char));
end.

View File

@ -0,0 +1,16 @@
/// Вывод различных типов процедурой write
begin
// Вывод, целого, строки, вещественного
Writeln(1,' ',2.5);
// Вывод множества
Writeln([1..10]);
// Вывод логического
Writeln(True);
var a: array [1..10] of integer;
// Вывод статического массива
Writeln(a);
// Вывод динамического массива
Writeln(Arr(2,3,5));
// Вывод кортежа
Writeln(('Иванов',16));
end.

View File

@ -0,0 +1,11 @@
/// Использование процедуры WritelnFormat
begin
// Вывод в обратном порядке
WritelnFormat('{2},{1},{0}',1,2,3);
// Вывод фигурных скобочек
WritelnFormat('{{}}{0}','Вывод фигурных скобочек в форматной строке');
// Задание ширины поля вывода
WritelnFormat('{0,10:f}',3.1415);
// Задание количества знаков после запятой для вещественного числа
WritelnFormat('{0:f3}',3.1415);
end.

View File

@ -0,0 +1,19 @@
// Стандартные функции Ord, Chr, OrdAnsi, ChrAnsi
var
c: char;
i: integer;
begin
writeln('sizeof(char) = ',sizeof(char));
writeln;
c := 'Ж';
i := Ord(c);
writelnFormat('Код символа {0} в кодировке Unicode равен {1}',c,i);
c := Chr(i);
writelnFormat('Символ с кодом {0} в кодировке Unicode - это {1}',i,c);
writeln;
i := OrdAnsi(c);
writelnFormat('Код символа {0} в кодировке Windows равен {1}',c,i);
c := ChrAnsi(i);
writelnFormat('Символ с кодом {0} в кодировке Windows - это {1}',i,c);
end.

View File

@ -0,0 +1,24 @@
// Процедуры и методы работы с динамическим массивом
begin
var a := ArrRandom(10);
// Вывод всех элементов массива
a.Println;
// Сортировка массива
a.Sort;
a.Println;
// Обращение массива
a.Reverse;
a.Println;
// Изменение размерамассиав с сохранением элементов. То же делает SetLength
a.Resize(a.Length+2);
a.Println;
// Поиск вхождения элемента в массив
var i := a.IndexOf(50);
Writeln(i);
end.

View File

@ -0,0 +1,25 @@
// Перечислимый тип
type Months = (January,February,March,April,May,June,July,August,September,October,November,December);
var m: Months;
begin
m := February;
writeln(m);
// Использование констант перечислимого типа после имени типа удобно: после точки intellisense показывает список констант
m := Months.April;
writeln('Следующий месяц: ',m);
Inc(m);
writeln('Следующий месяц: ',m);
m := Succ(m);
writeln('Следующий месяц: ',m);
m := Pred(m);
writeln('Предыдующий месяц: ',m);
Dec(m);
writeln('Предыдующий месяц: ',m);
writeln('Его порядковый номер (нумерация - с нуля): ',Ord(m));
// Ошибки нет
writeln('Месяц перед январем - выход за границы: ',pred(Months.January));
// Ошибки нет
writeln('Месяц после декабря - выход за границы: ',succ(Months.December));
end.

View File

@ -0,0 +1,15 @@
// Инициализаторы полей записи
type
Frac = record
num: integer := 0;
denom := 1; // автоопределеине типа - denom: integer
end;
var
f: Frac;
f1: Frac := (num: 2; denom: 3);
begin
writeln(f.num,'/',f.denom);
writeln(f1.num,'/',f1.denom);
end.

View File

@ -0,0 +1,10 @@
// Указатели на ссылочные типы запрещены. Исключение: указатели на строки и динамические массивы
type
A = class
i: integer;
end;
var p: ^record field: A; end;
begin
end.

View File

@ -0,0 +1,43 @@
// Выделение динамической памяти
// Использование указателей для создания односвязного списка
type
PNode = ^TNode;
TNode = record
data: integer;
next: PNode;
end;
function NewNode(d: integer; n: PNode): PNode;
begin
New(Result);
Result^.data := d;
Result^.next := n;
end;
var first: PNode;
begin
first := nil;
// Добавляем в начало односвязного списка
first := NewNode(3,first);
first := NewNode(7,first);
first := NewNode(5,first);
// Вывод односвязного списка
writeln('Содержимое односвязного списка: ');
var p := first;
while p<>nil do
begin
write(p^.data,' ');
p := p^.next;
end;
// Разрушение односвязного списка
p := first;
while p<>nil do
begin
var p1 := p;
p := p^.next;
Dispose(p1); // Память обязательно возвращать
end;
end.

View File

@ -0,0 +1,35 @@
// Использование ссылок вместо указателей для создания односвязного списка
// Мы рекомендуем именно этот способ
type
Node = class
data: integer;
next: Node;
constructor (d: integer; n: Node);
begin
data := d;
next := n;
end;
end;
// Переменная типа "класс" представляет собой ссылку на объект, выделяемый конструктором
var first: Node;
begin
first := nil;
// Добавляем в начало односвязного списка
first := new Node(3,first);
first := new Node(7,first);
first := new Node(5,first);
// Вывод односвязного списка. ^ отсутствуют
writeln('Содержимое односвязного списка (использование ссылок вместо указателей): ');
var p := first;
while p<>nil do
begin
write(p.data,' ');
p := p.next;
end;
// Разрушение односвязного списка
first := nil; // Сборщик мусора соберет память, на которую никто больше не указывает
end.

View File

@ -0,0 +1,15 @@
// Работа с множествами
// Базовый тип для множества может быть произвольным
var
s1: set of string := ['Иванов','Попов','Сидорова','Петров'];
s2: set of string := ['Козлов','Петров','Иванов'];
begin
writeln('Множество s1: ',s1);
writeln('Множество s2: ',s2);
writeln('Объединение множеств s1 и s2: ',s1+s2);
writeln('Пересечение множеств s1 и s2: ',s1*s2);
writeln('Разность множеств s1 и s2: ',s1-s2);
Include(s1,'Умнов');
Exclude(s1,'Иванов');
writeln('Множество s1: ',s1);
end.

View File

@ -0,0 +1,16 @@
// Преобразование целое <-> строка в новом стиле
var
s: string;
i: integer;
begin
// Преобразование целого в строку
i := 234;
s := i.ToString;
writelnFormat('Целое: {0}. После преобразования к строке: ''{1}''',i,s);
// Преобразование строки в целое
s := '567';
if integer.TryParse(s,i) then
writelnFormat('Строка: ''{0}''. После преобразования к целому: {1}',s,i);
end.

View File

@ -0,0 +1,18 @@
// Строки. Методы класса string
var
s: string := ' Pascal__NET ';
s1: string := 'NET';
begin
writeln('Исходная строка: ''',s,'''');
s := s.Trim;
writeln('После вызова s.Trim: ''',s,'''');
var p := s.IndexOf(s1); // Индексация - с нуля
writelnFormat('Позиция подстроки ''{0}'' в строке ''{1}'' равна {2}',s1,s,p);
s := s.Remove(6,2);
writeln('После удаления символов __: ',s);
s := s.Insert(6,'ABC.');
writeln('После вставки подстроки ''ABC.'': ',s);
writeln('Первая часть строки: ',s.Substring(0,9));
writeln('Последняя часть строки: ',s.Substring(10,3));
end.

View File

@ -0,0 +1,17 @@
// Строки string, string[n], shortstring
var
s: string; // память, занимаемая s, зависит от ее длины
s10: string[10]; // память под ss фиксирована
ss: shortstring := s;
f: file of string[10];
// f: file of string; - ошибка
begin
s := '12345678901234567890';
s10 := s; // обрезание
writeln(s10);
s += s; s += s;
s += s; s += s;
writeln(s);
writeln('Длина строки = ',s.Length);
end.

View File

@ -0,0 +1,23 @@
// Иллюстрация структурной эквивалентности для некоторых типов. В Delphi - именная эквивалентность
var
a: array of integer;
a1: array of integer;
s: set of real;
s1: set of real;
p: procedure (i: integer);
p1: procedure (i: integer);
r: ^integer;
r1: ^integer;
procedure proc(aa: array of integer; ss: set of real; pp: procedure (i: integer); rr: ^integer);
begin
end;
begin
a := a1;
s := s1;
p := p1;
r := r1; // В Delphi ни одно из этих присваиваний не сработает
proc(a,s,p,r); // Этот вызов - тоже
end.

View File

@ -0,0 +1,19 @@
// Бестиповые файлы
var
f: file;
i: integer;
r: real;
s: string;
begin
assign(f,'a.dat');
rewrite(f);
// Записываем в файл данные любых типов
write(f,1,2.5,'Hello');
close(f);
reset(f);
// Считываем эти данные из файла
read(f,i,r,s);
write(i,' ',r,' ',s);
close(f);
end.

View File

@ -0,0 +1,12 @@
// Переменное число параметров
function Sum(params arg: array of integer): integer;
begin
Result := 0;
foreach var x in arg do
Result += x;
end;
begin
writeln(Sum(1,2,3));
writeln(Sum(4,5,6,7));
end.

View File

@ -0,0 +1,21 @@
// Перегрузка имен подпрограмм
procedure proc(i: integer);
begin
writeln('integer');
end;
procedure proc(c: char);
begin
writeln('char');
end;
procedure proc(r: real);
begin
writeln('real');
end;
begin
proc(1);
proc(2.5);
proc('d');
end.

View File

@ -0,0 +1,39 @@
// Все возможные способы инициализации поцедурной переменной
// Процедурный тип реализован через делегаты .NET, для него доступны операции +=, -=
procedure pp;
begin
writeln('Вызов обычной процедуры');
end;
type
A = class
private
x: integer;
public
constructor Create(xx: integer);
begin
x := xx;
end;
procedure pp;
begin
writeln('Вызов метода класса, значение поля равно ',x);
end;
class procedure ppstatic;
begin
writeln('Вызов классового метода класса');
end;
end;
var p: procedure;
begin
p := pp;
var a1: A := new A(5);
p += a1.pp;
p += A.ppstatic;
p;
writeln;
p -= pp;
p;
end.

View File

@ -0,0 +1,23 @@
// Обобщенные функции
// Выведение типа T по типам параметров
procedure Swap<T>(var a,b: T);
begin
var v := a;
a := b;
b := v;
end;
begin
var a := 2;
var b := 3;
writelnFormat('До Swap a={0}, b={1}',a,b);
Swap(a,b);
writelnFormat('После Swap a={0}, b={1}',a,b);
var c := 2.5;
var d := 3.3;
writeln;
writelnFormat('До Swap c={0}, d={1}',c,d);
Swap(c,d);
writelnFormat('После Swap c={0}, d={1}',c,d);
end.

View File

@ -0,0 +1,9 @@
// Вызов статического метода add класса Class1, помещенного в пространство имен ClassLibrary1
// Класс Class1 помещен в библиотеку ClassLibrary1.dll, откомпилированную на C#
{$reference ClassLibrary1.dll}
uses ClassLibrary1;
begin
writeln(Class1.add(2,3));
end.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,16 @@
// Dll-библиотека
library MyDll;
const n = 10;
function add(a,b: integer): integer;
begin
Result := a + b;
end;
procedure PrintPascalABCNET;
begin
writeln('PascalABC.NET');
end;
end.

View File

@ -0,0 +1,10 @@
// Это - главная программа
// Именами из dll-библиотеки, написанной на PascalABC.NET, можно пользоваться,
// не подключая пространства имен
{$reference mydll.dll}
begin
PrintPascalABCNET;
writeln(n);
writeln(add(2,3));
end.

View File

@ -0,0 +1,7 @@
{$platformtarget x86}
// Вызов функции из обычной dll
function add(a,b: integer): integer; external 'NativeDll.dll' name 'add'; // объявление внешней функции
begin // основная программа
writeln(add(2,3));
end.

Binary file not shown.

View File

@ -0,0 +1,13 @@
// Îòêîìïèëèðîâàòü â Delphi
library NativeDll;
function add(a,b: integer): integer; stdcall;
begin
Result := a+b;
end;
exports
add;
begin
end.

View File

@ -0,0 +1,7 @@
uses MyUnit; // подключили модуль
var a: array of integer := (1,5,3,7,3,6,4,5,1,8,3,5,6);
begin
writeln('Максимальный элемент в массиве = ',Max(a));
end.

View File

@ -0,0 +1,14 @@
/// Модуль упрощенной структуры
unit MyUnit; // имя модуля должно совпадать с именем файла
// Документирующие комментарии отображаются при наведении на имя курсора мыши
/// Возвращает максимальный элемент в массиве
function Max(a: array of integer): integer;
begin
Result := integer.MinValue;
foreach x: integer in a do
if x>Result then
Result := x;
end;
end.

View File

@ -0,0 +1,12 @@
// Иллюстрация поиска имен вначале справа налево в секции uses, а затем в системном модуле PABCSystem
uses System;
begin
// Имя Random, определенное в пространстве имен System, перекрывает имя Random
// в модуле PABCSystem, который неявно подключается первым
var r: Random := new Random();
writeln(r.Next(10));
// Именно поэтому перед данным Random необходимо явно указывать имя модуля, в котором он находится
var i: integer := PABCSystem.Random(10);
writeln(i);
end.

View File

@ -0,0 +1,41 @@
// Модуль ABCObjects. Изменение свойств объекта
uses ABCObjects,GraphABC;
const delay = 300;
procedure Pause;
begin
Sleep(delay);
end;
var
r: RectangleABC;
z: StarABC;
begin
z := new StarABC(Window.Center.X,Window.Center.Y,70,30,6,Color.Green);
r := new RectangleABC(100,100,200,100,Color.Gold);
Pause;
r.Center := Window.Center;
Pause;
r.Height := 70;
Pause;
r.Width := 220;
Pause;
z.Radius := 150;
Pause;
z.Color := Color.LightCoral;
Pause;
z.Count := 5;
Pause;
r.Text := 'PascalABC.NET';
r.Color := Color.Gainsboro;
Pause;
r.BorderWidth := 3;
r.BorderColor := Color.Blue;
Pause;
r.Center := Window.Center;
Pause;
// r.Bordered := False;
end.

View File

@ -0,0 +1,19 @@
// Иллюстрация простейших возможностей GraphABC
uses GraphABC;
begin
Coordinate.Origin := Window.Center;
Coordinate.SetMathematic;
Brush.Color := Color.LightSkyBlue;
while True do
begin
LockDrawing;
ClearWindow;
Ellipse(-120,-70,120,70);
Line(0,0,200,0);
Line(0,0,0,200);
Redraw;
Coordinate.Angle := Coordinate.Angle + 1;
Sleep(100);
end;
end.

View File

@ -0,0 +1,19 @@
// Иллюстрация обработки событий мыши
uses GraphABC;
procedure MouseDown(x,y,mb: integer);
begin
MoveTo(x,y);
end;
procedure MouseMove(x,y,mb: integer);
begin
if mb=1 then LineTo(x,y);
end;
begin
// Привязка обработчиков к событиям
OnMouseDown := MouseDown;
OnMouseMove := MouseMove
end.

View File

@ -0,0 +1,14 @@
// Все типы кроме указателей - производные от Object
var
i: integer;
r: real;
o: object;
begin
o := i;
writeln(o.GetType);
o := r;
writeln(o.GetType);
if o.GetType=typeof(real) then
writeln('В переменной o - вещественный тип');
end.

View File

@ -0,0 +1,22 @@
// Упаковка-распаковка размерных типов
var
i: integer := 2;
r: real := 3.14;
o: object;
begin
o := i; // Упаковка: объект размерного типа integer упаковывается в объект ссылочного типа,
// котрый и присваивается переменной o
// Преобразование типов при упаковке - неявное
writeln(integer(o)); // Распаковка: из упакованного объекта извлекается значение
// Преобразование типов при распаковке - явное
o := r;
writeln(real(o));
try // При неверном преобразовании типов генерируется исключение InvalidCastException
writeln(shortint(o));
except
on e: Exception do
writeln(e.GetType);
end;
end.

View File

@ -0,0 +1,36 @@
// Пример использования классового (статического) конструктора
type
Person = class
private
class arr: array of Person; // Классовое поле. Связано не с переменной класса, а с классом.
name: string;
age: integer;
public
class constructor; // Конструктор класса. Вызывается до создания первого объекта класса и до вызова любого классового метода
begin
writeln(' Вызван классовый конструктор');
SetLength(arr,3);
arr[0] := new Person('Иванов',20);
arr[1] := new Person('Петрова',19);
arr[2] := new Person('Попов',35);
end;
constructor (n: string; a: integer);
begin
name := n;
age := a;
end;
function ToString: string; override;
begin
Result := Format('Имя: {0} Возраст: {1}',name,age);
end;
class function RandomPerson: Person; // Классовый метод. Может обращаться только к классовым полям
begin
Result := arr[Random(3)];
end;
end;
begin
writeln('Случайные персоны');
for var i:=1 to 5 do
writeln(Person.RandomPerson); // Вызов классового метода
end.

View File

@ -0,0 +1,11 @@
// Сборка мусора: для освобождения объекта присвойте переменной nil
var l := new List<integer>;
begin
l.Add(3);
l.Add(5);
l.Add(2);
foreach var x in l do
Print(x);
l := nil; // после этого память, занимаемая динамическим массивом, будет собрана сборщиком мусора
end.

View File

@ -0,0 +1,42 @@
// Иллюстрация использования интерфейсов
type
IShape = interface
procedure Draw;
property X: integer read;
property Y: integer read;
end;
ICloneable = interface
function Clone: Object;
end;
Point = class(IShape,ICloneable)
private
xx,yy: integer;
public
constructor Create(x,y: integer);
begin
xx := x; yy := y;
end;
procedure Draw; begin end;
property X: integer read xx;
property Y: integer read yy;
function Clone: Object;
begin
Result := new Point(xx,yy);
end;
end;
var
p: Point := new Point(2,3);
ish: IShape := p;
icl: ICloneable := p;
begin
Println(ish.X,ish.Y);
var p1: Point := Point(icl.Clone);
p := nil;
Println(p1.X,p1.Y);
Println(ish is Point);
Println(ish is ICloneable); // Cross cast!
end.

View File

@ -0,0 +1,82 @@
// Перегрузка операций
type
Frac = record
private
num,denom: integer;
public
constructor (n,d: integer);
begin
num := n;
denom := d;
end;
class function operator+(a,b: Frac): Frac;
begin
Result := new Frac(a.num*b.denom+b.num*a.denom,a.denom*b.denom);
end;
class function operator-(a,b: Frac): Frac;
begin
Result := new Frac(a.num*b.denom-b.num*a.denom,a.denom*b.denom);
end;
class function operator*(a,b: Frac): Frac;
begin
Result := new Frac(a.num*b.num,a.denom*b.denom);
end;
class function operator/(a,b: Frac): Frac;
begin
Result := new Frac(a.num*b.denom,a.denom*b.num);
end;
class function operator=(a,b: Frac): boolean;
begin
Result := (a.num = b.num) and (a.denom = b.denom);
end;
class function operator<>(a,b: Frac): boolean;
begin
Result := not (a=b);
end;
class function operator<(a,b: Frac): boolean;
begin
Result := a.num/real(a.denom)<b.num/real(b.denom);
end;
class function operator<=(a,b: Frac): boolean;
begin
Result := a.num/real(a.denom)<=b.num/real(b.denom);
end;
class function operator>(a,b: Frac): boolean;
begin
Result := a.num/real(a.denom)>b.num/real(b.denom);
end;
class function operator>=(a,b: Frac): boolean;
begin
Result := a.num/real(a.denom)>=b.num/real(b.denom);
end;
class procedure operator+=(var a: Frac; b: Frac);
begin
a := a + b;
end;
class function operator-(a: Frac): Frac;
begin
Result := new Frac(-a.num,a.denom);
end;
class function operator+(a: Frac): Frac;
begin
Result := a;
end;
function ToString: string; override;
begin
Result := Format('{0}/{1}',num,denom);
end;
end;
var
f := new Frac(1,2);
f1 := new Frac(3,5);
begin
writelnFormat('{0} + {1} = {2}',f,f1,f+f1);
writelnFormat('{0} - {1} = {2}',f,f1,f-f1);
writelnFormat('{0} * {1} = {2}',f,f1,f*f1);
writelnFormat('{0} / {1} = {2}',f,f1,f/f1);
writeln(f1=f);
f += f1;
writeln(-f);
end.

View File

@ -0,0 +1,30 @@
// Описание методов внутри интерфейса класса
// Удобство: методы можно реализовывать сразу после объявления
// Неудобство: для больших классов интерфейс трудно читается
type
Person = class
private
// Поля класса, как правило, приватны. Доступ к ним - через методы и свойства
name: string;
age: integer;
public
// Конструктор неявно имеет имя Create
constructor (n: string; a: integer);
begin
name := n; age := a;
end;
procedure Print;
begin
writeln('Имя: ',name,' Возраст: ',age);
end;
end;
var p,p1: Person;
begin
p := new Person('Иванов',20); // Новый синтаксис вызова конструктора (рекомендуется)
p.Print;
p1 := Person.Create('Попов',19); // Старый синтаксис вызова конструктора (не рекомендуется)
p1.Print;
// Деструкторы отсутствуют, вместо них - автоматическая сборка мусора
end.

View File

@ -0,0 +1,26 @@
// Иллюстрация конструкторов и методов в записях
// Если переопределен метод ToString, то он вызывается при выводе объекта этого типа процедурой writeln
type
SexType = (Male, Female);
Person = record
Name: string;
Age, Weight: integer;
Sex: SexType;
constructor (Name: string; Age, Weight: integer; Sex: SexType);
begin
Self.Name := Name;
Self.Age := Age;
Self.Sex := Sex;
Self.Weight := Weight;
end;
function ToString: string; override;
begin
Result := Format('Имя: {0} Пол: {1} Возраст: {2} Вес: {3}', Name, Sex, Age, Weight);
end;
end;
var p: Person := new Person('Иванов',20,70,SexType.Male);
begin
writeln(p);
end.

View File

@ -0,0 +1,56 @@
// Демонстрация создания простого класса стека на базе массива
type
Stack<T> = class
private
a: array of T;
last: integer;
public
constructor Create(sz: integer);
begin
SetLength(a,sz);
last := 0;
end;
constructor Create;
begin
Create(100);
end;
procedure push(i: T);
begin
a[last] := i;
Inc(last);
end;
function pop: T;
begin
Dec(last);
pop := a[last];
end;
function top: T;
begin
top := a[last-1];
end;
function empty: boolean;
begin
Result := (last=0);
end;
function ToString: string; override;
begin
Result := '';
for var i:=0 to last-1 do
Result += a[i]+' ';
end;
end;
var s: Stack<integer>;
begin
s := new Stack<integer>;
s.push(7);
s.push(2);
s.push(5);
s.push(4);
writeln(s);
while not s.empty do
write(s.pop,' ');
end.

View File

@ -0,0 +1,21 @@
// Секция Where - ограничение на типы параметров
uses System,System.Collections.Generic;
type
MyClass<T,T1> = class
where T: System.Array,ICloneable;
where T1: constructor;
procedure p(obj1: T; var obj2: T1);
begin
obj1.Clone();
obj2 := new T1;
end;
end;
IntArr = array of integer;
var
m: MyClass<IntArr,integer>;
//m1: MyClass<integer>; // ошибка
begin
end.

View File

@ -0,0 +1,26 @@
// Иллюстрация конструкторов и методов в записях
// Если переопределен метод ToString, то он вызывается при выводе объекта этого типа процедурой writeln
type
SexType = (Male, Female);
Person = record
Name: string;
Age, Weight: integer;
Sex: SexType;
constructor (Name: string; Age, Weight: integer; Sex: SexType);
begin
Self.Name := Name;
Self.Age := Age;
Self.Sex := Sex;
Self.Weight := Weight;
end;
function ToString: string; override;
begin
Result := string.Format('Имя: {0} Возраст: {1} Вес: {2} Пол: {3}', Name, Age, Weight, Sex);
end;
end;
var p: Person := new Person('Иванов',20,70,SexType.Male);
begin
writeln(p);
end.

View File

@ -0,0 +1,31 @@
Uses System;
var d1, d2, d3: DateTime; // Объекты для хранения даты и времени
ts: TimeSpan; // Объект для хранения промежутков времени
begin
// Получение текущей даты - вызов статического метода
d1 := DateTime.Now;
Writeln(d1);
// Дата и время через один месяц
d2 := d1.AddMonths(1);
Writeln(d2);
// Дата и время на 12 часов раньше
d2 := d1.AddHours(-12);
Writeln(d2);
// Формирование даты - вызов конструктора объекта (год, месяц,число)
d3 := new DateTime(2001, 1, 1);
Writeln(d3);
// Определение времени, прошедшего с начала тысячелетия (разность дат)
ts := d1.Subtract(d3);
// Промежуток времени в днях (результат - вещественное число)
Writeln(ts.TotalDays);
// Промежуток времени в днях, часах, минутах и секундах
Writeln(ts.Days, ' ', ts.Hours, ':', ts.Minutes, ':', ts.Seconds);
end.

View File

@ -0,0 +1,17 @@
// Иллюстрация использования компонента WebBrowser
{$apptype windows}
{$reference System.Windows.Forms.dll}
uses
System.Windows.Forms,
System.Net;
begin
var myForm := new Form;
var w := new WebBrowser;
w.Url := new System.Uri('http://pascalabc.net');
w.Dock := Dockstyle.Fill;
myForm.Controls.Add(w);
myForm.WindowState := FormWindowState.Maximized;
Application.Run(myForm);
end.

View File

@ -0,0 +1,27 @@
// Использование LinkedList - двусвязного списка стандартной библиотеки - и его итератора
uses System.Collections,System.Collections.Generic;
procedure print(l: ICollection);
begin
foreach x: integer in l do
write(x,' ');
writeln;
end;
var l: LinkedList<integer> := new LinkedList<integer>;
begin
l.AddLast(3);
l.AddLast(5);
l.AddLast(7);
l.AddFirst(2);
print(l);
var a := new integer[10];
l.CopyTo(a,0);
print(a);
var lit: LinkedListNode<integer> := l.Find(5);
l.AddBefore(lit,777);
print(l);
end.

View File

@ -0,0 +1,11 @@
// Отражение типов. Выводятся все члены типа DateTime
uses System,System.Reflection;
begin
var bf := BindingFlags.Public or BindingFlags.NonPublic or BindingFlags.Instance or BindingFlags.Static;
var t: &Type := typeof(DateTime);
var mi := t.GetMembers(bf);
foreach m: MemberInfo in mi do
writeln(m);
end.

View File

@ -0,0 +1,29 @@
// Создание оконного приложения
{$apptype windows}
{$reference System.Windows.Forms.dll}
uses
System,
System.Windows.Forms;
var
myForm: Form;
myButton: Button;
procedure MyButtonClick(sender: Object; e: EventArgs);
begin
myForm.Close;
end;
begin
myForm := new Form;
myForm.Text := 'Оконное приложение';
myButton := new Button;
myButton.Text := ' Закрыть окно ';
myButton.AutoSize := True;
myButton.Left := 90;
myButton.Top := 110;
myForm.Controls.Add(myButton);
myButton.Click += MyButtonClick;
Application.Run(myForm);
end.

5
!NewExecutors/p1.pas Normal file
View File

@ -0,0 +1,5 @@
uses Исполнители;
begin
МирИсполнителей.Вывести
end.

15
!NewExecutors/p4.pas Normal file
View File

@ -0,0 +1,15 @@
uses Исполнители;
begin
var посл := СлучайнаяПоследовательность(10);
посл.Вывести;
посл.Количество(значение -> значение>4).Вывести;
var количество := 0;
foreach var значение in посл do
if значение>4 then
количество += 1;
количество.Вывести
end.

View File

@ -0,0 +1,106 @@
unit ГрафическиеИсполнители;
uses FormsABC;
type
WebBrowser2 = class(WebBrowser)
public
procedure Отобразить(адрес: string) := Navigate(адрес);
function ОтобразитьСайт(адрес: string): () -> () :=
() -> Self.Отобразить(адрес);
end;
Button2 = class(Button)
private
procedure ppp(sender: Object; e: System.EventArgs);
public
event ПриНажатии: procedure;
constructor Create(text: string);
begin
inherited Create(text);
b.Click += ppp;
end;
property Текст: string read GetText write SetText;
end;
ListBox2 = class(ListBox)
private
procedure ppp(sender: Object; e: System.EventArgs);
function GetHeight := lb.Height;
procedure SetHeight(h: integer) := lb.Height := h;
public
event ПриНажатии: procedure;
constructor Create;
begin
inherited Create;
lb.Click += ppp;
{lb.AutoSize := False;
lb.Width := 160;}
lb.Width := 190;
end;
procedure Добавить(name: string) := Items.Add(name);
procedure Очистить := Items.Clear;
procedure ДобавитьМного(m: sequence of string);
begin
foreach var x in m do
Items.Add(x);
end;
function ТекущаяСтрока := Items[Selectedindex] as string;
property Высота: integer read GetHeight write SetHeight;
end;
TextLabel2 = class(TextLabel)
public
property Текст: string read GetT write SetT;
end;
procedure Button2.ppp(sender: Object; e: System.EventArgs);
begin
if ПриНажатии<>nil then
ПриНажатии
end;
procedure ListBox2.ppp(sender: Object; e: System.EventArgs);
begin
if ПриНажатии<>nil then
ПриНажатии
end;
procedure Init();
begin
MainForm.SetSize(1024,768);
end;
function СоздатьКнопку(Заголовок: string): Button2;
begin
ParentControl := MainPanel;
Result := new Button2(Заголовок);
end;
function СоздатьСписок: ListBox2;
begin
ParentControl := MainPanel;
Result := new ListBox2;
end;
function СоздатьТекст(txt: string := ''): TextLabel2;
begin
ParentControl := MainPanel;
Result := new TextLabel2(txt);
end;
function СоздатьБраузер: WebBrowser2;
begin
MainPanel.Dock := Dockstyle.Left;
MainPanel.Width := 200;
ParentControl := MainForm;
Result := new WebBrowser2;
Result.Dock := DockStyle.Fill;
end;
procedure НоваяСтрока := LineBreak;
begin
Init();
end.

View File

@ -0,0 +1,661 @@
///- Ìîäóëü Èñïîëíèòåëè
/// Îïèñûâàåò ðÿä Èñïîëíèòåëåé, êîòîðûå ìîãóò âûïîëíÿòü êîìàíäû
unit Èñïîëíèòåëè;
type
///!#
öåëîå = integer;
âåùåñòâåííîå = real;
ëîãè÷åñêîå = boolean;
ñòðîêîâîå = string;
///- Ïðîöåäóðà Âûâåñòè(çíà÷åíèÿ)
/// Âûâîäèò ñïèñîê çíà÷åíèé
procedure Âûâåñòè(params args: array of object) := Println(args);
/// Âûâîäèò ïóñòóþ ñòðîêó
procedure ÂûâåñòèÏóñòóþÑòðîêó := Println;
///- Ìåòîä Öåëîå.Âûâåñòè
/// Âûâîäèò öåëîå
procedure Âûâåñòè(Self: öåëîå); extensionmethod := Println(Self);
///- Ìåòîä Âåùåñòâåííîå.Âûâåñòè
/// Âûâîäèò âåùåñòâåííîå
procedure Âûâåñòè(Self: real); extensionmethod := Println(Self);
///- Ìåòîä Ñòðîêà.Âûâåñòè
/// Âûâîäèò ñòðîêó
procedure Âûâåñòè(Self: string); extensionmethod := Println(Self);
type
///!#
Seq<T> = interface(IEnumerable<T>)
end;
///!#
ÂûâîäÊëàññ = class
public
///- Ìåòîä Âûâîä.Äàííûå(ïàðàìåòðû)
/// Âûâîäèò äàííûå, ðàçäåëÿÿ èõ ïðîáåëàìè
procedure Äàííûå(params args: array of object) := Println(args);
///- Ìåòîä Âûâîä.ÏóñòàÿÑòðîêà
/// Âûâîäèò ïóñòóþ ñòðîêó
procedure ÏóñòàÿÑòðîêà := Println;
end;
ÏîñëåäîâàòåëüíîñòüÊëàññ = class
end;
// Ñåðâèñíûå ìåòîäû
function DeleteEnd(Self: string; s: string): string; extensionmethod;
begin
if Self.EndsWith(s) then
begin
var i := Self.LastIndexOf(s);
if (i>=0) and (i<Self.Length) then
Result := Self.Remove(i)
else Result := Self;
end
else Result := Self;
end;
Procedure PrintAllMethods(o: Object);
begin
WritelnFormat('Ìåòîäû èñïîëíèòåëÿ {0}:',o.GetType.Name.DeleteEnd('Êëàññ'));
o.GetType.GetMethods(System.Reflection.BindingFlags.Public or
System.Reflection.BindingFlags.Instance or
System.Reflection.BindingFlags.DeclaredOnly)
.Select(s->s.ToString.Replace('Void ','')
.Replace('Int32','öåëîå')
.Replace('Boolean','ëîãè÷åñêîå')
.Replace('System.String','ñòðîêîâîå')
.Replace('Double','âåùåñòâåííîå'))
.Select(s->' '+s.DeleteEnd('()'))
.Where(s->not s.ToString.Contains('$Init$'))
.Println(NewLine);
end;
// Ðåàëèçàöèÿ
type
///!#
ÌíîæåñòâîÊëàññ = class
private
s := new SortedSet<integer>;
public
constructor;
begin end;
///- Ìåòîä Ìíîæåñòâî.Äîáàâèòü(ýëåìåíò: öåëîå)
/// Äîáàâëÿåò ýëåìåíò ê ìíîæåñòâó. Åñëè òàêîé ýëåìåíò åñòü, òî íè÷åãî íå ïðîèñõîäèò
procedure Äîáàâèòü(params a: array of integer);
begin
a.ForEach(x->begin s.Add(x) end);
//s.Add(ýëåìåíò);
end;
///- Ìåòîä Ìíîæåñòâî.Óäàëèòü(ýëåìåíò: öåëîå)
/// Óäàëÿåò ýëåìåíò èç ìíîæåñòâà. Åñëè òàêîãî ýëåìåíòà íåò, òî íè÷åãî íå ïðîèñõîäèò
procedure Óäàëèòü(ýëåìåíò: öåëîå);
begin
s.Remove(ýëåìåíò);
end;
///- Ìåòîä Ìíîæåñòâî.Âûâåñòè
/// Âûâîäèò ýëåìåíòû ìíîæåñòâà
procedure Âûâåñòè;
begin
s.Println;
end;
///- Ìåòîä Ìíîæåñòâî.Ñîäåðæèò(ýëåìåíò: öåëîå): ëîãè÷åñêèé
/// Ïðîâåðÿåò, åñòü ëè ýëåìåíò âî ìíîæåñòâå
function Ñîäåðæèò(ýëåìåíò: öåëîå): ëîãè÷åñêîå;
begin
Result := s.Contains(ýëåìåíò)
end;
///- Ìåòîä Ìíîæåñòâî.ÂûâåñòèÂñåÌåòîäû
/// Âûâîäèò âñå ìåòîäû Èñïîëíèòåëÿ Ìíîæåñòâî
procedure ÂûâåñòèÂñåÌåòîäû;
begin
if Random(2)=1 then
PrintAllMethods(Self)
else
begin
WritelnFormat('Ìåòîäû èñïîëíèòåëÿ {0}:',Self.GetType.Name.DeleteEnd('Êëàññ'));
Writeln(' Äîáàâèòü(ýëåìåíò: öåëîå)');
Writeln(' Óäàëèòü(ýëåìåíò: öåëîå)');
Writeln(' Âûâåñòè');
Writeln(' Ñîäåðæèò(ýëåìåíò: öåëîå): ëîãè÷åñêîå');
Writeln(' ÂûâåñòèÂñåÌåòîäû');
end;
end;
///- Ìåòîä Ìíîæåñòâî.Î÷èñòèòü
/// Äåëàåò ìíîæåñòâî ïóñòûì
procedure Î÷èñòèòü;
begin
s.Clear
end;
///- Ìåòîä Ìíîæåñòâî.Íîâîå
/// Ñîçäàåò íîâîå ìíîæåñòâî
function Íîâîå(params a: array of integer): ÌíîæåñòâîÊëàññ;
begin
Result := new ÌíîæåñòâîÊëàññ();
Result.Äîáàâèòü(a)
end;
///- Ìåòîä Ìíîæåñòâî.Ïåðåñå÷åíèå(Ìíîæåñòâî1)
/// Âîçâðàùàåò ïåðåñå÷åíèå ìíîæåñòâ
function Ïåðåñå÷åíèå(s1: ÌíîæåñòâîÊëàññ): ÌíîæåñòâîÊëàññ;
begin
Result := new ÌíîæåñòâîÊëàññ();
var ss := SSet(s.AsEnumerable&<integer>);
ss.IntersectWith(s1.s);
Result.s := ss;
end;
end;
type
///!#
ÌíîæåñòâîÑòðîêÊëàññ = class
private
s := new SortedSet<string>;
public
constructor;
begin end;
///- Ìåòîä Ìíîæåñòâî.Äîáàâèòü(ýëåìåíò: ñòðîêîâîå)
/// Äîáàâëÿåò ýëåìåíò ê ìíîæåñòâó. Åñëè òàêîé ýëåìåíò åñòü, òî íè÷åãî íå ïðîèñõîäèò
procedure Äîáàâèòü(ýëåìåíò: string);
begin
s.Add(ýëåìåíò);
end;
///- Ìåòîä Ìíîæåñòâî.Óäàëèòü(ýëåìåíò: ñòðîêîâîå)
/// Óäàëÿåò ýëåìåíò èç ìíîæåñòâà. Åñëè òàêîãî ýëåìåíòà íåò, òî íè÷åãî íå ïðîèñõîäèò
procedure Óäàëèòü(ýëåìåíò: string);
begin
s.Remove(ýëåìåíò);
end;
///- Ìåòîä Ìíîæåñòâî.Âûâåñòè
/// Âûâîäèò ýëåìåíòû ìíîæåñòâà
procedure Âûâåñòè;
begin
s.Println;
end;
///- Ìåòîä Ìíîæåñòâî.Ñîäåðæèò(ýëåìåíò: ñòðîêîâîå): ëîãè÷åñêèé
/// Ïðîâåðÿåò, åñòü ëè ýëåìåíò âî ìíîæåñòâå
function Ñîäåðæèò(ýëåìåíò: string): ëîãè÷åñêîå;
begin
Result := s.Contains(ýëåìåíò)
end;
///- Ìåòîä Ìíîæåñòâî.ÂûâåñòèÂñåÌåòîäû
/// Âûâîäèò âñå ìåòîäû Èñïîëíèòåëÿ Ìíîæåñòâî
procedure ÂûâåñòèÂñåÌåòîäû;
begin
if Random(2)=1 then
PrintAllMethods(Self)
else
begin
WritelnFormat('Ìåòîäû èñïîëíèòåëÿ {0}:',Self.GetType.Name.DeleteEnd('Êëàññ'));
Writeln(' Äîáàâèòü(ýëåìåíò: öåëîå)');
Writeln(' Óäàëèòü(ýëåìåíò: öåëîå)');
Writeln(' Âûâåñòè');
Writeln(' Ñîäåðæèò(ýëåìåíò: öåëîå): ëîãè÷åñêîå');
Writeln(' ÂûâåñòèÂñåÌåòîäû');
end;
end;
///- Ìåòîä Ìíîæåñòâî.Î÷èñòèòü
/// Äåëàåò ìíîæåñòâî ïóñòûì
procedure Î÷èñòèòü;
begin
s.Clear
end;
///- Ìåòîä Ìíîæåñòâî.Íîâîå
/// Ñîçäàåò íîâîå ìíîæåñòâî
function Íîâîå := new ÌíîæåñòâîÑòðîêÊëàññ;
///- Ìåòîä Ìíîæåñòâî.ÑîçäàòüÏàðû(ìíîæåñòâî1)
/// Ñîçäàåò ïàðû ýëåìåíòîâ èç äâóõ ìíîæåñòâ
function ÑîçäàòüÏàðû(ìí1: ÌíîæåñòâîÑòðîêÊëàññ): ÌíîæåñòâîÑòðîêÊëàññ;
begin
var ss: SortedSet<string>;
ss := (ìí1 as ÌíîæåñòâîÑòðîêÊëàññ).s;
var m := new ÌíîæåñòâîÑòðîêÊëàññ;
m.s := s.ZipTuple(ss).Select(x -> x.ToString()).ToSortedSet;
Result := m
end;
end;
type
///!#
Âû÷èñëèòåëüÊëàññ = class
public
///- Ìåòîä Âû÷èñëèòåëü.ÊâàäðàòíîåÓðàâíåíèå(a,b,c: âåùåñòâåííîå)
/// Âûâîäèò âñå ðåøåíèÿ êâàäðàòíîãî óðàâíåíèÿ
procedure ÐåøèòüÊâàäðàòíîåÓðàâíåíèå(a,b,c: real);
begin
writelnFormat('Êâàäðàòíîå óðàâíåíèå: {0}*x*x+{1}*x+{2}=0',a,b,c);
var D := b*b-4*a*c;
if D<0 then
writeln('Ðåøåíèé íåò')
else
begin
var x1 := (-b-sqrt(D))/2/a;
var x2 := (-b+sqrt(D))/2/a;
writelnFormat('Ðåøåíèÿ: x1={0} x2={1}',x1,x2)
end;
end;
///- Ìåòîä Âû÷èñëèòåëü.Àðèôìåòè÷åñêàÿÏðîãðåññèÿ(a0,d: öåëîå)
/// Âûâîäèò àðèôìåòè÷åñêóþ ïðîãðåññèþ
procedure ÂûâåñòèÀðèôìåòè÷åñêóþÏðîãðåññèþ(a0,d: integer);
begin
writelnFormat('Àðèôìåòè÷åñêàÿ ïðîãðåññèÿ: a0={0} d={1}',a0,d);
SeqGen(10,a0,x->x+d).Println; // ! Îøèáêà åñëè ïðîöåäóðû îïèñûâàþòñÿ ïåðåä
end;
procedure ÂûâåñòèÂñåÌåòîäû;
begin
PrintAllMethods(Self);
end;
end;
FileState = (Closed,OpenedForRead,OpenedForWrite);
///!#
ÔàéëÊëàññ = class
private
f: Text;
State := FileState.Closed;
public
constructor ;
begin
end;
///- Ìåòîä Ôàéë.ÎòêðûòüÍà×òåíèå(èìÿ)
/// Îòêðûâàåò ôàéë íà ÷òåíèå
procedure ÎòêðûòüÍà×òåíèå(èìÿ: ñòðîêîâîå);
begin
if State<>FileState.Closed then
f.Close;
f := OpenRead(èìÿ);
State := FileState.OpenedForRead
end;
///- Ìåòîä Ôàéë.ÎòêðûòüÍàÇàïèñü(èìÿ)
/// Îòêðûâàåò ôàéë íà çàïèñü
procedure ÎòêðûòüÍàÇàïèñü(èìÿ: ñòðîêîâîå);
begin
if State<>FileState.Closed then
f.Close;
f := OpenWrite(èìÿ);
State := FileState.OpenedForWrite
end;
///- Ìåòîä Ôàéë.Çàêðûòü
/// Çàêðûâàåò ôàéë
procedure Çàêðûòü;
begin
if State=FileState.Closed then
Println('Îøèáêà: Ôàéë óæå çàêðûò')
else f.Close;
State := FileState.Closed;
end;
///- Ìåòîä Ôàéë.Çàïèñàòü(ñòðîêà)
/// Çàïèñûâàåò ñòðîêó â ôàéë
procedure Çàïèñàòü(ñòðîêà: ñòðîêîâîå);
begin
if State=FileState.Closed then
Println('Îøèáêà: Ïåðåä çàïèñüþ ôàéë ñëåäóåò îòêðûòü')
else f.Writeln(ñòðîêà)
end;
///- Ìåòîä Ôàéë.Ïðî÷èòàòüÑòðîêó
/// Âîçâðàùàåò ñòðîêó, ñ÷èòàííóþ èç ôàéëà
function Ïðî÷èòàòüÑòðîêó: ñòðîêîâîå;
begin
if State=FileState.Closed then
begin
Println('Îøèáêà: Ïåðåä ÷òåíèåì ôàéë ñëåäóåò îòêðûòü');
Result := '';
end
else
begin
Result := f.ReadlnString;
Println(Result);
end;
end;
///- Ìåòîä Ôàéë.Ïðî÷èòàòüÖåëîå
/// Âîçâðàùàåò öåëîå, ñ÷èòàííîå èç ôàéëà
function Ïðî÷èòàòüÖåëîå: öåëîå;
begin
if State=FileState.Closed then
begin
Println('Îøèáêà: Ïåðåä ÷òåíèåì ôàéë íàäî îòêðûòü');
Result := 0;
end
else
begin
Result := f.ReadInteger;
Print(Result);
end;
end;
///- Ìåòîä Ôàéë.Ïðî÷èòàòüÂåùåñòâåííîå
/// Âîçâðàùàåò âåùåñòâåííîå, ñ÷èòàííîå èç ôàéëà
function Ïðî÷èòàòüÂåùåñòâåííîå: âåùåñòâåííîå;
begin
if State=FileState.Closed then
begin
Println('Îøèáêà: Ïåðåä ÷òåíèåì ôàéë íàäî îòêðûòü');
Result := 0;
end
else
begin
Result := f.ReadReal;
Print(Result);
end;
end;
///- Ìåòîä Ôàéë.ÊîíåöÔàéëà
/// Âîçâðàùàåò, äîñòèãíóò ëè êîíåö ôàéëà
function ÊîíåöÔàéëà: ëîãè÷åñêîå;
begin
Result := f.Eof;
end;
///- Ìåòîä Ôàéë.ÈìÿÔàéëà
/// Âîçâðàùàåò èìÿ ôàéëà
function ÈìÿÔàéëà: ñòðîêîâîå;
begin
if State=FileState.Closed then
begin
Println('Îøèáêà: Ôàéë çàêðûò, ïîýòîìó îí íå èìååò èìåíè');
Result := '';
end
else
begin
Println('Èìÿ ôàéëà: ',f.Name);
Result := f.Name;
end
end;
///- Ìåòîä Ôàéë.ÂûâåñòèÑîäåðæèìîå
/// Âûâîäèò ñîäåðæèìîå ôàéëà
procedure ÂûâåñòèÑîäåðæèìîå(èìÿôàéëà: ñòðîêîâîå);
begin
if (State<>FileState.Closed) and (f.Name.ToLower=èìÿôàéëà.ToLower) then
Println('Îøèáêà: Ñîäåðæèìîå ìîæíî âûâåñòè òîëüêî ó çàêðûòîãî ôàéëà')
else
begin
WritelnFormat('Ñîäåðæèìîå ôàéëà {0}:',èìÿôàéëà);
try
ReadLines(èìÿôàéëà).Println(NewLine);
except
WritelnFormat('Ôàéë {0}: îòñóòñòâóåò íà äèñêå',èìÿôàéëà);
end;
end;
end;
///- Ìåòîä Ôàéë.ÂûâåñòèÂñåÌåòîäû
/// Âûâîäèò âñå ìåòîäû èñïîëíèòåëÿ Ôàéë
procedure ÂûâåñòèÂñåÌåòîäû;
begin
PrintAllMethods(Self);
end;
///- Ìåòîä Ôàéë.Íîâûé
/// Ñîçäàåò è âîçâðàùàåò íîâîãî èñïîëíèòåëÿ Ôàéë
function Íîâûé := new ÔàéëÊëàññ;
///- Ìåòîä Ôàéë.ÂñåÑòðîêè
/// Âîçâðàùàåò âñå ñòðîêè ôàéëà â âèäå ïîñëåäîâàòåëüíîñòè
function ÂñåÑòðîêè(èìÿôàéëà: ñòðîêîâîå): sequence of ñòðîêîâîå;
begin
if (State<>FileState.Closed) and (f.Name.ToLower=èìÿôàéëà.ToLower) then
begin
Println('Îøèáêà: Ñòðîêè ìîæíî ïîëó÷èòü òîëüêî ó çàêðûòîãî ôàéëà');
Result := nil;
exit;
end;
Result := ReadLines(èìÿôàéëà).ToArray;
end;
end;
const dbname = 'countries.db';
var coun: array of string := nil;
function ÑòðàíûÑòðîêè: sequence of string;
begin
if coun = nil then
coun := ReadLines(dbname).ToArray();
Result := coun;
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Âûâåñòè
/// Âûâîäèò âñå ýëåìåíòû ïîñëåäîâàòåëüíîñòè, ðàçäåëÿÿ èõ ïðîáåëàìè
function Âûâåñòè<T>(Self: sequence of T): sequence of T; extensionmethod;
begin
Self.Println;
Result := Self;
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.ÂûâåñòèÏîñòðî÷íî
/// Âûâîäèò âñå ýëåìåíòû ïîñëåäîâàòåëüíîñòè - êàæäûé ýëåìåíò ñ íîâîé ñòðîêè
function ÂûâåñòèÏîñòðî÷íî<T>(Self: sequence of T): sequence of T; extensionmethod;
begin
Self.Println(NewLine);
Result := Self;
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Âûáðàòü(óñëîâèå)
/// Âûáèðàåò âñå ýëåìåíòû ïîñëåäîâàòåëüíîñòè, óäîâëåòâîðÿþùèå óêàçàííîìó óñëîâèþ
function Âûáðàòü<T>(Self: sequence of T; cond: T -> boolean): sequence of T; extensionmethod;
begin
Result := Self.Where(cond);
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Âçÿòü(n)
/// Âîçâðàùàåò ïåðâûå n ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè
function Âçÿòü<T>(Self: sequence of T; n: integer): sequence of T; extensionmethod;
begin
Result := Self.Take(n);
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Êîëè÷åñòâî(óñëîâèå)
/// Âîçâðàùàåò êîëè÷åñòâî ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè, óäîâëåòâîðÿþùèõ óêàçàííîìó óñëîâèþ
function Êîëè÷åñòâî<T>(Self: sequence of T; cond: T -> boolean := nil): öåëîå; extensionmethod;
begin
if cond = nil then
Result := Self.Count()
else Result := Self.Count(cond)
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Ñóììà
/// Âîçâðàùàåò ñóììó ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè
function Ñóììà(Self: sequence of integer): integer; extensionmethod;
begin
Result := Self.Sum();
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Ñðåäíåå
/// Âîçâðàùàåò ñðåäíåå ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè
function Ñðåäíåå(Self: sequence of integer): real; extensionmethod;
begin
Result := Self.Average;
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Ìèíèìóì
/// Âîçâðàùàåò ìèíèìàëüíûé ýëåìåíò ïîñëåäîâàòåëüíîñòè
function Ìèíèìóì(Self: sequence of integer): integer; extensionmethod;
begin
Result := Self.Min;
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Ìàêñèìóì
/// Âîçâðàùàåò ìàêñèìàëüíûé ýëåìåíò ïîñëåäîâàòåëüíîñòè
function Ìàêñèìóì(Self: sequence of integer): integer; extensionmethod;
begin
Result := Self.Max;
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.Ïðåîáðàçîâàòü(ôóíêöèÿ ïðåîáðàçîâàíèÿ)
/// Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè ñ ïîìîùüþ ôóíêöèè è âîçâðàùàåò íîâóþ ïîñëåäîâàòåëüíîñòü
function Ïðåîáðàçîâàòü<T,Key>(Self: sequence of T; conv: T -> Key): sequence of Key; extensionmethod;
begin
Result := Self.Select(conv);
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.ÎòñîðòèðîâàòüÏî(ïðîåêöèÿ ýëåìåíòà íà êëþ÷)
/// Ñîðòèðóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè ïî âîçðàñòàíèþ êëþ÷à
function ÎòñîðòèðîâàòüÏî<T,Key>(Self: sequence of T; cond: T -> Key): sequence of T; extensionmethod;
begin
Result := Self.OrderBy(cond);
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.ÎòñîðòèðîâàòüÏî(ïðîåêöèÿ ýëåìåíòà íà êëþ÷)
/// Ñîðòèðóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè ïî êëþ÷ó
function Îòñîðòèðîâàòü<T>(Self: sequence of T): sequence of T; extensionmethod;
begin
Result := Self.OrderBy(x->x);
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.ÎòñîðòèðîâàòüÏîÓáûâàíèþ(ïðîåêöèÿ ýëåìåíòà íà êëþ÷)
/// Ñîðòèðóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè ïî óáûâàíèþ êëþ÷à
function ÎòñîðòèðîâàòüÏîÓáûâàíèþ<T,Key>(Self: sequence of T; cond: T -> Key): sequence of T; extensionmethod;
begin
Result := Self.OrderByDescending(cond);
end;
///- Ìåòîä Ïîñëåäîâàòåëüíîñòü.ÄëÿÂñåõ(äåéñòâèå)
/// Âûïîëíÿåò óêàçàííîå äåéñòâèå äëÿ êàæäîãî ýëåìåíòà ïîñëåäîâàòåëüíîñòè
procedure ÄëÿÂñåõ<T>(Self: sequence of T; act: T -> ()); extensionmethod;
begin
Self.Foreach(act);
end;
function ÍàÁóêâó(c: char): string -> boolean;
begin
Result := ñòðàíà -> ñòðàíà[1] = c;
end;
function ÍàÁóêâó(s: string): string -> boolean;
begin
Result := ñòðàíà -> ñòðàíà[1] = s[1];
end;
function Íà÷èíàåòñÿÍà(Self: string; s: string): boolean; extensionmethod;
begin
Result := Self.StartsWith(s);
end;
///- ×åòíîå(çíà÷åíèå)
/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè çíà÷åíèå ÷åòíûì
function ×åòíîå(x: integer): boolean;
begin
Result := x mod 2 = 0;
end;
///- Íå÷åòíîå(çíà÷åíèå)
/// Âîçâðàùàåò, ÿâëÿåòñÿ ëè çíà÷åíèå íå÷åòíûì
function Íå÷åòíîå(x: integer): boolean;
begin
Result := x mod 2 <> 0;
end;
type
///!#
ÂñåÈñïîëíèòåëèÊëàññ = class
public
///- Èñïîëíèòåëü Ìíîæåñòâî
/// Ïðåäîñòàâëÿåò ìåòîäû äëÿ ìíîæåñòâà öåëûõ
Ìíîæåñòâî: ÌíîæåñòâîÊëàññ;
///- Èñïîëíèòåëü ÌíîæåñòâîÑòðîê
/// Ïðåäîñòàâëÿåò ìåòîäû äëÿ ìíîæåñòâà ñòðîê
ÌíîæåñòâîÑòðîê: ÌíîæåñòâîÑòðîêÊëàññ;
///- Èñïîëíèòåëü Âû÷èñëèòåëü
/// Ïðåäîñòàâëÿåò ðÿä ìåòîäîâ èç îáëàñòè ìàòåìàòèêè
Âû÷èñëèòåëü: Âû÷èñëèòåëüÊëàññ;
///- Èñïîëíèòåëü Ôàéë
/// Ïðåäîñòàâëÿåò ðÿä ìåòîäîâ äëÿ ðàáîòû ñ ôàéëàìè íà äèñêå
Ôàéë: ÔàéëÊëàññ;
///- Èñïîëíèòåëü Âûâîä
/// Ïðåäîñòàâëÿåò ìåòîäû äëÿ âûâîäà äàííûõ
Âûâîä: ÂûâîäÊëàññ;
///- Ìåòîä Âûâåñòè
/// Âûâîäèò âñåõ èñïîëíèòåëåé
procedure Âûâåñòè;
begin
Println('Ìíîæåñòâî');
Println('ÌíîæåñòâîÑòðîê');
Println('Âû÷èñëèòåëü');
Println('Ôàéë');
Println('Âûâîä');
end;
end;
type
///!#
Country = auto class
nm,cap: string;
inh: integer;
cont: string;
public
property Íàçâàíèå: string read nm;
property Ñòîëèöà: string read cap;
property Íàñåëåíèå: integer read inh;
property Êîíòèíåíò: string read cont;
end;
var ñòðàíû: sequence of Country;
procedure InitCountries();
begin
ñòðàíû := ReadLines('Ñòðàíû.csv')
.Select(s->s.ToWords(';'))
.Select(w->new Country(w[0],w[1],w[2].ToInteger,w[3])).ToArray;
end;
// Ïîñëåäîâàòåëüíîñòè
///- Àðèôìåòè÷åñêàÿÏðîãðåññèÿ(ïåðâûé,øàã,êîëè÷åñòâî)
/// Âîçâðàùàåò àðèôìåòè÷åñêóþ ïðîãðåññèþ ñ óêàçàííûì ïåðâûì ýëåìåíòîì, øàãîì è êîëè÷åñòâîì
function Àðèôìåòè÷åñêàÿÏðîãðåññèÿ(a,d: integer; n: integer := 20): sequence of integer;
begin
Result := SeqGen(n,a,a->a+d)
end;
///- Àðèôìåòè÷åñêàÿÏðîãðåññèÿ(ïåðâûé,øàã,êîëè÷åñòâî)
/// Âîçâðàùàåò àðèôìåòè÷åñêóþ ïðîãðåññèþ ñ óêàçàííûì ïåðâûì ýëåìåíòîì, øàãîì è êîëè÷åñòâîì
function Àðèôìåòè÷åñêàÿÏðîãðåññèÿ(a,d: real; n: integer := 20): sequence of real;
begin
Result := SeqGen(n,a,a->a+d)
end;
///- Ãåîìåòè÷åñêàÿÏðîãðåññèÿ(ïåðâûé,øàã,êîëè÷åñòâî)
/// Âîçâðàùàåò ãåîìåòè÷åñêóþ ïðîãðåññèþ ñ óêàçàííûì ïåðâûì ýëåìåíòîì, øàãîì è êîëè÷åñòâîì
function Ãåîìåòè÷åñêàÿÏðîãðåññèÿ(a,d: integer; n: integer := 10): sequence of integer;
begin
Result := SeqGen(n,a,a->a*d)
end;
///- Ãåîìåòè÷åñêàÿÏðîãðåññèÿ(ïåðâûé,øàã,êîëè÷åñòâî)
/// Âîçâðàùàåò ãåîìåòè÷åñêóþ ïðîãðåññèþ ñ óêàçàííûì ïåðâûì ýëåìåíòîì, øàãîì è êîëè÷åñòâîì
function Ãåîìåòè÷åñêàÿÏðîãðåññèÿ(a,d: real; n: integer := 10): sequence of real;
begin
Result := SeqGen(n,a,a->a*d)
end;
///- Ñëó÷àéíàÿÏîñëåäîâàòåëüíîñòü(êîëè÷åñòâî,îò,äî)
/// Âîçâðàùàåò ñëó÷àéíóþ ïîñëåäîâàòåëüíîñòü ýëåìåíòîâ â äèàïàçîíå [îò, äî]
function Ñëó÷àéíàÿÏîñëåäîâàòåëüíîñòü(n: integer := 10; a: integer := 0; b: integer := 10): sequence of integer;
begin
Result := ArrRandom(n,a,b)
end;
function ÍîâûéÔàéë := new ÔàéëÊëàññ;
var
///- Èñïîëíèòåëü Ìíîæåñòâî. Ïðåäîñòàâëÿåò ìåòîäû äëÿ ìíîæåñòâà öåëûõ
Ìíîæåñòâî := new ÌíîæåñòâîÊëàññ;
///- Èñïîëíèòåëü ÌíîæåñòâîÑòðîê. Ïðåäîñòàâëÿåò ìåòîäû äëÿ ìíîæåñòâà ñòðîê
ÌíîæåñòâîÑòðîê := new ÌíîæåñòâîÑòðîêÊëàññ;
///- Èñïîëíèòåëü Âû÷èñëèòåëü. Ïðåäîñòàâëÿåò ðÿä ìåòîäîâ èç îáëàñòè ìàòåìàòèêè
Âû÷èñëèòåëü := new Âû÷èñëèòåëüÊëàññ;
///- Èñïîëíèòåëü Ôàéë. Ïðåäîñòàâëÿåò ðÿä ìåòîäîâ äëÿ ðàáîòû ñ ôàéëàìè íà äèñêå
Ôàéë := new ÔàéëÊëàññ;
///- Èñïîëíèòåëü Âûâîä. Ïðåäîñòàâëÿåò ìåòîäû äëÿ âûâîäà äàííûõ
Âûâîä := new ÂûâîäÊëàññ;
///- Èñïîëíèòåëü ÌèðÈñïîëíèòåëåé. Ñîäåðæèò âñåõ èñïîëíèòåëåé
ÌèðÈñïîëíèòåëåé := new ÂñåÈñïîëíèòåëèÊëàññ;
begin
ÌèðÈñïîëíèòåëåé.Ìíîæåñòâî := Ìíîæåñòâî;
ÌèðÈñïîëíèòåëåé.ÌíîæåñòâîÑòðîê := ÌíîæåñòâîÑòðîê;
ÌèðÈñïîëíèòåëåé.Âû÷èñëèòåëü := Âû÷èñëèòåëü;
ÌèðÈñïîëíèòåëåé.Ôàéë := Ôàéë;
ÌèðÈñïîëíèòåëåé.Âûâîä := Âûâîä;
InitCountries;
end.

View File

@ -0,0 +1,12 @@
uses Исполнители;
begin
var множ1 := Множество.Новое(3,5,4,5);
множ1.Вывести;
var множ2 := Множество.Новое(7,5,3,9);
множ2.Вывести;
множ1.Пересечение(множ2).Вывести;
end.

107
!NewExecutors/Окна.pas Normal file
View File

@ -0,0 +1,107 @@
unit Îêíà;
{$reference 'PresentationFramework.dll'}
{$reference 'WindowsBase.dll'}
{$reference 'PresentationCore.dll'}
{$apptype windows}
uses System.Windows.Controls;
uses System.Windows;
uses System.Windows.Data;
uses System.Reflection;
uses System.Collections.ObjectModel;
var app := new Application();
var MainWindow := new Window;
procedure InitWPF;
begin
MainWindow.Title := 'WPF';
MainWindow.WindowStartupLocation := WindowStartupLocation.CenterScreen;
MainWindow.Width := 800;
MainWindow.Height := 600;
MainWindow.Show;
end;
function GetFields<T>(t1: T): sequence of string;
begin
Result := t1.GetType.GetProperties.Select(f->f.Name);
end;
procedure Îòîáðàçèòü<T>(Self: ListView; data: sequence of T); extensionmethod;
begin
var gv := Self.View as GridView;
var fields := GetFields(data.First);
gv.Columns.Clear;
foreach var fld in fields do
begin
var col := new GridViewColumn;
col.Header := fld;
col.Width := 150;
col.DisplayMemberBinding := new Binding(fld);
gv.Columns.Add(col);
end;
Self.ItemsSource := data.Skip(1);
end;
var
LeftPanel: StackPanel;
RightPanel: DockPanel;
procedure Init();
begin
var dp := new DockPanel;
MainWindow.Content := dp;
LeftPanel := new StackPanel();
LeftPanel.Width := 150;
dp.Children.Add(LeftPanel);
RightPanel := new DockPanel();
dp.Children.Add(RightPanel);
end;
function CreateListView(): ListView;
begin
var list := new ListView;
var gv := new GridView;
list.View := gv;
RightPanel.Children.Add(list);
Result := list;
end;
function ÑîçäàòüÎêíîÑïèñêà: ListView;
begin
Result := CreateListView;
end;
function CreateButton(Content: string; p: procedure): Button;
begin
var btn := new Button;
LeftPanel.Children.Add(btn);
btn.HorizontalAlignment := HorizontalAlignment.Stretch;
btn.Margin := new Thickness(5);
btn.Content := Content;
btn.Click += procedure (sender: object; args: RoutedEventArgs) ->
begin
p;
end;
Result := btn;
end;
function ÑîçäàòüÊíîïêó(Content: string; p: procedure): Button;
begin
Result := CreateButton(Content,p);
end;
initialization
InitWPF;
Init;
finalization
app.Run();
end.

View File

@ -0,0 +1,14 @@
uses Исполнители;
begin
var посл := СлучайнаяПоследовательность(10);
посл.Вывести;
посл.Сумма.Вывести;
var сумма := 0;
foreach var знач in посл do
сумма += знач;
сумма.Вывести
end.

View File

@ -0,0 +1,15 @@
uses Исполнители;
begin
var посл := СлучайнаяПоследовательность(10);
посл.Вывести;
посл.Количество(значение -> Четное(значение)).Вывести;
var количество := 0;
foreach var значение in посл do
if Четное(значение) then
количество += 1;
количество.Вывести
end.

View File

@ -0,0 +1,15 @@
uses Исполнители;
begin
Множество.Добавить(5);
Множество.Добавить(3);
Множество.Добавить(5);
Множество.Добавить(4);
Множество.Вывести;
Множество.Удалить(3);
Множество.Вывести;
Вывести(Множество.Содержит(3));
Вывод.ПустаяСтрока;
Множество.ВывестиВсеМетоды;
end.

View File

@ -0,0 +1,11 @@
uses Исполнители;
begin
Вычислитель.РешитьКвадратноеУравнение(1,3,2);
Вывод.ПустаяСтрока;
Вычислитель.РешитьКвадратноеУравнение(1,2,2);
Вывод.ПустаяСтрока;
Вычислитель.ВывестиАрифметическуюПрогрессию(1,2);
Вывод.ПустаяСтрока;
Вычислитель.ВывестиВсеМетоды;
end.

View File

@ -0,0 +1,14 @@
uses Исполнители;
begin
var арифм := АрифметическаяПрогрессия(1,2,20);
арифм.Вывести;
арифм.Сумма.Вывести;
var геом := ГеометическаяПрогрессия(1,2,10);
геом.Вывести;
геом.Сумма.Вывести;
var случай := СлучайнаяПоследовательность(10,1,100);
случай.Вывести;
Вывести(случай.Минимум,случай.Максимум);
end.

View File

@ -0,0 +1,13 @@
uses Исполнители;
begin
var арифм1 := АрифметическаяПрогрессия(1,2,20);
арифм1.Вывести;
арифм1.Сумма.Вывести;
var посл2 := арифм1.Преобразовать(x->x*x);
посл2.Вывести;
var посл3 := посл2.Выбрать(x -> x mod 10 = 5);
посл3.Вывести;
end.

View File

@ -0,0 +1,196 @@
Абхазия;Сухуми;240705;Азия
Австралия;Канберра;25028000;Австралия
Австрия;Вена;8579747;Европа
Азербайджан;Баку;9730500;Азия
Албания;Тирана;2886026;Европа
Алжир;Алжир;40375954;Африка
Ангола;Луанда;25830958;Африка
Андорра;Андорра-ла-Велья;76098;Европа
Антигуа и Барбуда;Сент-Джонс;92738;Америка
Аргентина;Буэнос-Айрес;43131966;Америка
Армения;Ереван;2998600;Азия
Афганистан;Кабул;33369945;Азия
Багамские Острова;Нассау;392718;Америка
Бангладеш;Дакка;160991563;Азия
Барбадос;Бриджтаун;285006;Америка
Бахрейн;Манама;1316500;Азия
Белоруссия;Минск;9498400;Европа
Белиз;Бельмопан;360838;Америка
Бельгия;Брюссель;11250659;Европа
Бенин;Порто-Ново;10315244;Африка
Болгария;София;7202198;Европа
Боливия;Сукре;11410651;Америка
Босния и Герцеговина;Сараево;3791622;Европа
Ботсвана;Габороне;2303820;Африка
Бразилия;Бразилиа;205738331;Америка
Бруней;Бандар-Сери-Багаван;428874;Азия
Буркина Фасо;Уагадугу;18450494;Африка
Бурунди;Бужумбура;11552561;Африка
Бутан;Тхимпху;784103;Азия
Вануату;Порт-Вила;270470;Австралия
Ватикан;Ватикан;842;Европа
Великобритания;Лондон;65341183;Европа
Венгрия;Будапешт;9823000;Европа
Венесуэла;Каракас;31109000;Америка
Восточный Тимоp;Дили;1212107;Азия
Вьетнам;Ханой;92700000;Азия
Габон;Либревиль;1763142;Африка
Гаити;Порт-о-Пренс;10911819;Америка
Гайана;Джорджтаун;801623;Америка
Гамбия;Банжул;2054986;Африка
Гана;Аккра;28033375;Африка
Гватемала;Гватемала;16176133;Америка
Гвинея;Конакри;12947122;Африка
Гвинея-Бисау;Бисау;1888429;Африка
Германия;Берлин;82162000;Европа
Гондурас;Тегусигальпа;8725111;Америка
Гренада;Сент-Джорджес;107327;Америка
Греция;Афины;10846979;Европа
Грузия;Тбилиси;3720400;Азия
Дания;Копенгаген;5668743;Европа
Демократическая республика Конго;Киншаса;79722624;Африка
Джибути;Джибути;899598;Африка
Доминика;Розо;73016;Америка
Доминиканская Республика;Санто-Доминго;10648613;Америка
Египет;Каир;91545000;Африка
Замбия;Лусака;16717332;Африка
Зимбабве;Хараре;15966810;Африка
Израиль;Иерусалим;8522000;Азия
Индия;Нью-Дели;1294186000;Азия
Индонезия;Джакарта;260581100;Азия
Иордания;Амман;6879300;Азия
Ирак;Багдад;37547686;Азия
Иран;Тегеран;79003827;Азия
Ирландия;Дублин;4635400;Европа
Исландия;Рейкьявик;332529;Европа
Испания;Мадрид;46423064;Европа
Италия;Рим;60665551;Европа
Йемен;Сана;27477600;Азия
Кабо-Верде;Прая;526993;Африка
Казахстан;Астана;17753200;Азия
Камбоджа;Пномпень;15827241;Азия
Камерун;Яунде;23924407;Африка
Канада;Оттава;34988000;Америка
Катар;Доха;2269672;Азия
Кения;Найроби;47251449;Африка
Кипр;Никосия;848319;Азия
Киргизия;Бишкек;6008600;Азия
Кирибати;Южная Тарава;114405;Острова
Китай;Пекин;1379022000;Азия
Колумбия;Санта-Фе-де-Богота;48803000;Америка
Коморские острова;Морони;806153;Африка
Коста-Рика;Сан-Хосе;4773130;Америка
Кот-д’Ивуар;Ямусукро;23254184;Африка
Куба;Гавана;11392889;Америка
Кувейт;Эль-Кувейт;4007146;Азия
Лаос;Вьентьян;6693300;Азия
Латвия;Рига;1959900;Европа
Лесото;Масеру;2160309;Африка
Либерия;Монровия;4503438;Африка
Ливан;Бейрут;5988153;Азия
Ливия;Триполи;6330159;Африка
Литва;Вильнюс;2869690;Европа
Лихтенштейн;Вадуц;37622;Европа
Люксембург;Люксембург;576249;Европа
Маврикий;Порт-Луи;1261208;Африка
Мавритания;Нуакшот;3631775;Африка
Мадагаскар;Антананариву;24915822;Африка
Македония;Скопье;2069172;Европа
Малави;Лилонгве;16310431;Африка
Малайзия;Куала-Лумпур;31700000;Азия
Мали;Бамако;18134835;Африка
Мальдивы;Мале;341256;Азия
Мальта;Валлетта;434403;Европа
Марокко;Рабат;33996000;Африка
Маршалловы Острова;Маджуро;53069;Острова
Мексика;Мехико;122273473;Америка
Мозамбик;Мапуту;28751362;Африка
Молдавия;Кишинев;3553100;Европа
Монако;Монако;37863;Европа
Монголия;Улан-Батор;2966294;Азия
Мьянма;Найпьидо;54363426;Азия
Намибия;Виндхук;2513981;Африка
Непал;Катманду;28850717;Азия
Нигер;Ниамей;20715285;Африка
Нигерия;Абуджа;186987563;Африка
Нидерланды;Амстердам;16985621;Европа
Никарагуа;Манагуа;6198154;Америка
Новая Зеландия;Веллингтон;4602900;Острова
Норвегия;Осло;5275100;Европа
ОАЭ;Абу-Даби;9266971;Азия
Оман;Маскат;4088690;Азия
Пакистан;Исламабад;194521264;Азия
Палау;Мелекеок;21501;Острова
Панама;Панама;3764166;Америка
Папуа-Новая Гвинея;Порт-Морсби;7776115;Острова
Парагвай;Асунсьон;7003404;Америка
Перу;Лима;31488625;Америка
Польша;Варшава;38437239;Европа
Португалия;Лиссабон;10374822;Европа
Республика Конго;Браззавиль;4740992;Африка
Россия;Москва;146544710;Европа
Руанда;Кигали;11262564;Африка
Румыния;Бухарест;19759968;Европа
Сальвадор;Сан-Сальвадор;6146419;Америка
Самоа;Апиа;194523;Острова
Сан-Марино;Сан-Марино;31950;Европа
Сан-Томе и Принсипи;Сан-Томе;194390;Африка
Саудовская Аравия;Эр-Рияд;32248200;Азия
Свазиленд;Мбабане;1304063;Африка
Северная Корея;Пхеньян;25281327;Азия
Северные Марианские острова;Пхеньян;55389;Острова
Сейшелы;Виктория;97026;Африка
Сенегал;Дакар;15589485;Африка
Сент-Винсент и Гренадины;Кингстаун;109644;Америка
Сент-Китс и Невис;Бастер;56183;Америка
Сент-Люсия;Кастри;186383;Америка
Сербия;Белград;7114393;Европа
Сингапур;Сингапур;5469724;Азия
Сирия;Дамаск;18563595;Азия
Словакия;Братислава;5421349;Европа
Словения;Любляна;2086300;Европа
Соединённые Штаты Америки;Вашингтон;324085000;Америка
Соломоновы Острова;Хониара;594934;Острова
Сомали;Могадишо;11079013;Африка
Судан;Хартум;41175541;Африка
Суринам;Парамарибо;547610;Америка
Сьерра-Леоне;Фритаун;6592102;Африка
Таджикистан;Душанбе;8593600;Азия
Таиланд;Бангкок;65323000;Азия
Танзания;Додома;55155473;Африка
Того;Ломе;7496833;Африка
Тонга;Нукуалофа;106915;Острова
Тринидад и Тобаго;Порт-оф-Спейн;1364973;Америка
Тувалу;Фунафути;9943;Острова
Тунис;Тунис;10982754;Африка
Туркмения;Ашхабад;5438670;Азия
Турция;Анкара;78741053;Азия
Уганда;Кампала;40322768;Африка
Узбекистан;Ташкент;31807000;Азия
Украина;Киев;42504274;Европа
Уругвай;Монтевидео;3415866;Америка
Федеративные штаты Микронезии;Паликир;104966;Острова
Фиджи;Сува;897537;Острова
Филиппины;Манила;102921200;Азия
Финляндия;Хельсинки;5471753;Европа
Франция;Париж;64513242;Европа
Хорватия;Загреб;4190669;Европа
Центральноафриканская Республика;Банги;4998493;Африка
Чад;Нджамена;14496739;Африка
Черногория;Подгорица;622218;Европа
Чехия;Прага;10546120;Европа
Чили;Сантьяго;18006407;Америка
Швейцария;Берн;8236600;Европа
Швеция;Стокгольм;9838480;Европа
Шри-Ланка;Коломбо;20810816;Азия
Эквадор;Кито;15427000;Америка
Экваториальная Гвинея;Малабо;845060;Африка
Эритрея;Асмэра;5351680;Африка
Эстония;Таллин;1315944;Европа
Эфиопия;Аддис-Абеба;92206005;Африка
Южная Корея;Сеул;51431100;Азия
Южная Осетия;Цхинвал;53532;Азия
Южно-Африканская Республика;Претория;54956900;Африка
Южный Судан;Джуба;12733427;Африка
Ямайка;Кингстон;2930050;Америка
Япония;Токио;126960000;Азия
1 Абхазия Сухуми 240705 Азия
2 Австралия Канберра 25028000 Австралия
3 Австрия Вена 8579747 Европа
4 Азербайджан Баку 9730500 Азия
5 Албания Тирана 2886026 Европа
6 Алжир Алжир 40375954 Африка
7 Ангола Луанда 25830958 Африка
8 Андорра Андорра-ла-Велья 76098 Европа
9 Антигуа и Барбуда Сент-Джонс 92738 Америка
10 Аргентина Буэнос-Айрес 43131966 Америка
11 Армения Ереван 2998600 Азия
12 Афганистан Кабул 33369945 Азия
13 Багамские Острова Нассау 392718 Америка
14 Бангладеш Дакка 160991563 Азия
15 Барбадос Бриджтаун 285006 Америка
16 Бахрейн Манама 1316500 Азия
17 Белоруссия Минск 9498400 Европа
18 Белиз Бельмопан 360838 Америка
19 Бельгия Брюссель 11250659 Европа
20 Бенин Порто-Ново 10315244 Африка
21 Болгария София 7202198 Европа
22 Боливия Сукре 11410651 Америка
23 Босния и Герцеговина Сараево 3791622 Европа
24 Ботсвана Габороне 2303820 Африка
25 Бразилия Бразилиа 205738331 Америка
26 Бруней Бандар-Сери-Багаван 428874 Азия
27 Буркина Фасо Уагадугу 18450494 Африка
28 Бурунди Бужумбура 11552561 Африка
29 Бутан Тхимпху 784103 Азия
30 Вануату Порт-Вила 270470 Австралия
31 Ватикан Ватикан 842 Европа
32 Великобритания Лондон 65341183 Европа
33 Венгрия Будапешт 9823000 Европа
34 Венесуэла Каракас 31109000 Америка
35 Восточный Тимоp Дили 1212107 Азия
36 Вьетнам Ханой 92700000 Азия
37 Габон Либревиль 1763142 Африка
38 Гаити Порт-о-Пренс 10911819 Америка
39 Гайана Джорджтаун 801623 Америка
40 Гамбия Банжул 2054986 Африка
41 Гана Аккра 28033375 Африка
42 Гватемала Гватемала 16176133 Америка
43 Гвинея Конакри 12947122 Африка
44 Гвинея-Бисау Бисау 1888429 Африка
45 Германия Берлин 82162000 Европа
46 Гондурас Тегусигальпа 8725111 Америка
47 Гренада Сент-Джорджес 107327 Америка
48 Греция Афины 10846979 Европа
49 Грузия Тбилиси 3720400 Азия
50 Дания Копенгаген 5668743 Европа
51 Демократическая республика Конго Киншаса 79722624 Африка
52 Джибути Джибути 899598 Африка
53 Доминика Розо 73016 Америка
54 Доминиканская Республика Санто-Доминго 10648613 Америка
55 Египет Каир 91545000 Африка
56 Замбия Лусака 16717332 Африка
57 Зимбабве Хараре 15966810 Африка
58 Израиль Иерусалим 8522000 Азия
59 Индия Нью-Дели 1294186000 Азия
60 Индонезия Джакарта 260581100 Азия
61 Иордания Амман 6879300 Азия
62 Ирак Багдад 37547686 Азия
63 Иран Тегеран 79003827 Азия
64 Ирландия Дублин 4635400 Европа
65 Исландия Рейкьявик 332529 Европа
66 Испания Мадрид 46423064 Европа
67 Италия Рим 60665551 Европа
68 Йемен Сана 27477600 Азия
69 Кабо-Верде Прая 526993 Африка
70 Казахстан Астана 17753200 Азия
71 Камбоджа Пномпень 15827241 Азия
72 Камерун Яунде 23924407 Африка
73 Канада Оттава 34988000 Америка
74 Катар Доха 2269672 Азия
75 Кения Найроби 47251449 Африка
76 Кипр Никосия 848319 Азия
77 Киргизия Бишкек 6008600 Азия
78 Кирибати Южная Тарава 114405 Острова
79 Китай Пекин 1379022000 Азия
80 Колумбия Санта-Фе-де-Богота 48803000 Америка
81 Коморские острова Морони 806153 Африка
82 Коста-Рика Сан-Хосе 4773130 Америка
83 Кот-д’Ивуар Ямусукро 23254184 Африка
84 Куба Гавана 11392889 Америка
85 Кувейт Эль-Кувейт 4007146 Азия
86 Лаос Вьентьян 6693300 Азия
87 Латвия Рига 1959900 Европа
88 Лесото Масеру 2160309 Африка
89 Либерия Монровия 4503438 Африка
90 Ливан Бейрут 5988153 Азия
91 Ливия Триполи 6330159 Африка
92 Литва Вильнюс 2869690 Европа
93 Лихтенштейн Вадуц 37622 Европа
94 Люксембург Люксембург 576249 Европа
95 Маврикий Порт-Луи 1261208 Африка
96 Мавритания Нуакшот 3631775 Африка
97 Мадагаскар Антананариву 24915822 Африка
98 Македония Скопье 2069172 Европа
99 Малави Лилонгве 16310431 Африка
100 Малайзия Куала-Лумпур 31700000 Азия
101 Мали Бамако 18134835 Африка
102 Мальдивы Мале 341256 Азия
103 Мальта Валлетта 434403 Европа
104 Марокко Рабат 33996000 Африка
105 Маршалловы Острова Маджуро 53069 Острова
106 Мексика Мехико 122273473 Америка
107 Мозамбик Мапуту 28751362 Африка
108 Молдавия Кишинев 3553100 Европа
109 Монако Монако 37863 Европа
110 Монголия Улан-Батор 2966294 Азия
111 Мьянма Найпьидо 54363426 Азия
112 Намибия Виндхук 2513981 Африка
113 Непал Катманду 28850717 Азия
114 Нигер Ниамей 20715285 Африка
115 Нигерия Абуджа 186987563 Африка
116 Нидерланды Амстердам 16985621 Европа
117 Никарагуа Манагуа 6198154 Америка
118 Новая Зеландия Веллингтон 4602900 Острова
119 Норвегия Осло 5275100 Европа
120 ОАЭ Абу-Даби 9266971 Азия
121 Оман Маскат 4088690 Азия
122 Пакистан Исламабад 194521264 Азия
123 Палау Мелекеок 21501 Острова
124 Панама Панама 3764166 Америка
125 Папуа-Новая Гвинея Порт-Морсби 7776115 Острова
126 Парагвай Асунсьон 7003404 Америка
127 Перу Лима 31488625 Америка
128 Польша Варшава 38437239 Европа
129 Португалия Лиссабон 10374822 Европа
130 Республика Конго Браззавиль 4740992 Африка
131 Россия Москва 146544710 Европа
132 Руанда Кигали 11262564 Африка
133 Румыния Бухарест 19759968 Европа
134 Сальвадор Сан-Сальвадор 6146419 Америка
135 Самоа Апиа 194523 Острова
136 Сан-Марино Сан-Марино 31950 Европа
137 Сан-Томе и Принсипи Сан-Томе 194390 Африка
138 Саудовская Аравия Эр-Рияд 32248200 Азия
139 Свазиленд Мбабане 1304063 Африка
140 Северная Корея Пхеньян 25281327 Азия
141 Северные Марианские острова Пхеньян 55389 Острова
142 Сейшелы Виктория 97026 Африка
143 Сенегал Дакар 15589485 Африка
144 Сент-Винсент и Гренадины Кингстаун 109644 Америка
145 Сент-Китс и Невис Бастер 56183 Америка
146 Сент-Люсия Кастри 186383 Америка
147 Сербия Белград 7114393 Европа
148 Сингапур Сингапур 5469724 Азия
149 Сирия Дамаск 18563595 Азия
150 Словакия Братислава 5421349 Европа
151 Словения Любляна 2086300 Европа
152 Соединённые Штаты Америки Вашингтон 324085000 Америка
153 Соломоновы Острова Хониара 594934 Острова
154 Сомали Могадишо 11079013 Африка
155 Судан Хартум 41175541 Африка
156 Суринам Парамарибо 547610 Америка
157 Сьерра-Леоне Фритаун 6592102 Африка
158 Таджикистан Душанбе 8593600 Азия
159 Таиланд Бангкок 65323000 Азия
160 Танзания Додома 55155473 Африка
161 Того Ломе 7496833 Африка
162 Тонга Нукуалофа 106915 Острова
163 Тринидад и Тобаго Порт-оф-Спейн 1364973 Америка
164 Тувалу Фунафути 9943 Острова
165 Тунис Тунис 10982754 Африка
166 Туркмения Ашхабад 5438670 Азия
167 Турция Анкара 78741053 Азия
168 Уганда Кампала 40322768 Африка
169 Узбекистан Ташкент 31807000 Азия
170 Украина Киев 42504274 Европа
171 Уругвай Монтевидео 3415866 Америка
172 Федеративные штаты Микронезии Паликир 104966 Острова
173 Фиджи Сува 897537 Острова
174 Филиппины Манила 102921200 Азия
175 Финляндия Хельсинки 5471753 Европа
176 Франция Париж 64513242 Европа
177 Хорватия Загреб 4190669 Европа
178 Центральноафриканская Республика Банги 4998493 Африка
179 Чад Нджамена 14496739 Африка
180 Черногория Подгорица 622218 Европа
181 Чехия Прага 10546120 Европа
182 Чили Сантьяго 18006407 Америка
183 Швейцария Берн 8236600 Европа
184 Швеция Стокгольм 9838480 Европа
185 Шри-Ланка Коломбо 20810816 Азия
186 Эквадор Кито 15427000 Америка
187 Экваториальная Гвинея Малабо 845060 Африка
188 Эритрея Асмэра 5351680 Африка
189 Эстония Таллин 1315944 Европа
190 Эфиопия Аддис-Абеба 92206005 Африка
191 Южная Корея Сеул 51431100 Азия
192 Южная Осетия Цхинвал 53532 Азия
193 Южно-Африканская Республика Претория 54956900 Африка
194 Южный Судан Джуба 12733427 Африка
195 Ямайка Кингстон 2930050 Америка
196 Япония Токио 126960000 Азия

View File

@ -0,0 +1,11 @@
uses Исполнители;
begin
Страны.ВывестиПострочно;
foreach var страна in Страны do
Вывести(страна);
Страны.ОтсортироватьПо(страна -> страна.Население).ВывестиПострочно
end.

View File

@ -0,0 +1,17 @@
uses Исполнители;
begin
var количество := 0;
foreach var страна in Страны do
if страна.Название.НачинаетсяНа('А') then
begin
Вывести(страна);
количество += 1;
end;
количество.Вывести;
var страныА := Страны.Выбрать(страна -> страна.Название.НачинаетсяНа('А'));
страныА.ВывестиПострочно;
страныА.Количество.Вывести;
end.

View File

@ -0,0 +1,13 @@
uses Исполнители;
begin
var количество := 0;
foreach var страна in Страны do
if страна.Название[1] = 'А' then
begin
Вывести(страна);
количество += 1;
end;
количество.Вывести
end.

View File

@ -0,0 +1,7 @@
uses Исполнители;
begin
var кол := Страны.Количество(страна -> страна.Название.НачинаетсяНа('А'));
Println(кол)
end.

View File

@ -0,0 +1,13 @@
uses Исполнители;
begin
var СтраныНаБуквуА := Страны.Выбрать(страна -> страна.Название.НачинаетсяНа('А'));
var количество := 0;
foreach var страна in СтраныНаБуквуА do
begin
Вывести(страна);
количество += 1;
end;
количество.Вывести
end.

View File

@ -0,0 +1,10 @@
uses Исполнители;
begin
var С0 := Страны.Выбрать(страна -> страна.Континент = 'Азия');
var С1 := С0.ОтсортироватьПоУбыванию(страна -> страна.Население);
var С2 := С1.Взять(10);
var С3 := С2.Преобразовать(страна -> (страна.Название,страна.Население));
С3.ВывестиПострочно
end.

View File

@ -0,0 +1,10 @@
uses Исполнители;
begin
Страны.Выбрать(страна -> страна.Континент = 'Азия')
.ОтсортироватьПоУбыванию(страна -> страна.Население)
.Взять(10)
.Преобразовать(страна -> (страна.Название,страна.Население))
.ВывестиПострочно
end.

View File

@ -0,0 +1,20 @@
uses Окна,Исполнители;
begin
// Создание запросов
var СтраныНаБуквуА := Страны.Выбрать(страна -> страна.Название.НачинаетсяНа('А'));
var СтраныАзии := Страны.Выбрать(страна -> страна.Континент = 'Азия');
var МаленькиеСтраны := Страны.Выбрать(страна -> страна.Население < 100000);
// Создание интерфейсных элементов
var ОкноСписка := СоздатьОкноСписка;
ОкноСписка.Отобразить(Страны);
CreateButton('Все', () -> ОкноСписка.Отобразить(Страны));
CreateButton('На букву А', () -> ОкноСписка.Отобразить(СтраныНаБуквуА));
CreateButton('Страны Азии', () -> ОкноСписка.Отобразить(СтраныАзии));
CreateButton('Маленькие Страны', () -> ОкноСписка.Отобразить(МаленькиеСтраны));
end.

View File

@ -0,0 +1,18 @@
uses Исполнители;
begin
var Файл1 := Файл.Новый;
var Файл2 := Файл.Новый;
Файл1.ОткрытьНаЧтение('текст.txt');
Файл2.ОткрытьНаЗапись(екст2.txt');
while not Файл1.КонецФайла do
begin
var строка := Файл1.ПрочитатьСтроку;
Файл2.Записать(строка);
end;
Файл1.Закрыть;
Файл2.Закрыть;
Файл2.ВывестиСодержимое;
end.

View File

@ -0,0 +1,14 @@
uses Исполнители;
begin
Файл.ОткрытьНаЗапись('текст.txt');
Файл.Записать('Информатика');
Файл.Записать('Математика');
Файл.Записать('Русский');
Файл.Записать('Физика');
Файл.Записать('Русский');
Файл.Записать('Информатика');
Файл.Закрыть;
Файл.ВывестиСодержимое('текст.txt');
end.

View File

@ -0,0 +1,10 @@
// Использование вспомогательных переменных
begin
var r := ReadlnReal('Введите r: ');
var r2,r4,r8: real; // вспомогательные переменные
r2 := r * r;
r4 := r2 * r2;
r8 := r4 * r4;
Println(r,'в степени 8 =',r8);
end.

View File

@ -0,0 +1,12 @@
// Перемена местами значений двух переменных с использованием третьей
var x,y: real;
begin
Write('Введите x,y: ');
Readln(x,y);
var v: real; // вспомогательная переменная
v := x;
x := y;
y := v;
Writeln('Новые значения x,y: ',x,' ',y);
end.

View File

@ -0,0 +1,18 @@
// Присваивания += -= *= /=
var
i: integer;
r: real;
begin
i := 1;
Writeln('i := 1; i = ',i);
i += 2; // Увеличение на 2
Writeln('i += 2; i = ',i);
i *= 3; // Увеличение в 3 раза
Writeln('i *= 3; i = ',i);
Writeln;
r := 6;
Writeln('r := 6; r = ',r);
r /= 2;
Writeln('r /= 2; r = ',r);
end.

View File

@ -0,0 +1,16 @@
// Логический тип. Логические выражения с and, or и not
var
b: boolean;
x: integer;
begin
Write('Введите x (от 1 до 9): ');
Readln(x);
b := x=5;
Writeln('x=5? ',b);
b := (x>=3) and (x<=5);
Writeln('x=3,4 или 5? ',b);
b := (x=3) or (x=4) or (x=5);
Writeln('x=3,4 или 5? ',b);
b := not Odd(x);
Writeln('x - четное? ',b);
end.

View File

@ -0,0 +1,10 @@
// Вывод результатов вычислений
begin
Writeln('Вычисления:');
// Вывод пустой строки
Writeln;
Writeln('121 + 363 = ',121+363);
Writeln('121 - 363 = ',121-363);
Writeln('121 * 363 = ',121*363);
Writeln('121 / 363 = ',121/363);
end.

View File

@ -0,0 +1,13 @@
// Вывод результатов вычислений. Используются именованные константы
const
a = 121;
b = 363;
begin
Writeln('Вычисления:');
Writeln;
Writeln(a,' + ',b,' = ',a+b);
Writeln(a,' - ',b,' = ',a-b);
Writeln(a,' * ',b,' = ',a*b);
Writeln(a,' / ',b,' = ',a/b);
end.

View File

@ -0,0 +1,10 @@
// Вывод результатов вычислений. Используются переменные и процедура ввода
begin
var (a,b) := ReadlnInteger2('Введите a и b:');
Writeln;
Writeln(a,' + ',b,' = ',a+b);
Writeln(a,' - ',b,' = ',a-b);
Writeln(a,' * ',b,' = ',a*b);
Writeln(a,' / ',b,' = ',a/b);
end.

View File

@ -0,0 +1,10 @@
// Операции div и mod
var a: integer;
begin
Write('Введите a: ');
Readln(a);
Writeln('Последняя цифра числа: ',a mod 10);
Writeln('Число без последней цифры: ',a div 10);
Writeln('Если число a четно, то 0: ',a mod 2);
end.

View File

@ -0,0 +1,13 @@
// Операции div и mod
var a: integer := 247;
begin
Write('Цифры числа в обратном порядке: ');
// Выводим последнюю цифру
Print(a mod 10);
// Отбрасываем последнюю цифру
a := a div 10;
Print(a mod 10);
a := a div 10;
Print(a mod 10);
end.

View File

@ -0,0 +1,9 @@
// Демонстрация работы функции eof. Запускать по Shift-F9, завершать по Ctrl-Z
begin
var s: char;
while not Eof do
begin
Read(s);
Println('-',Ord(s),' -');
end;
end.

View File

@ -0,0 +1,8 @@
// Демонстрация работы функции Eoln
begin
while not Eoln do
begin
var c := ReadChar;
Print(c);
end;
end.

View File

@ -0,0 +1,5 @@
// Первая программа
program HelloWorld;
begin
Writeln('Привет, мир!');
end.

View File

@ -0,0 +1,10 @@
// Генерация случайного числа
begin
var i := Random(100);
Writeln('Случайное целое в диапазоне 0..99: ',i);
i := Random(2,5);
Writeln('Случайное целое в диапазоне 2..5: ',i);
var r: real := Random;
Writeln('Случайное вещественное в диапазоне [0,1): ',r);
end.

View File

@ -0,0 +1,7 @@
// Бросание кубиков
begin
var (k1,k2) := Random2(1,6);
Writeln($'Очки на кубиках: {k1} {k2}');
Writeln($'Сумма очков: {k1+k2}');
end.

View File

@ -0,0 +1,6 @@
// Ввод строки
begin
var имя := ReadString('Введите Ваше имя:');
Writeln($'Здравствуйте, {имя}!');
end.

View File

@ -0,0 +1,8 @@
// Демонстрация операции shl
begin
Writeln('Степени двойки');
Writeln(' n 2^n');
for var i:=0 to 30 do
Writeln(i:2,(1 shl i):12);
end.

View File

@ -0,0 +1,14 @@
// Стандартные функции
var x: real;
begin
write('Введите x: ');
Readln(x);
Writeln('Квадрат ',x,' равен ',Sqr(x));
Writeln(x,' в степени 5 равно ',Power(x,5));
Writeln('Квадратный корень из ',x,' равен ',Sqrt(x));
Writeln('Модуль ',x,' равен ',Abs(x));
Writeln('Натуральный логарифм ',x,' равен ',Ln(x));
Writeln('Синус ',x,' равен ',Sin(x));
Writeln('Косинус ',x,' равен ',Cos(x));
end.

Some files were not shown because too many files have changed in this diff Show More