Pascalabc net что это за программа
Перейти к содержимому

Pascalabc net что это за программа

  • автор:

Введение

PascalABC.NET – это система программирования и язык Pascal нового поколения для платформы Microsoft .NET.

PascalABC.NET — язык с простым и логичным синтаксисом, хорошо понятным начинающим программистам. Он содержит ряд расширений стандартного языка Паскаль, имеющихся в большинстве современных языков программирования: кортежи, срезы, лямбда-выражения и многие другие. Это позволяет писать на PascalABC.NET компактные, эффективные и понятные программы.

Помимо возможностей использования стандартной библиотеки классов Microsoft.NET, PascalABC.NET имеет рад собственных библиотек, нацеленных прежде всего на обучение.

PascalABC.NET включает в себя также простую и мощную среду разработки с подсказками по коду и автоформатированием. Она содержит обширную справочную систему и многочисленные примеры программ на PascalABC.NET.

PascalABC.NET позволяет писать программы в разных стилях: процедурном, объектном, объектно-ориентированном, функциональном, а также сочетать эти стили.

PascalABC.NET популярен в России. Каждый день с официального сайта инсталляционный пакет скачивается 2000-3000 раз. На школьных олимпиадах по программированию PascalABC.NET является третьим по популярности языком после C++ и Python.

Всё это делает PascalABC.NET идеальным выбором для обучения современному программированию, позволяя выбирать различные траектроии обучения и с лёгкостью переходить на другие языки.

О сайте

Данный сайт содержит примеры программ на PascalABC.NET различной сложности.

PascalABC.NET 3.9.0, build 3328

PascalABC.NET

PascalABC.NET

PascalABC.NET‭ — ‬система‭ ‬программирования,‭ ‬главное назначение которой заключается в‭ ‬обучении программированию на‭ ‬языке Паскаль нового поколения.‭ Это о‬тличный вариант для пользователей,‭ ‬изучающих‭ ‬не только‭ ‬Pascal,‭ ‬но и многие другие языки программирования,‭ ‬поскольку‭ ‬здесь реализовано‭ ‬большое количество конструкций,‭ ‬использующихся в‭ ‬этих языках‭ ‬и облегчающих‭ ‬написание кода.

PascalABC.NET подсвечивает синтаксис,‭ ‬обеспечивает подсказки по коду,‭ ‬переход к реализации подпрограмм.‭ ‬Кроме того,‭ ‬в систему встроен‭ ‬дизайнер форм,‭ ‬который позволяет‭ ‬создавать оконные приложения.

Основные возможности‭ ‬PascalABC.NET:

‭— ‬Наиболее современные конструкции языков программирования.
‭— ‬Высокий уровень совместимости с Delphi.
‭— ‬Генерация результативного кода для платформы‭ ‬.NET.
‭— ‬Повышенная скорость работы.
‭— ‬Доступ к большому количеству‭ ‬.NET-библиотек.
‭— ‬Подсказки по точке,‭ ‬по параметрам подпрограммы,‭ ‬а также‭ ‬всплывающие подсказки.
‭— ‬Встроенный отладчик,‭ ‬шаблоны кода,‭ ‬его автоформатирование.
‭— ‬Создание оконных приложений с помощью дизайнера форм.
‭— ‬Растровая графическая библиотека.
‭— ‬Векторная графика.
‭— ‬Возможность‭ ‬параллельного программирования‭ ‬с использованием директив OpenMP.
‭— ‬Наличие электронного задачника с более чем двумя сотнями задач разного уровня сложности.
‭— ‬Модули для использования в процессе обучения школьной информатики.
‭— ‬Автоматическая постановка заданий и их проверка.
‭— ‬Запуск непосредственно в окне браузера.
‭— ‬Поддержка технологии IntelliSense.

Изменения в последней версии

  • Устранены некоторые ошибки и другие улучшения.
