PascalABC.NET официальный канал
1.86K subscribers
536 photos
1 video
9 files
376 links
Официальный канал языка и системы программирования PascalABC.NET
Download Telegram
DownCast и операция as

DownCast - приведение типа от предка к потомку. Оно используется, когда переменная имеет тип предка, но в ней гарантированно содержится объект потомка.

Один из способов - использование операции as.

В данном примере у переменной sh, хранящей круг, напрямую изменить радиус не получится - нужно приведение типа

#ООП
👍5
Действия в полиморфном списке. Расширенная операция is

Список называется полиморфным если он состоит из объектов базового и производных классов. Если необходимо совершить некоторые действия над объектами списка определенного типа (например, изменить радиус всех кругов), то используется расширенная операция is: obj is Circle (var c) возвращает True если в obj - круг, и в этом случае инициализирует переменную c типа Circle, через которую и можно проводить действия с кругом.

#студентам
#ООП
👍5
Пишем интерпретатор на PascalABC.NET. Прелюдия

Мы начинаем серию публикаций о том, как создать интерпретатор на PascalABC.NET.
Будут рассмотрены вопросы создания лексического анализатора, синтаксического анализатора (парсера), семантической проверки типов и способы создания различных по производительности интерпретаторов.

На скриншоте - один из конечных результатов - программа, вычисляющая сумму отрезка гармонического ряда. Количество итераций - 100 миллионов, время выполнения - 4 секунды.

#интерпретатор
👍9
Новые курсы по PascalABC.NET на Stepik от DL Club

На сайте pascalabc.net опубликованы новые курсы по PascalABC.NET на Stepik от центра олимпиадного программирования DL Club: https://pascalabc.net/stepikcourse. Это

1. PascalABC.NET для 1-6 классов. Знакомство
2. PascalABC.NET для 1-6 классов. Базовый курс
3. PascalABC.NET для 1-6 классов. Углубленный курс

Курсы содержат огромное количество уроков и интерактивных тестов и представляют значительную ценность для юных программистов.

#школьнику
#учителю
👍8
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 2

В этой части мы разбираем базовый класс LexerBase и его сервисные функции, которые пригодятся нам для любого лексического анализатора

https://teletype.in/@pascalabcnet/Lex2
👍2
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 3

В этой части мы приводим лексический анализатор для конкретного языка и представляем тестовую программу

https://teletype.in/@pascalabcnet/Lex3
👍31
Как поменять местами значения двух переменных, не используя промежуточную

Есть такой алгоритм - он приведен на скриншоте - он меняет местами две переменные. Он интересен тем, что не использует вспомогательную переменную.

Кто скажет, чем он плох?

#школьникам
#учителям
👍5
Циклический сдвиг влево на k

Вот замечательный алгоритм циклического сдвига всех элементов массива влево на k элементов.

Кто предложит алгоритм, лучший по памяти и по времени?
👍1
Пробельные символы

Символы с какими кодами считаются пробельными?

А вот они все!
👏8
Целые в строке

Как преобразовать строку к массиву целых если известно, что в ней - только целые?

Метод ToIntegers нам поможет. Он часто используется для олимпиадных задач, где все исходные данные заданы в виде строк в файле

Обратите внимание, что в строке могут присутствовать любые пробельные символы - в том числе знаки табуляции и переходы на новую строку.
👍7
Вещественная арифметическая прогрессия

Как получить вещественную арифметическую прогрессию?
Использовать метод Step для вещественных
👍4
График функции

Самый быстрый способ нарисовать график функции - воспользоваться DrawGraph из модуля GraphWPF.
👍4
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 4. Проверка ошибок

В данной части рассматривается заключительная тема в построении лексического анализатора - контроль и вывод ошибок.

https://teletype.in/@pascalabcnet/Lex4
👍6
Наибольший общий делитель

Как найти наибольшее число, на которое делятся a и b?

Перед вами - самый короткий и один из самых быстрых алгоритмом, придуманный Евклидом в 3 веке до н.э.

#начинающим
👍5
Все файлы в определенной папке

Чтобы узнать имена всех файлов в определенной папке и в ее вложенных подпапках, следует вызвать функцию EnumerateAllFiles. Ее первый параметр - путь к корневой папке, второй параметр - шаблон имени файла. В примере на скриншоте выводятся все файлы из надпапки .. текущей папки. По-существу, это файлы всех программ, которые были опубликованы в нашем Телеграм-канале.

#OneLiner
👍4👨‍💻1
Компьютерная школа мехмата ЮФУ - самая большая очная школа Ростовской области. Каждый год ее заканчивают около 700 школьников. Первый и основной язык программирования у нас - PascalABC.NET, который разрабатывался как язык обучения современному программированию.

Сегодня в нашей компьютерной школе - выпускное собрание. В течение всего учебного года ученики решали огромное количество заданий по программированию и набирали рейтинг в нашей уникальной системе автоматической проверки. Итог - более 20 учеников превысили порог 1000 баллов рейтинга.
👍7
Вот - первые снимки с выпускного собрания Компьютерной школы мехмата ЮФУ. Вы видите около 200 выпускников 1 года программирования и их родителей
👍31
Ошибка в индексации

Исправлена ошибка, при которой компиляция программы

begin
var x := Arr(1..10);
Print(x[1:^1][5]);
end.

приводила к падению среды программирования.

#исправлениеошибок
👍4
Как вернуть информацию о дисках

Программа ниже возвращает информацию о логических дисках, установленных в системе
👍6