- •Затверджено Вченою радою факультету кібернетики Протокол № __ від __ ______ 2010 р.
- •1. Синтаксис та семантика. Мова sipl. Композиційна семантика
- •1.1. Синтаксис мови sipl
- •1.2. Композиційна семантика мови sipl
- •1.2.2. Функції
- •1.2.3. Композиції
- •1.2.4. Програмні алгебри
- •1.3. Побудова семантичного терму програми
- •1.4. Доведення коректності програм
- •1.5. Розв’язки типових задач
- •1.6. Розширення мови sipl: Введення булевих змінних
- •1.7. Приклади розв’язків задач.
- •1.8. Розширення мови sipl: Введення викликів функцій
- •1.9. Приклади задач
- •1.10. Завдання для самостійної роботи
- •1.11. Приклади завдань для контрольної роботи.
- •Тема 2. Формальні мови та граматики
- •2.1. Побудова мови за допомогою системи рівнянь з регулярними коефіцієнтами
- •2.2. Завдання для самостійної та контрольної роботи
- •2.3. Нормальні форми Хомського та Грейбах
- •2.4. Завдання для самостійної та контрольної роботи
- •Тема 3. Рекурсія та найменша нерухома точка. Неперервність операторів
- •Тема 4. Натуральна семантика
- •Тема 5. Аксіоматична семантика
- •Література
1.8. Розширення мови sipl: Введення викликів функцій
Подамо у наступній таблиці (Табл.1.8) cинтаксис розширення БНФ:
Таблиця 1.8.
Ліва частина правила – метазмінна |
Права частина правила |
Ім’я правила |
<програма> ::= |
…| program <список об’явлень функцій> begin <оператор> end |
NP1 NP2 |
<вираз> ::= |
…| if <умова> then <вираз> else <вираз> | <виклик функції> |
NA1–NA7 NA8 NA9 |
<список об’явлень функцій>::= |
e | <об’явлення функції> | <об’явлення функції> ; <список об’явлень функцій> |
LDF1 LDF2 LDF3 |
<об’явлення функції>::= |
func <ім’я функції>=<вираз> | func <ім’я функції>(<список формальних параметрів>) = <вираз> |
DF1 DF2 |
<ім’я функції> ::= |
<змінна> |
NF |
<список формальних параметрів>::= |
<змінна> | <змінна> , <список формальних параметрів> |
LFP1 LFP2 |
<виклик функції> ::= |
<ім’я функції> | <ім’я функції> (<список фактичних параметрів>) |
CF1 CF2 |
<список фактичних параметрів>::= |
<вираз> | <вираз> , <список фактичних параметрів> |
LAP1 LAP2 |
Тобто ми змінили синтаксис виразу: додавши варіант завдання виразу за допомогою умов
<вираз> ::= if <умова> then <вираз1> else <вираз2>
якщо умова виконується, то <вираз> := <вираз1> інакше <вираз> := <вираз2>, або ж
<вираз> ::= <виклик функції>
значення виразу буде дорівнювати результату виклику функції.
Зміниться і синтаксис програми: додамо варіант
<програма> ::= program <список об’явлень функцій> begin <оператор> end
де <список об’явлень функцій> може бути порожнім, або складатися з об’явлень функцій перерахованих через кому. Так ми додамо можливість використовувати функції із списку об’явлень функцій
Синтаксис об’явлення функції митаме такий вигляд:
<об’явлення функції>::= func <ім’я функції>=<вираз> |
func <ім’я функції>(<список формальних параметрів>) = <вираз>
де список формальних параметрів це список змінних перерахованих через кому.
Синтаксис виклику функції має вигляд:
<виклик функції> ::= <ім’я функції> , якщо функція не має параметрів, та
<виклик функції> ::= <ім’я функції> (<список фактичних параметрів>) де список фактичних параметрів – список виразів перерахованих через кому.
Семантика суперпозиції при цьому може бути 2-х видів:
Глобальною суперпозицією функцій g1,g2,…,gn в номінативну функцію f називається функція, яка задається формулою: S(v1,v2,..vn)(f,g1,g2,…,gn)(st) = f([v1g1(st),v2g2(st),…,vngn(st)])
Локальною суперпозицією функцій g1,g2,…,gn в номінативну функцію f називається функція, яка задається формулою
S[v1,v2,..vn](f,g1,g2,…,gn)(st) = f(stÑ[v1g1(st),v2g2(st),…,vngn(st)])
+ семантика – формально + повно
…
1.5. пункти і т.д. = оформлення: шрифт (14) + абзаци (відступи) + підписи таблиць (стандарт) + відступи у тексті + міжстрокові…