Из урока 9 вы узнали, как разделить ваши программы на небольшие легко управляемые части, называемые функциями и выполняющие определенную задачу. Одно из преимуществ использования функций заключается в том, что вы можете часто применяемую функцию, созданную для одной программы, использовать в другой программе. Как вы узнаете из этого урока, большинство компиляторов C++ обеспечивают широкий набор функций, использующихся в программах и называющихся библиотекой этапа выполнения. Применение этих функций сокращает объем программирования, который вы должны выполнить самостоятельно. Вместо этого ваша программа просто вызывает функции библиотеки этапа выполнения. В зависимости от компилятора библиотека этапа выполнения может состоять из тысяч функций. В данном уроке описывается использование таких функций в ваших программах. К тому времени, когда вы закончите этот урок, вы освоите следующие основные концепции:
• Библиотека этапа выполнения представляет собой набор функций, обеспечиваемых вашим компилятором, которые вы можете легко использовать в программах.
• Для использования функций библиотеки этапа выполнения вы должны включить соответствующие заголовочные файлы, содержащие прототипы функций.
• Некоторые компиляторы обращаются к библиотеке этапа выполнения как к интерфейсу прикладных программ или API.
Большинство библиотек этапа выполнения содержат сотни прикладных функций, которые помогут вам сохранить огромное количество времени и быстро разработать сложные программы. Вы узнаете, что очень легко использовать функции библиотеки этапа выполнения!
ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ БИБЛИОТЕКИ ЭТАПА ВЫПОЛНЕНИЯ
Из урока 9 вы узнали, что до того, как ваши программы смогут вызвать функцию, компилятор C++ должен узнать определение или прототип функции. Поскольку функции библиотеки этапа выполнения не определены в вашей программе, вы должны указать прототип для каждой библиотечной функции, которую намерены использовать. Для упрощения использования библиотечных функций компилятор C++ предоставляет заголовочные файлы, содержащие корректные прототипы. Таким образом, вашим программам необходимо просто включить требуемый заголовочный файл с помощью оператора # include, а затем вызвать необходимую функцию. Например, следующая программа SHOWTIME.CPP будет использовать функции библиотеки этапа выполнения t ime и ctime для вывода текущей системной даты и времени. Прототипы этих двух функций библиотеки этапа выполнения содержатся в заголовочном файле time.h:
#include <iostream.h>
#include <time.h> // Для функций библиотеки этапа выполнения
void main(void)
{
time_t system_time;
system_time = time(NULL);
cout << "Текущее системное время " << ctime(&system_time) << endl;
}
Когда вы откомпилируете и запустите эту программу, на вашем экране появятся текущие системные дата и время:
С:\> SHOWTIME <ENTER>
Текущее системное время Mon Jan 01 16:13:51 1996
Как видите, программа использует функции time и ctime. В случае функции ctime программа передает адрес переменной system_time, используя оператор адреса, описанный в уроке 10. Для использования этих функций вам просто следует включить заголовочный файл time.h в начало вашего исходного файла.
Подобным образом следующая программа SQRT.CPP использует функцию sqrt для возврата квадратного корня нескольких значений. Прототип функции sqrt находится в заголовочном файле math.h:
#include <iostream.h>
#include <math.h> // Содержит прототип sqrt
void main(void)
{
cout << "квадратный корень 100.0 равен " << sqrt(100.0) << endl;
cout << "Квадратный корень 10.0 равен " << sqrt (10.0) << endl;
cout << "квадратный корень 5.0 равен " << sqrt(5.0) << endl;
}
Наконец, программа SYSCALL.CPP использует функцию system, прототип которой определяется в заголовочном файле stdlib.h. Функция system обеспечивает легкий способ выполнения вашей программой команды операционной системы, такой как "DIR", или другой программы:
#include <stdlib.h>
void main(void)
{
system("DIR");
}
В этом случае программа использует функцию system для вызова команды MS-DOS DIR. Выберите время для эксперимента с этой программой, запуская другие команды или даже одну из программ, созданных вами ранее при изучении этой книги.
ИЗУЧЕНИЕ ФУНКЦИЙ БИБЛИОТЕКИ ЭТАПА ВЫПОЛНЕНИЯ
Ваш компилятор C++ обеспечивает сотни функций библиотеки этапа выполнения. Документация, поставляемая с вашим компилятором, должна содержать полное описание всех функций библиотеки этапа выполнения. Если вы просмотрите эту документацию, то найдете, что функции обычно используют простые прототипы. Например, для функции sqrt вы могли бы найти следующий прототип:
double sqrt(double);
В данном случае прототип функции сообщает вам, что функция возвращает значение типа double и ожидает параметр тоже типа double. Аналогично этому можно найти следующий прототип для функции time:
time_t time (time_t *);
И опять прототип сообщает вам, что функция возвращает значение типа time_t (этот тип определен в заголовочном файле time.h). Функция ожидает, что ее параметр должен быть указателем на переменную типа time_t. По мере чтения документации о функциях библиотеки этапа выполнения вы очень много узнаете о самих функциях и о C++ , при этом обращайте внимание на прототипы функций.
Другой путь изучения библиотечных функций вашего компилятора состоит в просмотре заголовочных файлов, содержащихся в подкаталоге INCLUDE. Выделите время, например, для того, чтобы сейчас распечатать заголовочные файлы math.h, time.h и stdlib.h, которые вы использовали в программах этого урока.
Использование функций API
В дополнение к стандартной библиотеке этапа выполнения многие компиляторы обеспечивают функции API или интерфейс прикладных программ. Например, если вы программируете в среде Windows, то вам потребуются функции графического API, телефонного API (TAPI), API для мультимедиа и т. д. Прежде чем создавать свои собственные функции, убедитесь, что вы не нашли таких функций в API, предоставляемом вашим компилятором.
ЧТО ВАМ НЕОБХОДИМО ЗНАТЬ
Библиотека этапа выполнения C++ предоставляет мощный набор функций, которые вы можете использовать в ваших программах. Не жалейте времени, чтобы изучить документацию по библиотеке этапа выполнения, поставляемой с вашим компилятором. Выясните смысл функций, имеющихся в библиотеке этапа выполнения. Преимущество этих функций состоит в том, что вы избавляетесь от значительного объема программирования. В уроке 12 вы научитесь обращаться с локальными переменными и областью видимости (участок вашей программы, где известно имя переменной). Прежде чем перейти к уроку 12, убедитесь, что вы освоили следующие основные концепции:
Библиотека этапа выполнения представляет собой набор функций, обеспечиваемых компилятором для ваших программ.
Для использования функции из библиотеки этапа выполнения вы должны указать ее прототип.
Большинство компиляторов C++ предоставляют заголовочные файлы, которые содержат корректные прототипы для каждой библиотечной функции.
В дополнение к библиотеке этапа выполнения многие компиляторы C++ предоставляют функции API (интерфейс прикладных программ) для выполнения определенных задач, например программирования графики или мультимедиа