Модуль PlotWPF - визуализация данных
Модуль PlotWPF позволяет легко визуализировать данные, заданные в виде набора точек. На скриншоте - два способа: точечный график и линейный график.
Некую сложность представляет задание массивов точек: первый элемент надо делать вещественным чтобы массив-константа интерпретировался как вещественный.
#графика
Модуль PlotWPF позволяет легко визуализировать данные, заданные в виде набора точек. На скриншоте - два способа: точечный график и линейный график.
Некую сложность представляет задание массивов точек: первый элемент надо делать вещественным чтобы массив-константа интерпретировался как вещественный.
#графика
👍10
Перегрузка операций как методов расширения
Можно перегружать еще не определенные операции над типами. На скриншоте показана перегрузка операции декартового произведения и декартовой степени для последовательностей как методов расширения
#студентам
Можно перегружать еще не определенные операции над типами. На скриншоте показана перегрузка операции декартового произведения и декартовой степени для последовательностей как методов расширения
#студентам
👍7
Машинное обучение в PascalABC.NET
Пакет Microsoft.ML реализует множество задач машинного обучения. В отличие от библиотек Python, мы получаем проверку ошибок во время компиляции и более эффективные алгоритмы.
На скриншоте - проект, строящий модель KMeans по широко известному датасету цветков Ириса и затем предсказывающий вид конкретного цветка Ириса с использованием натренированной модели.
#машинное обучение
#студентам
Пакет Microsoft.ML реализует множество задач машинного обучения. В отличие от библиотек Python, мы получаем проверку ошибок во время компиляции и более эффективные алгоритмы.
На скриншоте - проект, строящий модель KMeans по широко известному датасету цветков Ириса и затем предсказывающий вид конкретного цветка Ириса с использованием натренированной модели.
#машинное обучение
#студентам
👍10⚡2
Модуль Sounds
Модуль Sounds позволяет привязать проигрывание звука к какому-нибудь событию:
Модуль Sounds позволяет привязать проигрывание звука к какому-нибудь событию:
uses Sounds,GraphWPF,Controls;
begin
var ss: Sound;
var b1 := Button(10,10,'Play',100);
var b2 := Button(10,50,'Stop',100);
b1.Click := procedure -> begin
if ss<>nil then
exit;
ss := new Sound('d:\www.mp3');
ss.Play;
end;
b2.Click += procedure -> begin
if ss<>nil then
ss.Stop;
ss := nil
end;
end.
👍17❤3
Алгоритм быстрой сортировки
Алгоритм быстрой сортировки - самый быстрый в среднем на произвольных данных.
Суть алгоритма QuickSort проста: в массиве
отсортированные элементы <= опорного
опорный
отсортированные элементы > опорного
#студентам
Алгоритм быстрой сортировки - самый быстрый в среднем на произвольных данных.
Суть алгоритма QuickSort проста: в массиве
a
выбирается некоторый опорный элемент - обычно первый. После этого оставшиеся элементы массива делятся на две части: те, которые меньше или равны опорному и те, которые больше опорного. Данное действие реализуется функцией Partition, возвращающей индекс последнего элемента в первой части. Затем к каждой части рекурсивно применяется функция QuickSort и затем полученные части сливаются: отсортированные элементы <= опорного
опорный
отсортированные элементы > опорного
#студентам
👍3👎1🤯1
Простой текстовый редактор
Простой текстовый редактор на 6 строк. Демонстрация событий, обработчиков, лямбд и условной операции
#начинающим
Простой текстовый редактор на 6 строк. Демонстрация событий, обработчиков, лямбд и условной операции
#начинающим
👍9
Генерация всех перестановок длины n
Алгоритм - рекурсивный. Для каждого элемента переставляем его с последним, рекурсивно вызываем функцию для всех элементов кроме последнего и затем снова переставляем текущий с последним. В итоге на последнем месте побывают все элементы.
Всякий раз когда количество рассматриваемых элементов массива равно 1 - выводим весь массив.
Мы не могли удержаться - использовали обобщенную функцию, генерирующую последовательность перестановок, операторы yield и yield sequence. Поскольку всё равно ничего непонятно - а так хоть универсально будет :)
#студентам
Алгоритм - рекурсивный. Для каждого элемента переставляем его с последним, рекурсивно вызываем функцию для всех элементов кроме последнего и затем снова переставляем текущий с последним. В итоге на последнем месте побывают все элементы.
Всякий раз когда количество рассматриваемых элементов массива равно 1 - выводим весь массив.
Мы не могли удержаться - использовали обобщенную функцию, генерирующую последовательность перестановок, операторы yield и yield sequence. Поскольку всё равно ничего непонятно - а так хоть универсально будет :)
#студентам
👍4
Создание случайного бинарного дерева
Для создания бинарного дерева, заполненного случайными числами, используется простой рекурсивный алгоритм.
Печать всей структуры бинарного дерева осуществляется процедурой Print.
#студентам
Для создания бинарного дерева, заполненного случайными числами, используется простой рекурсивный алгоритм.
Печать всей структуры бинарного дерева осуществляется процедурой Print.
#студентам
❤1
Случайная последовательность
Последовательности ленивы - они генерируются в момент запроса. Это приводит к интересным эффектам. Если переменная q хранит случайную последовательность, то всякий раз при обращении к ней генерируется новая случайная последовательность.
Если требуется использовать одну и ту же случайную последовательность - сохраните её в массиве.
Последовательности ленивы - они генерируются в момент запроса. Это приводит к интересным эффектам. Если переменная q хранит случайную последовательность, то всякий раз при обращении к ней генерируется новая случайная последовательность.
Если требуется использовать одну и ту же случайную последовательность - сохраните её в массиве.
👍5❤2
Demo2023.zip
7.6 KB
Решение всех задач демоварианта 2023 по информатике
Алексей Богданов приводит решение всех задач демо ЕГЭ 2023 по информатике кодом на PascalABC.NET
#школьнику
#учителю
Алексей Богданов приводит решение всех задач демо ЕГЭ 2023 по информатике кодом на PascalABC.NET
#школьнику
#учителю
👍4
Отражение
Отражение - это механизм в .NET, который позволяет посмотреть содержимое любого типа. На скриншоте - все методы класса DateTime
#NET
Отражение - это механизм в .NET, который позволяет посмотреть содержимое любого типа. На скриншоте - все методы класса DateTime
#NET
👍2❤1
Сортировка деревом
На скрине вы видите одну из самых быстрых сортировок - сортировку с помощью бинарного дерева поиска. Её асимптотическая сложность в среднем - O(n log(n)) - такая же как и у быстрой сортировки Хоара.
Просто добавляем элементы в дерево: если элемент меньше корня, то добавляем в левое поддерево, если больше значения в корне - добавляем в правое поддерево.
И потом печатаем дерево - элементы в нем уже отсортированы.
На скрине вы видите одну из самых быстрых сортировок - сортировку с помощью бинарного дерева поиска. Её асимптотическая сложность в среднем - O(n log(n)) - такая же как и у быстрой сортировки Хоара.
Просто добавляем элементы в дерево: если элемент меньше корня, то добавляем в левое поддерево, если больше значения в корне - добавляем в правое поддерево.
И потом печатаем дерево - элементы в нем уже отсортированы.
🔥3👍1
Множество строк, независимое от регистра
Как сделать множество строк, независимое от регистра?
Передать в конструкторе множества параметр System.StringComparer.OrdinalIgnoreCase.
#студентам
Как сделать множество строк, независимое от регистра?
Передать в конструкторе множества параметр System.StringComparer.OrdinalIgnoreCase.
#студентам
👍5
Вывод вещественного массива
Вывод элементов вещественного массива неудобен тем, что выводятся все значащие цифры вещественного числа - их как правило 14-15.
Чтобы сделать вывод более компактным можно выводить данные например с двумя знаками после точки. Сделать это можно двумя способами:
1. Преобразовать данные, используя Round(x,2)
2. Выводить данные по формату, используя формат x,4:f2 в форматной строке
#начинающим
#учителям
Вывод элементов вещественного массива неудобен тем, что выводятся все значащие цифры вещественного числа - их как правило 14-15.
Чтобы сделать вывод более компактным можно выводить данные например с двумя знаками после точки. Сделать это можно двумя способами:
1. Преобразовать данные, используя Round(x,2)
2. Выводить данные по формату, используя формат x,4:f2 в форматной строке
#начинающим
#учителям
👍3
PascalABC.NET версии 3.9.0 beta
Вышел PascalABC.NET версии 3.9.0 beta.
Список изменений - здесь: https://pascalabcnet.github.io/mydoc_release_notes_3_9_0.html
Основные изменения: ковариантные параметры обобщений, аргументы по умолчанию при вызове подпрограммы, модуль автоматической проверки LightPT.
Вышел PascalABC.NET версии 3.9.0 beta.
Список изменений - здесь: https://pascalabcnet.github.io/mydoc_release_notes_3_9_0.html
Основные изменения: ковариантные параметры обобщений, аргументы по умолчанию при вызове подпрограммы, модуль автоматической проверки LightPT.
👍6
Наследование классов
Один класс может быть наследником другого. В этом случае он наследует все его поля и методы. Методы можно переопределять.
На изображении - программа, в которой эллипс наследуется от круга, добавляя второй радиус и переопределяя метод Draw.
#ООП
Один класс может быть наследником другого. В этом случае он наследует все его поля и методы. Методы можно переопределять.
На изображении - программа, в которой эллипс наследуется от круга, добавляя второй радиус и переопределяя метод Draw.
#ООП
👍5
Наследование с ограничением
В примере из предыдущего поста можно поступить наоборот - унаследовать окружность от эллипса.
Такое наследование называется наследованием с ограничениями и приводит к ряду проблем, которые надо учитывать.
Одна из таких проблем здесь - метод обновления радиуса, который приходится переопределять в потомке: в круге необходимо менять оба радиуса эллипса. Однако такой вид наследования с некоторыми оговорками также используется.
#студентам
#ООП
В примере из предыдущего поста можно поступить наоборот - унаследовать окружность от эллипса.
Такое наследование называется наследованием с ограничениями и приводит к ряду проблем, которые надо учитывать.
Одна из таких проблем здесь - метод обновления радиуса, который приходится переопределять в потомке: в круге необходимо менять оба радиуса эллипса. Однако такой вид наследования с некоторыми оговорками также используется.
#студентам
#ООП