ch
Feedback
PascalABC.NET официальный канал

PascalABC.NET официальный канал

前往频道在 Telegram

Официальный канал языка и системы программирования PascalABC.NET

显示更多
1 858
订阅者
-224 小时
-137 天
-2430 天
帖子存档
Одна и та же задача на Python и на PascalABC.NET Школьники изучают Python. Сравниваем решение с уже известным на PascalABC.NET. Задача. Дана строка. Найти количество цифр в ней. Решение на Python:
s = "2gf54hg325f352g6jh37gjh587gh78g25f3"
print(len([c for c in s if c.isdigit()]))
Аналогичное решение на PascalABC.NET:
##
var s := '2gf54hg325f352g6jh37gjh587gh78g25f3';
s.Count(c -> c.IsDigit).Print

Чему равен Sqrt из -2? В PascalABC.NET при извлечении корня из отрицательного вещественного возвращается NaN (Not a Number) О
Чему равен Sqrt из -2? В PascalABC.NET при извлечении корня из отрицательного вещественного возвращается NaN (Not a Number) Однако если рассматривать -2 как комплексное число, результат будет другой - это комплексное число. Корней из комплексного числа - два, возвращается только первый из них, соответствующий главной ветви корня.

Scan и перемещения Робота Вот - простая программа, которая с помощью Scan в одну строку позволяет вывести траекторию перемеще
Scan и перемещения Робота Вот - простая программа, которая с помощью Scan в одну строку позволяет вывести траекторию перемещения Робота по начальному положению и командам, задаваемым в виде строки

Новый метод расширения Scan В стандартном модуле появился новый метод расширения последовательностей Scan. Он выполняет то же
Новый метод расширения Scan В стандартном модуле появился новый метод расширения последовательностей Scan. Он выполняет то же, что и .Aggregate, но возвращает элемент новой последовательности не в конце, а после обработки каждого элемента исходной последовательности. Этот метод обобщает метод PartialSum и может использоваться например для вычисления частичных минимумов и частичных максимумов. #новое

1500 подписчиков в нашем телеграм-канале! Прямо сейчас: нас - 1500! https://tgstat.ru/channel/@pascalabc_official/stat Наш ка
1500 подписчиков в нашем телеграм-канале! Прямо сейчас: нас - 1500! https://tgstat.ru/channel/@pascalabc_official/stat Наш канал развивается без всяких накруток, без покупной рекламы и прочего - сюда приходят те, кому интересно современное программирование на PascalABC.NET. Примерно год назад перед IV конференцией по PascalABC.NET у канала было 1000 подписчиков. Это был знаковый повод, летом наметился традиционный отток подписчиков, в сентябре - снова рост. И вот нас - 1500! Нашему каналу всего полтора года, у него достаточно хорошая вовлеченность подписчиков: за сутки новость читают 25%, а всего - около 75%. Каждую публикацию в среднем читает 1070 подписчиков. Поздравляем всех подписчиков канала с замечательной цифрой 1500 :)

День числа π Сегодня - 3.14 - день числа π. Поздравляем всех читателей канала с праздником и публикуем один из алгоритмов выч
День числа π Сегодня - 3.14 - день числа π. Поздравляем всех читателей канала с праздником и публикуем один из алгоритмов вычисления числа π - ряд Нилаканты - без использования стандартных функций. В комментариях предлагайте свои способы!

Новый стандартный модуль WPF В PascalABC.NET появился новый стандартный модуль WPF. Он позволяет создавать оконные приложения
Новый стандартный модуль WPF В PascalABC.NET появился новый стандартный модуль WPF. Он позволяет создавать оконные приложения, основанные на технологии WPF. В отличите от модулей GraphWPF и WPFObjects, ориентированных на графику, в модуле WPF отсутствуют типы-обёртки. Это позволяет использовать все типы, методы и свойства компонентов WPF. В стандартных примерах Samples\StandardUnits\WPF можно посмотреть ряд примеров. Публикуем пример с использованием панели DockPanel.
uses WPF;

begin
  var dpanel := DockPanel.Create.AsMainContent;
  var b := Controls.Button('One',Width := 100).AddTo(dpanel,Dock.Left);
  var b1 := Controls.Button('Two',Width := 100).AddTo(dpanel,Dock.Right);
  var b2 := Controls.Button('Three',Height := 50).AddTo(dpanel,Dock.Top);
  var b3 := Controls.Button('Four',Height := 50).AddTo(dpanel,Dock.Bottom);
  var b4 := Controls.Button('Five').AddTo(dpanel);
  b.Click += (o,e) -> begin
    MainWindow.Close
  end;
