Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Тема 1.3 Отладка и тестирование программного продукта на уровне модулей





4.2.3.1 Ответить на вопросы:

1. Что такое трансляция, компиляция, транслятор, компилятор? Из каких про­цессов состоит компиляция? Расскажите об общей структуре компилятора.

o Трансляция - перевод исходного языка в результирующий.

o Компиляция – преобразование программы, представленной на одном из ЯП, в машинный код, который принимается и исполняется процессором. Результатом компиляции является "объектный файл" с необходимыми внешними ссылками для компоновщика. Программа переведенная в машинный код еще не готова к выполнению.

o Объектный файл не может быть исполнен до тех пор, пока все модули и секции не будут в нем увязаны между собой. Это и делает редактор связей (компоновщик). Результатом его работы является единый файл: называемый «исполняемым файлом», который содержит весь текст результирующей программы на языке машинных кодов. Компоновщик может рождать сообщение об ошибке, если при попытке собрать объектные файлы в единое целое он не смог обнаружить какой-либо необходимой составляющей.

o Транслятор – это программа, которая переводит входную программу на исходном языке в эквивалентную её программу на результирующем языке.

o Компилятор – это транслятор, который осуществляет перевод исходной программы в эквивалентную ей объектную программу на языке машинных команд или на языке ассемблера.

 

· Процесс компиляции:

1) Лексический анализ. На этой фазе последовательность символов исходного файла преобразуется в последовательность лексем.

2) Синтаксический (грамматический) анализ. Последовательность лексем преобразуется в древо разбора.

3) Семантический анализ — это часть компилятора, проверяющая правильность текста исходной программы с точки зрения семантики(СМЫСЛА, ЗНАЧЕНИЯ) входного языка. ИЛИ ТАК

3.1) Семантический анализ — устанавливает смысловую правильность синтаксических конструкций

4) Оптимизация. Удаляются избыточные команды и упрощается (где это возможно) код с сохранением его смысла.



5) Генерация кода. Из промежуточного представления порождается код на целевом языке (в том числе выполняется компоновка программы).

2. Какую роль выполняет лексический анализ в процессе компиляции? Как мо­гут быть связаны между собой лексический и синтаксический анализ?

o Лексический анализ в процессе компиляции преобразует последовательность символов исходного файла в последовательность лексем.

o Лексический и синтаксический анализ имеют дело со структурными, т.е. внешними, текстовыми конструкциями языка.

o Семантика же, имеет дело с внутренним представлением «смысла» объектов, описанных в программе.

3. Компилятор можно построить, не используя лексический анализатор. Объяс­ните, почему все-таки подавляющее большинство современных компилято­ров используют фазу лексического анализа.


 

4. Постройте общую схему работы интерпретатора. В чем ее отличие от общей схемы работы компилятора?

Таблица 1: Схема работы Интерпретатора

 

Таблица 2: Схема работы Компилятора


 

5. Что такое таблица идентификаторов и для чего она предназначена? Какая информация может храниться в таблице идентификаторов?

o Таблицы идентификаторов – это организованные наборы данных, служащие для хранения информации об элементах исходной программы, которые затем используются для написания программы.

6. Какие специфические функции выполняет текстовый редактор в составе сис­темы программирования? Как он должен быть взаимосвязан с другими моду­лями системы?

o Текстовый редактор в СП — это программа, позволяющая создавать, изменять и обрабатывать исходные тексты программ на языках высокого уровня.

История использования текстовых редакторов в Средах Программирования.

o Начнем с того, что поначалу текстовые редакторы использовались для написания различных текстов. Спустя некоторое время, возникновение интегрированных средств разработки позволили включить текстовые редакторы в состав "Систем Программирования". Благодаря этому стало возможным писать код в текстовом редакторе и выполнять его. Для удобства программиста, текстовый редактор обзавелся следующими возможностями:

1) Отображением обнаруженных ошибок на этапе компиляции и мест, где они находятся;

2) Подсветкой синтаксиса;

3) Помощи в до писании кода и многому другому.

7. Таблица лексем и таблица идентификаторов: различия.

o Таблица лексем содержит весь текст исходной программы, обработанный лексическим анализатором. В нее входят все возможные типы лексем, при этом, любая лексема может в ней встречаться любое число раз.

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

 

8. Лексический анализ исходного текста программы «на лету».

o Лексический анализ «на лету» - это функция текстового редактора в составе Среды Программирования. Она заключается в поиске и выделении лексем входного языка в тексте программы непосредственно в процессе ее создания разработчиком.


 

9. В чем особенности функционирования компилятора в составе системы про­граммирования по сравнению с его функционированием в виде отдельного программного модуля?

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

· подготовить тексты исходной программы на входном языке компилятора;

· подать входные данные в виде текста исходной программы на вход компилятора;

· получить от компилятора результаты его работы в виде набора объектных файлов;

· подать весь набор полученных объектных файлов вместе с необходимыми библиотеками подпрограмм на вход компоновщику;

· получить от компоновщика единый файл программы (исполняемый файл) и подготовить его к выполнению с помощью загрузчика;

· поставить программу на выполнение, при необходимости использовать отладчик для проверки правильности выполнения программы.

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

 

10. Почему компоновщик носит также название «редактор связей»? В чем за­ключается процедура разрешения внешних ссылок объектного файла?

o Компоновщик (редактор связей) предназначен для связывания между собой объектных файлов, порождаемых компилятором, а также файлов библиотек, входящих в состав системы программирования.

