W Cat - Описание языка PascalABC.NET
- Название:Описание языка PascalABC.NET
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Описание языка PascalABC.NET краткое содержание
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.
Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Оператор безусловного перехода goto
Оператор безусловного перехода gotoимеет следующую форму:
gotoметка
Он переносит выполнение программы к оператору, помеченному меткой метка.
Метка представляет собой идентификатор или целое без знака. Чтобы пометить оператор меткой, необходимо перед оператором указать метку с последующим двоеточием:
label1: оператор
Метки должны быть описаны в разделе меток с использованием служебного слова label:
label1,2,3;
Например, в результате выполнения программы
label1,2;
begin
vari := 5;
2: ifi<0 then goto1;
write(i);
Dec(i);
goto2;
1:
end.
будет выведено 543210.
Метка должна помечать оператор в том же блоке, в котором описана. Метка не может помечать несколько операторов.
Переход на метку может осуществляться либо на оператор в том же блоке, либо на оператор в объемлющей конструкции. Так, запрещается извне цикла переходить на метку внутри цикла.
Использование оператора безусловного перехода в программе считается признаком плохого стиля программирования. Для основных вариантов использования gotoв язык Паскаль введены специальные процедуры: break- переход на оператор, следующий за циклом, exit- переход за последний оператор процедуры, continue- переход за последний оператор в теле цикла.
Один из немногих примеров уместного использования оператора gotoв программе - выход из нескольких вложенных циклов одновременно. Например, при поиске элемента k в двумерном массиве:
vara: array[1..10,1..10] ofinteger;
...
varfound := False;
for vari:=1 to10 do
for varj:=1 to10 do
ifa[i,j]=k then
begin
found := True;
gotoc1;
end;
c1: writeln(found);
Операторы break, continue и exit
Операторы breakи continueиспользуются только внутри циклов.
Оператор breakпредназначен для досрочного завершения цикла. При его выполнении происходит немедленный выход из текущего цикла и переход к выполнению оператора, следующего за циклом. Оператор continueзавершает текущую итерацию цикла, осуществляя переход к концу тела цикла. Например:
flag := False;
for vari:=1 to10 do
begin
read(x);
ifx<0 then continue; // пропуск текущей итерации цикла
ifx=5 then
begin
flag := True;
break; // выход из цикла
end;
end;
Использование операторов breakи continueвне тела цикла ошибочно.
Оператор exitпредназначен для досрочного завершения процедуры или функции. Например
functionAnalyze(x: integer): boolean;
begin
ifx<0 then
begin
Result := False;
exit
end;
...
end;
Вызов exitв разделе операторов основной программы приводит к ее немедленному завершению.
Следует отметить, что в PascalABC.NET(в отличие от Borland Pascal и Borland Delphi) break, continueи exitявляются не процедурами, а именно операторами.
Оператор try ... except
Оператор try... exceptимеет вид:
try
операторы
except
блок обработки исключений
end;
Блок tryназывается защищаемым блоком . Если при выполнении программы в нем происходит ошибка, то он завершается и выполнение передается блоку except. Если исключение обрабатывается в блоке except, то после его обработки программа продолжает выполняться с оператора, следующего за try... except... end. Если исключение остается необработанным и имеется объемлющий блок try, то выполнение передается его блоку except. Если объемлющего блока tryнет, то программа завершается с ошибкой. Наконец, если в блоке tryошибки не произошло, то блок exceptигнорируется и выполнение программы продолжается дальше.
Если в процессе обработки исключения (в блоке except) произошло другое исключение, то текущий блок exceptзавершается, первое исключение считается необработанным и обработка нового исключения передается объемлющему блоку try. Таким образом, в каждый момент времени существует максимум одно необработанное исключение.
Блок обработки исключений представляет собой либо последовательность операторов, разделенных точкой с запятой, либо последовательность обработчиков исключений вида
on имя : тип do оператор
Обработчики разделяются символом ';', после последнего обработчика также может следовать символ ';'. Здесь тип - тип исключения (должен быть производным от стандартного типа Exception), имя - имя переменной исключения (имя с последующим двоеточием может быть опущено). В первом случае при обработке исключения выполняются все операторы из блока except. Во втором случае среди обработчиков осуществляется поиск типа текущего исключения (обработчики перебираются последовательно от первого до последнего), и если обработчик найден, то выполняется соответствующий оператор обработки исключения, в противном случае исключение считается необработанным и передается объемлющему блоку try. В последнем случае после всех обработчиков onможет идти ветвь else, которая обязательно обработает исключение, если ни один из обработчиков не выполнился.
Следует обратить внимание, что имя переменной исключения в разных обработчиках может быть одинаковым, т.е. оно локально по отношению к обработчику.
Поиск типа исключения в обработчиках производится с учетом наследования: исключение будет обработано, если оно принадлежит к указанному в обработчике типу или производному от него. Поэтому принято записывать вначале обработчики производных классов, а затем - обработчики базовых (в противном случае обработчик исключения производного класса никогда не сработает). Обработчик исключения Exception обрабатывает все возможные исключения и поэтому должен быть записан последним.
Пример.
vara: array[1..10] ofinteger;
try
vari: integer;
readln(i);
writeln(a[i] divi);
...
except
onSystem.DivideByZeroException do
writeln('Деление на 0');
one: System.IndexOutOfRangeException do
writeln(e.Message);
onSystem.FormatException do
writeln('Неверный формат ввода');
elsewriteln('Какое-то другое исключение');
end;
Читать дальшеИнтервал:
Закладка: