PascalABC.NET официальный канал
Відкрити в Telegram
Официальный канал языка и системы программирования PascalABC.NET
Показати більше1 857
Підписники
+124 години
-127 днів
-2330 днів
Архів дописів
Решение задач под управлением модуля невидимой проверки
Хотите попробовать, как решать задачи под управлением модуля невидимой автоматической проверки? Попробуйте прямо сейчас!
Для этого скачайте последнюю версию PascalABC.NET, откройте Примеры\CheckedTasks\LightPT\УрокМассивы. Выберите любую задачу и попробуйте решить!
Делитесь впечатлениями в комментариях!
Как быстро нарисовать 100000 окружностей
Используем FastDraw и рисование на DrawingContext
#графика
Публикация о новой версии на opennet.ru
Новостной ИТ-сайт opennet.ru опубликовал сообщение о выходе версии PascalABC.NET 3.9.0:
https://www.opennet.ru/opennews/art.shtml?num=59497
К сожалению, именованные аргументы названы именованными атрибутами, а основное изменение в языке - поддержка ковариантных параметров обобщений - упомянута через запятую вскользь в последнем пункте.
Сайт OpenNet.ru известен своей смелостью - он продолжает публиковать новости о выходе новых версий PascalABC.NET несмотря на резко негативный тон комментариев своих читателей. Обсуждения здесь прекрасны, иногда попадаются настоящие жемчужины (см. скриншот).
Выделение содержимого всех строковых констант в файле
Пользуемся регулярными выражениями.
Для апострофа пользуемся ESC-последовательностью \'. Поскольку это апостроф как символ внутри строковой константы, то повторяем его дважды \''
Поскольку нам не нужны сами апострофы, а только их содержимое, пользуемся утверждениями положительного просмотра назад и вперед соответственно.
Как не надо вычислять максимум
Очень часто можно встретить в ЕГЭшных задачах такой код вычисления максимума. Он абсолютно неэффективен. Но пишется чтобы сэкономить несколько символов.
Он пришел на волне тотальной популярности языка Питон, на котором массово пишут короткий неэффективный код. Эти привычки потом остаются на всю жизнь.
На Питоне кстати ввиду его неэффективности скорость программы с условным оператором и функцией Max одинакова.
Греческие буквы в именах
Имена в PascalABC.NET могут быть буквами любого алфавита
Греческие буквы в именах
Имена в PascalABC.NET могут быть буквами любого алфавита
Литеральный массив
Литеральный массив может содержать различные числовые типы - в качестве типов элементов массива выбирается наиболее общий числовой тип.
На скриншоте - литеральный массив, заданный целыми и вещественными
PascalABC.NET в Astra Linux
На портале https://easyastra.ru/TEST/ опубликован deb-пакет для PascalABC.NET.
Пишем интерпретатор на PascalABC.NET. Визиторы по синтаксическому дереву
В данной статье мы рассматриваем важный для создания интерпретаторов и достаточно сложный паттерн проектирования Визитор, применяем его к нашему синтаксическому дереву и реализуем конкретный визитор для упрощенного вывода текста программы, занимающий около 20 строк.
https://teletype.in/@pascalabcnet/Visitors
Вышла версия PascalABC.NET 3.9.0 Release
Основные изменения - здесь: https://pascalabcnet.github.io/mydoc_release_notes_3_9_0.html
Обучение вводу в цикле
Рассмотрим простую задачу: вводится 10 целых, найти их сумму.
Существует много методик обучения подобных коротких задач. Одна из них используется нами.
Вначале пишем шаблон общей программы: цикл 10 раз и ВВОД В ЦИКЛЕ.
Затем дочитываем условие задачи и анализируем, что надо найти. Поскольку надо найти сумму, пишем после ввода sum += x и запускаем программу. Компилятор выдаст ошибку.
Далее вспомним, что переменная sum должна быть описана до цикла и подумаем, какое начальное значение ей надо присвоить.
И наконец, запустим программу, убедимся, что мы забыли вывести результат, и выведем его после цикла.
Такой способ решения похож на методику быстрой разработки программ, используемую в production: в каждый момент времени у нас есть работающая программа. Он позволяет школьнику зафиксировать частичный успех.
Впоследствии по данному шаблону решается огромное количество задач с фильтрацией, подсчетом количества, минимумами-максимумами и проч.
#методика
#начинающим
Вредные советы для C++ и не только
Публикуем великолепную коллекцию вредных советов от PVS Studio - как не надо писать на C++: https://pvs-studio.ru/ru/blog/posts/cpp/1053/
Половина советов - универсальные и не зависят от языка программирования.
Самые замечательные вредные советы:
🔹 Чем короче имя переменной, тем лучше
🔹 Если что-то не работает, то, скорее всего, глючит компилятор. Попробуйте поменять местами некоторые переменные и строки кода
🔹 Используйте как можно меньше фигурных скобок и переносов строк, старайтесь писать условные конструкции в одну строку. Так код будет быстрее компилироваться и занимать меньше места
🔹 Не пользуйтесь стандартной библиотекой языка. Что может быть интереснее, чем написать свои строки и списки с уникальным синтаксисом и семантикой?
🔹 Глобальные переменные очень удобны, т. к. к ним можно обращаться отовсюду.
🔹 Смело сравнивайте числа с плавающей точкой с помощью оператора ==. Раз есть такой оператор, значит им нужно пользоваться
🔹 Зачем инициализировать переменные, если там и так нули? Я вот недавно не инициализировал, и там ноль был. Всё работало.
🔹 Выравнивание и единый стиль не дают раскрыться вашей индивидуальности и креативности. Это притеснение свободы личности и самовыражения. Каждый должен оформлять код так, как ему нравится.
🔹 Экономьте память. Используйте одну переменную для разных целей!
🔹 Массив на стеке — лучшее решение. И вообще, выделение памяти — зло. char c[256] хватит всем, а если не хватит, то потом поменяем на 512. В крайнем случае – на 1024.
🔹 Нет времени думать, копируйте код многократно!
🔹 Если программа работает, как вы ожидали, значит она правильная. И обсуждать здесь нечего, точка. Everything is fine
🔹 Проявите немного уважения к программистам прошлого – объявляйте все переменные в начале функций. Это традиция!
🔹 Прося помощь на форуме, делайте так, чтобы из тебя вытягивали информацию. Так всем будет интереснее
🔹 Настоящие программисты программируют только на C++
Новая стандартная функция RandomReal
В PascalABC.NET появилась новая стандартная функция RandomReal(a,b,digits). Параметр digits определяет колмчество знаков после точки и по умолчанию равен 1.
В примере на скриншоте демонстрируется генерация 10 случайных вещественных с двумя знаками после десятичной точки
#новое
Пишем интерпретатор на PascalABC.NET. Интерпретатор по синтаксическому дереву
Наконец-то! Интерпретатор на 657 строк, по скорости равный Питону!
https://teletype.in/@pascalabcnet/InterpretASTTree
Пишем интерпретатор на PascalABC.NET. Интерпретатор по синтаксическому дереву
Наконец-то! Интерпретатор на 657 строк, по скорости равный Питону!
https://teletype.in/@pascalabcnet/InterpretASTTree
Группировка данных по категории
Имеется набор данных - каждое данное принадлежит к некоторой категории (например, рост человека - ниже среднего, средний и выше среднего.
Сгруппировать данные по категориям и посчитать количество в каждой категории.
Умножение матриц
Данный код перемножает две матрицы 3 на 4 и 4 на 5. Одна строка!
#OneLiner
Умножение матриц
Данный код перемножает две матрицы 3 на 4 и 4 на 5. Одна строка!
#OneLiner
