Operators +=, *=
var a: integer := 1; begin a += 2; a *= 2; end.
Local block variables
begin var n := 10000; var s := 0.0; for var i:=1 to n do for var j:=1 to n do s += 1.0/(i*j); Println(Milliseconds); end.
Using foreach
begin var arr := Arr(1,2,3,4); foreach var x in arr do Print(x); end.
BigInteger
begin var p: BigInteger := 1; for var i := 2 to 100 do p *= i; Println('100!=',p); end.
Short functions
function CircleLen(r: real) := 2 * Pi * r; begin Println(CircleLen(2.3)); end.
Creating dynamic arrays with Arr function
begin var a := Arr(2,5,3,1,9,7); Sort(a); a.Println; Reverse(a); a.Println; end.
Dynamic matrices
function Transpose(a: array [,] of integer): array[,] of integer; begin var m := Length(a,0); var n := Length(a,1); Result := new integer[n,m]; for var i:=0 to n-1 do for var j:=0 to m-1 do Result[i,j] := a[j,i] end; begin var a := MatrixRandom(3,4); a.Println; var b := Transpose(a); a.Println; end.
Dictionaries
begin var Capital := Dict(('Russia','Moscow'),('Germany','Berlin'),('France','Paris'),('Italy','Rom')); Println(Capital['France'],Capital['Germany']); end.
Simple file operations
var f: Text; s: string; begin Assign(f,'13_Files1.pas'); Reset(f); while not eof(f) do begin readln(f,s); writeln(s); end; Close(f); end.
or
begin var f := OpenRead('13_Files2.pas'); while not f.Eof do begin var s := f.ReadlnString; writeln(s); end; f.Close; end.
or
begin foreach var s in ReadLines('13_Files4.pas') do writeln(s); end.
or
begin ReadLines('13_Files4.pas').Println(NewLine) end.
Drawing sine with lambda
uses GraphABC; begin Draw(x->x*sin(x)); end.
Monte-Carlo-Simulation
begin var n := 10000000; var pp := Range(1,n) .Select(x->Rec(Random(),Random())) .Where(p->sqr(p.Item1)+sqr(p.Item2)<1) .Count/n*4; Print(pp); end.
Quicksort with LINQ
function QuickSort(a: sequence of integer): sequence of integer := a.Count = 0 ? a : QuickSort(a.Skip(1).Where(x->x<=a.First())) + a.First() + QuickSort(a.Skip(1).Where(x->x>a.First())); begin var a := ArrRandom(20); a.Println; QuickSort(a).Println; end.
Feb 6, 2026 — Review published: "Learn PascalABC.NET in Y Minutes".
Feb 2, 2026: PascalABC.NET version 3.11.1 released. Added: DataFrameABC module for dataset operations. All changes are here.
January 2, 2025: PascalABC.NET version 3.10.2 released! Added: constants [1,2,3] are now implemented as arrays. All changes are here.
July 10, 2023: PascalABC.NET version 3.9.0 released! Added covariant generic type parameters, support for named arguments. All changes are here.
March 9, 2022: PascalABC.NET 3.8.3 version released. Main features: for loop with step, foreach loop with index. All changes are here.