o Процедура разрешения ссылок сводится к вычислению значений адресных констант процедур, функций и переменных с учетом перемещений секций относительно начала собираемого программного модуля. Если при этом обнаруживаются ссылки к внешним переменным, отсутствующим в списке объектных модулей, редактор связей организует их поиск в библиотеках, доступных в системе программирования. Если же и в библиотеке необходимую составляющую найти не удается, формируется сообщение об ошибке.

11. В современных системах программирования загрузчик, как правило, отсутст­вует. Его функции выполняет ОС. Расскажите, как эти функции выполняют­ся в различных ОС. Какую информацию должна получить ОС от системы программи­рования для выполнения загрузки исполняемого файла программы?

Загрузчик не всегда является составной частью системы программирования, поскольку выполняемые им функции очень зависят от архитектуры вычислительной системы, в которой выполняется результирующая программа, созданная системой программирования. С развитием архитектуры вычислительных средств компьютера появилась возможность выполнять трансляцию адресов непосредственно в момент запуска программы на выполнение. Для этого потребовалось в состав исполняемого файла включить соответствующую таблицу, содержащую перечень ссылок на адреса, которые необходимо подвергнуть трансляции. В момент запуска исполняемого файла ОС обрабатывала эту таблицу и преобразовывала относительные адреса в абсолютные. Такая схема, например, характерна для ОС типа MS-DOS. В этой схеме модуль загрузчика как таковой отсутствует (фактически он входит в состав ОС) а система программирования ответственна только за подготовку таблицы транс­ляции адресов — эту функцию выполняет компоновщик.

В современных ОС существуют сложные методы преобразования адресов, которые работают непосредственно уже во время выполнения программы. Эти ме­тоды основаны на возможностях, аппаратно заложенных в архитектуру вычис­лительных комплексов. Методы трансляции адресов могут быть основаны на сегментной, страничной и сегментно-страничной организации памяти Тогда для выполнена трансляции адресов в момент запуска программы должны быть подготовлены соответствующие системные таблицы. Эти функции целиком ложатся на ОС, поэтому они не выполняются в системах программирования.

 

12. В чем сходство и в чем различие принципов распространения прикладного программного обеспечения, созданного для ОС типа UNIX и для ОС Linux проекта GNU? Почему системы программирования Си и Си++ являются неотъемлемой частью этих ОС?

ОС UNIX

Большинство UNIX программ являются платными и имеют закрытый код, который имеют право изменять только разработчики данного программного обеспечения.


ОС GNU

Идея же проекта GNU заключается в свободном распространении всех программ. Программы распространяются в виде исходного кода, причем пользователь получает этот код в пользование, имеет право вносить в него изменения, а также распространять исходный или модифицированный код. Данная компания является UNIX – совместимой программной системой, которая безвозмездно предоставляет всем желающим ее использовать.

 

Основные различия
Linux UNIX
Практически все ОС семейства Linux — бесплатные Большинство ОС семейства UNIX — коммерческие
ОС имеют большую универсальность, совместимы с «железом» от разных брендов, широким спектром файловых систем ОС менее универсальны, каждый дистрибутив адаптирован к ограниченному количеству платформ и файловых систем
Исходный код дистрибутивов открыт Исходный код в большинстве случаев закрыт

 


13. В чем заключаются основные особенности разработки программного обеспечения для глобальной сети Интернет? Почему в этой сети часто используются интерпретируемые языки?

14. Распознаватель: определение, назначение, виды распознавателей.

o Распознаватель (или разборщик) — это специальный автомат, который позволяет определить принадлежность цепочки символов некоторому языку.

o Задача распознавателя - дать ответ на вопрос, принадлежит ли она заданному языку или нет.

Перечислите виды распознавателей:

1) По видам считывающего устройства:

o Двусторонние и односторонние.

2) По видам устройства управления:

o Детерминированные и недетерминированные.

3) По видам внешней памяти:

o Распознаватели без внешней памяти;

o Распознаватели с ограниченной внешней памятью;

o Распознаватели с неограниченной внешней памятью.

 

15. Дайте определения выводимости цепочки, непосредственной выводимости, нетривиальной выводимости, длины вывода.

o Цепочкой символов (или строкой) называют произвольную последовательность символов, записанных один за другим.

o Выводом цепочки называется процесс порождения предложения языка на основе правил определяющей язык грамматики.

o Непосредственная выводимость — отношение между предложением и конечным, возможно пустым, множеством предложений.

 

16. Дайте определение цепочки символов, длины цепочки, пустой цепочки, равных цепочек символов. Основные операции над цепочками.

o Цепочкой символов (или строкой) называют произвольную последовательность символов, записанных один за другим.

o Количество символов в цепочке называют длиной цепочки. Длина цепочки символов α обозначается как |α|.

o Пустая цепочка символов — это цепочка, не содержащая ни одного символа. Пустая цепочка обозначается греческой буквой λ.

o Равными цепочки символов являются, когда цепочки символов α и β равны (совпадают), α=β, если они имеют один и тот же состав символов, одно и то же их количество и одинаковый порядок следования символов в цепочке.

17. Что такое язык, алфавит, синтаксис и семантика языка? Способы задания языков

o Язык — это заданный набор символов и правил, устанавливающих способы комбинации символов между собой для записи осмысленных текстов.

o Алфавит — это счетное множество допустимых символов языка.

o Синтаксис языка — это набор правил, определяющий допустимые конструкции языка. Синтаксис определяет “форму языка” — задает набор цепочек символов, которые принадлежат языку.

o Семантика языка — это раздел языка, определяющий значение предложений языка. Семантика определяет “содержание языка” — задает смысл для всех допустимых цепочек языка.

4.3. Задания для оценки освоения (часть1) МДК 01.02:





Рекомендуемые страницы:

Воспользуйтесь поиском по сайту:



©2015- 2021 megalektsii.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.