Описание переменной внутри выражения
В PascalABC.NET появилась возможность описывать переменные внутри выражения. Это удобно в ряде сценариев
#новое
В PascalABC.NET появилась возможность описывать переменные внутри выражения. Это удобно в ряде сценариев
#новое
Range для вещественных
Реализована стандартная функция Range с шагом для вещественных. Несмотря на ошибки округления, если программист указывает длину отрезка, кратную шагу, то обе границы всегда входят в последовательность.
#новое
Реализована стандартная функция Range с шагом для вещественных. Несмотря на ошибки округления, если программист указывает длину отрезка, кратную шагу, то обе границы всегда входят в последовательность.
#новое
Сортировка строк в стандартном модуле
В последней версии скорректирована сортировка строк в стандартной библиотеке.
Теперь строки сортируются в лексикографическом порядке согласно кодам символов. В частности, большие буквы идут перед маленькими.
Поведение по умолчанию в NET игнорирует регистр букв. Вы можете это увидеть на примере стандартного OrderBy в первой строке - результат сортировки:
что не ожидаемо
#новое
В последней версии скорректирована сортировка строк в стандартной библиотеке.
Теперь строки сортируются в лексикографическом порядке согласно кодам символов. В частности, большие буквы идут перед маленькими.
Поведение по умолчанию в NET игнорирует регистр букв. Вы можете это увидеть на примере стандартного OrderBy в первой строке - результат сортировки:
KОт колосс собака Сова
что не ожидаемо
#новое
Новый стандартный модуль WPF
В PascalABC.NET появился новый стандартный модуль WPF. Он позволяет создавать оконные приложения, основанные на технологии WPF.
Данный модуль будет в ближайшее время активно дополняться.
В отличите от модулей GraphWPF и WPFObjects, ориентированных на графику, в модуле WPF отсутствуют типы-обёртки. Это позволяет использовать все типы, методы и свойства компонентов WPF.
В стандартных примерах Samples\StandardUnits\WPF можно посмотреть ряд примеров.
Публикуем пример с использованием панели DockPanel.
#новое
В PascalABC.NET появился новый стандартный модуль WPF. Он позволяет создавать оконные приложения, основанные на технологии WPF.
Данный модуль будет в ближайшее время активно дополняться.
В отличите от модулей GraphWPF и WPFObjects, ориентированных на графику, в модуле WPF отсутствуют типы-обёртки. Это позволяет использовать все типы, методы и свойства компонентов WPF.
В стандартных примерах Samples\StandardUnits\WPF можно посмотреть ряд примеров.
Публикуем пример с использованием панели DockPanel.
uses WPF;
begin
var dpanel := DockPanel.Create.AsMainContent;
var b := Controls.Button('One',Width := 100).AddTo(dpanel,Dock.Left);
var b1 := Controls.Button('Two',Width := 100).AddTo(dpanel,Dock.Right);
var b2 := Controls.Button('Three',Height := 50).AddTo(dpanel,Dock.Top);
var b3 := Controls.Button('Four',Height := 50).AddTo(dpanel,Dock.Bottom);
var b4 := Controls.Button('Five').AddTo(dpanel);
b.Click += (o,e) -> begin
MainWindow.Close
end;
end.
#новое
Новый метод расширения Scan
В стандартном модуле появился новый метод расширения последовательностей Scan.
Он выполняет то же, что и .Aggregate, но возвращает элемент новой последовательности не в конце, а после обработки каждого элемента исходной последовательности.
Этот метод обобщает метод PartialSum и может использоваться например для вычисления частичных минимумов и частичных максимумов.
#новое
В стандартном модуле появился новый метод расширения последовательностей Scan.
Он выполняет то же, что и .Aggregate, но возвращает элемент новой последовательности не в конце, а после обработки каждого элемента исходной последовательности.
Этот метод обобщает метод PartialSum и может использоваться например для вычисления частичных минимумов и частичных максимумов.
#новое
Многострочные строковые литералы '''
В PascalABC.NET появились Multiline строковые литералы, которые недавно появились в таких языках как C# 11, Delphi 12, Java 22.
Строки с открывающими и закрывающими кавычками не должны содержать непробельных символов.
Во всех строках игнорируется отступ, равный отступу последней строки.
#новое
В PascalABC.NET появились Multiline строковые литералы, которые недавно появились в таких языках как C# 11, Delphi 12, Java 22.
Строки с открывающими и закрывающими кавычками не должны содержать непробельных символов.
Во всех строках игнорируется отступ, равный отступу последней строки.
#новое
Модуль WPF - парсинг оконных элементов из XAML-строки
В модуле WPF появилась возможность создавать оконные элементы, загружая их из XAML-строки. XAML-строку удобно задавать, используя синтаксис многострочных строковых литералов.
Чтобы затем воспользоваться дочерними элементами в программе, необходимо сопоставить их переменным и затем привязать обработчики.
На скриншоте - программа, иллюстрирующая создание StackPanel с двумя оконными элементами, сопоставление дочерним элементам переменных программы и затем привязка обработчика, меняющего текст в TextBlockе в зависимости от текста в TextBox.
#новое
В модуле WPF появилась возможность создавать оконные элементы, загружая их из XAML-строки. XAML-строку удобно задавать, используя синтаксис многострочных строковых литералов.
Чтобы затем воспользоваться дочерними элементами в программе, необходимо сопоставить их переменным и затем привязать обработчики.
На скриншоте - программа, иллюстрирующая создание StackPanel с двумя оконными элементами, сопоставление дочерним элементам переменных программы и затем привязка обработчика, меняющего текст в TextBlockе в зависимости от текста в TextBox.
#новое
Новый метод строк ToLines
В стандартной библиотеке появился новый метод строк ToLines, разбивающий многострочную строку на отдельные строки
Это удобно также при считывании файла как отдельной строки:
#новое
В стандартной библиотеке появился новый метод строк ToLines, разбивающий многострочную строку на отдельные строки
Это удобно также при считывании файла как отдельной строки:
ReadAllText('a.txt').ToLines
#новое
Оптимизировано множественное присваивание
Закончена работа по оптимизации множественного присваивания. Один из результатов можно видеть на скриншоте: данная программа ускорена примерно в 2 раза.
Нетрудно проверить, что аналогичная программа, написанная на C#, работает в 2 раза медленнее.
Это - основной результат выпускной работы бакалавра направления ФИИТ мехмата ЮФУ Филонова Александра: https://pascalabc.net/downloads/Diploms/Opt_Tuple_Assignment_Filonov.pdf
#новое
Закончена работа по оптимизации множественного присваивания. Один из результатов можно видеть на скриншоте: данная программа ускорена примерно в 2 раза.
Нетрудно проверить, что аналогичная программа, написанная на C#, работает в 2 раза медленнее.
Это - основной результат выпускной работы бакалавра направления ФИИТ мехмата ЮФУ Филонова Александра: https://pascalabc.net/downloads/Diploms/Opt_Tuple_Assignment_Filonov.pdf
#новое
Изменения, связанные со словарями
Готовимся к версии 3.10.
Из Kotlinа перекочевал ряд методов, конструкций и операций со словарями.
Вывод:
#новое
Готовимся к версии 3.10.
Из Kotlinа перекочевал ряд методов, конструкций и операций со словарями.
begin
// Новая операция 1 to 2 - синоним KV(1,2)
var d := Dict('cat' to 'кошка', 'dog' to 'собака');
// Новая функция Pair - синоним KV
var d0 := Dict(Pair('cat', 'кот'), Pair('camel', 'верблюд'));
// Более сложная структура
var dd := Dict('Иванов' to |5, 3, 3|, 'Петров' to |4, 4|);
// Копия словаря
var d1 := Dict(d);
// Инициализация массивами ключей и значений
var d2 := Dict(|11, 22|, |333, 444|);
// Обновление значений и добавление новых
d.Update(d0);
// То же
d += d0;
// Слияние словарей
var d3 := d + Dict('world' to 'мир', 'cloud' to 'облако');
Println(d3);
// Вычитание пар с данными ключами
d3 -= Seq('cat', 'camel');
Println(d3);
d3 := d3 - 'world';
Println(d3);
end.
Вывод:
{(cat,кот),(dog,собака),(camel,верблюд),(world,мир),(cloud,облако)}
{(dog,собака),(world,мир),(cloud,облако)}
{(dog,собака),(cloud,облако)}
#новое
Внешние функции Zip и Cartesian
В стандартной библиотеке реализованы внешние функции Zip и Cartesian с количеством последовательностей от 2 до 5 и необязательной функцией проекции
#новое
В стандартной библиотеке реализованы внешние функции Zip и Cartesian с количеством последовательностей от 2 до 5 и необязательной функцией проекции
#новое
Обновлённый модуль Turtle
Обновлён школьный модуль Turtle для Исполнителя Черепаха.
Для знакомства с возможностями можно скачать новую версию и запустить указанную программу.
Обязательно понажимайте Пробел - меняется отображение координат.
Если программа будет тормозить при перерисовке, уменьшите количество итераций в цикле.
Принимаются предложения и сообщения о багах.
#новое
Обновлён школьный модуль Turtle для Исполнителя Черепаха.
uses Turtle;
begin
SetWidth(1.4);
SetColor(Colors.Blue);
//ToPoint(3,0);
Down;
loop 4000 do
begin
//Circle(0.1);
Forw(0.3);
Turn(Random(-120,120));
//Sleep(1);
end;
end.
Для знакомства с возможностями можно скачать новую версию и запустить указанную программу.
Обязательно понажимайте Пробел - меняется отображение координат.
Если программа будет тормозить при перерисовке, уменьшите количество итераций в цикле.
Принимаются предложения и сообщения о багах.
#новое
Функция SetOf
В PascalABC.NET появилась функция SetOf для создания множества.
Она возвращает множество HashSet, но это может измениться.
Функция SetOf введена для обучения начинающих.
На скриншоте - программа вычисления симметрический разности двух множеств.
#новое
В PascalABC.NET появилась функция SetOf для создания множества.
Она возвращает множество HashSet, но это может измениться.
Функция SetOf введена для обучения начинающих.
На скриншоте - программа вычисления симметрический разности двух множеств.
#новое
Преобразование в вещественное, имеющее другой разделитель целой и дробной части
Реализован ряд дополнительных параметров для преобразования строк в вещественные с другим разделителем целой и дробной части
Можно также вызвать глобальную процедуру SetDecimalSeparator(','), которая будет влиять на все последующие преобразования
#новое
Реализован ряд дополнительных параметров для преобразования строк в вещественные с другим разделителем целой и дробной части
Можно также вызвать глобальную процедуру SetDecimalSeparator(','), которая будет влиять на все последующие преобразования
#новое
Визуализация массива точек в Turtle
В модуле Turtle появилась функция визуализации массива точек DrawPoints. В качестве параметров можно передавать либо массив точек, либо массивы абсцисс и ординат точек.
Вот программа, визуализирующая первый тестовый набор точек с двумя кластерами. На скриншоте видно, что к сожалению границы кластера не целочисленные.
#новое
#ЕГЭ
В модуле Turtle появилась функция визуализации массива точек DrawPoints. В качестве параметров можно передавать либо массив точек, либо массивы абсцисс и ординат точек.
Вот программа, визуализирующая первый тестовый набор точек с двумя кластерами. На скриншоте видно, что к сожалению границы кластера не целочисленные.
uses Turtle;
begin
Window.Title := 'Кластеризация';
var a := ReadLines('demo_2025_27_А.txt').Skip(1).JoinToString.ToReals(',').ToArray;
var xx := a[::2];
var yy := a[1::2];
DrawPoints(xx,yy);
end.
#новое
#ЕГЭ
Библиотека MathNet.Numerics.dll
Библиотека математических вычислений MathNet.Numerics.dll интегрирована в инсталлятор PascalABC.NET.
На скриншоте - генерация набора чисел, подчиненного нормальному распределению
#новое
Библиотека математических вычислений MathNet.Numerics.dll интегрирована в инсталлятор PascalABC.NET.
На скриншоте - генерация набора чисел, подчиненного нормальному распределению
#новое
Автоклассы и их предки
В PascalABC.NET стало возможно наследовать автоклассы от классов без полей. Это можно использовать в ряде сценариев.
#новое
В PascalABC.NET стало возможно наследовать автоклассы от классов без полей. Это можно использовать в ряде сценариев.
#новое
Новый модуль Coords
Модуль Coords предназначен для отображения графических элементов с масштабированием. Он позволяет отображать различные графические примитивы без анимации - при масштабировании мышью все примитивы заново "проигрываются" с новым масштабом.
Необходимо скачать новую версию.
На основе модуля Coords написан модуль Turtle.
#новое
Модуль Coords предназначен для отображения графических элементов с масштабированием. Он позволяет отображать различные графические примитивы без анимации - при масштабировании мышью все примитивы заново "проигрываются" с новым масштабом.
Необходимо скачать новую версию.
uses Coords;
function RandomPoint: Point := Pnt(Random(-13,13),Random(-10,10));
begin
DrawPoints(ArrGen(10,i -> RandomPoint),PointRadius := 4);
DrawPoints(ArrGen(10,i -> RandomPoint),PointRadius := 6);
DrawPoint(2,3,Colors.Red);
DrawCircle(1,1,1,Colors.LightBlue);
DrawRectangle(3,2,2,1);
DrawText(3,2,'Hello');
DrawTextUnscaled(0,0,'Текст не масштабируется', Size := 20, Color := Colors.Red);
DrawText(-4,7,'Текст масштабируется', FontName := 'Courier New', Size := 34);
end.
На основе модуля Coords написан модуль Turtle.
#новое
🆕 Новый метод Window.SaveToClipboard
В GraphWPF появился метод Window.SaveToClipboard сохранения содержимого окна в буфер обмена.
Теперь можно легко сохранять содержимое окна прямо в буфер обмена всего одной строкой кода! Это отличное решение для быстрого обмена информацией, создания скриншотов или копирования данных для дальнейшего использования.
🔧 Пример использования:
✨ Что это дает?
✦ Удобство в разработке: быстрое сохранение визуальных данных.
✦ Интеграция с другими приложениями: копируйте данные напрямую и вставляйте в любые другие программы.
✦ Экономия времени: больше не нужно использовать сторонние инструменты для захвата экранов.
Пробуйте новый метод и делитесь своими впечатлениями! 🚀
#новое
В GraphWPF появился метод Window.SaveToClipboard сохранения содержимого окна в буфер обмена.
Теперь можно легко сохранять содержимое окна прямо в буфер обмена всего одной строкой кода! Это отличное решение для быстрого обмена информацией, создания скриншотов или копирования данных для дальнейшего использования.
🔧 Пример использования:
uses GraphWPF;
begin
Circle(200,200,100,Colors.LightBlue);
Window.SaveToClipboard;
end.
✨ Что это дает?
✦ Удобство в разработке: быстрое сохранение визуальных данных.
✦ Интеграция с другими приложениями: копируйте данные напрямую и вставляйте в любые другие программы.
✦ Экономия времени: больше не нужно использовать сторонние инструменты для захвата экранов.
Пробуйте новый метод и делитесь своими впечатлениями! 🚀
#новое