Квайн на PascalABC.NET
Квайн (quine) - это программа, печатающая свой текст. При этом запрещено использовать технические приёмы (например, считывание из файла) или специфические хакерские приемы конкретного языка программирования.
Ниже приводится квайн на PascalABC.NET.
Квайн (quine) - это программа, печатающая свой текст. При этом запрещено использовать технические приёмы (например, считывание из файла) или специфические хакерские приемы конкретного языка программирования.
Ниже приводится квайн на PascalABC.NET.
## var q:='''';var s:='## var q:=;var s:=;Print(s[:11]+q+q+q+q+s[11:19]+q+s+q+s[19:])';Print(s[:11]+q+q+q+q+s[11:19]+q+s+q+s[19:])На скриншоте видно, что программа печатает свой код.
Множество массивов кортежей и прочие звери
Как описать и заполнить множество массивов кортежей? Это просто:
В построении такой структуры данных нам помогают синтаксические конструкции для построения литеральных кортежей и массивов, а также создающая функция HSet.
Второй вопрос - а как вывести такую структуру? Ответ еще более прост:
множества выводятся в {}
массивы и списки выводятся в []
кортежи выводятся в ()
#PascalABC
Как описать и заполнить множество массивов кортежей? Это просто:
var d := HSet(|(1,'hi'),(3,'oh')|,
|(5,'wulf'),(7,'dog')|,
|(9,'bad'),(10,'light')|
);
Не надо указывать тип - он автоматически выводится компилятором. На всякий случай - тип такой:d: HashSet<array of (integer,string)>
Видно, что компилятор проделывает большую работу.В построении такой структуры данных нам помогают синтаксические конструкции для построения литеральных кортежей и массивов, а также создающая функция HSet.
Второй вопрос - а как вывести такую структуру? Ответ еще более прост:
Print(d);
Функция Print - умная - и умеет выводит все структурированные типы. Обратите внимание, что множества выводятся в {}
массивы и списки выводятся в []
кортежи выводятся в ()
#PascalABC
Сравнение производительности программ на Python, PascalABC.NET и C++ при полном переборе
В официальном youtube-канале PascalABC.NET опубликовано сравнение производительности программ, решающих некоторую задачу полного перебора, на языках Python, PascalABC.NET и C++ от Максима Пучкина. Используются все средства ускорения программ.
https://www.youtube.com/watch?v=7eU1lFKEZvc
#производительность
В официальном youtube-канале PascalABC.NET опубликовано сравнение производительности программ, решающих некоторую задачу полного перебора, на языках Python, PascalABC.NET и C++ от Максима Пучкина. Используются все средства ускорения программ.
https://www.youtube.com/watch?v=7eU1lFKEZvc
#производительность
YouTube
Ускоряем решение переборной задачи на разных языках программирования
Попытка решения одного из вариантов 27 задачи ЕГЭ по информатике "в лоб", полным перебором, на трёх основных языках программирования.
Используем "штатные" средства языков (ну ладно, Python получает допинг в виде NumPy), и пытаемся максимально ускорить решение…
Используем "штатные" средства языков (ну ладно, Python получает допинг в виде NumPy), и пытаемся максимально ускорить решение…
Упрощённая структура модуля в PascalABC.NET
Почему начинающие не пишут модули в старом Паскале? Потому что они сложные.
В PascalABC.NET имеются модули упрощенной структуры. Это просто коллекция процедур, функций, типов. Сделать такой модуль легко, пользоваться еще легче
#начинающим
#PascalABC
Почему начинающие не пишут модули в старом Паскале? Потому что они сложные.
В PascalABC.NET имеются модули упрощенной структуры. Это просто коллекция процедур, функций, типов. Сделать такой модуль легко, пользоваться еще легче
#начинающим
#PascalABC
Ковёр Серпинского в 3D
Видели ли вы когда-нибудь ковёр Серпинского в 3D? А он есть! Вот он - на скрине.
И программа:
#графика
Видели ли вы когда-нибудь ковёр Серпинского в 3D? А он есть! Вот он - на скрине.
И программа:
uses Graph3D;#3D
var SColor := Arr(Colors.Yellow,Colors.Blue,Colors.Red,Colors.Black,Colors.Purple);
procedure Serpinsky(x,y,z,w: real; n: integer);
begin
if n = 0 then exit;
w := w/3;
Box(x,y,z,w,w,w,n=1 ? RandomColor: SColor[n]);
for var i:=-1 to 1 do
for var j:=-1 to 1 do
for var k:=-1 to 1 do
Serpinsky(x+i*w,y+j*w,z+k*w,w,n-1);
end;
begin
View3D.HideAll;
Serpinsky(0,0,0,10,3);
end.
#графика
Немного про кеширование
Современные процессоры упреждающе считывают в кеш процессора следующие данные. Кеш - более быстрый чем оперативная память. Этим можно пользоваться для небольшого ускорения программ.
На скриншоте - две процедуры. Вторая на каждой итерации цикла пользуется двумя соседними элементами массива. Это позволяет немного ускорить вычисления
Современные процессоры упреждающе считывают в кеш процессора следующие данные. Кеш - более быстрый чем оперативная память. Этим можно пользоваться для небольшого ускорения программ.
На скриншоте - две процедуры. Вторая на каждой итерации цикла пользуется двумя соседними элементами массива. Это позволяет немного ускорить вычисления
Новая модификация метода Each
В PascalABC.NET 3.8.3.3253 появилась модификация метода Each, позволяющая создавать словари по последовательности ключей, инициализируя их указанными значениями.
Таким способом удобно заводить словари счётчиков, инициализированные нулями.
На скриншоте - создание словаря счетчиков с ключами, являющимися латинскими буквами, и словаря счетчиков, связанных с набором строк.
#новое
В PascalABC.NET 3.8.3.3253 появилась модификация метода Each, позволяющая создавать словари по последовательности ключей, инициализируя их указанными значениями.
Таким способом удобно заводить словари счётчиков, инициализированные нулями.
На скриншоте - создание словаря счетчиков с ключами, являющимися латинскими буквами, и словаря счетчиков, связанных с набором строк.
#новое
Замена с помощью регулярного выражения
С помощью регулярных выражений можно заменять в строках одни подстроки на другие. Делается это либо с помощью подстановки вида $0, либо с помощью лямбды, преобразующей захваченный Match в подстроку.
#регулярные_выражения
С помощью регулярных выражений можно заменять в строках одни подстроки на другие. Делается это либо с помощью подстановки вида $0, либо с помощью лямбды, преобразующей захваченный Match в подстроку.
#регулярные_выражения
OneLiner для вывода таблицы умножения
OneLinerы - это программы, состоящие из одной строки, решающие какую-то задачу. OneLinerы распространились на языке Python, поскольку он позволял коротко записывать решения задач
PascalABC.NET активно подключился к этому спорту.
На скриншоте - программа, выводящая таблицу умножения.
Обращает на себя внимание техническая часть: для моделирования вложенных циклов используется Cartesian, а чтобы вывод сделать построчным, используется Batch с последующим превращением каждой подпоследовательности в строку
#oneliner
OneLinerы - это программы, состоящие из одной строки, решающие какую-то задачу. OneLinerы распространились на языке Python, поскольку он позволял коротко записывать решения задач
PascalABC.NET активно подключился к этому спорту.
На скриншоте - программа, выводящая таблицу умножения.
Обращает на себя внимание техническая часть: для моделирования вложенных циклов используется Cartesian, а чтобы вывод сделать построчным, используется Batch с последующим превращением каждой подпоследовательности в строку
#oneliner
Свободный софт - он такой свободный!
https://www.cnews.ru/news/top/2023-03-16_razrabotchiki_linux_nachali_goneniya
https://www.cnews.ru/news/top/2023-03-16_razrabotchiki_linux_nachali_goneniya
CNews.ru
Разработчики Linux начали гонения на россиян. «Байкал Электроникс» запретили работать над ядром ОС - CNews
Сообщество разработчиков Linux отказалось принимать правки в код ядра системы от российской компании «Байкал Электроникс»...
Скрипт статистики зарегистрированных участников конференции
На PascalABC.NET в одну строчку легко пишутся скрипты для анализа csv-файлов.
На скриншоте - скрипт анализа зарегистрированных участников конференции по городам. Живые данные на 15.03
На PascalABC.NET в одну строчку легко пишутся скрипты для анализа csv-файлов.
На скриншоте - скрипт анализа зарегистрированных участников конференции по городам. Живые данные на 15.03
Свойства в PascalABC.NET
Свойства в PascalABC.NET заимствованы из Delphi.
Свойства - это "умные" поля, которые при чтении и записи могут делать дополнительные действия, а также ограничивать доступ (например, только на чтение.
На скриншоте - класс Person со свойством Name только на чтение и со свойством Age, не позволяющим присвоить отрицательный возраст
#ООП
Свойства в PascalABC.NET заимствованы из Delphi.
Свойства - это "умные" поля, которые при чтении и записи могут делать дополнительные действия, а также ограничивать доступ (например, только на чтение.
На скриншоте - класс Person со свойством Name только на чтение и со свойством Age, не позволяющим присвоить отрицательный возраст
#ООП
Модуль WPFObjects - векторная графика для начинающих
Модуль WPFObjects для обучения начинающих созданием объектов и управлением ими через методы и свойства
На скриншоте - управление свойствами квадрата и окружности.
#начинающим
Модуль WPFObjects для обучения начинающих созданием объектов и управлением ими через методы и свойства
На скриншоте - управление свойствами квадрата и окружности.
#начинающим
WPFObjects - перемещение объектов мышью
Модуль WPFObjects позволяет писать простые интерактивные программы, взаимодействующие с мышью.
На скриншоте - программа, реализующая обработчики мыши, где реализуется функциональность перемещения объекта мышью.
#графика
#начинающим
#методика
Модуль WPFObjects позволяет писать простые интерактивные программы, взаимодействующие с мышью.
На скриншоте - программа, реализующая обработчики мыши, где реализуется функциональность перемещения объекта мышью.
#графика
#начинающим
#методика
Операции ?. и ??
Исключение использования нулевой ссылки встречается очень часто. Операции ?. и ?? позволяют не выбрасывать исключение.
В примере на слайде если p = nil, то p.Name сгенерирует исключение, а p?.Name вернет nil. p?.Age также вернет nil, но операция ?? позволяет задать значение по умолчанию.
Итог: для нулевой персоны имя тоже нулевое, а возраст - 17 лет.
Исключение использования нулевой ссылки встречается очень часто. Операции ?. и ?? позволяют не выбрасывать исключение.
В примере на слайде если p = nil, то p.Name сгенерирует исключение, а p?.Name вернет nil. p?.Age также вернет nil, но операция ?? позволяет задать значение по умолчанию.
Итог: для нулевой персоны имя тоже нулевое, а возраст - 17 лет.
PABC_vs_Python-6.pdf
6.9 MB
Доклад о сравнении PascalABC.NET и Python
Доклад о сравнении PascalABC.NET и Python на III конференции «Использование системы программирования PascalABC.NET в обучении программированию»
Видео на youtube
#конференция
Доклад о сравнении PascalABC.NET и Python на III конференции «Использование системы программирования PascalABC.NET в обучении программированию»
Видео на youtube
#конференция
Написание Telegram-бота в PascalABC.NET
Доклад Пучкина М.В. о написании Telegram-бота в PascalABC.NET на III конференции «Использование системы программирования PascalABC.NET в обучении программированию»
https://www.youtube.com/watch?v=WA2Q3ivnrac&t=3s
На PascalABC.NET несложно писать прикладные программы в разных предметных областях. Библиотека платформы .NET, и современные языковые конструкции позволяют делать это легко.
Доклад Пучкина М.В. о написании Telegram-бота в PascalABC.NET на III конференции «Использование системы программирования PascalABC.NET в обучении программированию»
https://www.youtube.com/watch?v=WA2Q3ivnrac&t=3s
На PascalABC.NET несложно писать прикладные программы в разных предметных областях. Библиотека платформы .NET, и современные языковые конструкции позволяют делать это легко.
YouTube
Написание Telegram-бота в PascalABC.NET
Доклад Пучкина М.В. на третьей всероссийской конференции «Использование системы программирования PascalABC.NET в обучении программированию», 2021.
Презентация: http://pascalabc.net/downloads/PABCConf2021/Presentations/Puchkin-Telegram-bot.pdf
Презентация: http://pascalabc.net/downloads/PABCConf2021/Presentations/Puchkin-Telegram-bot.pdf
Вся правда о лямбда-выражениях
Надо ли учить школьников лямбда-выражениям? Надо!
Доклад Демяненко Я.М. о лямбда выражениях на III конференции «Использование системы программирования PascalABC.NET в обучении программированию».
https://www.youtube.com/watch?v=V7qQFbyaM-c
Только правда, ни грамма лжи!
#начинающим
#преподавателям
Надо ли учить школьников лямбда-выражениям? Надо!
Доклад Демяненко Я.М. о лямбда выражениях на III конференции «Использование системы программирования PascalABC.NET в обучении программированию».
https://www.youtube.com/watch?v=V7qQFbyaM-c
Только правда, ни грамма лжи!
#начинающим
#преподавателям
YouTube
Вся правда о лямбда-выражениях
Доклад Демяненко Я.М. на третьей всероссийской конференции «Использование системы программирования PascalABC.NET в обучении программированию», 2021.
Презентация: http://pascalabc.net/downloads/PABCConf2021/Presentations/Demyanenko-Lambdas.pdf
Презентация: http://pascalabc.net/downloads/PABCConf2021/Presentations/Demyanenko-Lambdas.pdf