W Cat - Описание языка PascalABC.NET
- Название:Описание языка PascalABC.NET
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Описание языка PascalABC.NET краткое содержание
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.
Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
type Person = auto class
name: string;
age: integer;
end;
var p: Person; // p хранит значение nil, память под объект не выделена
p := new Person('Иванов',20); // конструктор выделяет память под объект
При присваивании переменных размерного типа копируются значения этого типа. Если размерный тип имеет большой размер, эта операция может выполняться долго. Например:
var a,a1: array [1..1000000] of integer;
a1 := a; // копируются все 1000000 элементов
При присваивании переменных ссылочного типа осуществляется присваивание ссылок, в итоге после присваивания обе ссылки ссылаются на один объект в динамической памяти:
var p1: Person;
p1 := p; // копируется ссылка
Сравнение на равенство объектов размерного типа сравнивает их значения. В частности, две переменные типа запись равны если равны все поля этих записей.
type PersonRec = record
name: string;
age: integer;
end;
var p,p1: PersonRec;
p.name := 'Иванов'; p.age := 20;
p1.name := 'Иванов'; p1.age := 20;
writeln(p1 = p); // True
При сравнении на равенство переменных ссылочного типа проверяется, что они ссылаются на один и тот же объект.
var p := new Person('Иванов',20);
var p1 := new Person('Иванов',20);
writeln(p1=p); // False
Размерные типы распределяются на программном стеке, поэтому не нуждаются в специальном управлении памятью. Под глобальные размерные переменные память распределена всё время работы программы. Под локальные размерные переменные память выделяется в момент вызова подпрограммы. а освобождается в момент завершения работы этой подпрограммы.
Управление памятью для ссылочных типов осуществляется автоматически сборщиком мусора. Сборщик мусора запускается в неопределенный момент времени когда управляемой памяти перестаёт хватать. Он возвращает в пул неиспользуемой памяти те объекты, на которые больше никто не ссылается, после чего дефрагментирует оставшуюся память, в результате чего динамическая память всегда дефрагментирована и ее выделение при вызове конструктора происходит практически мгновенно.
При передаче размерных типов по значению происходит копирование значения фактического параметра в переменную-формальный параметр. Если размерный тип имеет большой размер, это может занимать продолжительное время, поэтому размерный тип в этом случае передаётся по ссылке на константу:
type Arr = array [1..100] of integer;
procedure PrintArray(const a: Arr; n: integer);
begin
for var i:=1 to n do
Print(a[i])
end;
Ссылочные типы передаются в подпрограмму, как правило, по значению. При передаче таких параметров происходит копирование ссылки, в результате формальный и фактический параметр будут ссылаться на один объект.
procedure Change666(a: array of integer);
begin
a[0] := 666;
end;
При этом в результате изменения формального параметра внутри подпрограммы меняется и содержимое соответствующего фактического параметра при вызове подпрограммы.
Целые типы
Ниже приводится таблица целых типов, содержащая также их размер и диапазон допустимых значений.
Тип |
Размер, байт |
Диапазон значений |
shortint |
1 |
-128..127 |
smallint |
2 |
-32768..32767 |
integer, longint |
4 |
-2147483648..2147483647 |
int64 |
8 |
-9223372036854775808..9223372036854775807 |
byte |
1 |
0..255 |
word |
2 |
0..65535 |
longword, cardinal |
4 |
0..4294967295 |
uint64 |
8 |
0..18446744073709551615 |
BigInteger |
переменный |
неограниченный |
Типы integer и longint, а также longword и cardinal являются синонимами.
Максимальные значения для каждого целого типа определены как внешние стандартные константы: MaxInt64, MaxInt, MaxSmallInt, MaxShortInt, MaxUInt64, MaxLongWord, MaxWord, MaxByte.
Для каждого целого типа T кроме BigInteger определены следующие константы как статические члены:
T.MinValue - константа, представляющая минимальное значение типа T;
T.MaxValue - константа, представляющая максимальное значение типа T;
Для каждого целого типа T определены статические функции:
T.Parse(s) - функция, конвертирующая строковое представление числа в значение типа T. Если преобразование невозможно, то генерируется исключение;
T.TryParse(s,res) - функция, конвертирующая строковое представление числа в значение типа T и записывающая его в переменную res. Если преобразование возможно, то возвращается значение True, в противном случае - False.
Кроме того, для T определена экземплярная функция ToString, возвращающая строковое представление переменной данного типа.
Константы целого типа могут представляться как в десятичной, так и в шестнадцатеричной форме, перед шестнадцатеричной константой ставится знак $:
25 3456 $FFFF
Вещественные типы
Ниже приводится таблица вещественных типов, содержащая их размер, количество значащих цифр и диапазон допустимых значений:
Тип |
Размер, байт |
Количество значащих цифр |
Диапазон значений |
real |
8 |
15-16 |
-1.8∙10 308.. 1.8∙10 308 |
double |
8 |
15-16 |
-1.8∙10 308.. 1.8∙10 308 |
single |
4 |
7-8 |
-3.4∙10 38.. 3.4∙10 38 |
single |
4 |
7-8 |
-3.4∙10 38.. 3.4∙10 38 |
decimal |
16 |
30 |
-79228162514264337593543950335 .. 79228162514264337593543950335 |
Типы real и double являются синонимами. Самое маленькое положительное число типа real приблизительно равно 5.0∙10 -324, для типа single оно составляет приблизительно 1.4∙10 -45.
Максимальные значения для каждого вещественного типа определены как внешние стандартные константы: MaxReal, MaxDouble и MaxSingle.
Для каждого вещественного типа R кроме decimal определены также следующие константы как статические члены класса:
R.MinValue - константа, представляющая минимальное значение типа R;
R.MaxValue - константа, представляющая максимальное значение типа R;
R.Epsilon - константа, представляющая самое маленькое положительное число типа R;
R.NaN - константа, представляющая не число (возникает, например, при делении 0/0);
R.NegativeInfinity - константа, представляющая отрицательную бесконечность (возникает, например, при делении -2/0);
R.PositiveInfinity - константа, представляющая положительную бесконечность (возникает, например, при делении 2/0).
Для каждого вещественного типа R кроме decimal определены следующие статические функции:
R.IsNaN(r) - возвращает True, если в r хранится значение R.NaN, и False в противном случае;
R.IsInfinity(r) - возвращает True, если в r хранится значение R.PositiveInfinity или R.NegativeInfinity, и False в противном случае;
R.IsPositiveInfinity(r) - возвращает True, если в r хранится значение R.PositiveInfinity, и False в противном случае;
R.IsNegativeInfinity(r) - возвращает True, если в r хранится значение R.NegativeInfinity, и False в противном случае;
Читать дальшеИнтервал:
Закладка: