Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Программирование в Visual С++ 2005 3 страница





 

50 Глава 1

 

Обратите внимание на автоматический отступ, выполненный при вводе вашего
кода. С++ использует отступы, чтобы увеличить читабельность программ, и редактор
автоматически выполняет отступ для каждой вводимой вами строки кода, основыва-
ясь на содержимом предыдущих строк. В процессе ввода исходного кода вы также
увидите в действии автоматическое выделение цветом синтаксиса. Некоторые эле-
менты программы будут показаны в разных цветах, потому что редактор автоматиче-
ски раскрашивает элементы языка в зависимости от их значения.

Приведенный выше код составляет завершенную программу. Возможно, вы от-
метите ряд отличий по сравнению с кодом, сгенерированным мастером Application
Wizard для предыдущего примера. Нет директивы для файла

Этот файл не входит в проект, поскольку вы не используете средство предваритель-
ной компиляции заголовков. Функция теперь называется ; ранее она называлась
. Фактически все программы на ISO/ANSI С++ начинают выполнение с функ-
ции по имени . Microsoft также называет эту функцию , когда применя-
ется кодиоовка символов Unicode, и имя определено либо как , либо
как , в зависимости того, используется ли кодировка Unicode. В предыдущем
примере имя определено "за кулисами" как. Во всех примерах ISO/ANSI
С++ вы будете применять имя

Операторы вывода также несколько отличается. Первый оператор в вы-

глядит так:

Здесь вы видите два появления операции , и каждое посылает то, что за ним
следует, в i — стандартный поток вывода. Сначала в поток отправляется

строка между двойными кавычками, затем — , где . определено в

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

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


Puc. 1.15. Выполнение программы Extl_02


Теперь вы можете построить проект точно так же, как в предыдущем случае.
Обратите внимание, что все открытые в панели редактора исходные файлы сохраня-
ются автоматически, если вы не сделали этого раньше. Когда программа будет успеш-
но скомпилирована, нажмите <Ctrl+F5>, чтобы ее выполнить. Вы увидите окно, по-
казанное на рис. 1.15.




Программирование в Visual С++ 2005 51

 

Обращение с ошибками

Конечно, если вы неправильно введете текст программы, то получите сообщения
об ошибках. Чтобы увидеть, как это работает, вы можете внести ошибку преднамерен-
но. Если вы уже получили какие-то сообщения об ошибках, то можете использовать
их для этого упражнения. Вернитесь в панель редактора и удалите точку с запятой в
конце предпоследней строки между фигурными скобками (в строке 8), а затем пере-
компилируйте исходный файл. В выходной панели (Output pane) в нижней части
окна приложения IDE вы увидите сообщение об ошибке:

 

 


Каждое сообщение об ошибке времени компиляции сопровождается номером, по
которому вы можете найти ее описание в документации. В данном случае проблема
очевидна, но в более сложных случаях документация может помочь вам найти при-
чину ошибки. Чтобы обратиться к документации об ошибке, щелкните на строке в
панели вывода, которая содержит ее номер, затем нажмите <F1>. Отобразится новое
окно, содержащее более подробное описание этой ошибки. Если хотите, можете по-
пробовать проделать это с данной простой ошибкой.

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

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

Нажмите <Ctrl+Shift+N> для отображения диалогового окна New Project (Новый
проект); затем выберите тип проекта CLR и шаблон CLR Console Application (Консоль-
ное приложение CLR), как показано на рис. 1.16.

Введите имя . Когда вы щелкнете на кнопке ОК, файлы проекта будут созда-

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

Если вы посмотрите на панель Solution Explorer, изображенную на рис. 1.17, то
увидите несколько дополнительных файлов по сравнению с консольным проектом
Win32.

Есть пара файлов в виртуальной папке . Файл содержит пик-

тограмму приложения, которая отображается при минимизации программы; файл
содержит ресурсы приложения — в данном случае только ссылку на пиктограмму.
Имеется также файл по имени Каждая программа CLR со-

стоит из одной или более сборок (assembly), каждая из которых представляет собой
коллекцию кода и ресурсов, формирующую функциональную единицу. Сборка также
содержит обширные данные для CLR; там есть спецификации используемых типов


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

 
 

Puc. 1.16. Создание нового приложения CLR


Программирование в Visual С++ 2005 53

 

Если исходный код файла ". срр еще не отображается в окне редактора, вы-
полните двойной щелчок на имени файла в панели Solution Explorer. Окно редактора
должно выглядеть, как показано на рис. 1.18.


 


 
 