Разработчик:
Официальный сайт: pascalabc.net
Обновлено: 30.07.2023
Версия Windows : Vista, 7, 8, 10
Язык интерфейса: English, Русский

Коротко о главном

Данный текст содержит краткий обзор особенностей PascalABC.NET.

  • PascalABC.NET – легковесная и мощная среда разработки программ с подробной справочной системой, средствами подсказки по коду, автоформатированием, встроенным отладчиком и встроенным дизайнером форм. Интегрированная среда разработки PascalABC.NET ориентирована на создание проектов малой и средней сложности, а также на обучение современному программированию.
  • PascalABC.NET – мощный и современный язык программирования. По предоставляемым возможностям он превосходит язык Delphi и содержит практически все возможности языка C#.
  • PascalABC.NET опирается на платформу Microsoft .NET — её языковые возможности и библиотеки, что делает его гибким, эффективным, постоянно развивающимся. Кроме того, можно легко сочетать библиотеки , разработанные на PascalABC.NET и других .NET-языках.
  • Компилятор PascalABC.NET генерирует код, выполняющийся так же быстро, как и код на C#, и несколько медленнее, чем код на C++ и Delphi.
  • PascalABC.NET является представителем линейки современных языков Паскаль вместе с Delphi XE и Oxygene.
  • Мнение, что язык Паскаль устарел и утрачивает свои позиции, основано на представлении о старом Паскале и старых средах программирования (например, Free Pascal с его несовременной консольной оболочкой и языком Delphi образца 2002 года). К сожалению, масса отечественной учебной литературы с упорством, достойным лучшего применения, ориентируется на отживший Turbo Pascal с древней консольной оболочкой, бедной графической библиотекой и устаревшими средствами объектно-ориентированного программирования, развивая у обучающихся стойкое отвращение к языку Паскаль вообще.
  • PascalABC.NET расширен современными языковыми возможностями для легкого, компактного и понятного програмирования.
  • PascalABC.NET – достаточно зрелая среда. Ее прототип – учебная система Pascal ABC – появилась в 2002 году. PascalABC.NET – развивающаяся среда. Ведутся разработки новых языковых возможностей, новых библиотек.

Далее приводится ряд программ с короткими комментариями, раскрывающих возможности и особенности языка PascalABC.NET.

Тексты программ располагаются в рабочей папке (по умолчанию C:\PABCWork.NET) в подпапке Samples\!MainFeatures.

