PascalABC.NET официальный канал
رفتن به کانال در Telegram
Официальный канал языка и системы программирования PascalABC.NET
نمایش بیشتر1 859
مشترکین
+124 ساعت
-127 روز
-2330 روز
آرشیو پست ها
Явное указание типа при описании
Описание переменных с автовыведением типа - отличная возможность для начинающих. Однако есть ситуации, в которых тип надо указывать явно. Одна из них - алгоритм вычисления минимума из двух чисел
В комментариях приводите другие ситуации, где уместно использовать явное указание типа
Набросок кода в стиле pandas
Машинное обучение - повсюду. Здесь законодатель мод - Python. Самые известные библиотеки - его.
Пробуем написать датафрейм в стиле модуля pandas на PascalABC.NET
https://gist.github.com/miks1965/8fdc63abea3bc822ec0f136ab62101f4
PascalABC.NET в российских Линуксах. Alt Linux 10.1 - лучший выбор!
В серии постов мы расскажем, как работает PascalABC.NET в каждом из российских Линуксов. Это будет отражением большого количества проблем, с которыми столкнулись разработчики PascalABC.NET при такой интеграции.
Начнем с Alt Linux Образование 10.1. Это - самый удачный пример интеграции. Здесь PascalABC.NET 3.9.0 включен в официальный репозиторий. Он инсталлируется одной кнопкой вместе с платформой Mono и работает без проблем. Для отображения справочной системы используется kchmviewer, который также устанавливается при инсталляции PascalABC.NET.
rpm-пакет для PascalABC.NET также создали разработчики Alt Linux, за что им - огромное спасибо!
Именно поэтому Alt Linux - лучший!
Количество проблем - минимально. Конечно, работает только графика GraphABC и не работает задачник Programming Taskbook. Зато переписан полностью и работает дебаггер. Работает также легковесный задачник.
Реализация методов, аналогичных Where и Select
Реализовать методы, аналогичные Where т Select& крайне просто. Здесь - самое интересное, что реализовать Where копированием в массив затруднительно, поскольку неизвестно, сколько в нем будет элементов.
Перемножение матриц для бедных
Матрицы можно легко перемножить, используя метод Zip для последовательностей. Каждый элемент c[i,j] результирующей матрицы - это скалярное произведение i-той строки матрицы a на j-тый столбец матрицы b.
Безымянные классы
В PascalABC.NET есть не только безымянные функции, но и безымянные классы. Их не надо описывать в разделе type, но они в отличие от кортежей имеют именованные поля
AsParallel - ускорение запросов за счет распараллеливания
AsParallel представляет собой самое простое распараллеливание, которое осуществляется прямо в цепочке методов
Ускорение соответствует количеству ядер в процессоре.
Конвертация элементов матрицы
Матрицу можно преобразовать в другую матрицу того же размера, используя метод матриц Convert.
На скрине показан пример преобразования строк матрицы в зависимости от номера строки. Использована полная форма лямбда-функции, в которой для возврата значения используется переменная Result.
Пользовательские генераторы последовательностей
Пользовательские генераторы последовательностей используют оператор yield для генерации следующего элемента. Значения локальных переменных сохраняются между вызовами.
Сериализация в PascalABC.NET
Любой объект в PascalABC.NET можно сериализовать в файл и потом десериализовать из файла.
При десериализации лучше явно привести к исходному типу когда это возможно.
Две странные программы
Не запуская программы (!!!), ответьте на вопрос, что выведет каждая.
Что вы думаете по этому поводу?
Сортировка составных данных по ключу
Для того чтобы отсортировать массив составных объектов (например, кортежей), указываем в процедуре Sort вторым параметром лямбду, проектирующую элемент массива на ключ сортировки.
В примере на скриншоте мы вначале сортируем кортежи по первому полю, затем - по второму.
Один урок по методам запросов к массивам в Компьютерной школе мехмата ЮФУ
https://youtu.be/WAeFHupKVMs
Живой урок. Ученики в классе, показывается презентация. Голоса учеников к сожалению не слышны - микрофон ноутбука узконаправленный. Паузы тоже живые. Комментарии - приветствуются.
Тема абсолютно замечательная - запросы Where, All, Any, OrderBy, PrintLines, Min-Max-Average с проекцией, MinBy, GroupBy. Вывод промежуточных данных в цепочке методов. Подробное представление о группировке, сортировка по ключу группы.
И - очень интересная реакция учеников - почти сразу они начинают подсказывать, в какое место и какой надо вставить запрос для решения задачи.
В массовой школе ничего этого нет, на олимпиадах - нет, на ЕГЭ - встречается в разборах Константина Полякова.
Видео будет удалено примерно через месяц.
Изменения в языке Delphi 12.0
Возможности языков программирования взаимопроникают друг в друга. То, что было возможно в PascalABC.NET 15 лет назад, стало возможно и в Delphi.
Наконец в Delphi 12.0 можно использовать автовывод типов, внутриблочные переменные и описание счетчика цикла прямо в заголовке цикла.
Сумма элементов каждой строки матрицы
Используем a.Rows, преобразующую двумерный массив в массив массивов по строкам
Вышел Delphi Rad Studio 12.0
Список изменений - здесь
docwiki.embarcadero.com/RADStudio/Athens/en/What's_New
* Нравятся мультистроки '''
* Сравнение с NaN в PascalABC.NET давно так, а они только сделали
* Ну а это "Added new TArray methods: IndexOf, LastIndexOf, Contains" просто списали
Промышленное программирование и всё остальное
Часто приходится слышать, что какой-то язык не используется в промышленном программировании. При этом определение промышленного программирования отличается. Некоторые говорят, что это программирование "на дядю за деньги", другие - что это - программирование систем для промышленных предприятий с полным циклом разработки и поддержки.
Такое деление программирования на промышленное и все остальное крайне узко.
Разберемся, какое бывает программирование.
Академическое программирование
Научное программирование
Олимпиадное программирование
Школьное программирование
Системное программирование
Программирование как автоматизация деятельности (возможно для непрофессионалов)
Программирование for fun - любительские pet-проекты.
Надеемся, читатели предложат другие виды программирования
Часто приходится слышать как люди, увидев код в PascalАВС.NЕТ в точечной нотации, говорят: "А, тут LINQ используется...". И это зачастую совершенно неверно.
https://teletype.in/@ralex061/7-SJ8KZvjLI
Простые запросы к датасетам в коде на PascalABC.NET
На скриншоте - первое из многих заданий на обработку последовательностей составных данных.
Вновь повторимся - этого нет ни в одном школьном учебнике, эта тематика отсутствует в олимпиадах по программированию и не представлена на ЕГЭ.
Может, в консерватории что то надо менять?
