Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция 1. Тема: Процесс построения программы

Тема: Процесс построения программы.

 

ü Программист готовит файлы исходного кода на C/C++.

ü Исходные файлы компилируются в файлы объектного кода (с расширением.obj)

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

ü Компонуются ресурсы (битовые матрицы, курсоры, строковые таблицы, пиктограммы и т.п.) и формируется конечный ехе-файл, запускаемый на выполнение.

С ростом сложности и объема программ приходится разбивать их на несколько файлов исходного кода. Соответственно трансляция программы распалась на два этапа:

1. каждый из исходных файлов транслируется в файл объектного кода;

2. из нескольких объектных файлов в результате компоновки получается конечный исполняемый файл.

Директивы #include

Возможность раздельной компиляции обеспечивается в C/C++ применением заголовочных файлов, присоединяемых к компилируемым исходным файлам на этапе препроцессорной обработки. Заголовочные файлы содержат прототипы функций, объявления типов и другую информацию, необходимую для раздельной компиляции исходных модулей программы. Они имеют расширение.h или.hpp и подключаются к компилируемому файлу исходного кода (.с или.срр) с помощью директивы препроцессора #include, за которой следует имя заголовочного файла в кавычках или угловых скобках, например:

#include <stdlib.h>

#include "myfile.h"

Эти случаи различаются порядком поиска включаемых файлов:

ü если использованы угловые скобки, поиск будет сначала производиться в стандартных каталогах C++Builder,

ü если кавычки — в текущем каталоге.

Препроцессор заменяет директиву #include содержимым указанного файла; после завершения препроцессорной обработки полученный текст передается компилятору, который транслирует его в объектный код.

Один и тот же заголовок можно подключать ко многим исходным файлам. Таким образом:

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

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

 

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

Файл stdio.h содержит прототипы общеупотребительных функций буферизованного ввода-вывода (функцию prinf() — форматируемый вывод на консоль).

Файл соnio.h необходим потому, что для ожидания нажатия клавиши (в консольном приложении) применяется функцию ввода символа getch() (символ, возвращаемый функцией, игнорируется).

Заголовочные нестандартные файлы весьма эффективны при модульной разработке крупных программ, когда связь между модулями, размещаемыми в разных файлах, реализуется не только с помощью параметров, но и через внешние объекты, глобальные для нескольких модулей. Описание таких внешних объектов помещают в отдельный файл, который при помощи директивы #include подключается ко всем необходимым модулям. В тот же файл можно включить директивы подключения стандартных заголовочных файлов. Например, заголовочный файл может быть таким:

# include <stdio.h>

# include <conio.h>

extern int k,l;

Если данный файл сохранить под именем “myfile.cpp”, то его можно будет подключать к другим программам директивой

#include “myfile.cpp”

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

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

 

Библиотека объектных модулей – это соединение модулей объектного кода, скомпонованных в одном файле с расширением.lib. Динамически присоединяемые библиотеки DLL мало чем отличаются от обычных, статически компонуемых библиотек объектных модулей. Функция, которая находится в DLL, вызывается так же, как и всякая другая функция. Правда, “снаружи” динамическая библиотека выглядит скорее как исполняемый файл; эти библиотеки создаются не библиотекарем, а компоновщиком. Каждая библиотека, как правило, сопровождается своим заголовочным файлом (их может быть и несколько), который определяет интерфейс ее функций и других элементов. Исходный код библиотеки может быть и недоступен для программиста. Но в ее заголовочном файле (или файлах) имеется все необходимое для использования библиотеки в прикладной программе.

Функция main()

После всех директив в программе расположено определение функции main (). Любая программа на С содержит эту функцию, которая является ее входной точкой. Именно этой функции передается управление после загрузки и инициализации программы.

Функция main () — это, конечно, частный случай функции вообще. Функции являются основными “строительными блоками” программы, или подпрограммами. Они, в свою очередь, строятся из операторов, составляющих тело функции. Каждый оператор оканчивается точкой с запятой (;). В общем виде функция определяется таким образом: Возвращаемый_ тип имя функции (список_ параметров)

{

тело_функции

}

 

Пример простой программы.

#include <stdio.h>

#include <conio.h>

void main(void)

{

printf("Hello!\n");

printf("Press any key...");

getch();

return 0;

}

<== предыдущая лекция | следующая лекция ==>
 | Встроенные типы данных
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 231; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.