Для запуска программ данное окно должно быть открыто через пункт меню «Помощь/Коротко о главном» так, чтобы оно не полностью закрывало окно оболочки PascalABC.NET.

  1. AssignExt.pas. Данный пример иллюстрирует использование расширенных операторов присваивания += -= *= /= для целых и вещественных. Оператор /= для целых, разумеется, запрещен.
  2. BlockVar.pas. Переменные могут описываться внутри блока begin-end и инициализироваться при описании. Это крайне удобно для промежуточных переменных, а в PascalABC.NET в силу особенностей реализации еще и ускоряет доступ к переменным процентов на 30.
  3. AutoVars.pas. Если переменная инициализируется при описании, то ее тип можно не указывать: он определяется по типу правой части (автоопределение типа). Переменную — параметр цикла for можно описывать прямо в заголовке цикла, сочетая это с автоопределением типа.
  4. SimpleNewFeatures.pas. Пример, объединяющий возможности из предыдущих трех примеров.
  5. WriteAll.pas. Процедура write выводит любой тип. В частности, она выводит все элементы множества. Если тип ей неизвестен, то она выводит имя типа.
  6. WriteFormat.pas. Стандартная процедура WriteFormat позволяет осуществлять форматированный вывод. Вид форматной строки заимствуется из .NET.
  7. StandardTypes.pas. В этой программе приведены все стандартные целые и вещественные типы. Программа выводит их размеры.
  8. RandomDiap.pas. К функциям генерации случайных чисел добавилась Random(a,b), возвращающая случайное целое в диапазоне [a,b]. Процедуру Randomize в начале программы вызывать не надо.
  9. RealExtNums.pas. Действия с вещественными значениями не могут в .NET привести к переполнению. При некорректных операциях (деление на 0, переполнение или взятие логарифма отрицательного числа) мы получим либо значение «бесконечность», либо значение «NaN» (не число).
  10. Foreach.pas. Оператор foreach предназначен для цикла по контейнерам, таким как массивы, множества и контейнеры стандартной библиотеки (например, List). Элементы контейнера доступны только на чтение.
  11. Amp.pas. Ключевые слова могут использоваться в качестве имен, в этом случае перед ними следует ставить значок & снятия атрибута ключевого слова. Кроме того, ключевые слова могут использоваться в качестве полей. Например, &Type или System.Type.
  1. CharFunc.pas. Символы Char хранят Unicode и поэтому занимают 2 байта. Функции Ord и Chr работают именно с Unicode. Для совместимости функции OrdAnsi и ChrAnsi работают в однобайтовой кодировке Windows.
  2. StringTypes.pas. Строки string занимают память переменной длины и проецируются на .NET-тип System.String. Однако, в отличие от NET-строк они изменяемы и индексируются с 1. Для работы со строками фиксированной длины следует использовать тип string[n] или shortstring=string[255]. В частности, типизированные файлы допустимы только для коротких строк.
  3. StringMethods.pas. Строки string имеют ряд методов как .NET-классы. В этих методах предполагается, что строки индексируются с нуля.
  4. StringInteger.pas. Все типы — классы. Простые типы тоже. Поэтому преобразование строки в целое и вещественное проще выполнять с помощью статических методов Parse соответствующего класса (например, integer.Parse(s)). Преобразование целого или вещественного в строку удобнее выполнять с помощью экземплярного метода ToString (например, r.ToString).
  5. Enum.pas. Перечислимый тип позволяет обращаться к его константам не только непосредственно, но и используя запись вида ИмяТипа.ИмяКонстанты. Нелишне отметить, что все перечислимые типы — производные от System.Enum.
  6. Sets.pas. Множества могут иметь произвольный базовый тип. Внутри множество хранится как хеш-таблица, однако при выводе множества в процедуре write его элементы упорядочиваются.
  7. DynArray.pas. Динамические массивы array of T представляют собой ссылки. Память под них должна выделяться либо вызовом стандартной процедуры SetLength, либо использованием инициализатора вида new T[n]. Процедура SetLength сохраняет старое содержимое массива. Динамические массивы являются классом, производным от класса System.Array, имеющего достаточно богатый интерфейс. Следует упомянуть прежде всего статические методы &Array.Sort и &Array.Resize.
  8. InitRecords.pas. В записях допустимы инициализаторы полей. Поля записи инициализируются при создании переменной-записи.
  9. UntypedFile.pas. Бестиповые файлы file изменены по сравнению с Delphi. Отсутствуют процедуры BlockRead и BlockWrite, но в бестиповой файл можно непосредственно записывать данные разных типов. Лишь бы считывание производилось в том же порядке.
  10. PointerToRef.pas. Имеют место некоторые ограничения для указателей на управляемую память. Так, указатель не может прямо или косвенно указывать на объект класса, память для которого выделена вызовом конструктора.
  11. Pointers.pas и References.pas. Указатели утрачивают свои позиции. Вместо них мы рекомендуем активно использовать ссылки.
  12. StructTypeEquiv.pas. В отличие от Delphi, для некоторых типов имеет место структурная, а не именная эквивалентность типов. Так, структурная эквивалентность имеет место для динамических массивов, указателей, множеств и процедурных типов.

