Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОПРОСЫ ГОСУДАРСТВЕННОГО ЭКЗАМЕНА.docx
Скачиваний:
319
Добавлен:
12.04.2015
Размер:
5.76 Mб
Скачать

3. Семантический подход к языкам программирования

Определения: язык программирования, синтаксис, семантика языка программирования.

Язык программирования – формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.

Синтаксис языка программирования – совокупность правил записи, которым должна удовлетворять программа, включает также правила ввода текстов программ в ЭВМ.

Семантика языка программирования – правила, определяющие какие операции, и в какой последовательности должна выполнять ЭВМ, работающая по программе.

Базовые средства описания данных.

Базовые средства описания действий.

Дополнительные возможности в языках.

Перегрузка процедур и функций

Перегрузка процедур и функций – возможность использования одноимённых подпрограмм: процедур или функций в языках программирования, с разным количеством или типом параметров.

int sum(int a, int b)

{

return a + b;

}

function sum(var a, b: integer) : integer; overload;

begin

result := a + b;

end;

float sum(float a, float b)

{

return a + b;

}

function sum(var a, b: real) : real; overload;

begin

result := a + b;

end;

Однако JavaScript не имеет такой возможности, так как этот язык не является типизированным.

Множественное наследование

Множественное наследование – свойство, поддерживаемое частью объектно-ориентированных языков программирования, когда класс может иметь более одного суперкласса (непосредственного класса-родителя). Эта концепция является расширением «простого (или одиночного) наследования» при котором класс может наследоваться только от одного суперкласса.

В JavaScript множественное наследование не возможно, так как в нем нет как таковых классов (используется  прототипное наследование).

Шаблонные функции

Шаблоны (англ. template) — средство языка, предназначенное для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию).

T sum<T>(T a, T b)

{

return a + b;

}

Console.WriteLine(sum<int>(1, 2));

Console.WriteLine(sum<real>(1, 2));

На Delphi аналога нет (точнее он есть, но его реализация слишком сложна).

Обработка исключений

Обработка исключительных ситуаций (англ. exception handling) — механизм языков программирования, предназначенный для описания реакции программы на ошибки времени выполнения и другие возможные проблемы (исключения), которые могут возникнуть при выполнении программы и приводят к невозможности (бессмысленности) дальнейшей отработки программой её базового алгоритма.

Для Object Pascal: 1.Защищенный блок начинается зарезервированным словом try (попытаться [выполнить]) и завершается словом end. Существуют два типа защищенных блоков - except (исключить) и finally (в завершение), отличающихся способом обработки исключения. В блоке except порядок выполнения операторов таков: сначала выполняются операторы секции try... except; если операторы выполнены без возникновения исключительной ситуации, работа защищенного блока на этом прекращается, и управление получает оператор, стоящий за end; если при выполнении части try возникло исключение, управление получает соответствующий обработчик в секции except, а если таковой не найден - первый из операторов, стоящих За словом else. 2.В блоке finally операторы В секции finally. . .end получают управление всегда, независимо от того, возникло ли исключение в секции try.. .finally или нет. Если исключение возникло, все операторы в секции try.. .finally, стоящие за “виновником” исключения, пропускаются, и управление получает первый оператор секции finally... end. Если исключения не было, этот оператор получает управление после выполнения последнего оператора секции try.. .finally.

try {

//код с возможной ошибкой

} catch (Exception e) { //обработка ошибки

} finally { //код, который выполняется всегда

}

try

операторы

except

обработчик исключения

else операторы

end;

try { //пример: деление на ноль

d = 2 / 0;

} catch (DivideByZeroException e) {

Console.WriteLine(“Деление на ноль!”);

}

try

операторы

finally

операторы

end;

Литература: [3], [4].