Шаг 2. Первое редактирование проекта и еще некоторые его настройки.



Овсянник В.Н. Лабораторные работы по курсу «Объектно-ориентированное программирование»

(2016/17 семестр 3)

 

1.      Интегрированная среда MVS-2010. 2

2.      Массивушки и подпрограммочки. 11

3.      Поиск экстремумов с ограничениями или «Брачное агенство». 15

4.      Задача «куча камней». 22

5.      Разработка простого класса. 26

6.      Класс вектор. 34

7.      Наследование классов. 40

8.      Приложение с окном вида. 44

9.      Абстрактные классы и виртуальные функции. 51

10.    Разработка класса контейнера. 56

11.    Перегрузка векторных и матричных операций. 61

12.    Программирование односвязного списка. 67

13.    Приложение, основанное на модальном диалоговом окне. 69

14.    Приложения. 96

Список литературы.. 100

 


Интегрированная среда MVS-2010

Неопределимые ошибки бесконечны, а определимые ограничены возможностями компилятора

Закон Мерфи

Цель работы – освоить основные возможности интегрированной среды Microsoft Visual Studio 2010 (далее ИС MVS-2010) по разработке и отладке типового консольного приложения на языке С++ (4 час.)

Задание. Проделайте следующее:

1. Прочитайте это задание и методические указания до конца, прежде чем терзать клавиатуру, соседа, преподавателя и пр. сущности

2. Запустите на выполнение ИС MVS-2010, ознакомьтесь с командами меню и инструментальными панелями.

3. Создайте консольное приложение и дайте ему благопристойное имя («Как яхту назовешь – так она и поплывет»).

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

5. Освойте использование команд компиляции, запуска и отладки приложения (F7, Ctrl+F7, F5, Ctrl+F5, Shift+F5, F10, F11 и пр.).

6. Научитесь вызывать контекстное меню Debug, выполнять трассировку программы, просматривать значения переменных во время отладки, устанавливать и снимать контрольные точки (breakpoint).

7. Научитесь использовать окна «Autos», «Locals» и «Watch» для просмотра значений переменных во время выполнения (трассировки) программы. Воспользуйтесь помощью (Help) и трассировкой для изучения назначения перечисленных окон.

8. Попробуйте сдать работу, предварительно тщательно протестировав ее на предмет отсутствия хомутов

Методические указания

Шаг 1. Создание заготовки приложения.

Запустите на выполнение ИС, с помощью команды FileèNewèProject вызовите мастера ИС, выберите шаблон Win32 Console Application (рис. 1), в свойствах проекта Application Settings выберите, для простоты, поддержку  MFC (рис. 2). В этом сценарии я присвоил проекту очень оригинальное имя Lab1. При создании проекта не устанавливайте (или снимите, если он установлен по умолчанию), переключатель Create directory for solutions(см. рис. 1).

Если при выборе каркаса приложения вы ошиблись, то надо выйти из ИС, удалить папку с проектом и начать жизнь с начала.

Совет. В условиях работы в сети рекомендую выбрать локальный диск компьютера, а не сетевой, для ускорения работы, отсутствия проблем согласования времени локального компьютера и сетевого, уменьшения вероятности потери проекта из-за возможных сбоев сети. На локальном компьютере рекомендую выбирать каталог, имя которого и путь к нему не содержат символов кириллицы, например, C:\Temp. Самое плохое место для работы над проектом – флешка. Сохраняйте проект на флешке только тогда, когда вы закончили работу с ним, например, в конце лабораторной работы.

 

Рис. 1. Выбор каркаса консольного приложения – начало

 

 

 

Рис. 2. Выбор каркаса консольного приложения – продолжение

Шаг 2. Первое редактирование проекта и еще некоторые его настройки.

Если вы присвоили проекту имя Lab1, то ИС создаст файл Lab1.cpp, в котором вы обнаружите, в частности, функцию _tmain. Это так называемая главная функция, с первой строки которой и начинается выполнение программы. Она содержит, в принципе, полезный программный код, но на первых порах он нам не нужен. Поэтому сделайте следующий крамольный шаг: удалите весь программный код от строки

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])

 

до конца функции _tmain, т.е. в данном случае до конца файла. Удалили? Но так как главная функция все же необходима, введем ее в следующем упрощенном виде:

void main()

{

cout<<"Hello, boys&girls! How do you do?"; // вывод строки на монитор

}

 

Ясное дело, что эта гениальная программа выводит на монитор одну строку текста, причем на английском языке. Если вы попробуете использовать символы кириллицы, то ничего читабельного на мониторе не увидите, пока.