Подпрограммы

  1. FuncParams.pas. Подпрограммы с переменным числом параметров делаются легко добавлением ключевого слова params перед параметром — динамическим массивом. Такой параметр должен быть последним в списке.
  2. Overload.pas. Перегрузка имен подпрограмм осуществляется без ключевого слова overload.
  3. ProcVars.pas. Процедурные переменные могут «накапливать» действия при помощи оператора +=. Эти действия можно отключать при помощи оператора -=. Процедурные переменные могут инициализироваться не только обычными подпрограммами, но и статическими и экземплярными методами класса.
  4. SwapT.pas. Обобщенные подпрограммы имеют простой синтаксис и используются сразу наряду с обычными: procedure Swap(var x,y: T);
  1. SystemUnitTest.pas. Системный модуль имеет название PABCSystem, а не System, как в Delphi, и подключается неявно первым в списке uses. Причина такого именования состоит в том, что важнейшее пространство имен .NET имеет имя System. Системный модуль объединяет многие подпрограммы модулей System, Math и Utils языка Delphi. Данная программа иллюстрирует пересечение имен во модуле PABCSystem и пространстве имен System.
  2. MainProgram.pas и MyUnit.pas. Модуль может иметь упрощенный синтаксис (без деления на раздел интерфейса и раздел реализации), что удобно для начального обучения. В этом случае все описанные имена попадают в раздел интерфейса модуля.
  3. SystemUnitTest.pas. Для использования пространств имен .NET применяется тот же синтаксис, что и при подключении модулей: пространства имен .NET указываются в списке uses. Порядок поиска имен такой же, как и в Delphi — справа налево в списке uses, модуль PABCSystem просматривается последним.
  4. Main.pas и MyDll.pas. В PascalABC.NET легко создать и использовать dll. Библиотека dll по-существу представляет собой модуль, где вместо ключевого слова unit используется слово library. Для подключения dll к другой программе используется директива компилятора reference.
  5. CallCS.pas. PascalABC.NET — полноценный .NET-язык, легко совмещаемый с другими .NET-языками. В данном примере показывается, как в программе на PascalABC.NET вызвать функцию из dll, созданной на C#.
  6. CallNative.pas. PascalABC.NET позволяет легко вызывать функции из обычных dll.

