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.
10.07.23. Release PascalABC.NET 3.9.0. All changes are here.
09.03.22. Release PascalABC.NET 3.8.3. Main features: for loop with step, foreach loop with index. All changes are here.
07.02.22. Release PascalABC.NET 3.8.2. What's new in 3.8.2.
24.08.21. Release PascalABC.NET 3.8.1. Main features - [Cache] attribute and PlotWPF unit. What's new in version 3.8.1.
07.03.21. PascalABC.NET 3.8 release. Slices of multidimensional arrays and unpacking of lambda expressions parameters into variables. What's new in version 3.8..