Тема 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 – совместимой программной системой, которая безвозмездно предоставляет всем желающим ее использовать.
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 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|