Примеры - устранил неточности

LightPT - имя сервера вынес в публичную секцию
This commit is contained in:
Mikhalkovich Stanislav 2025-01-04 14:44:51 +03:00
parent b68b8da970
commit c2347e604b
28 changed files with 131 additions and 173 deletions

View file

@ -1064,7 +1064,7 @@ namespace CodeCompletion
description = description.Replace("!#", "");
// Пусть здесь делаем все замены
// Для рекурсивных <<>> нужно писать собственный парсер
description = System.Text.RegularExpressions.Regex.Replace(description, @"NewSet<\s*(.*)\s*>", "set of $1");
//description = System.Text.RegularExpressions.Regex.Replace(description, @"NewSet<\s*(.*)\s*>", "set of $1");
}
return description;
}

View file

@ -16,9 +16,9 @@ begin
end;
end;
Writeln('Простые числа < ',n,':');
Writeln(primes);
Writeln;
Writeln('Время вычисления: ',Milliseconds/1000);
Println('Простые числа <',n,':');
Println(primes);
Println;
Println('Время вычисления:',Milliseconds/1000);
end.

View file

@ -37,7 +37,7 @@ const n = 20;
begin
var a := ArrRandom(n);
Println('До сортировки: ');
Writeln(a);
Println(a);
QuickSort(a,0,a.Length-1);
Println('После сортировки: ');
Println(a);

View file

@ -1,7 +1,7 @@
// Вывод английских согласных
var vowel: string := 'aeiouy';
begin
var all := Range('a','z').JoinIntoString('');
var vowel: string := 'aeiouy';
var all := ('a'..'z').JoinToString;
all.Except(vowel).Println;
end.

View file

@ -1,4 +1,4 @@
// Первые 3 минимума
begin
ArrRandom(20).Println.Sorted.Distinct.Take(3).Println;
ArrRandom(20).Println.Distinct.Order.Take(3).Println;
end.

View file

@ -1,6 +1,6 @@
// Вывод таблицы значений функции sin
// Вывод таблицы значений функции sin
##
PartitionPoints(0,Pi,20).Select(x->$'({x:f4}, {sin(x):f7})').PrintLines;
begin
PartitionPoints(0,Pi,20).Select(x->Format('({0:f4}, {1:f7})',x,sin(x))).Println(NewLine);
end.

View file

@ -1,7 +1,7 @@
// Вычисление числа Pi методом Монте-Карло
// Вычисление числа Pi методом Монте-Карло
begin
var n := 10000000;
var pp := Range(1,n).Select(x->Rec(Random(),Random())).Where(p->sqr(p.Item1)+sqr(p.Item2)<1).Count/n*4;
var pp := (1..n).Select(x->(Random(),Random())).Where(p->sqr(p[0])+sqr(p[1])<1).Count/n*4;
Print(pp);
end.

View file

