🗊Презентация Семантика языков программирования

Нажмите для полного просмотра!
Семантика языков программирования, слайд №1Семантика языков программирования, слайд №2Семантика языков программирования, слайд №3Семантика языков программирования, слайд №4Семантика языков программирования, слайд №5Семантика языков программирования, слайд №6Семантика языков программирования, слайд №7Семантика языков программирования, слайд №8Семантика языков программирования, слайд №9Семантика языков программирования, слайд №10Семантика языков программирования, слайд №11Семантика языков программирования, слайд №12Семантика языков программирования, слайд №13Семантика языков программирования, слайд №14Семантика языков программирования, слайд №15Семантика языков программирования, слайд №16Семантика языков программирования, слайд №17Семантика языков программирования, слайд №18Семантика языков программирования, слайд №19Семантика языков программирования, слайд №20Семантика языков программирования, слайд №21

Содержание

Вы можете ознакомиться и скачать презентацию на тему Семантика языков программирования. Доклад-сообщение содержит 21 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Семантика языков программирования
Определение языка программирования должно иметь как минимум две части: синтаксис и семантику.
 Синтаксис задаётся формально контекстно – свободными грамматиками.
 Семантика чаще всего определяется неформально, например смысл оператора
		while  B do C
объясняют так: «Для вычисления этого оператора нужно вычислять оператор C до тех пор, пока значение выражения B истинно».
 В этом курсе мы рассмотрим методы формального задания семантики языков программирования.
Описание слайда:
Семантика языков программирования Определение языка программирования должно иметь как минимум две части: синтаксис и семантику. Синтаксис задаётся формально контекстно – свободными грамматиками. Семантика чаще всего определяется неформально, например смысл оператора while B do C объясняют так: «Для вычисления этого оператора нужно вычислять оператор C до тех пор, пока значение выражения B истинно». В этом курсе мы рассмотрим методы формального задания семантики языков программирования.

Слайд 2





Зачем нужна формальная семантика?
Чтобы точно знать возможности языка программирования.
 Чтобы доказывать корректность программы, а не экспериментировать с компилятором.
 Чтобы убедиться, что компилятор работает корректно.
 Для облегчения переносимости компилятора на различные платформы.
Описание слайда:
Зачем нужна формальная семантика? Чтобы точно знать возможности языка программирования. Чтобы доказывать корректность программы, а не экспериментировать с компилятором. Чтобы убедиться, что компилятор работает корректно. Для облегчения переносимости компилятора на различные платформы.

Слайд 3





Эквивалентные преобразования программы
Зная, что
		if true then C1 else C2 
делает тоже самое, что и
		C1
можно упростить программу.
Используя формальную семантику можно доказывать эквивалентность и более сложных фрагментов программы.
Описание слайда:
Эквивалентные преобразования программы Зная, что if true then C1 else C2 делает тоже самое, что и C1 можно упростить программу. Используя формальную семантику можно доказывать эквивалентность и более сложных фрагментов программы.

Слайд 4





Эквивалентны ли фрагменты программы?

 begin
   C1 ;
   if B
    then C2
    else C3
end
Описание слайда:
Эквивалентны ли фрагменты программы? begin C1 ; if B then C2 else C3 end

Слайд 5





А эти?

begin
  if B
    then C2
    else C3 ;
  C1
end
Описание слайда:
А эти? begin if B then C2 else C3 ; C1 end

Слайд 6





Абстрактный синтаксис языка арифметических выражений
Синтаксические категории
			е		Exp
			op		Op
			n		Num


Определения
 			op	::=	+ | - | * | div
			e	::= 	n | e/ op e//
Описание слайда:
Абстрактный синтаксис языка арифметических выражений Синтаксические категории е  Exp op  Op n  Num Определения op ::= + | - | * | div e ::= n | e/ op e//

Слайд 7





Методы определения семантики
Конкретная операционная семантика
Естественная семантика
Вычислительная
(структурно – операционная) семантика
Денотационная семантика
Описание слайда:
Методы определения семантики Конкретная операционная семантика Естественная семантика Вычислительная (структурно – операционная) семантика Денотационная семантика

Слайд 8





Конкретнтая операционная семантика языка Exp
topostfix(N,S,[N|S]) :- number(N).
topostfix(E,S,R) :- 
        E =.. [Op,A,B],
        member(Op,[+,-,*,/]),
        topostfix(A,[Op|S],S1),
        topostfix(B,S1,R).

calc([],[R],R).
calc([N|Cs],S,R) :-
        number(N),
        calc(Cs,[N|S],R).
calc([Op|Cs],[N1,N2|S],R) :-
        member(Op,[+,-,*,/]),
        E =.. [Op,N1,N2],
        N is E,
        calc(Cs,[N|S],R).
Описание слайда:
Конкретнтая операционная семантика языка Exp topostfix(N,S,[N|S]) :- number(N). topostfix(E,S,R) :- E =.. [Op,A,B], member(Op,[+,-,*,/]), topostfix(A,[Op|S],S1), topostfix(B,S1,R). calc([],[R],R). calc([N|Cs],S,R) :- number(N), calc(Cs,[N|S],R). calc([Op|Cs],[N1,N2|S],R) :- member(Op,[+,-,*,/]), E =.. [Op,N1,N2], N is E, calc(Cs,[N|S],R).

Слайд 9





Естественная семантика
Это аксиоматическая система, определяющая смысл каждой конструкции языка в виде вычисляемого ею значения.
Определим семантику языка арифметических выражений.
Для этого понадобится отношение
 : Exp  Num ,
отображающее множество арифметических выражений на множество чисел.
 Оно определяется индуктивно: 
Правило 1:  Для каждой числовой константы n, n  n.
Правило 2: Если e  v и e’  v’, то e op e’  Ap (op, v, v’).
Описание слайда:
Естественная семантика Это аксиоматическая система, определяющая смысл каждой конструкции языка в виде вычисляемого ею значения. Определим семантику языка арифметических выражений. Для этого понадобится отношение  : Exp  Num , отображающее множество арифметических выражений на множество чисел. Оно определяется индуктивно: Правило 1: Для каждой числовой константы n, n  n. Правило 2: Если e  v и e’  v’, то e op e’  Ap (op, v, v’).

Слайд 10





Правила, определяющие естественную семантику
языка арифметических выражений
Правило CR



Правило OpR
Описание слайда:
Правила, определяющие естественную семантику языка арифметических выражений Правило CR Правило OpR

Слайд 11





Вычисление значений арифметических выражений
Пусть нужно вычислить значение выражения
3 * 4 + 8 div (4 – 2).
Это сумма, и применение правила OpR приведёт к
Для вычисления применим ещё два раза правила OpR:
Описание слайда:
Вычисление значений арифметических выражений Пусть нужно вычислить значение выражения 3 * 4 + 8 div (4 – 2). Это сумма, и применение правила OpR приведёт к Для вычисления применим ещё два раза правила OpR:

Слайд 12





Вычисление значения арифметических выражений
(продолжение)
В конце концов, получив численную константу применим правила CR:
Описание слайда:
Вычисление значения арифметических выражений (продолжение) В конце концов, получив численную константу применим правила CR:

Слайд 13





Реализация естественной семантики языка Exp
eval(N,N) :- number(N).

eval(E,R) :-
        E =.. [Op,E1,E2],
        member(Op,[+,-,*,/]),
        eval(E1,R1),
        eval(E2,R2),
        Ee =.. [Op,R1,R2],
        R is Ee.

test(V) :-
        eval(2*3+4-6/2, V).
Описание слайда:
Реализация естественной семантики языка Exp eval(N,N) :- number(N). eval(E,R) :- E =.. [Op,E1,E2], member(Op,[+,-,*,/]), eval(E1,R1), eval(E2,R2), Ee =.. [Op,R1,R2], R is Ee. test(V) :- eval(2*3+4-6/2, V).

Слайд 14





Индукция
Свойства семантики языка программирования можно доказывать по индукции.
Метод математической индукции:
Чтобы доказать свойство P(x) всех натуральных чисел, нужно доказать два отдельных утверждения:
1) Истинность P(0). Это база индукции.
2) То, что из истинности P(k) следует истинность P(k+1) . Это индуктивный шаг.
Почему?
- Потому, что эти два утверждения определяют рекурсивный процесс, который проверит истинность свойства P(x) для всех натуральных чисел.
Описание слайда:
Индукция Свойства семантики языка программирования можно доказывать по индукции. Метод математической индукции: Чтобы доказать свойство P(x) всех натуральных чисел, нужно доказать два отдельных утверждения: 1) Истинность P(0). Это база индукции. 2) То, что из истинности P(k) следует истинность P(k+1) . Это индуктивный шаг. Почему? - Потому, что эти два утверждения определяют рекурсивный процесс, который проверит истинность свойства P(x) для всех натуральных чисел.

Слайд 15





Пример
Пусть нужно доказать, что сумма первых n натуральных чисел равна
n * (n+1) div 2, то есть
0 + 1 + … + n = n * (n+1) div 2.
Это свойство всех натуральных чисел.
Итак, для доказательства P(n), для всех n   нужно показать, что:
1) 0 = 0 * (0+1) div 2. Для этого достаточно просто выполнить арифметические действия.
2) Из истинности 
  (1)		0 + 1 + … + n = n * (n+1) div 2
 вывести
 (2)	0 + 1 + … + n + (n+1) = (n+1) * (n+2) div 2.
Прибавим к обоим частям истинного равенства (1) (n+1) получим:
 0 + 1 + … + n + (n+1) = n * (n+1) div 2 + (n+1).
Далее выполнив преобразование правой части получим:
n * (n+1) div 2 + (n+1) = {умножим и поделим (n+1) на 2 }
n * (n+1) div 2 + 2 * (n+1) div 2 = {сложим дроби} 
(n * (n+1) + 2 * (n+1)) div 2 = {вынесем (n+1)за скобку} 
(n+1) * (n+2) div 2.
Описание слайда:
Пример Пусть нужно доказать, что сумма первых n натуральных чисел равна n * (n+1) div 2, то есть 0 + 1 + … + n = n * (n+1) div 2. Это свойство всех натуральных чисел. Итак, для доказательства P(n), для всех n   нужно показать, что: 1) 0 = 0 * (0+1) div 2. Для этого достаточно просто выполнить арифметические действия. 2) Из истинности (1) 0 + 1 + … + n = n * (n+1) div 2 вывести (2) 0 + 1 + … + n + (n+1) = (n+1) * (n+2) div 2. Прибавим к обоим частям истинного равенства (1) (n+1) получим: 0 + 1 + … + n + (n+1) = n * (n+1) div 2 + (n+1). Далее выполнив преобразование правой части получим: n * (n+1) div 2 + (n+1) = {умножим и поделим (n+1) на 2 } n * (n+1) div 2 + 2 * (n+1) div 2 = {сложим дроби} (n * (n+1) + 2 * (n+1)) div 2 = {вынесем (n+1)за скобку} (n+1) * (n+2) div 2.

Слайд 16





Структурная индукция
Метод математической индукции применим к натуральным числам потому, что их множество определяется по индукции:
0  
Если n  , то и n+1  .
Доказательство по индукции можно строить и для других множеств, заданных по индукции. Например, возьмем множество списков натуральных чисел. Обозначим через [] – пустой список, а через : - операцию построения списка из головы и хвоста. Наше множество Lists() можно определить так.
[]  Lists() 
Если l  Lists(), а n  , то  n:l  Lists() .
В форме правил:
Описание слайда:
Структурная индукция Метод математической индукции применим к натуральным числам потому, что их множество определяется по индукции: 0   Если n  , то и n+1  . Доказательство по индукции можно строить и для других множеств, заданных по индукции. Например, возьмем множество списков натуральных чисел. Обозначим через [] – пустой список, а через : - операцию построения списка из головы и хвоста. Наше множество Lists() можно определить так. []  Lists() Если l  Lists(), а n  , то n:l  Lists() . В форме правил:

Слайд 17





Закон « map после (++)»
Для всех списков xs, ys и функций f выполняется равенство:
map f (xs++ys) = map f xs ++ map f ys ,
       при условии что правильно определены типы.
Описание слайда:
Закон « map после (++)» Для всех списков xs, ys и функций f выполняется равенство: map f (xs++ys) = map f xs ++ map f ys , при условии что правильно определены типы.

Слайд 18


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

Слайд 19





Теорема. Отношение  для языка Exp является функцией
Для всех выражений е  Exp справедливо, что если e  v   и   e  v’ , то      v = v’.       Это P(e).
Для доказательства применим структурную индукцию. Нужно доказать:
		1) P(n) для всех чисел n.
		2) При условии истинности P(e) и P(e’) доказать P(e op e’) .
Описание слайда:
Теорема. Отношение  для языка Exp является функцией Для всех выражений е  Exp справедливо, что если e  v и e  v’ , то v = v’. Это P(e). Для доказательства применим структурную индукцию. Нужно доказать: 1) P(n) для всех чисел n. 2) При условии истинности P(e) и P(e’) доказать P(e op e’) .

Слайд 20





Первый случай
Если n  v, а для вычисления v  мы могли использовать только правило CR то n = v .
Если n  v’, то из тех же соображений
получим n = v ’ .
Из n = v  и  n = v ’ следует, что v = v ’ .
Описание слайда:
Первый случай Если n  v, а для вычисления v мы могли использовать только правило CR то n = v . Если n  v’, то из тех же соображений получим n = v ’ . Из n = v и n = v ’ следует, что v = v ’ .

Слайд 21





Второй случай
Если e’ op e”  v, а для вычисления v  мы могли использовать только правило OpR , значит e’m’, e”m” а v = Ap(opNum, m’, m”) , где m’, m” - некоторые числа.
Если e’ op e”  v’, а для вычисления v’  мы могли использовать только правило OpR , значит e’k’, e”k” а v’ = Ap(opNum, k’, k”) , где k’, k” - некоторые числа.
Из P(e’) и P(e”) получим, что m’=k’, m”=k” .
А поскольку opNum - функция, получим v=v’ .
Описание слайда:
Второй случай Если e’ op e”  v, а для вычисления v мы могли использовать только правило OpR , значит e’m’, e”m” а v = Ap(opNum, m’, m”) , где m’, m” - некоторые числа. Если e’ op e”  v’, а для вычисления v’ мы могли использовать только правило OpR , значит e’k’, e”k” а v’ = Ap(opNum, k’, k”) , где k’, k” - некоторые числа. Из P(e’) и P(e”) получим, что m’=k’, m”=k” . А поскольку opNum - функция, получим v=v’ .



Похожие презентации
Mypresentation.ru
Загрузить презентацию