Стандартные графические библиотеки

  1. GraphABCTest.pas. Графическая библиотека GraphABC заточена под легкое обучение программированию графики. Она скрывает большинство сложностей программирования графики: сама осуществляет перерисовку графического окна в нужный момент и заботится о синхронизации рисования в нескольких обработчиках. Кроме того, графические примитивы — процедурные, а значит, не надо создавать многочисленные классы, как в NET. И еще можно писать графические команды сразу после begin основной программы, то есть использовать графику в несобытийных приложениях.
  2. MouseEvents.pas. Для графических приложений можно использовать простейшие события мыши и клавиатуры, реализованные как глобальные процедурные переменные.
  3. ABC.pas. Библиотека векторных графических объектов ABCObjects используется нами для раннего обучения школьников основам объектно-ориентированного программирования. Однако, ее вполне можно использовать для написания несложных графических обучающе-игровых приложений.
  1. AllFromObject.pas. Все классы — наследники Object, все типы — классы. У каждой переменной можно узнать тип, вызвав метод GetType. Операция typeof для типа возвращает System.Type.
  2. WriteRecord.pas. Переопределив метод ToString в классе или записи, мы получаем возможность выводить их значения в процедуре writeln
  3. ClassConstructor.pas. Для статических методов и полей используется ключевое слово class. Статические конструкторы используются для нетривиальной инициализации статических полей.
  4. PersonInternal.pas. Новый синтаксис конструкторов использует ключевое слово new и является предпочтительным. По этой причине все конструкторы, определенные в старом стиле, должны иметь имя Create. Описание методов может производиться непосредственно внутри классов и записей (как в C++, C# и Java)
  5. Records.pas. Методы и конструкторы в записях можно использовать так же, как и в классах. От записей нельзя наследовать и записи нельзя наследовать.
  6. Boxing.pas. При присваивании размерного типа объекту типа Object происходит упаковка. Для распаковки следует использовать явное приведение типа.
  7. GarbageCollection.pas. Деструкторы отсутствуют. Автоматическая сборка мусора для возврата памяти, распределенной объектной переменной, требует, чтобы на эту память никто более не ссылался, прямо или косвенно. Поэтому для освобождения памяти обычно достаточно присвоить объектной переменной nil.
  8. OperatorOverloading.pas. Как и в C++ и C#, в PascalABC.NET можно перегружать знаки операций для записей и классов.
  9. Interf.pas. Интерфейсы семантически совпадают с интерфейсами в C# и Java. Сложная реализация интерфейсов Delphi на основе COM отвергнута.
  10. Stack.pas. Обобщенные классы (generics) позволяют создавать классы, параметризованные одним или несколькими типами.
  11. Where.pas. Можно задавать ограничения на типы параметров обобщенных классов. Ограничения бывают трех сортов: наличие у типа-параметра конструктора по умолчанию, наследование его от конкретного класса или реализация интерфейса.

Стандартная библиотека .NET

  1. DateTime.pas. Данный пример иллюстрирует применение класса DateTime из стандартной библиотеки .NET.
  2. LinkedList.pas. Данный пример иллюстрирует использование контейнерных классов из стандартной библиотеки .NET.
  3. WinFormWithButton.pas. Данный пример иллюстрирует создание оконного приложения.

PascalABC.NET

PascalABC.NET — система программирования. Язык системы — это реализация Object Pascal для платформы Microsoft.NET, который содержит все основные элементы современных языков программирования: модули, классы, перегрузку операторов, интерфейсы, исключения, обобщенные классы, сборку мусора, а также некоторые средства параллельного программирования. [1]

Основное предназначение системы программирования PascalABC.NET — обучение современному программированию.

Предыстория. Pascal ABC

Система создавалась на факультете математики, механики и компьютерных наук ЮФУ как учебная среда программирования (автор — доцент С. С. Михалкович).

Система представляла из себя фактически интерпретатор языка программирования Паскаль с интегрированной оболочкой. Язык, в основном, соответствовал входному языку Object Pascal. Некоторые возможности, например, записи с вариантами, опускались «как бесполезные». Система Pascal ABC разрабатывалась в среде Delphi для операционных систем, использующих Win32 API.

Несмотря на неполную реализацию языка, система стала удачной заменой уже давно устаревшей системе Turbo Pascal в первоначальном обучении программированию. Уже с версии 2 Pascal ABC стал надёжной средой программирования для начинающих, имеющей практически полную реализацию Object Pascal. Система широко использовалась на мехмате ЮФУ как для обучения студентов, так и в работе Детской компьютерной школы мехмата ЮФУ [2] . Её использование также отмечалось в ряде средних школ Ростова-на-Дону. Благодаря созданию сайта системы Pascal ABC её использование существенно расширилось, система стала известна за пределами Ростова-на-Дону, как учебную систему её использовали во многих регионах СНГ. В каталоге Soft@Mail.ru программа Pascal ABC в 2006 году признавалась программой недели [3] , а также признавалась самой популярной программой в категории программирование в 2005 [4] и 2007 [5] .

Система Pascal ABC с сентября 2007 года не развивается и не поддерживается, однако её страница [2] продолжает функционировать и с этой страницы можно загрузить Pascal ABC версии 3.0.1.

PascalABC.NET

Внешние изображения
Внешний вид программы.

История развития

В 2005—2006 система была полностью переработана: изменён язык реализации — на C#, и изменена её архитектура — на полноценный компилятор языка Object Pascal с расширениями, связанными с платформой .NET. Новая система получила название PascalABC.NET. В июне 2009 года появилась стабильная версия 1.2 (1.2.0.325) PascalABC.NET.

Консольный компилятор PascalABC.NET функционирует на Linux и MacOS под Mono, однако среда разработки не является кроссплатформенной.

В 2007—2008 годах был зафиксирован интерес к системе PascalABC.NET из Болгарии [источник не указан 22 дня] и других стран.

В сентябре 2009 г. появилась веб-среда разработки [6] , позволяющая запускать программы на PascalABC.NET непосредственно из окна браузера. Для зарегистрированных пользователей доступен личный файловый архив программ с возможностью навигации. В августе 2010 г. в WDE появилась возможность создавать простые графические приложения [7] .

В августе 2011 г. осуществлен переход на .NET 4.0 (версия 1.8). В январе 2012 г. веб-среда разработки WDE также была переведена на .NET 4.0.

С мая 2012 г. в веб-среду разработки добавлена поддержка компиляторов C#, VB.NET, Iron Python и F#, в связи с чем она была переименована в ProgrammingABC.NET WDE.

Особенности языка

  • Операторы += -= *= /=
  • Внутриблочные описания переменных
  • Описание переменных в заголовке цикла for
  • Инициализация переменной при присваивании ( var n: integer := 10; )
  • Автоопределение типа переменной при инициализации ( var x := 1; )
  • Цикл foreach
  • Подпрограммы с переменным числом параметров
  • Множестваset на базе произвольных типов ( set of integer )
  • Методы в записях
  • Наряду со стандартным, упрощённый синтаксис модулей
  • Структурная эквивалентность типов для динамических массивов, указателей, множеств и процедурных типов
  • Двумерные динамические массивы
  • Все типы — классы
  • Инициализаторы полей классов и записей
  • Операция new для вызова конструктора
  • Возможность определять методы как внутри, так и вне интерфейса класса
  • Перегрузка операций
  • Интерфейсы в стиле .NET
  • Подключение пространств имен .NET в разделе uses
  • Обобщённые классы, интерфейсы, подпрограммы и процедурные переменные
  • Статические конструкторы
  • Автоматическая сборка мусора для объектов
  • Атрибуты
  • Методы расширения
  • Лямбда-функции с явной аннотацией типов
  • Поддержка директив OpenMP
  • Поддержка неуправляемого кода через external

Стандартные модули

Поскольку в PascalABC.NET можно пользоваться всеми библиотеками платформы .NET, то стандартные модули ориентированы исключительно на обучение:

  • Модуль растровой графики GraphABC
  • Модуль векторной графики ABCObjects
  • Модуль Arrays для ввода-вывода-заполнения одномерных и двумерных динамических массивов
  • Модуль Collections, содержащий упрощенные классы коллекций
  • Модуль MPI — обертка над MPI-функциями
  • Модули исполнителей Робот и Чертёжник (школьная информатика)

Примеры программ

Пример 1. Использование методов расширения для программирования в функциональном стиле
uses Arrays; var a: array of integer := (1,3,5,7,9,11,13,15,17,19); begin a.Writeln; // Поменять местами первую и вторую половины массива с четным количеством элементов Assert(a.Length mod 2 = 0); var n := a.Length div 2; a.Skip(n).Concat(a.Take(n)).ToArray().Writeln; end. 

Лицензия

Pascal ABC и PascalABC.NET всех версий является бесплатным (freeware) программным обеспечением.

Примечания

  1. Сайт проекта «Система программирования PascalABC.NET»
  2. 12Система программирования Pascal ABC
  3. Программы недели -> программирование
  4. Номинация Программирование:Рейтинг софта за 2005:Софт@Mail.ru
  5. Номинация Программирование:Рейтинг софта за 2007:Софт@Mail.ru
  6. PascalABC.Net web development environment (WDE)
  7. Модуль графики для WDE — Система программирования PascalABC.NET

Ссылки

  • Сайт проекта «Система программирования PascalABC.NET»
  • Описание языка PascalABC.NET
  • Электронный задачник по программированию Programming Taskbook
  • RVGames.de (рус.) — Цифровая книга «Занимательные уроки с паскалем, или PascalABC.NET для начинающих»
  • статья PascalABC.NET в Прогопедии — энциклопедии языков программирования (рус.)
  • PascalABC на сайте Воскресной компьютерной школы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *