Структура программы. Линейные операторы.
ВВОД-ВЫВОД ДАННЫХ
Программа на C++ состоит из одной или более функций. В главе 2 был приведен пример консольной программы Win32, состоящей из единственной функции main (), где main – имя функции. Каждая программа C++ стандарта ANSI / ISO должна содержать функцию main (). При этом, помимо обязательной функции main(), с которой начинается выполнение, программа может содержать некоторое количество других функций, задаваемых пользователем-программистом. Функция – это самодостаточный блок кода с уникальным именем, которое используется для запуска функции на выполнение. Консольная программа Win32, сгенерированная мастером создания приложений (Application Wizard), имеет главную функцию с именем tmain. По действующему соглашению в MS VS C++ главная функция должна называться main или wmain – в зависимости от того, использует программа символы Unicode или нет. Имена wmain и tmain специфичны для Microsoft. Имя же главной функции, отвечающей стандарту ISO / ANSI языка C++ – main. Далее будем использовать имя main во всех примерах ISO / ANSI C++.
Типичная программа командной строки может быть структурирована, как показано на рис. 17.
Когда вызывается функция, её выполнение начинается с начала |
int main { input_names(); sort_names(); output_names(); return 0; } |
void input_names() { // … return; } |
void sort_names() { // … return; } |
void output_names() { // … return; } |
Возврат из main() попадает в операционную систему |
Возврат из функции попадает в точку, следующую за местом, откуда она была вызвана |
Рис. 17. Пример структуры программы
Из рис. 17 видно, что выполнение программы начинается с начала функции main(). Из main() управление передается функции input_names(), которая возвращает его в позицию, следующую непосредственно за той точкой, из которой она была вызвана в main(). Затем из main() вызывается функция sort_names() и, после возврата управления в main(), вызывается последняя функция output_names(). В конечном итоге, после завершения вывода, управление опять возвращается в main() и на этом программа завершается.
Конечно, разные программы могут иметь совершенно различную функциональную структуру, однако все они начинают выполнение с начала main(). Принципиальная выгода от разделения программы на функции состоит в том, что можно писать и отлаживать их по-отдельности. Есть и дополнительная выгода, которая заключается в том, что функции, написанные для выполнения определенных задач, могут быть повторно использованы в других программах. Библиотеки, поставляемые с C++, предоставляют множество стандартных функций, которые можно применять в своих программах. Они могут избавить программиста от огромного объема рутинной работы.
Более подробно использование функций будет рассмотрено в главе 7. Далее рассмотрим структуру программы, содержащую лишь функцию main().