Далее откомпилируем программу, выполнив команду Build Solution F7 меню Build. В нижней части монитора найдите окно Output (рис. 3), в котором отображаются результаты компиляции приложения. Текст  Build: 1 succeeded, 0 failed, ... сообщает нам об успешной компиляции проекта.

 

Рис. 3. Окно вывода Output

 

Если окно Output от вас прячется, призовите его к ответу с помощью волшебной команды ViewèOutput Alt+F2.  

В качестве тренажа измените имя функции, вставив в него пробел (ma in), выполните команду BuildèBuild Solution F7. В окне вывода вы должны увидеть три сообщения об ошибке и одно предупреждение. Выберите первое (самое верхнее) сообщение об ошибке и сделайте по нему двойной клик ЛКМ. ИС отправит вас в то место программы, где компилятор обнаружил ошибку, и вам останется только исправить ее.

Еще одно очень важное замечание. Чтобы облегчить себе жизнь, выполните команду ToolsèOptions...  и сделайте в нем установки в соответствии с рис. 4.  Если непонятно, зачем это нужно и что это вам дает, спросите у препода – он должен знать.

 

Шаг 3. Запуск приложения на выполнение.

Выполните команду DebugèStart debugging Alt+F5, тем самым запустив приложение на выполнение в режиме отладки, что полезно при разработке программы. Если ошибок компиляции нет и вы обладаете сверх способностями, то успеете разглядеть в появившемся на доли секунды окне текст Hello, boys&girls! How do you do? : символы белого цвета на черном фоне. Чтобы успеть полюбоваться выводом программы, надо попридержать ее завершение. Для этого доведите текст главной функции до такого вида:

void main()

{

cout<<"Hello, boys&girls! How do you do?"; // вывод строки на монитор

_getch(); // ожидает нажатия любой клавиши

}

 

Запустите компиляцию программы. Узрели сообщение об ошибке error C3861: '_getch': identifier not found? Оно значит, что мы должны указать компилятору заголовочный файл, в котором описана хвункция _getch(). Короче, с помощью машины времени или каким-либо другим способом переместитесь в начало файла и модифицируйте текст программ таким образом:

#include "stdafx.h"

#include "Lab1.h"

#include <conio.h> // добавлено!

 

 

Рис. 4. Весьма полезные настройки ИС

 

Вновь запустите программу на выполнение и убедитесь в том, что окно программы не исчезает. Вы можете его закрыть путем нажатия любой клавиши или путем подачи команды DebugèStop Debugging Shift+F5. Если вы хотите быть профессионалом и терять меньше времени на отладку программы, завершайте ее выполнение именно таким способом, а не путем нажатия кнопки «Закрыть» в правом верхнем углу окна. Проверьте!

Шаг 4. Русификация приложения. Добавим в функцию main() пару строчек:

void main()

{

setlocale(LC_ALL,"rus");

cout<<"Как дела?"<<endl;

cout<<"Hello, boys&girls! How do you do?"; // вывод строки на монитор

_getch(); // ожидает нажатия любой клавиши

}

 

Запустите программу на выполнение и лицезрите результат.

 

Шаг 5. Ознакомьтесь с перечнем файлов проекта (табл.1).

Таблица 1

Перечень файлов проекта

Файл Содержимое
Lab1.vcproj файл проекта формата XML, содержащий сведения о версии ИС, программной платформе приложения, настройках проекта и пр.
Lab1.ncb база данных интеллектуального средства Class View
ReadMe.txt содержит текстовое описание проекта и входящих в него файлов
stdafx.h, stdafx.cpp эти файлы используются для построения предкомпилированных заголовочных файлов (.pch - precompiled header files)
Resource.h стандартный заголовочный файл, содержащий определения идентификаторов ресурсов приложения
Lab1.rc содержит листинг всех ресурсов, включая заголовок окна приложения, иконки и курсоры, которые сохраняются в подкаталоге RES. Может напрямую редактироваться в ИС
Lab1.h заголовочный файл приложения
Lab1.sln описывает так называемое решение (solution), которое в общем случае может включать несколько проектов, предназначенных для решения определенной задачи
Lab1.suo скрытый двоичный файл, содержащий пользовательские настройки решения (Solution User Options)
Lab1.vcproj.NEW.Виктор.user файл формата XML, содержащий описания конфигураций (debug, release) решения. NEW – имя компьютера, Виктор – имя пользователя
Lab1.cpp основной файл проекта, содержащий функцию main() и программный код, добавленный программистом

 

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

