Проект компиляция программы и сборка исполняемого модуля реферат

Обновлено: 02.07.2024

Результатом компиляции всех Delphi-проектов является исполняемый файл. Для компиляции исходных файлов, входящих в проект, используется команда Project/Compile главного меню интегрированной среды разработчика или комбинация клавиш Ctrl+F9. При этом выполняются следующие действия:

1) компилируются файлы с исходным текстом всех модулей, содержимое которых изменилось после последней компиляции. В результате для каждого файла с исходным текстом модуля создается файл с расширением *.Dcu. Если были внесены изменения в интерфейсную часть модуля, то перекомпилируется не только этот модуль, но и модули, использующие его (через директиву Uses);

2) после того как откомпилированы все модули, входящие в проект, Delphi компилирует файл проекта и создает *.Exe файл с именем, эквивалентным имени проекта.

При сборке проекта (в отличие от компиляции) компилируются все файлы, входящие в проект, вне зависимости от того, были в них внесены изменения после предыдущей компиляции или нет. Для сборки проекта используется команда Project/Build All главного меню интегрированной среды разработчика.

Для выполнения программы используется команда Run/Run главного меню интегрированной среды разработчика или клавиша F9. При вызове этой команды происходят те же действия, что и при вызове команды Project/Compile и Project/Build All, но после компиляции и сборки программа запускается на выполнение.

Установка параметров проекта

Существует два способа управления параметрами проекта. Можно установить параметры с помощью диалоговой панели Project Options, вызываемой с помощью команды Project/Options главного меню интегрированной среды разработчика, а можно воспользоваться директивами компилятора, расположенными в исходном тексте программы.

Диалоговая панель параметров проекта (рис. 17) состоит из нескольких страниц:

Forms – определяет главную форму, порядок создания остальных форм;

Application – задает название приложения, справочный файл, иконку;

Compiler – определяет параметры компилятора;

Linker – определяет параметры компоновщика;

Directories/Conditions – задает рабочие каталоги;

VersionInfo – установка параметров версии проекта;

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

В проекте Delphi может быть несколько форм, но одна из форм является главной. Главная форма является исходной формой при запуске приложения и, как правило, первой отражается на экране. На странице Forms можно назначить любую из существующих в проекте форм главной. В списке Autocreate forms указываются названия форм, которые будут создаваться одновременно с главной формой. Формы могут создаваться и в процессе выполнения программы.

Для того чтобы задать название приложения, которое будет отображаться вместе с иконкой, когда окно будет минимизировано, необходимо выбрать параметр Title на странице Application. Здесь же можно задать имя файла, содержащего справочную систему для создаваемого приложения, и иконку, которая будет символизировать приложение.

На странице Compiler задаются параметры компилятора. Наиболее важным из них является использование или отмена использования отладочной информации – этот параметр сильно влияет на размер результирующего *.Exe-файла.

Назначение пунктов главного меню приводится в приложении 2 файла материалов.

Язык Object Pascal

Языком программирования Delphi является Object Pascal. В том, что касается основных программных конструкций, этот язык очень напоминает Pascal седьмой версии среды Borland Pascal. Под программными конструкциями следует понимать структуры, определяющие, в какой последовательности выполняются инструкции в программе. Примерами программных конструкций могут служить условные операторы If-Then-Else, операторы цикла Repeat-Until, а также механизмы вызова методов. Перенос в Delphi программ, написанных на языке Pascal, выполнить не всегда просто. Причина заключается в многочисленных изменениях, внесенных в язык, используемый в среде разработки приложений Borland Pascal.

Object Pascal является объектно-ориентированным языком программирования. Приложение Delphi состоит из объектов. Все элементы управления интерфейса программы (кнопки, списки, панели и т.д.) являются объектами. Объекты обеспечивают выполнение и стандартных, и специфических функций приложения.

Усовершенствованную модель объектного типа Turbo Pascal представляют собой классы Object Pascal. Классы Object Pascal имеют много общего с типом Object языка Turbo Pascal.

Класс – это определенный пользователем тип данных, который обладает внутренними данными и методами в форме процедур или функций и обычно описывает родовые признаки и способы поведения ряда похожих объектов. Экземпляр типа класс называется объектом. Объекты класса всегда распределяются в куче в отличие от экземпляров объектного типа. Предварительно определенные объекты, используемые в программе (такие как, например, компоненты Delphi), – это в действительности экземпляры классов.

