Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб по С и С++ / Оболочка.doc
Скачиваний:
69
Добавлен:
17.03.2015
Размер:
231.42 Кб
Скачать

VisualComponentManager Данная утилита предназначена для ведения базы данных готовых программных компонентов.

RegisterControl Элементы управления OLE, как и другие OLE-серверы, могут использоваться различными приложениями, поддерживающими технологию OLE. Но для этого необходимо зарегистрировать библиотеку типов и класс элемента управления, что как раз и выполняет команда RegisterControl.

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

Options... Данная команда открывает окно Options, в котором задаются различные параметры среды VC++.

Macro... / Record... / Play... Эти команды используются для создания и воспроизведения макросов на VBScript. Макросы представляют собой небольшие процедуры, содержащие команды VBScriptи не принимающие параметров. Макросы позволяют значительно упростить и ускорить работу в среде VC++. Например, вы можете записать в виде макроса некоторую часто выполняемую последовательность команд, в результате чего для осуществления той же самой задачи вам достаточно будет ввести простую комбинацию клавиш или нажать единственную кнопку панели инструментов.

Меню Window Все команды меню Window , за исключением команды DockingView, в принципе соответствуют стандартному набору команд данного меню во всех приложениях Windows.

NewWindow Данная команда создает новое окно редактирования для текущего проекта.

Split Команда Split позволяет разбить окно редактирования на несколько частей.

DockingView С помощью этой команды можно закрепить панель инструментов у любого края родительского окна либо сделать ее свободно перемещаемой.

Close Данная команда закрывает активное окно. Если содержимое окна не было предварительно сохранено, то будет выдано предупреждающее сообщение.

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

Next Посредством команды Next, относящейся к меню Window, можно переключаться между открытыми окнами.

Previous Эта команда аналогична команде Next, но в отличие от последней осуществляет переходы между окнами в обратном порядке.

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

TileHorizontally Эта команда располагает все открытые окна одно над другим. Такой вид отображения удобен для сравнения исходного и модифицированного текста программ.

TileVertically Команда Тilе Vertically располагает все открытые окна рядом друг с другом. Такой вид отображения удобен при необходимости произвести сравнение иерархических структур.

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

Меню Help Меню Help ) содержит стандартные для приложений Windows команды Contents, Searchи Index, а также некоторые дополнительные команды.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запуск программы Чтобы запустить программу, просто выберите в меню Project команду Execute. Если в ответ на запрос программы Would you like to continue(Y/N) вы нажмете клавишу [Y], а затем [Enter], на экране отобразится следующее:

Использование встроенного отладчика Созданная нами программа в начале своей работы отображает на экране исходное содержимое массива данных, после чего спрашивает, хотите ли вы продолжить работу. Ответ Y (yes— да) сигнализирует о том, что вы хотите заполнить массив собственными данными и отобразить их на экране.

Из рис. 3.14 можно сделать вывод о том, что хотя программный код набран совершенно правильно, т.е. в нем нет синтаксических ошибок, программа работает не так, как нам бы хотелось. Ошибки такого рода называются логическими. К счастью, встроенный в VC++ отладчик содержит ряд средств, которые послужат для вас спасательным кругом в подобной ситуации. Во-первых, вы можете выполнять программу пошагово, строка за строкой. Во-вторых, вам предоставляется возможность анализировать значения переменных в любой момент выполнения программы.

Разница между командами StepInto и StepOver Когда вы начинаете процесс отладки, появляется панель инструментов Debug. Из множества представленных на ней кнопок наиболее часто задействуются StepInto (четвертая справа в верхнем ряду) и StepOver(третья справа). В обоих случаях программа будет запущена на выполнение в пошаговом режиме, а в тексте программы выделяется та строка, которая сейчас будет выполнена.

Различия между командами StepInto и StepOver проявляются только тогда, когда в программе встречается вызов функции. Если выбрать команду StepInto, то отладчик войдет в функцию и начнет выполнять шаг за шагом все ее операторы. При выборе команды StepOver отладчик выполнит функцию как единое целое и перейдет к строке, следующей за вызовом функции. Эту команду удобно применять в тех случаях, когда в программе делается обращение к стандартной функции или созданной вами подпрограмме, которая уже была протестирована.

В окне редактирования появилась стрелка (ее называют индикатором трассировки), указывающая на строку программы, которая будет выполнена на следующем шаге. В данный момент она указывает на функцию print_them().

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

Точки останова проще всего расставлять с помощью кнопки Breakpoint (первая справа) панели инструментов Build. Для этого достаточно установить курсор на нужной строке программы и щелкнуть на указанной кнопке. Если же выделенная строка уже содержит точку останова, то после щелчка на кнопке Breakpoint она, точка останова, будет удалена. При выборе команды Go программа будет выполняться от текущего местоположения курсора до ближайшей точки останова.

Обратимся к нашей программе. Мы знаем, что все строки программы до вызова функции scanf() отлично работают. Чтобы не тратить время на пошаговое выполнение всех строк, которые уже были проверены ранее, поставим точку останова на 20-й строке, содержащей вызов функции scanf().

Имеется и другой способ задания точек останова — с помощью диалогового окна Breakpoints , вызываемого командой Breakpoints... из меню Edit. По умолчанию при щелчке на кнопке со стрелкой открывается контекстное меню, в котором первым пунктом указывается команда создания точки останова на той строке, где в данный момент в окне редактирования находится курсор. В нашем случае это строка 20. Рис. 3.18. Задание точки останова

Работа с точками останова Предположим, что вы поставили точку останова в строке программы, содержащей вызов функции scanf{). Теперь выберите команду Go— либо из меню, либо нажав клавишу [F5]. Обратите внимание, что выполнение программы прерывается не на первой строке программы, а на строке, содержащей точку останова.

Далее можно продолжить выполнение программы в пошаговом режиме либо проанализировать текущие значения переменных. Нас интересует, будет ли функция scanf() работать корректно после того, как в программный код были внесены изменения. Выберите команду StepOver, перейдите к окну программы, введите букву Y в верхнем регистре и нажмите клавишу [Enter]. (Мы применили команду StepOverдля того, чтобы избежать пошагового анализа отладчиком всех операторов функции scanf(). При выборе команды StepIn появляется предложение указать местонахождение файла SCANF.C) Все отлично! Отладчик не выдал окна с сообщением об ошибке. Но означает ли это, что все проблемы разрешены? Чтобы ответить на этот вопрос, достаточно будет проанализировать текущее значение переменной continu.

Окно QuickWatch Команда QuickWatch... открывает диалоговое окно QuickWatch которое позволяет по ходу выполнения программы анализировать значения переменных. Простейший способ определить значение переменной с помощью данного окна состоит в том, что курсор помещается на имени переменной в окне редактирования, а затем нажимается комбинация клавиш [Shift+F9]. Проделайте указанную операцию с переменной continu.

Соседние файлы в папке Лаб по С и С++