Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.doc
Скачиваний:
36
Добавлен:
09.04.2015
Размер:
5.6 Mб
Скачать

34 Глава 2

Структура программы С++

Программы, запускаемые как консольные приложения под Visual С++ 2005, чита- ют данные из командной строки и туда же выводят результаты. Чтобы избежать не- обходимости погружения в сложности, связанные с созданием и управлением окнами приложений, пока у вас нет достаточного объема знаний, чтобы понять их работу, все примеры, которые вы напишете в процессе первоначального изучения языка С++, будут консольными программами — как консольными программами Win32, так и консольными программами .NET. Это позволит вам полностью сосредоточиться на языке С++. Только когда вы освоите его в достаточной мере, тогда будете готовы к тому, чтобы создавать и управлять оконными приложениями. Для начала вы узнаете, каким образом структурированы консольные программы.

Программа на С++ состоит из одной или более функций. В главе 1 вы видели при- мер консольной программы Win32, состоящей из единственной функции, где — имя функции. Каждая программа С++ стандарта ANSI/ISO содержит функ- цию main (), и все программы С++ любого размера состоят из нескольких функций — функции main (), с которой начинается выполнение программы и некоторого коли- чества других функций. Функция — просто самодостаточный блок кода с уникальным именем, которое используется для запуска его на выполнение. Как было показано в главе 1, консольная программа Win32, сгенерированная мастером создания приложе- ний (Application Wizard), имеет главную функцию по имени tmain. По действующе- му соглашению в Visual С++ главная функция должна называться main или wmain — в зависимости от того, использует программа символы Unicode или нет. Имена wmain и tmain специфичны для Microsoft. Имя главной функции, отвечающей стандар- ту ISO/ANSI языка С++ — main. Я буду использовать имя main во всех примерах ISO/ANSI С++.

Типичная программа командной строки может быть структурирована, как показа- но на рис. 2.1.

На рис. 2.1 видно, что выполнение программы начинается с начала функции main (). Из main () управление передается функции input_names (), которая воз- вращает его в позицию, следующую непосредственно за той точкой, из которой она была вызвана в main (). Затем из main () вызывается функция sort_names () и, по- сле возврата управления в main (), вызывается финальная функция output_names (). В конечном итоге, после завершения вывода, управление опять возвращается в main () и на этом программа завершается.

Конечно, разные программы могут иметь совершенно различную функциональную структуру, однако все они начинают выполнение с начала main (). Принципиальная выгода от разделения программы на функции состоит в том, что вы можете писать и отлаживать их по отдельности. Есть и дополнительная выгода, которая заключается в том, что функции, написанные для выполнения определенных задач, могут быть по- вторно использованы в других программах. Библиотеки, поставляемые с С++, предо- ставляют множество стандартных функций, которые вы можете применять в своих программах. Они могут избавить вас от огромного объема рутинной работы.

Подробнее о создании и использовании функций вы узнаете в главе 5.

Данные, переменные и вычисления 35

Рис. 2.1. Структура типичной программы командной строки

Простой пример поможет вам лучше понять элементы программы. Начните с создания нового проекта — вы можете воспользоваться комбинацией клавиш <Ctrl+Shift+N> для ускорения этой операции. Когда появится диалоговое окно New Project (Новый проект), показанное на рис. 2.2, выберите Win32 в качестве типа про- екта и Win32 Console Application (Консольное приложение Win32) — в качестве ша- блона. Назовите проект Ех2_01.

Если вы щелкнете на кнопке ОК, то увидите новое диалоговое окно, которое по- казывает обзор того, что сгенерирует мастер Application Wizard (рис. 2.3).

Если теперь вы щелкнете на ссылке Application Settings (Настройки приложения) в левой части диалогового окна, то увидите дополнительные опции приложения Win32, как показано на рис. 2.4.