DownCast и операция as
DownCast - приведение типа от предка к потомку. Оно используется, когда переменная имеет тип предка, но в ней гарантированно содержится объект потомка.
Один из способов - использование операции as.
В данном примере у переменной sh, хранящей круг, напрямую изменить радиус не получится - нужно приведение типа
#ООП
DownCast - приведение типа от предка к потомку. Оно используется, когда переменная имеет тип предка, но в ней гарантированно содержится объект потомка.
Один из способов - использование операции as.
В данном примере у переменной sh, хранящей круг, напрямую изменить радиус не получится - нужно приведение типа
#ООП
👍5
Действия в полиморфном списке. Расширенная операция is
Список называется полиморфным если он состоит из объектов базового и производных классов. Если необходимо совершить некоторые действия над объектами списка определенного типа (например, изменить радиус всех кругов), то используется расширенная операция is: obj is Circle (var c) возвращает True если в obj - круг, и в этом случае инициализирует переменную c типа Circle, через которую и можно проводить действия с кругом.
#студентам
#ООП
Список называется полиморфным если он состоит из объектов базового и производных классов. Если необходимо совершить некоторые действия над объектами списка определенного типа (например, изменить радиус всех кругов), то используется расширенная операция is: obj is Circle (var c) возвращает True если в obj - круг, и в этом случае инициализирует переменную c типа Circle, через которую и можно проводить действия с кругом.
#студентам
#ООП
👍5
Пишем интерпретатор на PascalABC.NET. Прелюдия
Мы начинаем серию публикаций о том, как создать интерпретатор на PascalABC.NET.
Будут рассмотрены вопросы создания лексического анализатора, синтаксического анализатора (парсера), семантической проверки типов и способы создания различных по производительности интерпретаторов.
На скриншоте - один из конечных результатов - программа, вычисляющая сумму отрезка гармонического ряда. Количество итераций - 100 миллионов, время выполнения - 4 секунды.
#интерпретатор
Мы начинаем серию публикаций о том, как создать интерпретатор на 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 классов. Углубленный курс
Курсы содержат огромное количество уроков и интерактивных тестов и представляют значительную ценность для юных программистов.
#школьнику
#учителю
На сайте 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 классов. Углубленный курс
Курсы содержат огромное количество уроков и интерактивных тестов и представляют значительную ценность для юных программистов.
#школьнику
#учителю
pascalabc.net
Курсы на Stepik
Система программирования PascalABC.NET
👍8
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 1
https://teletype.in/@pascalabcnet/Lex1
https://teletype.in/@pascalabcnet/Lex1
Teletype
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 1
Компилятор или интерпретатор языка программирования состоит из нескольких подсистем.
👍9
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 2
В этой части мы разбираем базовый класс LexerBase и его сервисные функции, которые пригодятся нам для любого лексического анализатора
https://teletype.in/@pascalabcnet/Lex2
В этой части мы разбираем базовый класс LexerBase и его сервисные функции, которые пригодятся нам для любого лексического анализатора
https://teletype.in/@pascalabcnet/Lex2
Teletype
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 2
Данный текст - продолжение https://teletype.in/@pascalabcnet/Lex1
👍2
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 3
В этой части мы приводим лексический анализатор для конкретного языка и представляем тестовую программу
https://teletype.in/@pascalabcnet/Lex3
В этой части мы приводим лексический анализатор для конкретного языка и представляем тестовую программу
https://teletype.in/@pascalabcnet/Lex3
Teletype
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 3
Данный текст - продолжение https://teletype.in/@pascalabcnet/Lex2
👍3❤1
Как поменять местами значения двух переменных, не используя промежуточную
Есть такой алгоритм - он приведен на скриншоте - он меняет местами две переменные. Он интересен тем, что не использует вспомогательную переменную.
Кто скажет, чем он плох?
#школьникам
#учителям
Есть такой алгоритм - он приведен на скриншоте - он меняет местами две переменные. Он интересен тем, что не использует вспомогательную переменную.
Кто скажет, чем он плох?
#школьникам
#учителям
👍5
Целые в строке
Как преобразовать строку к массиву целых если известно, что в ней - только целые?
Метод ToIntegers нам поможет. Он часто используется для олимпиадных задач, где все исходные данные заданы в виде строк в файле
Обратите внимание, что в строке могут присутствовать любые пробельные символы - в том числе знаки табуляции и переходы на новую строку.
Как преобразовать строку к массиву целых если известно, что в ней - только целые?
Метод ToIntegers нам поможет. Он часто используется для олимпиадных задач, где все исходные данные заданы в виде строк в файле
Обратите внимание, что в строке могут присутствовать любые пробельные символы - в том числе знаки табуляции и переходы на новую строку.
👍7
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 4. Проверка ошибок
В данной части рассматривается заключительная тема в построении лексического анализатора - контроль и вывод ошибок.
https://teletype.in/@pascalabcnet/Lex4
В данной части рассматривается заключительная тема в построении лексического анализатора - контроль и вывод ошибок.
https://teletype.in/@pascalabcnet/Lex4
Teletype
Пишем интерпретатор на PascalABC.NET. Лексический анализатор. Часть 4. Проверка ошибок
Данный текст - продолжение https://teletype.in/@pascalabcnet/Lex3
👍6
Наибольший общий делитель
Как найти наибольшее число, на которое делятся a и b?
Перед вами - самый короткий и один из самых быстрых алгоритмом, придуманный Евклидом в 3 веке до н.э.
#начинающим
Как найти наибольшее число, на которое делятся a и b?
Перед вами - самый короткий и один из самых быстрых алгоритмом, придуманный Евклидом в 3 веке до н.э.
#начинающим
👍5
Все файлы в определенной папке
Чтобы узнать имена всех файлов в определенной папке и в ее вложенных подпапках, следует вызвать функцию EnumerateAllFiles. Ее первый параметр - путь к корневой папке, второй параметр - шаблон имени файла. В примере на скриншоте выводятся все файлы из надпапки .. текущей папки. По-существу, это файлы всех программ, которые были опубликованы в нашем Телеграм-канале.
#OneLiner
Чтобы узнать имена всех файлов в определенной папке и в ее вложенных подпапках, следует вызвать функцию EnumerateAllFiles. Ее первый параметр - путь к корневой папке, второй параметр - шаблон имени файла. В примере на скриншоте выводятся все файлы из надпапки .. текущей папки. По-существу, это файлы всех программ, которые были опубликованы в нашем Телеграм-канале.
#OneLiner
👍4👨💻1
Компьютерная школа мехмата ЮФУ - самая большая очная школа Ростовской области. Каждый год ее заканчивают около 700 школьников. Первый и основной язык программирования у нас - PascalABC.NET, который разрабатывался как язык обучения современному программированию.
Сегодня в нашей компьютерной школе - выпускное собрание. В течение всего учебного года ученики решали огромное количество заданий по программированию и набирали рейтинг в нашей уникальной системе автоматической проверки. Итог - более 20 учеников превысили порог 1000 баллов рейтинга.
Сегодня в нашей компьютерной школе - выпускное собрание. В течение всего учебного года ученики решали огромное количество заданий по программированию и набирали рейтинг в нашей уникальной системе автоматической проверки. Итог - более 20 учеников превысили порог 1000 баллов рейтинга.
👍7
Ошибка в индексации
Исправлена ошибка, при которой компиляция программы
#исправлениеошибок
Исправлена ошибка, при которой компиляция программы
beginприводила к падению среды программирования.
var x := Arr(1..10);
Print(x[1:^1][5]);
end.
#исправлениеошибок
👍4