В Object Pascal имеется также тип Object. До введения термина “класс” в языке Pascal существовала двусмысленность определения “объект”, который мог обозначать и тип, и переменную этого типа. В Object Pascal существует четкая граница: класс – это описание, объект – то, что создано в соответствии с этим описанием.

Типкласс– это структура данных, состоящая из полей, методов, свойств. Поля содержат данные определенного типа. Методы – это функции и процедуры, описанные внутри класса и предназначенные для операций над его полями. Свойства – это специальный механизм классов, регулирующий доступ к полям. Свойство описывает один или два метода, которые осуществляют некоторые действия над данными того же типа, что и свойство. Например, обычная кнопка в окне приложения обладает такими свойствами, как цвет, размеры, положение. Для экземпляра класса “кнопка” значения этих атрибутов задаются при помощи свойств – специальных переменных, определяемых ключевым словом Property. Цвет может задаваться свойством Color, размеры – свойствами Width и Height и т.д.

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

Function GetColor : TSomeType;

Procedure SetColor (aNewValue : TSomeType);

Property AСolor : TSomeType Read GetColor Write SetColor;

В данном примере доступ к значению свойства AСolor осуществляется через вызовы методов GetColor и SetColor. К методам в явном виде не обращаются. Достаточно записать:

и компилятор оттранслирует эти операторы в вызовы методов.

В Object Pascalсобытие – это свойство процедурного типа, предназначенное для создания пользовательской реакции на то или иное входное воздействие:

Property OnMyEvent : TMyEvent Read FOnMyEvent Write FOnMyEvent;

здесь FOnMyEvent – поле процедурного типа, содержащее адрес некоторого метода. Присвоить такому свойству значение – значит указать объекту адрес метода, который будет вызываться в момент наступления события. Такие методы называют обработчиками событий (обработчик события– фрагмент программы, который выполняется в ответ на определенное изменение в программе или в Windows).

Каждый новый класс в Delphi должен быть объявлен. Для этого используется зарезервированное слово Class. В отличие от других типов, тип Сlass можно объявлять только глобально. Объявление определяет функциональные возможности класса. Объявление классов в модуле производится в разделе объявления типов. Пример объявления класса и объекта в программе на Delphi:

Var Form1 : TForm1;

В объявлении типа определен новый класс – TForm1, наследуемый от класса TForm, содержащегося в библиотеке визуальных компонентов. На это указывает зарезервированное слово Class. Данный тип содержит указатели на компоненты, которые были помещены в форму: два компонента Label – объекты типа TLabel (иначе говоря, экземпляры класса TLabel) и два экземпляра класса TBitBtn. Для определения экземпляра нового класса объявлена переменная Form1.

Область видимости идентификатора компонента, объявленного в описании класса, простирается от его объявления до конца определения класса, а также распространяется на все потомки этого класса и на все блоки реализации методов класса. Область видимости идентификатора компонента зависит от атрибута видимости раздела, в котором объявлен этот идентификатор.

В объявлениях типов классов имеются разделы частных (private), общих (public), защищенных (protected) и опубликованных (published) объявлений.

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

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

Поля, свойства и методы секции protected также доступны только внутри модуля с описываемым классом, но они доступны в классах, являющихся потомками данного класса, в том числе и в других модулях.

Все классы Object Pascal порождены от единственного родителя – класса TОbject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов – от их создания до уничтожения. Новый класс можно создать на основе этого базового класса.

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

NumberOf Samples, NumberOfMaterials : Integer;

IsStandard, IsNoStandard : Boolean;

Function CountSamples : Integer;

Function CountMaterials : Integer;

Function Standard : Boolean;

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

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

Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещении от TObject к его потомкам. Каждый потомок дополняет возможности своего родителя новыми свойствами и передает их своим потомкам.

Для примера на рис. 18 показан небольшой фрагмент дерева Delphi. Класс TPersistent обогащает возможности своего родителя TObject: он умеет сохранять данные в файле и получать их из него, в результате это умеют делать и его потомки. Класс TComponent, в свою очередь, умеет взаимодействовать со средой разработчика и передает это умение своим потомкам. TControl не только способен работать с файлами и средой разработчика, но он уже умеет создавать и обслуживать видимые на экране изображения, а его потомок TWinControl может создавать Windows-окна и т.д.