@ -1,7 +1,7 @@
begin
begin
var d := new Dictionary<string,integer>;
foreach var s in ReadLines('TextFileCount.pas') do
foreach var word in s.ToWords(' ',':',')','(',';','''',',','.','=','<','>','[',']','+','-') do
foreach var word in s.ToWords(AllDelimiters) do
d[word] := d.Get(word) + 1;
d.Print(NewLine);
d.PrintLines;
end.

View file

@ -1,7 +1,6 @@
begin
var d := Dict('begin' => 0);
var delims := Seq(' ',')','(',';','''',',','.','[',']',#10,#13);
var words := ReadAllText('TextFileCount1.pas').ToWords(delims);
begin
var d := Dict('begin' to 0);
var words := ReadAllText('TextFileCount1.pas').ToWords(AllDelimiters);
foreach var word in words do
d[word] := d.Get(word) + 1;
d.Print(NewLine);

View file

@ -1,12 +1,9 @@
// Использование длинных целых. Вычисление 100!
{$reference 'System.Numerics.dll'}
uses System.Numerics;
var n := 100;
// Использование длинных целых. Вычисление 100!
begin
var f := new BigInteger(1);
var n := 100;
var f: BigInteger := 1;
for var i:=2 to n do
f := f * i;
writelnFormat('{0}! = {1}',n,f);
Print($'{n}! = {f}');
end.

View file

@ -1,17 +1,14 @@
// Использование комплексных чисел
{$reference 'System.Numerics.dll'}
uses System.Numerics;
// Использование комплексных чисел
begin
var a := new Complex(0,1);
writeln('Мнимая единица: ', a);
Println('Мнимая единица: ', a);
var b := Complex.Sqrt(a);
writeln('Главный корень из мнимой единицы: ', b);
var b := Sqrt(a);
Println('Главный корень из мнимой единицы: ', b);
var c := a*a;
writeln('Квадрат мнимой единицы: ', c);
Println('Квадрат мнимой единицы: ', c);
var d := new Complex(1,2);
writelnFormat('Модуль {0} равен {1}', d,d.Magnitude);
var d := Cplx(1,2);
Println($'Модуль {ObjectToString(d)} равен {d.Magnitude}');
end.

View file

@ -1,10 +1,7 @@
// Создание кортежей
uses System;
begin
var a := Tuple.Create('Иванов',24);
writeln(a.Item1,' ',a.Item2);
begin
var a := ('Иванов',24);
Println(a[0],a[1]);
var b := Tuple.Create('Петров',17,1,11);
writeln(b.Item1,' ',b.Item2,' ',b.Item3,' ',b.Item4);
var b := ('Петров',17,1,11);
Println(b.Item1,b.Item2,b.Item3,b.Item4);
end.

View file

@ -1,37 +1,24 @@
Uses System, PABCSystem;
const Size = 10;
procedure PrintArray<T>(a: array of T);
begin
foreach v: T in a do
Write(v, ' ');
Writeln;
end;
var a: array of integer;
const Size = 10;
begin
SetLength(a, Size);
// Заполнение массива
for var i:=0 to a.Length-1 do
a[i] := Random(100);
var a := ArrRandomInteger(Size);
// Вывод всех элементов массива
PrintArray(a);
a.Println;
// Сортировка массива (знак & используется для того,
// чтобы воспользоваться ключевым словом array при обозначении класса Array)
&Array.Sort(a);
Sort(a);
PrintArray(a);
a.Println;
// Обращение массива
&Array.Reverse(a);
Reverse(a);
PrintArray(a);
a.Println;
// Поиск вхождения элемента в массив
var i := &Array.IndexOf(a, 99);
Writeln(i);
var i := a.IndexOf(99);
Println(i);
end.

View file

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

View file

@ -1,34 +1,30 @@
Uses System;
var
d: DateTime;
s: string;
Uses System;
begin
s := '27.03.2008 9:58:17';
var s := '03.27.2008 9:58:17';
//Попытка преобразования строки в объект DateTime
var d: DateTime;
if not DateTime.TryParse(s, d) then
begin
Writeln('Строка не содержит значение даты и времени');
Println('Строка не содержит значение даты и времени');
Exit;
end;
// Проверка високосности заданного года с помощью статического метода
if DateTime.IsLeapYear(d.Year) then
Writeln('Год високосный')
Println('Год високосный')
else
Writeln('Год невисокосный');
Println('Год невисокосный');
// Преобразование даты и времени в строковое представление
s := d.ToString;
Writeln(s);
Println(s);
// Преобразование даты в строковое представление
s := d.ToShortDateString;
Writeln(s);
Println(s);
// Преобразование времени в строковое представление
s := d.ToShortTimeString;
Writeln(s);
Println(s);
end.

View file

@ -1,16 +1,14 @@
// Работа с классом System.DateTime
// Работа с классом System.DateTime
// Вычисление времени выполнения фрагмента кода
uses System, PABCSystem;
var dt: DateTime := DateTime.Now;
begin
var dt: DateTime := DateTime.Now;
// Делаем случайную паузу
var ms := Random(1000);
Writeln('Sleep','(',ms,')');
Sleep(ms);
// Сравниваем с показаниями DateTime.Now
Writeln((DateTime.Now-dt).TotalMilliseconds,'ms');
Println((DateTime.Now-dt).TotalMilliseconds,'ms');
end.

View file

@ -1,10 +1,10 @@
uses
uses
System, System.Net, System.Threading.Tasks, System.Collections.Generic;
type
ListSimple = class
l := new List<int64>();
procedure AddSimple(N: int64);
procedure AddPrime(N: int64);
begin
var Result := True;
for var i: int64 := 2 to round(sqrt(N)) do
@ -29,29 +29,29 @@ begin
var ii: int64 := 1265713689181;
Parallel.For(ii,ii+hh,ls.AddSimple);
Parallel.For(ii,ii+hh,ls.AddPrime);
writeln(ls.l.Count);
Println(ls.l.Count);
// ls.l := ls.l.OrderBy(x->x).ToList(); - это можно включить для проверки того, что в обоих списках - одинаковые простые числа
for var i:=0 to ls.l.Count-1 do
write(ls.l[i],' ');
Print(ls.l[i]);
// Надо обратить внимание, что выводится неупорядоченная последовательность простых чисел !
writeln;
writeln('Время выполнения = ',Milliseconds);
Println;
Println('Время выполнения =',Milliseconds);
// То же, но непараллельно
var ls1 := new ListSimple;
var t := Milliseconds;
for var i:=ii to ii+hh-1 do
ls1.AddSimple(i);
writeln(ls1.l.Count);
ls1.AddPrime(i);
Println(ls1.l.Count);
for var i:=0 to ls1.l.Count-1 do
write(ls1.l[i],' ');
writeln;
writeln('Время выполнения = ',Milliseconds-t);
Println;
Println('Время выполнения =',Milliseconds-t);
// Проверка того, что списки простых как множества совпадают
writeln('Количество элементов в разности множеств = ',ls.l.Except(ls1.l).Count());
Println('Количество элементов в разности множеств = ',ls.l.Except(ls1.l).Count());
end.

View file

@ -1,15 +1,13 @@
var
s: string;
i: integer;
r: real;

begin
// Преобразование строки в число
s := '123,3443'; // Дробная часть отделяется запятой - настройки Windows
var s := '123,3443'; // Дробная часть отделяется запятой - настройки Windows
var r: real;
if not real.TryParse(s, r) then
Writeln('Строка s не является строковым представлением вещественного числа')
else Writeln(r);
var i: integer;
if not integer.TryParse(s, i) then
Writeln('Строка s не является строковым представлением целого числа');

View file

@ -1,13 +1,11 @@
var s1,s2: string;
begin
begin
// Определение длины строки
s1 := 'ABCDEFGH';
var s1 := 'ABCDEFGH';
Writeln(s1.Length);
// Сравнение строк без учета регистра символов
s1 := 'AAA';
s2 := 'aaa';
var s2 := 'aaa';
if String.Compare(s1, s2, {ignoreCase - без учета регистра} true) = 0 then
Writeln('Строки совпадают с точностью до регистра букв');

View file

@ -1,9 +1,7 @@
var s1,s2: string;
begin
begin
// Извлечение подстрок
s1 := 'ABCDEFGH';
s2 := s1.Substring( ачальная_позиция = } 3);
var s1 := 'ABCDEFGH';
var s2 := s1.Substring( ачальная_позиция = } 3);
Writeln(s2);
s2 := s1.Substring(3, {длина_подстроки = } 2);

View file

@ -1,26 +1,20 @@
uses System;
var
str_arr: array of string;
int_arr: array of integer;
s: string := '12 765 765 76';
begin
begin
var s: string := '12 765 765 76';
// Разбиение строки на массив подстрок с заданным разелителем
str_arr := s.Split(' ');
var str_arr: array of string := s.Split;
// Соединение массива подстрок с новым разделителем
s := string.Join('+', str_arr);
Write(s, '=');
s := str_arr.JoinToString(' + ');
Write(s, ' = ');
// Формирование целочисленного массива по массиву подстрок
SetLength(int_arr, str_arr.Length);
var int_arr := new integer[str_arr.Length];
for var i:=0 to int_arr.Length-1 do
integer.TryParse(str_arr[i], int_arr[i]);
// Вычисление суммы элементов целочисленного массива
var sum := 0;
foreach v: integer in int_arr do
foreach var v: integer in int_arr do
sum += v;
Writeln(sum);
end.

View file

@ -1,30 +1,32 @@
//События, +=, -=, демонстрация работы таймера System.Timers.Timer
//События, +=, -=, демонстрация работы таймера System.Timers.Timer
uses System;
var Timer:System.Timers.Timer;
x:integer;
exit:boolean;
var
Timer: System.Timers.Timer;
x: integer;
exit: boolean;
procedure OnTimer2(sender:object; e:System.Timers.ElapsedEventArgs);
procedure OnTimer2(sender: object; e: System.Timers.ElapsedEventArgs);
begin
Writeln(x);
x:=x+1;
exit:=x>=10;
x := x + 1;
exit := x >= 10;
end;
procedure OnTimer1(sender:object; e:System.Timers.ElapsedEventArgs);
procedure OnTimer1(sender: object; e: System.Timers.ElapsedEventArgs);
begin
Writeln(e.SignalTime);
x:=x+1;
if x>=5 then begin
Timer.Elapsed-=OnTimer1;
Timer.Elapsed+=OnTimer2;
x := x + 1;
if x >= 5 then begin
Timer.Elapsed -= OnTimer1;
Timer.Elapsed += OnTimer2;
end;
end;
begin
Exit:=false;
Timer:=System.Timers.Timer.Create(1000);
Timer.Elapsed+=OnTimer1;
Exit := false;
Timer := System.Timers.Timer.Create(1000);
Timer.Elapsed += OnTimer1;
Timer.Start;
while not exit do
Sleep(Round(Timer.Interval));