end.
#новое

Директивы условной компиляции В PascalABC.NET можно определять директивы условной компиляции, позволяющие компилировать лишь
Директивы условной компиляции В PascalABC.NET можно определять директивы условной компиляции, позволяющие компилировать лишь часть кода по условию. Эти директивы работают с именами, которые можно определять на уровне компилятора. Имеются два предопределенных глобальных имени на уровне компилятора: DEBUG и RELEASE - в режиме компиляции DEBUG определен первый из них, а при снятом флаге Debug определено имя RELEASE. На скриншоте показана программа, запущенная по Shift-F9 в режиме Release.

Метод SeqWhile - развёртка без проекции Метод SeqWhile позволяет сгенерировать рекуррентную последовательность, в которой каж
Метод SeqWhile - развёртка без проекции Метод SeqWhile позволяет сгенерировать рекуррентную последовательность, в которой каждый элемент является функцией предыдущего. Метод SeqWhile имеет также условие завершения последовательности. Единственное, что ему не хватает до полной развертки, - проекция - её необходимо выполнять отдельно с помощью Select. На скриншоте - знакомая всем задача выделения цифр из целого числа.

FloodFill для Picture В модуле GraphABC реализован FloodFill для класса Picture #новое
FloodFill для Picture В модуле GraphABC реализован FloodFill для класса Picture #новое

Развёртка скаляра в последовательность В функциональных языках есть две противоположные операции: Fold - свертка последовател
Развёртка скаляра в последовательность В функциональных языках есть две противоположные операции: Fold - свертка последовательности в скаляр, и UnFold - развёртка скаляра в последовательность. Частными операциями свёртки в PascalABC.NET являются методы .Sum, .Min, .Max, получающие из последовательности одно значение. Самым общим методом свёртки в PascalABC.NET является метод .Aggregate. Развёртки в PascalABC.NET пока нет, однако ее несложно моделировать при помощи цепочки методов Iterate, Select и TakeWhile, Как работает развёртка? - Метод a.Iterate(f) возвращает бесконечную последовательность вида a, f(a), f(f(a)) ... - Затем к полученной последовательности применяется метод Select, проектирующий каждый элемент на новое значение - В конце применяется метод TakeWhile, ограничивающий бесконечную последовательность некоторым условием На скриншоте показана развертка целого числа в последовательность цифр. Обратная операция - Aggregate- сворачивает полученную последовательность назад в целое число.

Методы последовательностей Numerate и Pairwise Данные методы пришли в PascalABC.NET из языка Haskell, который является чисто
Методы последовательностей Numerate и Pairwise Данные методы пришли в PascalABC.NET из языка Haskell, который является чисто функциональным. На скриншоте показано, как данные методы можно моделировать с помощью метода ZipTuple

Изучение Python как второго языка - занятие 2 В компьютерной школе мехмата школьники на 2 году обучения начинают изучать Python. Недавно прошло занятие по спискам. Подводим итоги. Для генерации списка 1 3 5 7 9 11 13 15 17 19 использовали генератор
a = [2*i+1 for i in range(10)]
и сравнивали его с функцией ArrGen на PascalABC.NET:
var a := ArrGen(10, i -> 2*i+1)
Для генерации случайных использовали известный код
from random import *
a = [randint(1,100) for x in range(10)]
против
var a := ArrRandomInteger(10,1,100)
Нахождение суммы алгоритмом выглядело на Python чуть лучше
sum = 0
for x in a:
    if 10 <= x <= 99:
        sum += x
чем
var sum := 0;
foreach var x in a do
    if x in 10..99 then
        sum += x
Однако проверка диапазона двойным равенством не пошла Цикл по индексам
for i in range(len(a)):
ну как-то совсем не понравилась эта куча скобочек - привыкли к
for var i:=0 to a.Length-1 do
Сортировка по убыванию с именованным параметром также вызвала легкий ропот
a.sort(reverse = True)
против
a.SortDescending;
Срезы пошли с удовольствием, т.к. в PascalABC.NET фактически совпадающий синтаксис:
print(a[:5],a[5:],a[::-1])
На каком языке это написано? Фильтрация вызвала неподдельный интерес - долго обсуждали, что лучше
a = [x for x in a if x <= 50]
print(a)
или
a.Where(x -> x <= 50).Println
И наконец комбинация фильтрации и преобразования
a = [x+200 for x in a if x <= 50]
безоговорочно понравилась, Хотя сказали, что
a.Where(x -> x <= 50).Select(x -> x + 200)
тоже неплохо. Общий вывод был такой: один язык хорошо, два - лучше.

Сортировка строк в стандартном модуле В последней версии скорректирована сортировка строк в стандартной библиотеке. Теперь ст
Сортировка строк в стандартном модуле В последней версии скорректирована сортировка строк в стандартной библиотеке. Теперь строки сортируются в лексикографическом порядке согласно кодам символов. В частности, большие буквы идут перед маленькими. Поведение по умолчанию в NET игнорирует регистр букв. Вы можете это увидеть на примере стандартного OrderBy в первой строке - результат сортировки:
KОт колосс собака Сова
что не ожидаемо #новое

Белый дом рекомендовал отказаться от C++ в пользу безопасных языков. https://3dnews.ru/1100993/beliy-dom-rekomendoval-otkazatsya-ot-c-i-c-v-polzu-bezopasnih-yazikov-programmirovaniya Офис директора национальной безопасности Белого дома (ONCD) рекомендовал разработчикам отказаться от использования C и C++ при разработке ПО критической инфраструктуры. Этот совет основан на опасениях по поводу безопасности управления памятью — аспекте, который имеет решающее значение для предотвращения таких уязвимостей, как переполнение буфера и висячие указатели. Национальное агентство по безопасности рекомендует также использовать такие безопасные языки как Rust, Go, C#, Java, Swift, JavaScript, Ruby, Python и Delphi. Эти языки включают в себя механизмы, предотвращающие распространённые типы атак на память, тем самым повышая безопасность разрабатываемых систем. Причем, Python был включен в список недавно - в декабре 2023 года - видимо, долго думали про национальную безопасность. Как мы видим, в этом списке одним из первых присутствует C#, который занимает пятую строчку в рейтинге TIOBE.

Русский Линк (ИЯзЗ) или PascalABC.NET для русских В стандартных модулях PascalABC.NET есть недооцененный модуль Исполнители,
Русский Линк (ИЯзЗ) или PascalABC.NET для русских В стандартных модулях PascalABC.NET есть недооцененный модуль Исполнители, содержащий в частности средства для обучения интегрированному языку запросов Linq на русском. Мы его в шутку перевели как ИЯзЗ. Альтернативные названия приветствуются На скриншоте - программа, иллюстрирующая генерацию случайной последовательности, ее фильтрацию, преобразование и вывод - всё как мы любим. Некоторым нравится писать на русском, но это немного неудобно - надо постоянно переключать регистр. Однако некоторые программы воспринимаются начинающими хорошо.

Что удивительного? Из ФГОС для углубленки удалили Паскаль несмотря на полностью отечественную бесплатную разработку PascalАВС.NЕТ, но сохранили остальные "вражеские" языки. Не зря древние римляне говорили: "Ищи, кому выгодно!".

КуМир прощай Кумир запретили на ЕГЭ по инфе!!! | ЕГЭ информатика 2024 | Имаев Артем 100балльный https://youtu.be/m7qA7assDI0?
КуМир прощай Кумир запретили на ЕГЭ по инфе!!! | ЕГЭ информатика 2024 | Имаев Артем 100балльный https://youtu.be/m7qA7assDI0?t=272 Имаев Артем, репетитор по информатике: "Те, кто занимаются составлением ЕГЭ по информатике, например, Крылов, говорили, что скоро будут проблемы с иностранными программами - например, Microsoft Excel. И будут переходить на российские аналоги. И что происходит? Первое, что делают - удаляют полностью российскую программу КуМир, которая разрабатывается НИИС РАН, Эта программа специально разработана чтобы ее в школах применяли. И теперь пытаются отказаться от российской программы. Ну это вообще что то невероятное... Зачем вообще удалять российскую программу если ее разрабатывали специально для школьников ... " Может, где-то засели скрытые иностранные агенты?

Исполнитель Чертежник в школьном программировании КуМир на ЕГЭ запретили - отличное решение. Вместе с ним ушел отличный испол
Исполнитель Чертежник в школьном программировании КуМир на ЕГЭ запретили - отличное решение. Вместе с ним ушел отличный исполнитель Чертежник, который Кушниренко предлагал для начального обучения программированию. Чертежник позволяет обучать решению спектра задач, в которых важны параметры - от вложенных циклов до процедур с параметрами и модулей. В PascalABC.NET задания для чертежника - автоматически проверяемые. Лишний раз напомним, что ни в какой системе вы не встретите больше автоматически проверяемых заданий, встроенных в IDE. Уж подавно для Чертежника. На скриншоте - программа, иллюстрирующая, что алгоритм проверки задания для Чертежника в PascalABC.NET - весьма сложный - он позволяет рисовать одну линию дважды, по частям и в любом направлении и правильно проверяет результат.