Проект PascalABC.NET - статистика кода
В структуре проекта PascalABC.NET есть маленький файл LinesCount, написанный на PascalABC.NET, который считает количество строк кода проекта, написанных на C# и самом PascalABC.NET.
Запустив его, можно убедиться, что проект PascalABC.NET содержит более миллиона строк кода на языке C# и порядка 180 тысяч строк кода на самом PascalABC.NET.
В структуре проекта PascalABC.NET есть маленький файл LinesCount, написанный на PascalABC.NET, который считает количество строк кода проекта, написанных на C# и самом PascalABC.NET.
Запустив его, можно убедиться, что проект PascalABC.NET содержит более миллиона строк кода на языке C# и порядка 180 тысяч строк кода на самом PascalABC.NET.
IV Конференция "Использование системы программирования PascalABC.NET в обучении программированию". Избранные доклады
Михалкович С.С. Доклад "Модуль невидимой автоматической проверки заданий"
https://www.youtube.com/watch?v=Tak9pvw3yFc
Михалкович С.С. Доклад "Модуль невидимой автоматической проверки заданий"
https://www.youtube.com/watch?v=Tak9pvw3yFc
YouTube
Модуль невидимой автоматической проверки заданий
Михалкович С.С. Модуль невидимой автоматической проверки
заданий. Концепция рекомендующей и проверяющей системы для проверки решений заданий начинающих программистов, а также методика использования данной системы в обучении программированию.
Конференция ««Использование…
заданий. Концепция рекомендующей и проверяющей системы для проверки решений заданий начинающих программистов, а также методика использования данной системы в обучении программированию.
Конференция ««Использование…
Задача о ханойских башнях
Задача о ханойских башнях - пример, показывающий мощность и краткость использования рекурсии.
Постановка задачи - на слайде. Чтобы переложить пирамиду из n дисков с 1 стержня на 3, перекладываем вначале рекурсивно пирамиду из n-1 диска с 1 стержня на 2, затем перекладываем самый большой диск с 1 на 3 и наконец перекладываем пирамиду их n-1 диска со 2 стержня на 3. Бинго!
Обожаю эту задачу! Мои коллеги из Бостона, зная это, привезли мне в подарок эту головоломку - решаю её прямо сейчас!
Задача о ханойских башнях - пример, показывающий мощность и краткость использования рекурсии.
Постановка задачи - на слайде. Чтобы переложить пирамиду из n дисков с 1 стержня на 3, перекладываем вначале рекурсивно пирамиду из n-1 диска с 1 стержня на 2, затем перекладываем самый большой диск с 1 на 3 и наконец перекладываем пирамиду их n-1 диска со 2 стержня на 3. Бинго!
Обожаю эту задачу! Мои коллеги из Бостона, зная это, привезли мне в подарок эту головоломку - решаю её прямо сейчас!
This media is not supported in your browser
VIEW IN TELEGRAM
Фигуры Лиссажу
Вот такая программа
#графика
Вот такая программа
##реализует движение по траектории, называемой фигурой Лиссажу. Здесь используется анимация на основе кадра. Функция Pos задает параметрическое уравнение кривой Лиссажу
uses GraphWPF;
function Pos(t: real) :=
Pnt(350*cos(4*t)+400, 250*cos(2.9*t + 2*Pi/3)+300);
Window.Title := 'Фигуры Лиссажу';
var t := 0.0;
var v := 0.2;
OnDrawFrame := dt -> begin
t += dt * v;
Circle(Pos(t),50,Colors.Green);
end;
#графика
Модуль PlotWPF - визуализация данных
Модуль PlotWPF позволяет легко визуализировать данные, заданные в виде набора точек. На скриншоте - два способа: точечный график и линейный график.
Некую сложность представляет задание массивов точек: первый элемент надо делать вещественным чтобы массив-константа интерпретировался как вещественный.
#графика
Модуль PlotWPF позволяет легко визуализировать данные, заданные в виде набора точек. На скриншоте - два способа: точечный график и линейный график.
Некую сложность представляет задание массивов точек: первый элемент надо делать вещественным чтобы массив-константа интерпретировался как вещественный.
#графика
Перегрузка операций как методов расширения
Можно перегружать еще не определенные операции над типами. На скриншоте показана перегрузка операции декартового произведения и декартовой степени для последовательностей как методов расширения
#студентам
Можно перегружать еще не определенные операции над типами. На скриншоте показана перегрузка операции декартового произведения и декартовой степени для последовательностей как методов расширения
#студентам
Машинное обучение в PascalABC.NET
Пакет Microsoft.ML реализует множество задач машинного обучения. В отличие от библиотек Python, мы получаем проверку ошибок во время компиляции и более эффективные алгоритмы.
На скриншоте - проект, строящий модель KMeans по широко известному датасету цветков Ириса и затем предсказывающий вид конкретного цветка Ириса с использованием натренированной модели.
#машинное обучение
#студентам
Пакет Microsoft.ML реализует множество задач машинного обучения. В отличие от библиотек Python, мы получаем проверку ошибок во время компиляции и более эффективные алгоритмы.
На скриншоте - проект, строящий модель KMeans по широко известному датасету цветков Ириса и затем предсказывающий вид конкретного цветка Ириса с использованием натренированной модели.
#машинное обучение
#студентам
Модуль 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.
Алгоритм быстрой сортировки
Алгоритм быстрой сортировки - самый быстрый в среднем на произвольных данных.
Суть алгоритма QuickSort проста: в массиве
отсортированные элементы <= опорного
опорный
отсортированные элементы > опорного
#студентам
Алгоритм быстрой сортировки - самый быстрый в среднем на произвольных данных.
Суть алгоритма QuickSort проста: в массиве
a
выбирается некоторый опорный элемент - обычно первый. После этого оставшиеся элементы массива делятся на две части: те, которые меньше или равны опорному и те, которые больше опорного. Данное действие реализуется функцией Partition, возвращающей индекс последнего элемента в первой части. Затем к каждой части рекурсивно применяется функция QuickSort и затем полученные части сливаются: отсортированные элементы <= опорного
опорный
отсортированные элементы > опорного
#студентам
Простой текстовый редактор
Простой текстовый редактор на 6 строк. Демонстрация событий, обработчиков, лямбд и условной операции
#начинающим
Простой текстовый редактор на 6 строк. Демонстрация событий, обработчиков, лямбд и условной операции
#начинающим
Генерация всех перестановок длины n
Алгоритм - рекурсивный. Для каждого элемента переставляем его с последним, рекурсивно вызываем функцию для всех элементов кроме последнего и затем снова переставляем текущий с последним. В итоге на последнем месте побывают все элементы.
Всякий раз когда количество рассматриваемых элементов массива равно 1 - выводим весь массив.
Мы не могли удержаться - использовали обобщенную функцию, генерирующую последовательность перестановок, операторы yield и yield sequence. Поскольку всё равно ничего непонятно - а так хоть универсально будет :)
#студентам
Алгоритм - рекурсивный. Для каждого элемента переставляем его с последним, рекурсивно вызываем функцию для всех элементов кроме последнего и затем снова переставляем текущий с последним. В итоге на последнем месте побывают все элементы.
Всякий раз когда количество рассматриваемых элементов массива равно 1 - выводим весь массив.
Мы не могли удержаться - использовали обобщенную функцию, генерирующую последовательность перестановок, операторы yield и yield sequence. Поскольку всё равно ничего непонятно - а так хоть универсально будет :)
#студентам
Создание случайного бинарного дерева
Для создания бинарного дерева, заполненного случайными числами, используется простой рекурсивный алгоритм.
Печать всей структуры бинарного дерева осуществляется процедурой Print.
#студентам
Для создания бинарного дерева, заполненного случайными числами, используется простой рекурсивный алгоритм.
Печать всей структуры бинарного дерева осуществляется процедурой Print.
#студентам
Случайная последовательность
Последовательности ленивы - они генерируются в момент запроса. Это приводит к интересным эффектам. Если переменная q хранит случайную последовательность, то всякий раз при обращении к ней генерируется новая случайная последовательность.
Если требуется использовать одну и ту же случайную последовательность - сохраните её в массиве.
Последовательности ленивы - они генерируются в момент запроса. Это приводит к интересным эффектам. Если переменная q хранит случайную последовательность, то всякий раз при обращении к ней генерируется новая случайная последовательность.
Если требуется использовать одну и ту же случайную последовательность - сохраните её в массиве.
Demo2023.zip
7.6 KB
Решение всех задач демоварианта 2023 по информатике
Алексей Богданов приводит решение всех задач демо ЕГЭ 2023 по информатике кодом на PascalABC.NET
#школьнику
#учителю
Алексей Богданов приводит решение всех задач демо ЕГЭ 2023 по информатике кодом на PascalABC.NET
#школьнику
#учителю
Отражение
Отражение - это механизм в .NET, который позволяет посмотреть содержимое любого типа. На скриншоте - все методы класса DateTime
#NET
Отражение - это механизм в .NET, который позволяет посмотреть содержимое любого типа. На скриншоте - все методы класса DateTime
#NET
Сортировка деревом
На скрине вы видите одну из самых быстрых сортировок - сортировку с помощью бинарного дерева поиска. Её асимптотическая сложность в среднем - O(n log(n)) - такая же как и у быстрой сортировки Хоара.
Просто добавляем элементы в дерево: если элемент меньше корня, то добавляем в левое поддерево, если больше значения в корне - добавляем в правое поддерево.
И потом печатаем дерево - элементы в нем уже отсортированы.
На скрине вы видите одну из самых быстрых сортировок - сортировку с помощью бинарного дерева поиска. Её асимптотическая сложность в среднем - O(n log(n)) - такая же как и у быстрой сортировки Хоара.
Просто добавляем элементы в дерево: если элемент меньше корня, то добавляем в левое поддерево, если больше значения в корне - добавляем в правое поддерево.
И потом печатаем дерево - элементы в нем уже отсортированы.
Множество строк, независимое от регистра
Как сделать множество строк, независимое от регистра?
Передать в конструкторе множества параметр System.StringComparer.OrdinalIgnoreCase.
#студентам
Как сделать множество строк, независимое от регистра?
Передать в конструкторе множества параметр System.StringComparer.OrdinalIgnoreCase.
#студентам