ПаскальABC.NET

редактировать

ПаскальABC.NET
Парадигма Мультипарадигма : процедурная, функциональная, объектно-ориентированная, универсальная
Разработано С.С. Михалкович, Иван Бондарев, А.В. Ткачук, С.О. Иванов
Впервые появился 2002 ; 19 лет назад ( 2002)
Стабильный выпуск 3.8.0.2857 / 7 марта 2021 г. ; 3 месяца назад ( 2021-03-07)
Печатная дисциплина Статический, частично предполагаемый
Язык реализации ПаскальABC.NET
Операционные системы Кроссплатформенность
Лицензия LGPLv3
Расширения имени файла .pas
Веб-сайт pascalabc.net / en /
Под влиянием
Delphi, Паскаль, C #, Python

PascalABC.NET - это язык программирования Pascal, который реализует классический Pascal, большинство функций языка Delphi, а также ряд собственных расширений. Он реализован на платформе.NET Framework и содержит все современные языковые функции: классы, перегрузку операторов, интерфейсы, обработку исключений, общие классы и процедуры, сборку мусора, лямбда-выражения, инструменты параллельного программирования ( только OpenMP с 2016 года).

PascalABC.NET также является простой и мощной интегрированной средой разработки со встроенным отладчиком, системой IntelliSense, конструктором форм, шаблонами кода и автоматическим форматированием кода. Компилятор PascalABC.NET, работающий из командной строки, также доступен для Linux и MacOS (в Mono).

PascalABC.NET популярен в российских школах и университетах. В Южном федеральном университете он используется как основной для обучения студентов факультетов информационных технологий по курсу «Основы программирования» и для обучения детей в одной из крупнейших компьютерных школ России.

СОДЕРЖАНИЕ
  • 1 Ключевые особенности PascalABC.NET
    • 1.1 Расширения языка Pascal
  • 2 Системные блоки
  • 3 образца
    • 3.1 1. Поменяйте местами первую и вторую половинки массива.
    • 3,2 2. 100!
    • 3.3 3. Большой общий делитель двух целых чисел.
    • 3.4 4. Отображение всех чисел Фибоначчи меньше 1000
    • 3.5 5. Частотный словарь Word для файла
    • 3.6 5а. Словарь частотных слов для файла. Решение в функциональном стиле
    • 3.7 6. Параллельное умножение матриц с помощью директив OpenMP
  • 4 См. Также
  • 5 ссылки
  • 6 Внешние ссылки
Ключевые особенности PascalABC.NET

Расширения языка Pascal

  • Операторы += -= *= /=
  • внутриблочные определения переменных
  • Объявление переменной в forзаголовке цикла
  • Объявление переменной с инициализацией ( var n: integer := 10;)
  • Выведение типа переменной ( var x := 1;)
  • foreach
  • Подпрограммы с переменным количеством параметров
  • setлюбого типа ( set of integer)
  • Методы в записях
  • Методы, определенные в объявлении класса
  • Упрощенный синтаксис единиц
  • Ключевое слово new(вызов конструктора)
  • Инициализаторы полей
  • Перегрузка оператора
  • Статические конструкторы
  • Директивы OpenMP
  • чехол для струн
  • синтаксис типа функции T-gt; T
  • синтаксис типа кортежа (T1, T2)
  • последовательность доходности и доходности
  • сопоставление с образцом
  • срезы массива
  • интерполированные строки
  • распаковка параметров лямбда-выражений в переменные
Системные единицы

Большинство подразделений ориентировано на образование:

  • Блоки растровой графики GraphABC (на основе Windows Forms), GraphWPF (на основе WPF)
  • Блоки векторной графики ABCObjects (на основе Windows Forms), WPFObjects (на основе WPF)
  • Модуль трехмерной графики и анимации Graph3D (на основе библиотеки Helix Toolkit)
  • Модуль FormsABC для создания простых приложений Windows без конструктора форм
  • Блоки-исполнители Робот и Дроумен (школьная информатика)
Образцы

1. Поменяйте местами первую и вторую половинки массива.

begin var a:= ArrGen(10,i-gt;2*i+1); a.Println; Assert(a.Length mod 2 = 0); var n:= a.Length div 2; a:= a[n:] + a[:n]; a.Println; end.

2. 100!

begin var p: BigInteger:= 1; for var i:=1 to 100 do p:= p * i; Println(p); end.

3. Большой общий делитель двух целых чисел.

begin var (a, b):= ReadInteger2; while b gt; 0 do (a, b):= (b, a mod b); var GCD:= Abs(a); GCD.Print; end.

4. Отобразите все числа Фибоначчи меньше 1000.

begin SeqWhile(1,1,(x,y)-gt;x+y,x-gt;xlt;1000).Print; end.

5. Частотный словарь Word для файла.

begin var d:= new Dictionarylt;string,integergt;; foreach var s in ReadLines('words.txt') do foreach var word in s.ToWords do d[word]:= d.Get(word) + 1; d.PrintLines; end.

5а. Словарь частотных слов для файла. Решение в функциональном стиле

begin ReadLines('words.txt').SelectMany(s-gt;s.ToWords).GroupBy(v-gt;v).EachCount.PrintLines; end.

6. Параллельное умножение матриц с использованием директив OpenMP.

procedure Mult(a,b,c: array [,] of real; n: integer); begin {$omp parallel for} for var i:=0 to n-1 do for var j:=0 to n-1 do begin var cc:= 0.0; for var l:=0 to n-1 do cc += a[i,l]*b[l,j]; c[i,j]:= cc; end; end; const n = 1000; begin var a:= MatrixRandomReal(n,n,1,1.1); var b:= MatrixRandomReal(n,n,1,1.1); var c:= new real[n,n]; Mult(a,b,c,n); Println(MillisecondsDelta/1000); end.
Смотрите также
Рекомендации
Внешние ссылки
Последняя правка сделана 2023-04-05 07:19:33
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте