Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы твп.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.26 Mб
Скачать

30) Семантическая теория программ. Денотационная семантика.

  • Определение для каждой сущности языка некоего математического объекта (денотата) и некоей функции, отображающей экземпляры этого элемента в экземпляры математического объекта

  • Идея основана на факте существования строгих методов оперирования математическими объектами, а не конструкциями языков программирования.

  • Сложность использования метода заключается в создании объектов и функций отображения.

Пример описания денотационной семантики

Описание двоичных чисел:

$двоичное_число:= “0” | “1” | <двоичное_число> “0” |

<двоичное_число> “1”

Определим денотат Nat - область определения семантических значений объектов (представляет собой множество неотрицательных десятичных целых чисел).

Семантическая функция Мb отображает синтаксические объекты в объекты множества Nat согласно указанным правилам:

  • Мb(“0”) = 0, Мb(“1”)=1;

  • Мb(<двоичное_число> “0”) = 2 × Мb(<двоичное_число>);

  • Мb(<двоичное_число> “1”) = 2 × Мb(<двоичное_число>) + 1

31) Семантическая теория программ. Операционная и декларативная семантика.

Операционная семантика

  • Сводится к описанию смысла программы посредством выполнения ее операторов на реальной или виртуальной машине.

  • Смысл оператора определяется изменениями, произошедшими в состоянии машины после выполнения данного оператора, т.е. семантика команды представляется изменением в состоянии компьютера, вызванным выполнением команды.

  • Описание операционной семантики операторов языков программирования высокого уровня требует создания реального или виртуального автомата.

  • Операционная семантика является эффективной до тех пор, пока описание языка остается простым и неформальным.

Аппаратные проблемы операционной семантики

  • Аппаратное обеспечение компьютера является чистым интерпретатором его машинного языка, который создается с помощью программных средств, являющихся виртуальным компьютером для данного языка.

  • Сложность и индивидуальные особенности аппаратного обеспечения компьютера и операционной системы, используемых для запуска чистого интерпретатора, затрудняют понимание происходящих действий.

  • Семантическое определение будет доступно только для конфигурации компьютера, идентичной построенному интерпретатору.

  • Решение проблем: замена реального компьютера виртуальным компьютером низкого уровня.

Пример описания операционной семантики на низкоуровневом языке

ident := var

ident := ident - 1

goto label

if var relop var goto label

relopоператор отношений

из набора {= , <>, >, <, >=, <=},

identидентификатор,

var идентификатор / константа.

Обобщение описания:

ident := var bin_op var

ident := un_op var

bin_op - бинарный оператор,

un_op - унарный оператор

Декларативная семантика

  • Является существенной характеристикой языков логического программирования, в которых программы состоят из объявлений (деклараций), а не из операторов присваивания и управляющих операторов. Эти объявления в действительности являются операторами, или высказываниями символьной логики.

  • Основная концепция: существует простой способ определения смысла каждого оператора, и он не зависит от того, как именно этот оператор используется для решения задачи.

  • Не требует для проверки отдельного оператора рассмотрения его контекста, локальных объявлений или последовательности выполнения программы.

  • Формальное определение семантики становится общепринятой частью определения нового языка.

Пример описания в декларативной семантике

Естественный язык

Язык логики 1-го порядка

Х - Студент

Студент(X)

V изучает T

Изучает (V, T)

Sin 3 = 0.1411

Sin (3, 0.1411)

3+7 = 10

+(3,7,10)