PascalABC.NET - Википедия - PascalABC.NET
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Парадигма | Мультипарадигма: процедурный, функциональный, объектно-ориентированный, общий |
---|---|
Разработано | С.С.Михалкович, Иван Бондарев, А.В. Ткачук, С. Иванов |
Впервые появился | 2002 |
Стабильный выпуск | 3.6.0.2330 / 30 января 2020 г. |
Печатная дисциплина | Статический, частично предполагаемый |
Язык реализации | ПаскальABC.NET |
Операционные системы | Кроссплатформенность |
Лицензия | LGPLv3 |
Расширения имени файла | .pas |
Интернет сайт | Pascalabc |
Под влиянием | |
Delphi, Паскаль, C #, Python |
ПаскальABC.NET это Паскаль язык программирования, реализующий классический Pascal, большинство функций языка Delphi, а также ряд собственных расширений. Реализован на .NET Framework платформу и содержит все возможности современного языка: классы, перегрузку операторов, интерфейсы, обработку исключений, общие классы и процедуры, вывоз мусора, лямбда-выражения, инструменты параллельного программирования (OpenMP только по состоянию на 2016 год).
PascalABC.NET также является простым и мощным интегрированная среда развития со встроенным отладчиком, системой IntelliSense, конструктором форм, шаблонами кода и автоматическим форматированием кода. Компилятор PascalABC.NET с командной строкой также доступен для Linux и MacOS (в Mono).[1]
PascalABC.NET популярен в российских школах и университетах. В Южном федеральном университете он используется в качестве основного языка для обучения студентов информационных технологий по курсу «Основы программирования» и для обучения детей в одной из крупнейших компьютерных школ России.
Ключевые особенности PascalABC.NET
Расширения языка Pascal
- Операторы
+= -= *= /=
- внутриблочные определения переменных
- Объявление переменной в
за
заголовок цикла - Объявление переменной с инициализацией (
вар n: целое число: = 10;
) - Вычет типа переменной (
вар х: = 1;
) для каждого
- Подпрограммы с переменным количеством параметров
набор
любого типа (набор из целое число
)- Методы в записях
- Методы, определенные в объявлении класса
- Упрощенный синтаксис единиц
- Ключевое слово
новый
(вызов конструктора) - Инициализаторы полей
- Перегрузка оператора
- Статические конструкторы
- Директивы OpenMP
- чехол для струн
- синтаксис типа функции T-> T
- синтаксис типа кортежа (T1, T2)
- доходность и последовательность доходности
- сопоставление с образцом
Системные единицы
Большинство подразделений ориентировано на образование:
- Блоки растровой графики GraphABC (на основе Windows Forms), GraphWPF (на основе WPF)
- Блоки векторной графики ABCObjects (на основе Windows Forms), WPFObjects (на основе WPF)
- Модуль 3D-графики и анимации Graph3D (на основе библиотеки Helix Toolkit)
- Модуль FormsABC для создания простых приложений Windows без конструктора форм
- Блоки-исполнители Robot и Drawman (школьная информатика)
Образцы
1. Поменяйте местами первую и вторую половинки массива.
начинать вар а := ArrGen(10,я->2*я+1); а.Println; Утверждать(а.Длина мод 2 = 0); вар п := а.Длина div 2; а := а[п:] + а[:п]; а.Println; конец.
2. 100!
начинать вар п: BigInteger := 1; за вар я:=1 к 100 делать п := п * я; Println(п);конец.
3. Большой общий делитель двух целых чисел.
начинать вар (а, б) := ReadInteger2; пока б > 0 делать (а, б) := (б, а мод б); вар НОД := Abs(а); НОД.Распечатать;конец.
4. Отобразите все числа Фибоначчи меньше 1000.
начинать SeqWhile(1,1,(Икс,у)->Икс+у,Икс->Икс<1000).Распечатать;конец.
5. Частотный словарь Word для файла
начинать вар d := новый Словарь<нить,целое число>; для каждого вар s в ReadLines("words.txt") делать для каждого вар слово в s.ToWords делать d[слово] := d.Получать(слово) + 1; d.PrintLines;конец.
5а. Словарь частотных слов для файла. Решение в функциональном стиле
начинать ReadLines("words.txt").SelectMany(s->s.ToWords).Группа по(v->v).EachCount.PrintLines;конец.
6. Параллельное умножение матриц с использованием директив OpenMP.
процедура Mult(а,б,c: множество [,] из настоящий; п: целое число);начинать {$ omp parallel for} за вар я:=0 к п-1 делать за вар j:=0 к п-1 делать начинать вар cc := 0.0; за вар л:=0 к п-1 делать cc += а[я,л]*б[л,j]; c[я,j] := cc; конец;конец; const п = 1000; начинать вар а := МатрицаСлучайное Реальное(п,п,1,1.1); вар б := МатрицаСлучайное Реальное(п,п,1,1.1); вар c := новый настоящий[п,п]; Mult(а,б,c,п); Println(МиллисекундыДельта/1000);конец.