- •Преимущества
- •Связь: ooa→oop→ood
- •Механизм работы virtual
- •Абстрактный класс
- •Виртуальный деструктор
- •{Основные элементы языка программирования}
- •Основные подходы к семантике:
- •Формальное описание семантики:
- •Среда программирования
- •Объекты данных
- •Атрибуты объекта данных
- •Система типизации данных
- •Реализация типов данных
- •Типизация
- •Система типизации данных
- •Реализация типов данных
- •Связывание переменных
- •Контроль типов
- •Статистический контроль типов
- •Алгоритм статистического контроля типов
- •Динамический контроль типов
- •Параллелизм
- •Полиморфизм
- •Статический полиморфизм
- •Динамический полиморфизм
- •Преобразование типов
- •Связь: ooa→oop→ood
- •Среда программирования
- •Цель технологий параллелизма
- •Схемы параллелизма
- •Проблемы параллельного программирования
- •Показатели эффективности параллельного алгоритма Ускорение
- •Закон Густавсона-Барсиса
- •Масштабируемый алгоритм
- •Схемы параллелизма
- •Подтипы данных
- •Разновидности массивов. Статические
- •Кортежи
- •Разновидности массивов. Статические
- •Динамические
- •Атрибуты объекта данных
- •Операции над целыми числами
- •Вещественные числа
- •Числа с фиксированной точкой
- •Числа с плавающей точкой(float)
- •Ошибки вычислений с вещественными числами
- •Утечки памяти и повисшие указатели
- •Указатели на указатели
- •Типизированные указатели
- •Указатели на функции
- •[Отличия указателей и ссылок]
- •Параметры подпрограмм
- •Преимущества подпрограмм
- •Позиционное сопоставление
- •Сопоставление по имени
- •Методы передачи параметров:
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Передача параметров по значению-результату
- •Параметр по результату
- •Стековые языки
- •Циклы и рекурсия
- •Циклы со счетчиком
- •Операторы циклы без заданного числа повторений (бесконечно)
- •Динамический полиморфизм
- •Родовые (настраиваемые) сегменты и шаблоны
{Основные элементы языка программирования}
• Синтаксис
• Семантика
• Данные и типы данных
• Операторы
• Трансляторы + среды программирования
• Подпрограммы
• Модули
<Синтаксис>
•Набор правил, которые определяют, какие последовательности символов являются допустимыми.
•Задается с помощью формальной нотации. Распространенная нотация - расширенная форма Бекуса-Наура(РБНФ).
•Описание грамматики в рбнф представляет собой набор правил, определяющих отношения между терминальными символами (терминалами) и нетерминальными символами (нетерминалами).
•Терминальные символы - минимальные элементы грамматики, не имеющие собственной грамматической структуры. Обозначение <>
•Нетерминальные символы – элементы, имеющие собственные имена и структуру. Каждый нетерминал состоит из одного или более терминалов и/или нетерминалов, сочетание которых определяется правилами грамматики. Обозначение ()
Правила представляют собой:
•Идентификатор ::= выражение
•идентификатор – имя нетерминального символа, а выражение – комбинация терминальных и нетерминальных символов и спец. знаков. Правило завершается спец. символом – точкой.
◘Конкатенация: Правило вида A::=BC. Обозначается что нетерминал А состоит из двух символов – В и С.
◘Выбор: Правило вида A::=B/С. Обозначает, что нетерминал А может состоять либо из В, либо из С. (В и С – синтаксические терминалы)
◘Условное вхождение: правило вида A::=[B]. Выделяет необязательный элемент выражения, который может присутствовать, а может и отсутствовать.
◘Повторение: вид A::={B}. Обозначает конкатенацию любого числа (включая ноль) записанных в ней элементов. А – либо пустой, либо представляет собой конкатенацию любого числа символов В (либо пустой элемент, либо В, ВВ,ВВВ,…)
◘Группировка: правило вида A::=(B/C)(D/E). Группировка элементов при формировании сложных выражений. Обозначает что А состоит из двух символов, первый либо В, либо С, второй либо D, либо Е.
◘Текстовый элемент: вид ‘…’ . Обозначает символ или группу символов.
◘Комментарий: вид (*…*)
◘Специальная последовательность символов: вид ?..?
Терминальные символы:
Нетерминальные символы, имеющие собственные диаграмы:
Общие требования к описанию ЯП:
Полнота - синтаксис и семантика всех допустимых конструкций должны быть описаны без пропусков существенных аспектов.
Ясность – удобочитаемость, легкость и результативность поиска ответов на вопросы, возникающие в процессе программирования.
Естественность – интуитивная близость языка к терминологии разработчика, использование стандартных унифицированных обозначений.
Реализм - учет ограничений на объем оперативной памяти, время реакции.
<Семантика>
Смысл синтаксических категорий языка программирования, описание того, что делает определенная команда программы.
Семантика - интерпретация( смысловое значение) абстрактного синтаксиса, выраженное в терминалах той или иной математически строгой модели.
Связана не только с особенностями ЯП, но и с концепциями программирования, принятыми в ЯП или среде программирования.