Puc. 1.18. Исходный код Exl_03. срр


Как видите, здесь есть те же директивы , что и в файле "родной" кон-

сольной программы С++, потому что программы CLR также используют предвари-
тельно компилированные заголовки для эффективности. Но следующая строка отли-
чается:

Все средства библиотеки.NET определены внутри пространства имен (namespace),
и почти все стандартные функции, которые вы будете использовать, скорее всего, бу-
дут находиться в пространстве имен Этот оператор говорит о том, что после-
дующий код программы использует пространство , но что же это такое — про-
странство имен?

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

фиксом — именем пространства имен. Поэтому имя вроде в библиотеке — это

на самом деле . Это значит, что если вы нечаянно используете имя

для чего-либо в своем коде, то для доступа к из библиотеки.NET смо-

жете применить имя

Два двоеточия посредине — это операция, называемая операцией разрешения
контекста (scope resolution operator). Здесь эта операция отделяет имя пространства
имен от имени типа . Вы уже видели примеры таких составных имен в

примерах С++, представленных выше — и . Здесь та же история:

std — наименование пространства имен родных библиотек С++, а и — име-
на, определенные внутри пространства имен для представления стандартного
выходного потока и символа новой строки соответственно.

Фактически оператор i в данном примере позволяет использо-

вать любое имя из пространства не указывая имени пространства имен в ка-

честве префикса. Если у вас случится конфликт между определенным вами именем и
именем, определенным в библиотеке, вы можете решить эту проблему исключением


54 Глава 1

 

оператора из текста программы и указанием полного имени би-

блиотечного компонента вместе с префиксом — наименованием пространства имен.
Подробнее о пространствах имен вы узнаете в главе 2.

Вы можете скомпилировать и выполнить программу, нажав <Ctrl+F5>. Результат

показан на рис. 1.19.

Puc. 1.19. Выполнение программы Extl_03

Вывод этой программы точно такой же, как в первом примере. Он генерируется
следующей строкой программы:

В этой строке вызывается функция из библиотеки.NET для вывода в командную
строку информации, заключенной в двойные кавычки, то есть это — CLR-эквивалент
оператора "родного" С++, которое вы добавили в код :

Это — наиболее наглядный пример того, как оператор CLR делает то же самое,
что и оператор С++.

Настройка опций Visual С++ 2005

Существует два набора опций, которые вы можете настраивать. Вы можете устано-
вить опции, применяемые к инструментам, включенным в Visual С++ 2005, которые
касаются каждого проекта. Кроме того, вы можете настроить опции, относящиеся
только к конкретному проекту и определяющие, как код проекта будет обрабатывать-
ся при компиляции и компоновке. Опции устанавливаются в диалоговом окне Options
(Параметры), которое отображается после выбора пункта

в главном меню. Диалоговое окно Options показано на рис. 1.20.
Щелчок на символе (+) у любого элемента в левой панели отображает список его
подразделов. На рис. 1.20 показаны опции подраздела General (Общие), относящегося
к разделу Projects and Solutions (Проекты и решения). Правая панель отображает оп-
ции, которые вы можете настроить для раздела, выбранного в левой панели. Пока вам
достаточно рассмотреть лишь несколько из них, но возможно, вы сочтете полезным
потратить некоторое время на просмотр всех опций, доступ к которым обеспечивает
это диалоговое окно. Щелчок на кнопке получения справки (с символом '?') в правом
верхнем углу диалогового окна отобразит пояснение к текущим выбранным опциям.

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

Вы можете установить опции, прилагаемые к каждому проекту С++, выбрав раздел

в левой панели. Также вы можете установить опции, специфичные для



Рис. 1.20. Диалоговое окно Options (Параметры)

Создание и выполнение Windows-приложений

Только для того, чтобы показать, насколько это просто, создадим два работающих
Windows-приложения. Сначала будет построено родное приложение С++ с исполь-
зованием библиотеки MFC, а затем — приложение Windows Forms, работающее под
CLR. Обсуждение этих программ откладывается до тех пор, пока у вас не появится
достаточного запаса знаний, чтобы понять их во всех подробностях. Пока просто де-
монстрируется тот факт, что создавать Windows-приложения достаточно просто.

Создание приложения MFC

