Предлагаем пять бесплатных курсов по PascalАВС.NЕТ на платформе Stepik.
1. PascalABC.NET: современный код
Желающим с нуля научиться писать современный код, а также желающим углубить свои знания современных языков программирования. Рекомендуется школьникам, студентам, учителям, преподавателям. Может сильно удивить лиц, до сих пор считающих Turbo Pascal/Free Pascal венцом современных технологий программирования. Курс достаточно СЛОЖНЫЙ и невысокие заявленные требования к знаниям вовсе не означают, что любой семиклассник сможет САМОСТОЯТЕЛЬНО его пройти. Но попытайтесь узнать, чего на самом деле стоят ваши знания!
2. PascalABC.NET: от предков к потомку
Прохождение курса позволит вам повысить свою квалификацию в вопросах современного программирования, откроет путь к пониманию. концепций .NET-языков. Вы сможете, наконец, отвязаться от непроизводительного программирования в стиле прошлого века, предполагающего написание блок-схем и осмысливания задачи в терминах блоков "следование, ветвление, цикл". Вы получите возможность использовать средства декларативной парадигмы программирования взамен или в сочетании с императивной. Вы сможете указывать в программе ЧТО нужно сделать вместо утомительных и однообразных описаний того, КАК это надо делать. Вы сможете писать (и главное, учить писать) программы, которые будут понятнее, чем в ныне модном языке Python и в то же время, работающие в десятки и сотни раз быстрее. И при этом, ваши программы будут такими же компактными, как в Python.
3. PascalABC.NET: 220 задач к ЕГЭ с сайта К.Ю.Полякова
Предлагаются варианты решения заданий для подготовки к ЕГЭ с сайта К.Полякова. Достаточно большое количество вариантов и везде, где возможно, дается два решения - длинное в парадигме структурного программирования и короткое с использованием элементов функционального программирования. Все решения снабжены необходимыми пояснениями.
4. PascalABC.NET: если в школе надоел Python
Изучение языка программирования PascalАВС.NЕТ для тех, кто уже умеет программировать на языке Python. Где возможно, подача материала ведется путем сравнения этих двух языков. Подробно рассматриваются преимущества и недостатки каждого из языков в контекстах различных задач.
5. PascalАВС.NЕТ: спасибо, КуМир, но нужно сдавать ЕГЭ
Если вы уже знаете КуМир и собираетесь освоить "настоящий" язык программирования из тех, что будут присутствовать на станциях для сдачи ЕГЭ по информатике, этот курс для вас.
Вы освоите методику перевода программ с языка КуМир на современный универсальный язык программирования PascalАВС.NЕТ, имеющий удобную интегрированную среду разработки и отладки. Встроенный в среду очень быстрый компилятор создает исполняемые exe-файлы, обладающие скоростью выполнения, схожей со скоростью программ, написанных на C#. Ошибки компиляции фиксируются очень четко, а сообщения компилятора всегда понятны и выдаются на русском языке.
Вы сможете сразу писать код в PascalАВС.NЕТ и постепенно надобность в среде программирования КуМир отпадет. А приобретенные навыки алгоритмизации останутся и будут развиваться дальше.
Вы, если захотите, сможете более глубоко изучить PascalАВС.NЕТ с тем, чтобы быстро писать и отлаживать короткий, но эффективный и понятный код.
1. PascalABC.NET: современный код
Желающим с нуля научиться писать современный код, а также желающим углубить свои знания современных языков программирования. Рекомендуется школьникам, студентам, учителям, преподавателям. Может сильно удивить лиц, до сих пор считающих Turbo Pascal/Free Pascal венцом современных технологий программирования. Курс достаточно СЛОЖНЫЙ и невысокие заявленные требования к знаниям вовсе не означают, что любой семиклассник сможет САМОСТОЯТЕЛЬНО его пройти. Но попытайтесь узнать, чего на самом деле стоят ваши знания!
2. PascalABC.NET: от предков к потомку
Прохождение курса позволит вам повысить свою квалификацию в вопросах современного программирования, откроет путь к пониманию. концепций .NET-языков. Вы сможете, наконец, отвязаться от непроизводительного программирования в стиле прошлого века, предполагающего написание блок-схем и осмысливания задачи в терминах блоков "следование, ветвление, цикл". Вы получите возможность использовать средства декларативной парадигмы программирования взамен или в сочетании с императивной. Вы сможете указывать в программе ЧТО нужно сделать вместо утомительных и однообразных описаний того, КАК это надо делать. Вы сможете писать (и главное, учить писать) программы, которые будут понятнее, чем в ныне модном языке Python и в то же время, работающие в десятки и сотни раз быстрее. И при этом, ваши программы будут такими же компактными, как в Python.
3. PascalABC.NET: 220 задач к ЕГЭ с сайта К.Ю.Полякова
Предлагаются варианты решения заданий для подготовки к ЕГЭ с сайта К.Полякова. Достаточно большое количество вариантов и везде, где возможно, дается два решения - длинное в парадигме структурного программирования и короткое с использованием элементов функционального программирования. Все решения снабжены необходимыми пояснениями.
4. PascalABC.NET: если в школе надоел Python
Изучение языка программирования PascalАВС.NЕТ для тех, кто уже умеет программировать на языке Python. Где возможно, подача материала ведется путем сравнения этих двух языков. Подробно рассматриваются преимущества и недостатки каждого из языков в контекстах различных задач.
5. PascalАВС.NЕТ: спасибо, КуМир, но нужно сдавать ЕГЭ
Если вы уже знаете КуМир и собираетесь освоить "настоящий" язык программирования из тех, что будут присутствовать на станциях для сдачи ЕГЭ по информатике, этот курс для вас.
Вы освоите методику перевода программ с языка КуМир на современный универсальный язык программирования PascalАВС.NЕТ, имеющий удобную интегрированную среду разработки и отладки. Встроенный в среду очень быстрый компилятор создает исполняемые exe-файлы, обладающие скоростью выполнения, схожей со скоростью программ, написанных на C#. Ошибки компиляции фиксируются очень четко, а сообщения компилятора всегда понятны и выдаются на русском языке.
Вы сможете сразу писать код в PascalАВС.NЕТ и постепенно надобность в среде программирования КуМир отпадет. А приобретенные навыки алгоритмизации останутся и будут развиваться дальше.
Вы, если захотите, сможете более глубоко изучить PascalАВС.NЕТ с тем, чтобы быстро писать и отлаживать короткий, но эффективный и понятный код.
Stepik: online education
PascalABC.NET: современный код
Первый достаточно полный интерактивный курс по современному программированию в среде PascalABC.NET. Это настоящий PascalABC.NET, а не Turbo/Free Pascal в среде PascalABC.NET.
Функция ReadLexem
В PascalABC.NET имеется функция считывания следующей лексемы. Лексемы отделены пробелами или переходами на новую строку.
Этот код нельзя просто повторить на языке Python или C#, поскольку в них отсутствуют стандартные средства разбиения входного потока на лексемы
#PascalABC
В PascalABC.NET имеется функция считывания следующей лексемы. Лексемы отделены пробелами или переходами на новую строку.
Этот код нельзя просто повторить на языке Python или C#, поскольку в них отсутствуют стандартные средства разбиения входного потока на лексемы
#PascalABC
Демо ЕГЭ по информатике 2023 задание 5
Спокойное решение задания 5 демо ЕГЭ 2023. Использование функций Bin и Dec модуля School.
Ощущение, что если решать задачу кодом, то она ориентирована на Питон.
#школьникам
#ЕГЭ
Спокойное решение задания 5 демо ЕГЭ 2023. Использование функций Bin и Dec модуля School.
Ощущение, что если решать задачу кодом, то она ориентирована на Питон.
#школьникам
#ЕГЭ
Спецсимволы при выводе строк
В Object Pascal при выводе строк можно использовать так называемые управляющие Ascii символы. К их числу относится символ #10 перевода строки и символ #9, осуществляющий переход к следующей позиции табуляции.
На скриншоте показан пример вывода строки с двумя переходами на новую строку и тремя символами табуляции. Хорошо видно, что в консольном режиме позиции табуляции отстоят на 8 позиций.
#PascalABC
В Object Pascal при выводе строк можно использовать так называемые управляющие Ascii символы. К их числу относится символ #10 перевода строки и символ #9, осуществляющий переход к следующей позиции табуляции.
На скриншоте показан пример вывода строки с двумя переходами на новую строку и тремя символами табуляции. Хорошо видно, что в консольном режиме позиции табуляции отстоят на 8 позиций.
#PascalABC
Жадная и ленивая квантификация в регулярных выражениях
Задача. Найти в строке
Решение 1 (неправильное). В качестве паттерна поиска используется регулярное выражение ".*" (двойная кавычка, последовательность любых символов, двойная кавычка)
Результат:
"helloworld.htm" title="Привет, Мир"
По умолчанию квантификатор * в регулярном выражении - жадный - захватывает всё до последнего символа "
Вывод. Жадным быть плохо.
Решение 2 (правильное и ленивое). В качестве паттерна поиска используется регулярное выражение ".*?"
Результат:
"helloworld.htm"
"Привет, Мир"
При добавлении ? после квантификатора * используется ленивый захват - он заканчивается как только найден первый закрывающий символ ".
Вывод. Быть ленивым - полезно и правильно.
На скриншоте - полная программа
#строки
Задача. Найти в строке
<a href="helloworld.htm" title="Привет, Мир">Привет, Мир</a>
все выражения, заключенные в "".Решение 1 (неправильное). В качестве паттерна поиска используется регулярное выражение ".*" (двойная кавычка, последовательность любых символов, двойная кавычка)
Результат:
"helloworld.htm" title="Привет, Мир"
По умолчанию квантификатор * в регулярном выражении - жадный - захватывает всё до последнего символа "
Вывод. Жадным быть плохо.
Решение 2 (правильное и ленивое). В качестве паттерна поиска используется регулярное выражение ".*?"
Результат:
"helloworld.htm"
"Привет, Мир"
При добавлении ? после квантификатора * используется ленивый захват - он заканчивается как только найден первый закрывающий символ ".
Вывод. Быть ленивым - полезно и правильно.
На скриншоте - полная программа
#строки
Способы инвертирования массива
На скриншоте - 5 способов инвертирования массива. Они отличаются по времени, по памяти, по краткости записи.
Три первых способа - это алгоритмы, четвертый - стандартная процедура, пятый использует конструкцию языка - срезы.
Какой способ выбрать - зависит от методики.
#начинающим
#методика
На скриншоте - 5 способов инвертирования массива. Они отличаются по времени, по памяти, по краткости записи.
Три первых способа - это алгоритмы, четвертый - стандартная процедура, пятый использует конструкцию языка - срезы.
Какой способ выбрать - зависит от методики.
#начинающим
#методика
Квайн на 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, не позволяющим присвоить отрицательный возраст
#ООП