Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СП. Краткий Теоретический Курс.doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
99.84 Кб
Скачать
  1. Этапы жизненного цикла программного продукта

  • Анализ: цель – определение требований к будущему программному продукту

  • Проектирование: результат – архитектура системного программного продукта (алгоритмы + декомпозиция, функции + интерфейс)

  • Реализация: кодирование + тестирование + отладка

  • Сопровождение: эволюция программного продукта при его эксплуатации

  1. Состав и схема функционирования классической системы программирования

Транслятор – программа, кот позволяет писать программу на языке высокого уровня и обеспечивает ее выполнение (позволяет писать не в машинных кодах)

Компилятор - программа, которая осуществляет перевод исходной программы на ЯП в объектную программу (одна из разновидностей транслятора)

Интерпретатор – так же 1 из разновидностей трансляторов, выход – результат обработки исходных данных

Схема:

Редактор текстов -> (исходная программа на некотором языке программирования) -> компилятор (+макрогенератор) -> (объектная программа – машинно-ориентированное представление программы, где есть информация в машинном коде + инф о внешних связях + таблицы констант…) -> редактор связей –> (исполняемый модуль – программа в машинных кодах как единое целое, относительно некоторого условного начального адреса)

  1. Типы трансляторов, особенности интерпретаторов и компиляторов

Схема работы «чистого» компилятора: (исходная программа на ЯП) -> ЛА + СА + КУ + генерация кода -> (объектный модуль)

Схема работы чистого интерпретатора: (исх. программа на ЯП + входные данные) -> интерпретатор -> (результат работы исх. программы на водных данных)

Смешанная стратегия: (исх. программа на ЯП) -> ЛА + СА + КУ -> (промежуточное представление программы + вх. данные) -> интерпретатор промежуточного представления -> результат работы исх. программы на входных данных

  1. Общая схема работы компилятора

Фаза анализа: (исходная программа на ЯП) -> лексический анализатор -> (последовательность лексем) -> синтаксический анализатор -> (промежуточное представление) -> семантический анализатор

Фаза синтеза: подготовка к генерации -> генерация кода -> (объектный модуль)

  1. Определение порождающей грамматики

Порождающая грамматика – это четверка (VT, VN, P, S), где

VT – алфавит терминальных символов (терминалов)

VN – алфавит нетерминальных символов (нетерминалов, не пересекающийся с VT)

P – конечное подмножество множества (VN U VN)+ X (VT U VN)*; элемент (a, b) называется правилом вывода и записывается в виде a -> b; в а есть хотя бы один нетерминал

S – начальный символ (цель) грамматики, S из VN

  1. Определение языка, порождаемого грамматикой

Язык, порождаемый грамматикой G = (VT. VN, P, S), L(G) – это множество цепочек {a} из VT: каждая a выводима из S.

  1. Определение эквивалентности грамматик Грамматики G1 и G2 называются эквивалентными, если L(G1) = L(G2).

Грамматики G1 и G2 почти эквивалентны, если языки, ими порождаемые, отличаются на более чем на эпсилон.

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

Тип 0: на правила 0 не накладывается никаких ограничений, кроме огр. по определению(в а есть хотя бы 1 нетерминал)

Тип 1: а) неукорачивающие грамматики: |a| <= |b|; a из +, b из *

b) КЗ a -> b: a = w1 A w2; b = w1 B w2; w1, w2 из *

Тип 2: a) КС a -> b: a – отдельный нетерминал, b – непустая цепочка

b) УКС: a -> b: a – нетерминал, b – любая цепочка

Тип 3: a) праволинейные: A -> tB || A -> t, A, B из VN, t из VT

b) леволинейные: A -> Bt|| A -> t, …