Для начала, если у вас открыт существующий проект (на что указывает имя про-
екта в заголовке главного окна Visual С++ 2005), вы можете выбрать пункт меню . В качестве альтернативы вы можетепросто создать новый проект, что автоматически закроет текущее решение.
Чтобы создать Windows-программу, выберите пункт меню или нажмите комбинацию клавиш <Ctrl+Shift+N>, затем вы-
берите тип проекта MFC, а в качестве шаблона проекта — MFC Application (Приложе-
ние MFC). После этого можете ввести имя проекта , как показано на рис. 1.21.

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

Пока что вы можете проигнорировать все эти опции, и просто принять настрой-
ки по умолчанию, поэтому щелкните на кнопке Finish (Готово) для создания проекта с
настройками по умолчанию. Панель Solution Explorer в окне IDE будет выглядеть так,
как показано на рис. 1.23.


 

 

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

 

В этой главе мы обратимся к основам программирования на С++. Прочитав ее до
конца, вы сможете писать простые программы на С++ в традиционной форме: ввод-
обработка-вывод. Как я уже говорил в предыдущей главе, сначала я познакомлю вас
со средствами языка ANSI/ISO С++, а затем раскрою отличающиеся и дополнитель-
ные аспекты языка C++/CLI.

Изучая аспекты языка на примере работающих программ, вы получите возмож-
ность попрактиковаться в применении среды разработки Visual С++. Для каждого
из примеров вам придется построить проект, прежде чем собрать и запустить его.
Помните, что все проекты, которые рассматриваются в этой книге, начиная с этой
главы и заканчивая главой 10, представляют собой консольные приложения.

Прочитав эту главу, вы изучите следующие вопросы.

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

□ Пространства имен.

□ Переменные С++.

□ Определение переменных и констант.

□ Базовый ввод с клавиатуры и вывод на экран.

□ Выполнение арифметических вычислений.

□ Приведение операндов.

□ Область видимости переменных.


64 Глава 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.


 
 

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

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

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


66 Глава 2


Puc. 2.4. Дополнительные опции консольного приложения Win32

Настройкой по умолчанию будет Console application (Консольное приложение),
что включает в себя файл, содержащий версию функции main () по умолчанию, но
вы должны начать с самой базовой структуры проекта, поэтому выберите Empty
project (Пустой проект) в наборе дополнительных опций и щелкните на кнопке Finish
(Готово). Теперь ваш проект создан, но не содержит никаких файлов. Вы можете ви-
деть, что входит в проект на панели Solution Explorer в левой части главного окна
Visual С++ 2005, как показано на рис. 2.5.


68 Глава 2

 

Начните с добавления к проекту нового исходного файла, для чего щелкните
правой кнопкой мыши на Source Files (Исходные файлы) в панели Solution Explorer
и выберите в контекстном меню пункт
При этом появится диалоговое окно Add New Item (Добавить новый элемент), подоб-
ное тому, что показано на рис. 2.6.

Рис. 2.6. Диалоговое окно Add New Item (Добавить новый элемент)

Убедитесь, что выделен шаблон , щелкнув на нем,

и введите имя файла, как показано на рис. 2.6. Файл автоматически получит расшире-
ние - срр, поэтому набирать его не нужно. Не будет никаких проблем, если имя файла
совпадет с именем проекта. Файл проекта имеет расширение, поэтому его

полное имя будет отличаться от имени исходного файла.

Щелкните на кнопке Add (Добавить) для создания файла. Затем вы можете на-
брать следующий код в панели редактора окна IDE:


 




Цель этого примера— проиллюстрировать некоторые способы, применяемые для написания
операторов С++, не являющиеся, однако, демонстрацией хорошего стиля программирования.

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

Если вы посмотрите на панель Solution Explorer, где открыт ваш новый проект,
то увидите вновь созданный исходный файл. Solution Explorer всегда показывает все
файлы проекта. Если щелкнуть на вкладке Class View (Представление классов) в ниж-
ней части панели Solution Explorer, будет отображено представление Class View. Эта
панель состоит из двух частей: верхней, показывающей глобальные функции и ма-
кросы, определенные в проекте (и еще классы, если это проект, включающий в себя
классы), и изначально пустой нижней. Функция main (} появится в нижней панели,
если вы выберете элемент Global Functions and Variables (Глобальные функции и пе-
ременные) в верхней панели Class View, как показано на рис. 2.7. Чуть позже я объяс-
ню подробно, что все это значит, а пока отмечу, что по сути глобальными являются
функции и/или переменные, доступные в любом месте программы.


Дата добавления: 2015-11-04; просмотров: 23 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.033 сек.)







<== предыдущая лекция | следующая лекция ==>