View file

@ -1,4 +1,4 @@
uses Turtle,GraphWPF;
uses Turtle;
var
Atom,FStr,XStr,YStr: string;
@ -8,7 +8,7 @@ var
procedure Init1; // Dragon
begin
(Atom,FStr,XStr,YStr) := ('fx','f','x+yf+','-fx-y');
(angle,len,n,x0,y0) := (90,3,15,300,450);
(angle,len,n,x0,y0) := (90,0.1,15,7,0);
end;
procedure Init2; // Koch curve
@ -43,6 +43,7 @@ begin
end;
begin
Sleep(100);
Init1;
ToPoint(x0,y0);
SetWidth(0.5);

View file

@ -1,4 +1,4 @@
uses Turtle,GraphWPF;
uses Turtle;
var
Atom,FStr,XStr,YStr: string;
@ -8,13 +8,13 @@ var
procedure Init1; // Dragon
begin
(Atom,FStr,XStr,YStr) := ('fx','f','x+yf+','-fx-y');
(angle,len,n,x0,y0) := (90,3,15,300,450);
(angle,len,n,x0,y0) := (90,0.1,15,7,0);
end;
procedure Init2; // Koch curve
begin
(Atom,FStr,XStr,YStr) := ('F', 'F-F++F-F', '', '');
(angle,len,n,x0,y0) := (60,5,7,10,550);
(angle,len,n,x0,y0) := (60,0.012,7,-13,0);
end;
procedure Init3; // Quadratic Koch Island
@ -48,6 +48,7 @@ begin
SetWidth(0.5);
//SetColor(Colors.Red);
Down;
Turn(90);
RunStr(Atom,n);
Up;
end.

View file

@ -20,7 +20,7 @@ end;
procedure Init3; // Quadratic Koch Island
begin
(Atom,FStr,XStr,YStr) := ('F+F+F+F', 'F+F-FF+F+F-F', '', '');
(angle,len,n,x0,y0) := (90,4,4,250,450);
(angle,len,n,x0,y0) := (90,0.15,4,8,-1);
end;
procedure Init4; // Gosper hexagonal curve

View file

@ -26,7 +26,7 @@ end;
procedure Init4; // Gosper hexagonal curve
begin
(Atom,FStr,XStr,YStr) := ('XF', 'F', 'X+YF++YF-FX--FXFX-YF+','-FX+YFYF++YF+FX--FX-Y');
(angle,len,n,x0,y0) := (60,4,5,580,56);
(angle,len,n,x0,y0) := (60,0.13,5,-8,6);
end;
procedure RunStr(s: string; n: integer);

View file

@ -7,6 +7,9 @@ interface
uses System.Runtime.InteropServices;
var
ServerAddr := 'https://air.mmcs.sfedu.ru/pascalabc';
{==============================================================}
{ Класс для формирования вывода }
{==============================================================}
@ -646,8 +649,6 @@ var
LessonName: string := '';
TaskNamesMap := new Dictionary<string,string>;
ServerAddr := 'https://air.mmcs.sfedu.ru/pascalabc';
// Дополнительные сообщения о записи в удаленную базу данных
additionalMessages := False;

View file

@ -288,7 +288,7 @@ end;
procedure InitOnce; // Это тоже относится к Черепахе
begin
Window.Title := 'Исполнитель Черепаха';
Font.Size := 12;
Font.Size := 14;
Pen.RoundCap := True;
end;