W Cat - Описание языка PascalABC.NET
- Название:Описание языка PascalABC.NET
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Описание языка PascalABC.NET краткое содержание
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.
Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Оператор try ... finally
Оператор try... finallyимеет вид:
try
операторы
finally
операторы
end;
Операторы в блоке finallyвыполняются безотносительно к тому, возникло или нет исключение в блоке try. При этом само исключение не обрабатывается.
Блок finallyиспользуется для возвращения ранее выделенных ресурсов.
Пример 1.Закрытие открытого файла.
reset(f);
try
...
finally
close(f);
end;
Файл будет закрыт независимо от того, произошло ли ислючение в блоке try.
Пример 2.Возвращение выделенной динамической памяти.
New(p);
try
...
finally
Dispose(p);
end;
Динамическая память, контролируемая указателем p, будет возвращена независимо от того, произошло ли ислючение в блоке try.
Оператор raise
Оператор raiseпредназначен для возбуждения исключения и имеет вид:
raise объект
Здесь объект - объект класса, производного от Exception. Например:
raisenew Exception('Ошибка');
При возбуждении специфического исключения желательно определить свой тип исключения.
Для повторной генерации исключения внутри секции exceptиспользуется также вызов raiseбез параметров:
raise;
Операторы += и -= для процедурных переменных
Оператор присваивания += предназначен для присоединения к процедурной переменной процедуры, оператор присваивания -= - для отсоединения. Подпрограммы вызываются в порядке присоединения. Например:
proceduremult2( varr: real);
begin
r := 2 * r;
end;
procedureadd3( varr: real);
begin
r := r + 3;
end;
var
p: procedure( varx: real);
r: real;
begin
r := 1;
p := mult2;
p += add3;
p(r); // r := 2 * r; r := r + 3;
p -= mult2;
p(r); // r := r + 3;
end.
Отсоединение не присоединенных подпрограмм не выполняет никаких действий.
Кроме того, к процедурной переменной можно прикреплять/откреплять статические и экземплярные методы классов. Пример см. в теме процедурные переменные.
Операторы += и -= используются также для добавления/удаления обработчиков для событий .NET. Например:
procedureOnTimer1(sender: object; e: System.Timers.ElapsedEventArgs);
begin
write(1);
end;
begin
varTimer1 := new System.Timers.Timer(1000);
Timer1.Elapsed +=OnTimer1;
Timer1.Start;
whileTrue do
Sleep(1000);
end.
Оператор lock
Оператор lock имеет вид:
lock объект do
оператор
Объект обязательно принадлежит к ссылочному типу.
Оператор lockгарантирует, что оператор будет выполняться только одним потоком. Объект здесь хранит блокировку, а оператор , представляющий собой тело оператора lock, называется блоком синхронизации. После того как первый поток заходит в блок синхронизации, он блокирует объект , при выходе из блока синхронизации - разблокирует. Если объект заблокирован, то никакой другой поток не может зайти в блок синхронизации и приостанавливается до разблокировки объекта .
Оператор
lockobj do
oper;
полностью эквивалентен следующему участку кода:
Monitor.Enter(obj);
try
oper;
finally
Monitor.Exit(obj);
end;
Процедуры и функции: обзор
Процедура или функция представляет собой последовательность операторов, которая имеет имя, список параметров и может быть вызвана из различных частей программы. Функции, в отличие от процедур, в результате своего выполнения возвращают значение, которое может быть использовано в выражении. Для единообразия функции и процедуры называются подпрограммами .
Описание процедур и функций
Любая используемая в программе процедура или функция должна быть предварительно описана в разделе описаний.
Описание процедуры имеет вид:
procedureимя(список формальных параметров);
раздел описаний
begin
операторы
end;
Описание функции имеет вид:
functionимя(список формальных параметров): тип возвращаемого значения;
раздел описаний
begin
операторы
end;
Операторы подпрограммы, окаймленные операторными скобками begin/ end, называются телом этой подпрограммы.
Список формальных параметров вместе с окружающими скобками может отсутствовать. Он состоит из одной или нескольких секций, разделенных символом ;. Каждая секция состоит из списка переменных, перечисляемых через запятую, после которого следуют двоеточие и тип. Каждая секция может предваряться ключевым словом varили const, что указывает на то, что параметры передаются по ссылке (см.п. Параметры процедур и функций). Тип формального параметра должен быть либо именем, либо динамическим массивом, либо множеством, либо процедурной переменной (для последних трех типов имеет место структурная эквивалентность типов).
Раздел описаний процедуры или функции устроен так же, как и раздел описаний основной программы. Здесь описываются так называемые локальные переменные и константы, типы (за исключением классов - классы можно описывать только глобально) а также вложенные процедуры и функции. Все такие локальные объекты доступны лишь внутри данной подпрограммы и не видны извне.
В разделе описаний подпрограммы можно описывать другие подпрограммы. Исключение составляют методы класса, описываемые непосредственно в теле класса: в них нельзя описывать вложенные подпрограммы ввиду синтаксической неоднозначности.
Например:
procedureDoAdd(a,b: real; varres: real);
begin
res := a + b;
end;
Подпрограмма один раз описывается и может быть многократно вызвана. Для вызова процедуры используется оператор вызова процедуры:
begin
var x := ReadInteger;
var y := ReadInteger;
var res: integer;
DoAdd(x,y,res);
Print(res);
DoAdd(2*x,y,res);
Print(res);
end;
Для вызова функции используется выражение вызова функции.
Внутри тела любой функции определена специальная переменная с именем Result, которая хранит результат вычисления функции. Ее тип совпадает с типом возвращаемого значения функции. Например:
functionSum(a,b: real): real;
begin
Result := a + b;
end;
functionMinElement(a: array ofreal): real;
begin
Result := real.MaxValue;
foreachvar x ina do
ifx < Result then
Читать дальшеИнтервал:
Закладка: