PascalABC.NET как мультипарадигменный язык позволяет писать программы, используя различные стили и различные парадигмы. Это может быть использовано грамотным преподавателем для построения хорошей траектории обучения прогаммированию - от азов до сложных современных элементов.
Рассмотрим несколько стилей написания программ на PascalABC.NET
Алгоритмический стиль PascalABC.NET
begin
var (a,b) := ReadInteger2; // автовывод типов
var sum := 0; // автовывод типов
for var i:=a to b do // счётчик цикла описывается в заголовке цикла
sum += i*i;
Print($'Сумма = {sum}')
end.
Процедурный стиль
function SumSquares(a,b: integer): integer;
begin
Result := 0;
for var i := a to b do
Result += i * i
end;
begin
var (a,b) := ReadInteger2;
Print($'Сумма = {SumSquares(a,b)}')
end.
Функциональный стиль PascalABC.NET
begin
var (a,b) := ReadInteger2;
(a..b).Sum(x -> x*x).Print
end.
Сочетание функционального и процедурного стиля
function SumSquares(a,b: integer) := (a..b).Sum(x -> x*x);
begin
var (a,b) := ReadInteger2;
Print($'Сумма = {SumSquares(a,b)}')
end.
Объектный стиль
type Algorithms = class
static function SumSquares(a,b: integer) := (a..b).Sum(x -> x*x);
static function SumCubes(a,b: integer) := (a..b).Sum(x -> x*x*x);
end;
begin
var (a,b) := ReadInteger2;
Println($'Сумма квадратов = {Algorithms.SumSquares(a,b)}');
Println($'Сумма кубов = {Algorithms.SumCubes(a,b)}')
end.
Стиль C# (для тех, кто даже на PascalABC.NET предпочитает писать как на C#)
// Запуск - по Shift-F9
uses System;
begin
var arr := Console.ReadLine.Split(new char[](' '),StringSplitOptions.RemoveEmptyEntries);
var (a,b) := (integer.Parse(arr[0]),integer.Parse(arr[1]));
var sum := 0;
for var i:=a to b do
sum += i*i;
Console.WriteLine($'Сумма = {sum}')
end.
Стиль старого паскаля (не рекомендуется)
var a,b,i,sum: integer; // всё в кучу, описание далеко от использования
begin
Read(a,b);
sum := 0;
for i:=a to b do
sum := sum + i*i;
Write('Сумма = ',sum)
end.