При компиляции и сборке приложения создается каталог Debug или Release, в зависимости от выбранной конфигурации (Debug или Release), в которых размещается исполняемый файл приложения (.ехе), объектные файлы (.obj), предкомпилированные заголовочные файлы (.pch) и некоторые другие вспомогательные файлы. Для работы приложения необходим только ехе-файл, а остальные можно удалять (из каталогов Debug и Release только!) при необходимости сокращения объема памяти, занимаемого проектом. Также для сокращения объема памяти, занимаемой проектом, можно удалить файл .sdf. Простым и удобным способом удаления необязательных файлов, в том числе ехе-файла, является использование команды меню BuildÞClean Solution. Эта команда бывает также полезна при необходимости повторной компиляции и сборки приложения в случае какой-либо непонятной ошибки.

Рекомендую просмотреть не двоичные файлы проекта с помощью какого-либо внешнего редактора, например, с помощью файлового менеджера Far, Total Commander или блокнота.

 

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

Таблица 2

Основные команды меню Build

Команда Назначение
Build Solution F7 Компилирует и собирает все проекты решения, обрабатывая все файлы, которые были изменены со времени последней сборки. После сборки программа может быть запущена на выполнение, если во время сборки не было фатальных ошибок
Rebuild Solution Ctrl+Alt+F7 Делает то же, что и команда Build, но при этом обрабатываются все файлы всех проектов, даже те, которые не были изменены со времени последней сборки. Команда полезна для того случая, когда имеются какие-либо проблемы со временем модификации файлов или есть другие причины для того, чтобы выполнить повторную полную сборку проекта
Clean Solution Удаляет все временные и промежуточные файлы, создаваемые компилятором и компоновщиком. Полезно использовать в тех случаях, когда есть какие-либо проблемы с повторной компиляцией и сборкой решения или проекта. После выполнения этой команды надо повторно откомпилировать и собрать проект. Эту команду удобно также использовать перед тем, как архивировать проект или сохранять на мобильном носителе вроде флешки, так как она сильно уменьшает размер проекта в байтах.
Compile Ctrl+F7 Компилирует выбранный (выбранные) файлы проекта
Configuration manager … Вызов окна для установки текущей активной конфигурации (Debug или Release) и программной платформы приложения

 

 

Основные команды меню Debug приведены в табл. 3. Перечень команд этого меню сильно зависит от текущего режима работы ИС: если приложение запущено и находится в режиме отладки, то набор доступных команд этого меню наиболее полный.

Таблица 3

Основные команды меню Debug

Команда Назначение
Windows Вызывает вспомогательное меню, с помощью которого, в свою очередь, можно вызывать окна вывода, просмотра значений наблюдаемых переменных (watch) и многое другое. Смотрите и изучайте. Как сказал один неглупый человек «Если Вы бог, то Вам отладчик не нужен. А нам, простым смертным, он необходим»
Break All Останавливает выполнение всех программ, выполняющихся под управлением отладчика, без их завершения. Полезно использовать для приостановки «вечных» или просто длительных по времени циклов
Continue F5 Продолжение выполнения программы в отладочном режиме, возможно, до завершения или до контрольной точки. Эта же команда, как вы уже знаете, используется для запуска приложения в отладочном режиме
Restart Ctrl+Shift+F5 Завершение текущей отладки и повторный старт программы в режиме отладки
Stop Debugging Shift+F5 Прекращение выполнения программы и выход из режима отладки. Именно ее лучше всего использовать для того, чтобы завершить работу программы в режиме отладки и заняться любимым делом – исправлением найденных «старых» ошибок и внесением новых
Step into F11 Трассировка «с заходом» в функции. Полезно использовать для анализа хода выполнения операторов вашей (библиотечной, ворованной, тыренной, украденной, похищенной, заимствованной, выполненной на заказ…) функции
Step over F10 Трассировка с выполнением функций за один шаг, т.е. функции выполняются, но отладчик в них не останавливается. Можно использовать для «обхода» библиотечных функций, которые в отличие от ваших собственных ошибок не содержат
Step out Shift+F11 Выполнение программы до выхода из текущей функции
Quick Watch Вызов окна для просмотра значений переменных и добавления их в окно Watch (понаблюдайте внимательно за работой этой команды)
Toggle breakpoint F9 Установить или удалить контрольную точку

 

Из других команд отладки часто используют Run to Cursor Ctrl+F10 – выполнить программу до оператора, на который указывает курсор. При запуске программы в режиме отладки на панели инструментов ИС появляется панель кнопок, дублирующих указанные в табл. 3 команды. Эту панель можно вызвать командой ViewèToolbarsèDebug.

Когда программа запущена на выполнение в режиме отладки (командами F10, F11 или F5 с установленной точкой прерывания breakpoint), то в окне Output появятся вкладки Autos, Locals, Watch и другие.

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

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

Во вкладке Watch можно добавить для просмотра значения переменных и/или выражений.

 

 


Дата добавления: 2018-02-18; просмотров: 345; ЗАКАЗАТЬ РАБОТУ