Paradigm | Multi-paradigm: procedural, functional, object-oriented, generic |
---|---|
Designed by | S.S. Mikhalkovich, Ivan Bondarev, A.V. Tkachuk, S.O. Ivanov |
First appeared | 2002 |
Stable release | 3.8.0.2857
/ 7 March 2021 |
Typing discipline | Static, partially inferred |
Implementation language | PascalABC.NET |
OS | Cross-platform |
License | LGPLv3 |
Filename extensions | .pas |
Website | pascalabc |
Influenced by | |
Delphi, Pascal, C#, Python |
PascalABC.NET is a Pascal programming language that implements classic Pascal, most Delphi language features, as well as a number of their own extensions. It is implemented on the .NET Framework platform and contains all the modern language features: classes, operator overloading, interfaces, exception handling, generic classes and routines, garbage collection, lambda expressions, parallel programming tools (OpenMP only as of 2016).
PascalABC.NET is also a simple and powerful integrated development environment with integrated debugger, IntelliSense system, form designer, code templates and code auto-formatting. Command-line PascalABC.NET compiler is also available on Linux and MacOS (under Mono).[1]
PascalABC.NET is popular in Russian schools and universities. In Southern Federal University, it is used as the main language for teaching students of Information technology in the course "Fundamentals of programming" and for teaching children in one of the largest computer schools in Russia.
+= -= *= /=
for
loop headervar n: integer := 10;
)var x := 1;
)foreach
set
of any type (set of integer
)new
(invoking a constructor)Most units are focused on education:
begin
var a := ArrGen(10,i->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 > 0 do
(a, b) := (b, a mod b);
var GCD := Abs(a);
GCD.Print;
end.
begin
SeqWhile(1,1,(x,y)->x+y,x->x<1000).Print;
end.
begin
var d := new Dictionary<string,integer>;
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->s.ToWords).GroupBy(v->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.
By: Wikipedia.org
Edited: 2021-06-18 15:18:17
Source: Wikipedia.org