Pascal Abc Примеры


Простейшие новые возможности
Октябрь 2, 2016 – 15:43
PascalABC.NET - Общий вид

В данной статье рассматриваются простейшие новые возможности, часто используемые в коде программ PascalABC.NET:

  • Операторы +=, -=, *=, /=
  • Инициализация переменной при описании
  • Внутриблочные описания переменных
  • Автоопределение типа переменной при описании
  • Описание переменных в заголовке цикла for

Ометим, что их использование, хотя и удобно, но не всегда является оправданным: такие программы не будут работать в других версиях языка Object Pascal.

Операторы +=, -=, *=, /=

Данные операторы пришли из языка C. Запись a+=2 воспринимается легче, чем a:=a+2, и уж подавно легче, чем Inc(a, 2). Кроме того, записи

a += 2;

можно обучать буквально на первом занятии по программированию, а запись Inc(a, 2) нуждается в пояснениях: что такое стандартные процедуры и что такое передача параметра по ссылке.

Небольшая тонкость: если i: integer, то i /= 2 вызовет ошибку компиляции, поскольку будет трактоваться как i := i / 2.

Разумеется, для множеств определены только операторы +=, -=, *=, а для строк определен только оператор +=:

var s: string := 'PascalABC'; d: set of integer := [200..300]; begin s += '.NET'; d -= [100..298]; writeln(s); writeln(d); end.

Данные операторы имеются также в Free Pascal (должна быть включена опция C-like operators). Кроме того, операции += и -= активно используются для делегатов .NET (процедурные переменные в PascalABC.NET) и присутствуют также в этом качестве в системе Chrome.NET.

Инициализация переменной при описании

Переменная может быть инициализирована при описании:

var i: integer := 1;

Подобное можно сделать и в Delphi Object Pascal, но только для глобальных переменных. В PascalABC.NET можно производить также инициализацию локальной переменной и поля записи или класса:

procedure p; var i: integer := 1; begin end; type Frac = record num: integer := 0; denom: integer := 1; end; MyClass = class s: string := 'NET'; end;

Инициализация полей класса производится в конструкторе объекта этого класса до других действий.

Source: pascalabc.net
Похожие публикации