Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Паппас К., Мюррей У. - Visual C++ 6. Руководство разработчика - 2000

.pdf
Скачиваний:
288
Добавлен:
13.08.2013
Размер:
4.96 Mб
Скачать

Рис 2.10

Contents / Search... / Index

Эти стандартные команды предоставляют доступ к интерактивной справочной системе программы.

UseExtensionHelp

Когда включена данная опция, в качестве справочной системы вызывается расширенный файл справки, а не MSDN.

KeyboardMap...

Данная команда выводит список и описание всех команд VisualC++ с перечнем связанных с ними сочетаний клавиш.

Tip of the Day...

Команда TipoftheDay... выводит окно с различными советами, касающимися работы в среде

VisualC++.

TechnicalSupport

Данная команда отображает раздел справочной системы, посвященный вопросам технической поддержки.

Microsoft on the Web

В этом подменю содержатся команды перехода к Web-страницам в Internet, посвященным VisualC++ и различным техническим вопросам.

About Visual C++

About... — стандартная команда всех приложений Windows - отображает информацию о версии программы, авторских правах, зарегистрированном пользователе и установленных дополнительных компонентах.

Создание вашей первой программы

Сохранение файла

Создание исполняемого файла

31

o Добавление файлов в проект

oПостроение программы

Отладка программы

oПредупреждающие сообщения

o Первое сообщение об ошибке

o Использование команд Find и Replace o Быстрое обнаружение ошибочных строк

oПродолжение отладки

Запуск программы

oИспользование встроенного отладчика

Дополнительные средства отладки

oРабота с точками останова

o Окно QuickWatch

Написание, компиляция и отладка простейшей программы

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

Действительно, создание многофункционального приложения Windows, поддерживающего работу в Internet, является задачей совсем не простой, тем более если начинать приходится с нуля. Но хотим вас успокоить: современные средства программирования позволяют автоматически генерировать программный код для выполнения многих стандартных задач. И мы, авторы, поставили своей целью научить вас как основным принципам программирования на C/C++, так и использованию базовых возможностей одной из мощнейших современных сред программирования, каковой является VisualC++. Надеемся, вы сможете создавать вполне профессиональные приложения, соответствующие требованиям сегодняшнего дня.

Создание вашей первой программы

Первое, что вы должны сделать, приступая к работе над новой программой, — это создать новый проект. Для этого в меню File задайте команду New..., а в открывшемся диалоговом окне New выберите вкладку Projects(рис. 3.1).

32

Рис 3.1. Выбор типа проекта

Теперь необходимо ввести имя файла проекта. Отнеситесь к данному моменту серьезно, так как это имя впоследствии будет использовано при построении исполняемого файла приложения.

Следующий шаг состоит в указании типа проекта. В нашем случае это будет простое консольное приложение — Win32 ConsoleApplication. В текстовом поле Location укажите папку, которую система автоматически создаст для файлов нового проекта.

Далее необходимо указать платформу, для которой создается проект. Для 32-разрядной версии компилятора VisualC++ в поле Platforms по умолчанию задана опция Win32.

После того как вы нажмете кнопку ОК, отобразится окно мастера с набором опций (рис. 3.2).

33

Рис. 3.2. Окно, появляющееся после выбора типа проекта Win32 Console Application

Поскольку мы будем создавать проект с нуля, выберите опцию An empty project ищелкнитенакнопке Finish. Далее можете просто щелкнуть на кнопке, расположенной первой слева на стандартной панели инструментов. Когда перед вами откроется новое окно редактирования, введите такой код:

/* ПРИМЕЧАНИЕ:

данная программа содержит ошибки,

*/

/* введенные с

целью обучить вас использованию*/

 

/* средств отладки

*/

#include <stdio.h>

 

/* Следующая константа определяет размер массива */

 

#define SIZE 5

 

 

/* Прототип функции */

 

void print_them(int

offset, char continue, -int iarray[SIZE]);

void main( void ) {

 

intoffset;

/* индекс элемента массива */

int iarray[SIZE];

 

/* массив чисел */

charcontinue= 0; /* содержит ответ пользователя */

/* Первый раз функция выводит значения неинициализированных переменных

*/ print_them(offset,continue, iarray); /* Приглашение для пользователя */

Printf(\n\nWelcome to a trace demonstration!"); printf("\nWould you like to continue (Y/N)"); scanf("%c",continue);

/* Пользователь вводит новые значения в массив*/ if (continue== 'Y' )

for (offset=0; offset < SIZE, offset++) { printf ("\nPlease enter an integer: "); scanf("%d",siarray [of f set] ) ;

/* Второй раз функция отображает значения, введенные пользователем */ print_them{offset, continue, iarray) ;

/* Функция, выводящая значения элементов массива */

void print_them(int offset, char continue, int iarray[SIZE])

34

{

printf("\n\n%d",offset);

printf("\n\n%d",continue); for(offset=0; offset < SIZE, offset++) printf("\n%d",iarray[offset]); }

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

Сохранение файла

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

Чтобы сохранить введенный только что код, вы можете либо щелкнуть на третьей кнопке слева на стандартной панели инструментов, либо выбрать в меню File команду Save, либо нажать [Ctrl+S]. Когда вы в первый раз выбираете команду Save, открывается диалоговое окно Save. Сохраните файл под именем ERROR. С.

На рис. 3.3 окно редактирования показано до сохранения файла. После сохранения в строке заголовка окна отобразится новое имя файла.

Рис 3.3. Окно редактирования до того, как его содержимое будет сохранено в файле

Создание исполняемого файла

Как правило, проекты для Windows 3.x, Windows95/98 и Windows, NT включают большое число файлов. Но сейчас мы начали работу над простейшей программой, состоящей из единственного файла. Этого вполне достаточно, чтобы разобраться с основными этапами создания полноценного приложения на C/C++.

Добавление файлов в проект

После того как проект создан, в него можно сразу же добавлять новые файлы. Перейдите на вкладку FileView и щелкните правой кнопкой мыши на элементе ERRORfiles. Контекстное

35

меню с выделенной командой AddFilestoProject..., которое при этом откроется, показано на рис. 3.4.

При выборе данной команды появляется окно InsertFilesintoProject, где вы можете отметить файлы, подлежащие включению в проект. Одно замечание по поводу типа файлов: файлы заголовков (с расширением Н) не включаются в список файлов проекта, а добавляются в проект непосредственно во время построения программы с помощью директив препроцессора

#include.

В нашем случае нужно найти созданный ранее файл ERROR.C и выполнить на нем двойной щелчок, в результате чего файл автоматически будет добавлен в проект.

Рис 3.4. Меню, содержащее команду Add files to Project ...

Рис. 3.5. Добавление файла ERROR.C в проект

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

После создания исходного файла можно приступить к созданию файла исполняемого. Согласно терминологии разработчиков VisualC++, этот процесс называется построением программы. Обратимся к показанному на рис. 3.6 меню Buildс выделенной командой

RebuildAll.

Единственное различие между командами Build и RebuildAll, как вы помните, состоит в том, что команда RebuildAllне проверяет дату создания используемых в проекте файлов, т.е. компилирует и компонует все файлы проекта, независимо от того, когда они были созданы.

36

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

Рис. 3.6. Команда RebuildAll выполнит компиляцию и компоновку файлов нового приложения

Отладка программы

Если в программе были допущены синтаксические ошибки, при выполнении команд Build и RebuildAll сообщения о них будут отображаться на вкладке Build окна Output(рис. 3.7).

Рис. 3.7. Вывод сообщений об ошибках в окне VisualC++

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

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

37

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

Предупреждающие сообщения

Предупреждающие сообщения могут появляться в тех случаях, когда компилятор автоматически выполняет некоторые стандартные преобразования и сообщает об этом программисту. Например, если переменной типа int(целое число) будет присвоено дробное значение, то автоматически произойдет округление. Это не означает, что в программе допущена ошибка, но поскольку преобразование типов данных происходит незаметно для программиста, компилятор считает своим долгом сообщить об этом.

Приведем еще один пример. Большинство функций, объявленных в файле МАТН.Н, принимают аргументы и возвращают значения типа double(действительное число двойной точности). Если программа передаст одной из таких функций аргумент типа float(действительное число одинарной точности), компилятор, прежде чем направить данные в стек аргументов функции, выведет предупреждающее сообщение о том, что тип данных float был преобразован в double.

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

Первое сообщение об ошибке

Сообщение об ошибке, представленное на рис. 3.7, является вполне типичным. Наиболее часто с ним приходится сталкиваться тем, кто только осваивает новый язык программирования. В данном случае программист попытался задать переменной имя, зарезервированное для ключевого слова. Это хороший принцип — присваивать переменным имена, созвучные с их назначением, однако выбранное нами имя вступило в конфликт с ключевым словом continue, существующим в C/C++.

Использование команд Find и Replace

Довольно часто в процессе программирования возникают ситуации, когда вам нужно найти и заменить какое-то слово в тексте программы. Вы, конечно же, можете сделать это с помощью диалогового окна, открываемого командой Replace... из меню Edit, но имеется и более быстрый способ. Рассмотрите внимательно панель инструментов, показанную на рис. 3.8, и найдите в поле списка Find слово continue.

Чтобы воспользоваться этим средством поиска, щелкните мышью в поле и введите слово, которое хотите найти, после чего нажмите [Enter]. На рис. 3.8 показан результат такого поиска. В тексте программы выделено слово continue, обнаруженное первым.

38

Рис. 3.8. Использование средств быстрого поиска

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

Replace... из меню Edit(рис. 3.9).

Рис. 3.9. Окно поиска

Наша цель состоит в том, чтобы заменить имя переменной continue словом, также указывало бы на назначение этой переменной, но отличалось бы от ервированных имен. С этой целью введем в поле Replacewith слово continu. Но осталась маленькая проблема. В программе имеется строка "\nWould you like to continue (Y/N)". Если вы выполните автоматическую замену во всем файле, щелкнув на кнопке ReplaceAll, то сообщение, выдаваемое программой, будет содержать, грамматическую ошибку. Поэтому замену следует проводить последовательно, переходя от слова к слову, а в указанном месте щелкнуть на кнопке FindNext.

Быстрое обнаружение ошибочных строк

Теперь необходимо выполнить повторную компиляцию программы, после которой окно сообщений будет выглядеть так, как показано на рис. 3.10.

39

Рис. 3.10 Обновленное окно сообщений

Существует достаточно быстрый способ перехода от окна сообщений к окну редактирования, и мы вам о нем расскажем. Поместите курсор на интересующей вас строке сообщения, например на первом предупреждении:

warning. C4013: 'Printf undefined;..,

А теперь просто нажмите [Enter]. Курсор в окне редактирования будет автоматически помещен в строку программы, вызвавшую появление сообщения об ошибке, а слева от строки появится стрелка (рис. 3.11).

Как вы уже знаете, языки C/C++ чувствительны к регистру символов. Поэтому компилятор совершенно точно установил причину ошибки. Первая буква функции printf() в нашей программе ошибочно была введена в верхнем регистре. Компилятор, конечно же, не смог найти в библиотеке функцию Printf().Эту ошибку нетрудно исправить — достаточно заменить букву Р буквой р. Затем обязательно сохраните файл.

40

Соседние файлы в предмете Программирование на C++