Парадигма | Мультипарадигма : процедурная, функциональная, объектно-ориентированная, универсальная |
---|---|
Разработано | С.С. Михалкович, Иван Бондарев, А.В. Ткачук, С.О. Иванов |
Впервые появился | 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 популярен в российских школах и университетах. В Южном федеральном университете он используется как основной для обучения студентов факультетов информационных технологий по курсу «Основы программирования» и для обучения детей в одной из крупнейших компьютерных школ России.
+= -= *= /=
for
заголовке циклаvar n: integer := 10;
)var x := 1;
) foreach
set
любого типа ( set of integer
)new
(вызов конструктора)Большинство подразделений ориентировано на образование:
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.
begin var p: BigInteger:= 1; for var i:=1 to 100 do p:= p * i; Println(p); end.
begin var (a, b):= ReadInteger2; while b gt; 0 do (a, b):= (b, a mod b); var GCD:= Abs(a); GCD.Print; end.
begin SeqWhile(1,1,(x,y)-gt;x+y,x-gt;xlt;1000).Print; end.
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.
begin ReadLines('words.txt').SelectMany(s-gt;s.ToWords).GroupBy(v-gt;v).EachCount.PrintLines; end.
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.