В состав Delphi входит более 300 различных классов.

Статьи к прочтению:

ПРИКОЛЫ в СПОРТЕ, фейлы, курьезы, смешные моменты, компиляция


Похожие статьи:

Основной поток запущен. Параллельно выполняемый цикл инициализации: 1.0537757 секунд Последовательно выполняемый цикл инициализации: 0.3457628 секунд…

Для этого необходимо: нажать на клавишуклавиатуры или выполнить команду Начать отладку элемента Отладка Стандартного меню. После нажатия на кнопку на…

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

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

Пакетная. Компиляция нескольких исходных модулей в одном пункте задания.

Построчная. То же, что и интерпретация.

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

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

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

Существуют различные виды компиляторов:

·интерпретирующие (пошаговые), осуществляющие последовательную независимую компиляцию каждой отдельной инструкции исходной программы;

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

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

Компиляция относится к обработке файлов исходного кода (.c, .cc, или .cpp) и создании объектных файлов проекта. На этом этапе не создается исполняемый файл. Вместо этого компилятор просто транслирует высокоуровневый код в машинный язык. Например, если вы создали (но не скомпоновали) три отдельных файла, у вас будет три объектных файла, созданные в качестве выходных данных на этапе компиляции. Расширение таких файлов будет зависеть от вашего компилятора, например *.obj или *.o. Каждый из этих файлов содержит машинные инструкции, которые эквивалентны исходному коду. Но вы не можете запустить эти файлы! Вы должны превратить их в исполняемые файлы операционной системы, только после этого их можно использовать

Сборка(build)— процесс получения информационного продукта из исходного кода. Чаще всего включает компиляцию и компоновку, выполняется инструментами автоматизации

Основной задачей программиста, который непосредственно занимается кодированием (написанием исходного кода) программы, является написание исходного текста программы на одном из языков программирования. Хороший программист, разрабатывая новую программу, не пишет весь код заново. Он старается использовать уже готовые (написанные ранее) программные коды (библиотеки), написанные как им самим, так и другими разработчиками. Если рассматривать эти библиотеки, как строительные блоки, то программист из них, как из кирпичей строит здание – новую программу. Такой подход к программированию называется технологией повторного использования кода. Что обычно из себя представляют подобные строительные блоки? Это программный код и необходимые ресурсы (например, файлы данных или рисунков). Стоит отметить, что по мере развития библиотек, появляются их новые версии. Но при этом старые не исчезают, а продолжают использоваться уже написанными ранее программами.

Компоновка, редактирование связей (linking, linking editing) – это процесс сборки загрузочного модуля (исполняемого файла) из полученных в результате раздельной компиляцииобъектных модулей с одновременным автоматическим поиском и присоединением библиотечных подпрограмм и процедур. В процессе компоновки программа собирается в единое целое непосредственно в оперативной памяти в файл, готовый к работе (загрузочный модуль - файл с расширением .ехе).

Работу по компоновке программы выполняет программа компоновщик (linker). Эта программа выполняет следующие основные функции:

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

·связывает вместе части программы, представленные отдельными объектными модулями (файлами .obj);

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

Компоновщики бывают в двух реализациях:

·компоновщики, которые готовят загрузочный файл; этот файл при необходимости может быть загружен в оперативную память для исполнения;

· компоновщики, которые готовят загрузочный файл, сразу физически размещают подготовленную версию машинного кода программы в памяти и передают управление на первую команду программы для непосредственного исполнения.

Эти операции могут быть выполнены с помощью меню Build.

Краткое описание основных команд этого меню:

·Сompile– компиляция выбранного файла, результат компиляции отображаются в окнахTask ListиOutput.

·Rebuild – делается то же, что и в команде Build, но при выполнении этой команды компилируются все файлы проекта независимо от того, были ли в них изменения.

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

ФГБОУ ВО «МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ

Кафедра информатики и вычислительной техники

студентка группы МДИ-118

кандидат ф.-м. наук, доцент

Кормилицына Т. В.

Компиляция (compilation) – это преобразование программы или ее отдельного модуля, текст которых составлен на языке программирования высокого уровня (исходная программа, исходный модуль – это файл с расширением .срр) в программу или модуль на машинном языке или на языке, близком к машинному (получают объектный модуль – файл с расширением .obj). Компиляцию осуществляет специальная программа –компилятор (compiler), которая является неотъемлемой частью системы программирования. На вход компилятора поступает исходный модуль
(файл .срр), который после компиляции преобразуется в объектный
модуль (файл .obj).

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

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

Существуют различные виды компиляторов:

· интерпретирующие (пошаговые), осуществляющие последовательную независимую компиляцию каждой отдельной инструкции исходной программы;

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

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

Компоновка, редактирование связей (linking, linking editing) – это процесс сборки загрузочного модуля (исполняемого файла) из полученных в результате раздельной компиляцииобъектных модулей с одновременным автоматическим поиском и присоединением библиотечных подпрограмм и процедур. В процессе компоновки программа собирается в единое целое непосредственно в оперативной памяти в файл, готовый к работе (загрузочный модуль - файл с расширением .ехе).

Работу по компоновке программы выполняет программа компоновщик (linker). Эта программа выполняет следующие основные функции:

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

· связывает вместе части программы, представленные отдельными объектными модулями (файлами .obj);

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

Компоновщики бывают в двух реализациях:

· компоновщики, которые готовят загрузочный файл; этот файл при необходимости может быть загружен в оперативную память для исполнения;

· компоновщики, которые готовят загрузочный файл, сразу физически размещают подготовленную версию машинного кода программы в памяти и передают управление на первую команду программы для непосредственного исполнения.

Эти операции могут быть выполнены с помощью меню Build.

Краткое описание основных команд этого меню:

· Сompile – компиляция выбранного файла, результат компиляции отображаются в окнахTask ListиOutput.

· Rebuild – делается то же, что и в команде Build, но при выполнении этой команды компилируются все файлы проекта независимо от того, были ли в них изменения.

Эти операции могут быть выполнены и с помощью меню Debug , его команд Start или Start Without Debugging. Эти две команды делают все то же, что и команда Build, сразу же запуская файл с расширением .ехе.

Введите два числа – первое обязательно целое, второе любое. Получите результат.

Название работы: Среда разработки. Работа с проектами. Компиляция программы. Запуск программы

Предметная область: Информатика, кибернетика и программирование

Описание: Среда разработки. Работа с проектами. Компиляция программы. Запуск программы. В принципе, для создания работающей программы на языке С++ достаточно написать исходный код в любом текстовом редакторе, передать все модули с исходным кодом программы ком.

Дата добавления: 2012-11-28

Размер файла: 719 KB

Работу скачали: 4 чел.

Среда разработки. Работа с проектами. Компиляция программы. Запуск программы.

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

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

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

Такая организация процесса разработки крайне неэффективна, поэтому со временем появилось большое количество вспомогательных средств, облегчающих программисту многие рутинные операции. Финальной точкой развития таких средств стали программные пакеты, называемые IDE (Integrated Development Environment) – интегрированная среда разработки. Такие пакеты включают в себя множество инструментов, в первую очередь:

В качестве примера IDE будем использовать Microsoft Visual Studio 2010 . Эта среда разработки ориентирована на работу с несколькими языками программирования, мы будем рассматривать её в контексте языка С++.


Рис .1. Интерфейс IDE M icrosoft Visual Strudio 2010.

Microsoft Visual Studio (далее MSVS ) оперирует понятием решения ( solution ). Решение в MSVS представляет собой набор из одного или более проектов ( project ), каждый из которых объединяет некоторое количество файлов-модулей с исходным кодом программы, а также хранит настройки компилятора и компоновщика, необходимые для сборки проекта. В результате сборки для каждого из проектов будет построен соответствующий исполнимый файл (исполняемый файл либо библиотека). В простейшем случае, в состав решения будет входить только один проект, настроенный для сборки исполняемого файла, именно так будет выглядеть каждое новое созданное в MSVS решение.




Рис.2. Окно создания проекта MSVS .


Рис.3. Окно мастера создания проекта консольного приложения.


Рис. 4. Окно настроек проекта консольного приложения.


Рис. 5. Обозреватель решения с созданным пустым проектом.


Рис.6. Окно создания нового файла.

Напишем первую простейшую программу на С++, которую можно будет откомпилировать и запустить:

1>Time Elapsed 00:00:04.36

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

std::cout "First program"

Читайте также: