Обучение вводу в цикле
Рассмотрим простую задачу: вводится 10 целых, найти их сумму.
Существует много методик обучения подобных коротких задач. Одна из них используется нами.
Вначале пишем шаблон общей программы: цикл 10 раз и ВВОД В ЦИКЛЕ.
Затем дочитываем условие задачи и анализируем, что надо найти. Поскольку надо найти сумму, пишем после ввода sum += x и запускаем программу. Компилятор выдаст ошибку.
Далее вспомним, что переменная sum должна быть описана до цикла и подумаем, какое начальное значение ей надо присвоить.
И наконец, запустим программу, убедимся, что мы забыли вывести результат, и выведем его после цикла.
Такой способ решения похож на методику быстрой разработки программ, используемую в production: в каждый момент времени у нас есть работающая программа. Он позволяет школьнику зафиксировать частичный успех.
Впоследствии по данному шаблону решается огромное количество задач с фильтрацией, подсчетом количества, минимумами-максимумами и проч.
#методика
#начинающим
Рассмотрим простую задачу: вводится 10 целых, найти их сумму.
Существует много методик обучения подобных коротких задач. Одна из них используется нами.
Вначале пишем шаблон общей программы: цикл 10 раз и ВВОД В ЦИКЛЕ.
Затем дочитываем условие задачи и анализируем, что надо найти. Поскольку надо найти сумму, пишем после ввода sum += x и запускаем программу. Компилятор выдаст ошибку.
Далее вспомним, что переменная sum должна быть описана до цикла и подумаем, какое начальное значение ей надо присвоить.
И наконец, запустим программу, убедимся, что мы забыли вывести результат, и выведем его после цикла.
Такой способ решения похож на методику быстрой разработки программ, используемую в production: в каждый момент времени у нас есть работающая программа. Он позволяет школьнику зафиксировать частичный успех.
Впоследствии по данному шаблону решается огромное количество задач с фильтрацией, подсчетом количества, минимумами-максимумами и проч.
#методика
#начинающим
Вышла версия PascalABC.NET 3.9.0 Release
Основные изменения - здесь: https://pascalabcnet.github.io/mydoc_release_notes_3_9_0.html
По сравнению с beta-версией добавлена стандартная функция RandomReal, оптимизировано множественное присваивание (a,b) := (b,a), кардинально переработан модуль LightPT - упрощено создание новых заданий.
Основные изменения - здесь: https://pascalabcnet.github.io/mydoc_release_notes_3_9_0.html
По сравнению с beta-версией добавлена стандартная функция RandomReal, оптимизировано множественное присваивание (a,b) := (b,a), кардинально переработан модуль LightPT - упрощено создание новых заданий.
Пишем интерпретатор на PascalABC.NET. Визиторы по синтаксическому дереву
В данной статье мы рассматриваем важный для создания интерпретаторов и достаточно сложный паттерн проектирования Визитор, применяем его к нашему синтаксическому дереву и реализуем конкретный визитор для упрощенного вывода текста программы, занимающий около 20 строк.
https://teletype.in/@pascalabcnet/Visitors
В данной статье мы рассматриваем важный для создания интерпретаторов и достаточно сложный паттерн проектирования Визитор, применяем его к нашему синтаксическому дереву и реализуем конкретный визитор для упрощенного вывода текста программы, занимающий около 20 строк.
https://teletype.in/@pascalabcnet/Visitors
Teletype
Пишем интерпретатор на PascalABC.NET. Визиторы по синтаксическому дереву
fsgdhj
PascalABC.NET в Astra Linux
На портале https://easyastra.ru/TEST/ опубликован deb-пакет для PascalABC.NET.
На портале https://easyastra.ru/TEST/ опубликован deb-пакет для PascalABC.NET.
Как не надо вычислять максимум
Очень часто можно встретить в ЕГЭшных задачах такой код вычисления максимума. Он абсолютно неэффективен. Но пишется чтобы сэкономить несколько символов.
Он пришел на волне тотальной популярности языка Питон, на котором массово пишут короткий неэффективный код. Эти привычки потом остаются на всю жизнь.
На Питоне кстати ввиду его неэффективности скорость программы с условным оператором и функцией Max одинакова.
Очень часто можно встретить в ЕГЭшных задачах такой код вычисления максимума. Он абсолютно неэффективен. Но пишется чтобы сэкономить несколько символов.
Он пришел на волне тотальной популярности языка Питон, на котором массово пишут короткий неэффективный код. Эти привычки потом остаются на всю жизнь.
На Питоне кстати ввиду его неэффективности скорость программы с условным оператором и функцией Max одинакова.
Выделение содержимого всех строковых констант в файле
Пользуемся регулярными выражениями.
Для апострофа пользуемся ESC-последовательностью \'. Поскольку это апостроф как символ внутри строковой константы, то повторяем его дважды \''
Поскольку нам не нужны сами апострофы, а только их содержимое, пользуемся утверждениями положительного просмотра назад и вперед соответственно.
Пользуемся регулярными выражениями.
Для апострофа пользуемся ESC-последовательностью \'. Поскольку это апостроф как символ внутри строковой константы, то повторяем его дважды \''
Поскольку нам не нужны сами апострофы, а только их содержимое, пользуемся утверждениями положительного просмотра назад и вперед соответственно.
Публикация о новой версии на opennet.ru
Новостной ИТ-сайт opennet.ru опубликовал сообщение о выходе версии PascalABC.NET 3.9.0:
https://www.opennet.ru/opennews/art.shtml?num=59497
К сожалению, именованные аргументы названы именованными атрибутами, а основное изменение в языке - поддержка ковариантных параметров обобщений - упомянута через запятую вскользь в последнем пункте. Жаль также, что не упомянута поддержка библиотеки машинного обучения Microsoft.ML.
Сайт OpenNet.ru известен своей смелостью - он продолжает публиковать новости о выходе новых версий PascalABC.NET несмотря на резко негативный тон комментариев своих читателей. Обсуждения здесь прекрасны, иногда попадаются настоящие жемчужины (см. скриншот).
Новостной ИТ-сайт opennet.ru опубликовал сообщение о выходе версии PascalABC.NET 3.9.0:
https://www.opennet.ru/opennews/art.shtml?num=59497
К сожалению, именованные аргументы названы именованными атрибутами, а основное изменение в языке - поддержка ковариантных параметров обобщений - упомянута через запятую вскользь в последнем пункте. Жаль также, что не упомянута поддержка библиотеки машинного обучения Microsoft.ML.
Сайт OpenNet.ru известен своей смелостью - он продолжает публиковать новости о выходе новых версий PascalABC.NET несмотря на резко негативный тон комментариев своих читателей. Обсуждения здесь прекрасны, иногда попадаются настоящие жемчужины (см. скриншот).
Решение задач под управлением модуля невидимой проверки
Хотите попробовать, как решать задачи под управлением модуля невидимой автоматической проверки? Попробуйте прямо сейчас!
Для этого скачайте последнюю версию PascalABC.NET, откройте Примеры\CheckedTasks\LightPT\УрокМассивы. Выберите любую задачу и попробуйте решить!
Делитесь впечатлениями в комментариях!
Хотите попробовать, как решать задачи под управлением модуля невидимой автоматической проверки? Попробуйте прямо сейчас!
Для этого скачайте последнюю версию PascalABC.NET, откройте Примеры\CheckedTasks\LightPT\УрокМассивы. Выберите любую задачу и попробуйте решить!
Делитесь впечатлениями в комментариях!
Новые стандартные функции ArrRandomReal и SeqRandomReal с параметром digits
В последней версии появились стандартные функции ArrRandomReal и SeqRandomReal с необязательным параметром digits.
Спасибо Александру Осипову за предложение!
#новое
В последней версии появились стандартные функции ArrRandomReal и SeqRandomReal с необязательным параметром digits.
Спасибо Александру Осипову за предложение!
#новое
Гауссово (нормальное) распределение случайной величины
Данная программа иллюстрирует гауссово распределение случайной величины
Данная программа иллюстрирует гауссово распределение случайной величины
pascal
uses GraphWPF;
function Gauss(M,Sigma: real): real;
begin
var u := Random;
var v := Random;
var sq1 := Sqrt(-2*ln(v))*Cos(2*Pi*u);
Result := Sigma * sq1 + M
end;
begin
Window.Title := 'Нормально распределенная случайная величина';
SetMathematiccoords(-5,5);
loop 100000 do
begin
var (x,y) := (Gauss(0,1),Gauss(0,1));
FillCircle(x,y,0.02,RandomColor)
end
end.
EasyAstra - Astra Linux становится ближе. В статье, помимо прочего, рассказывается, как быстро установить deb-пакет PascalABC.NET из репозитория Астра Линукс.
https://interface31.ru/tech_it/2023/08/easyastra-astra-linux-stanovitsya-blizhe.html
https://interface31.ru/tech_it/2023/08/easyastra-astra-linux-stanovitsya-blizhe.html
Записки IT специалиста
EasyAstra - Astra Linux становится ближе
Astra Linux занимает ведущее место среди предназначенных для импортозамещения дистрибутивов и так получается, что ее пользователями становятся не только те, кому действительно нужна повышенная безопасность и мандатная система доступа, но и простые пользователи…
Метод Numerate
Метод Numerate позволяет к каждому элементу последовательности приписать его номер в последовательности. Он возвращает последовательность пар (номер, элемент)
Этот метод очень удобен в задачах, где требуется использовать именно номера элементов.
Например, в задаче "Номера первых пяти простых чисел, содержащих цифру 5" решение может быть таким:
Метод Numerate позволяет к каждому элементу последовательности приписать его номер в последовательности. Он возвращает последовательность пар (номер, элемент)
Этот метод очень удобен в задачах, где требуется использовать именно номера элементов.
Например, в задаче "Номера первых пяти простых чисел, содержащих цифру 5" решение может быть таким:
##с выводом
uses School;
Primes(500).Numerate.Where(p -> '5' in p[1].ToString).Take(5).Print
(3,5) (16,53) (17,59) (36,151) (37,157)Если пытаться решать эту задачу циклами, то вот первый набросок решения:
uses School;Вывод:
begin
var pp := Primes(500);
for var i:=0 to pp.Count-1 do
if '5' in pp[i].ToString then
Println(pp[i],i+1)
end.
5 3И - надо отобрать первые 5 строк. Кто предложит - как, не используя последовательности?
53 16
59 17
151 36
157 37
251 54
257 55
353 71
359 72
457 88