
- •Овсянник в.Н. Лабораторные работы по курсу «Объектно-ориентированное программирование»
- •13. Разработка приложения с архитектурой «документ-вид». Часть 2 120
- •14. Разработка приложения с архитектурой «документ-вид». Часть 3 135
- •1.Разработка типового консольного приложения
- •1.1.Методические указания
- •1. Запуск и настройка ис mvs-2008.
- •2.Поиск данных в массиве
- •3.Обработка текстового файла
- •4.Задача «куча камней»
- •5.Реализация алгоритма полного перебора
- •6. Исследование погрешностей вычислений
- •7.Поиск экстремумов с ограничениями или «Брачное агенство»
- •Постановка задачи
- •Задание
- •Листинг файла mAgency.Cpp (с главной функцией)
- •Листинг файла Lib.H
- •Листинг файла Lib.Cpp
- •8.Приложение с окном вида
- •9.Разработка графического редактора
- •Задание.
- •9.1.Проектирование программы
- •9.2.Разработка интерфейса
- •Установка флагов
- •Создание меню и панели инструментов
- •Обработка сообщений о нажатии кнопки мыши
- •9.3.Рисование
- •9.4.Растягивание фигур
- •9.5.Обновление изображения
- •9.6.Сохранение метафайла на диске и его загрузка
- •10.Приложение, основанное на модальном диалоговом окне
- •Методические указания Модальные и немодальные диалоговые окна
- •Ресурсы и элементы управления
- •Сценарий создания приложения
- •Разбор приложения
- •Усовершенствование приложения
- •11.Приложение с контекстным меню и строкой состояния
- •11.1.Методические указания к первой части работы
- •11.2.Сценарий выполнения первой части работы
- •11.3.Методические указания ко второй части работы Строка состояния
- •Определение секций в строке состояния
- •Строка сообщений
- •Индикатор состояния
- •Управление строкой состояния
- •11.4.Сценарий выполнения второй части работы
- •12.Разработка приложения с архитектурой «документ-вид». Часть 1
- •12.1.Сценарий создания приложения
- •13.Разработка приложения с архитектурой «документ-вид». Часть 2
- •13.1.Методические указания Класс коллекций cObList
- •13.2.Сценарий выполнения работы
- •14.Разработка приложения с архитектурой «документ-вид». Часть 3
- •14.1.Методические указания
- •15.Класс вектор
- •15.1.Пример класса tVector
- •15.2.Класс tVector с перегруженными операциями
- •16.Приложение с таблицей
- •16.1.Вариант 1 Сценарий выполнения работы
- •16.2.Вариант 2 Сценарий выполнения работы
Овсянник в.Н. Лабораторные работы по курсу «Объектно-ориентированное программирование»
(2013/14 семестр 3)
Овсянник В.Н. Лабораторные работы по курсу «Объектно-ориентированное программирование» 1
1. Разработка типового консольного приложения 2
2. Поиск данных в массиве 16
3. Обработка текстового файла 21
4. Задача «куча камней» 23
5. Реализация алгоритма полного перебора 27
6. Исследование погрешностей вычислений 31
7. Поиск экстремумов с ограничениями или «Брачное агенство» 34
8. Приложение с окном вида 41
9. Разработка графического редактора 48
10. Приложение, основанное на модальном диалоговом окне 68
11. Приложение с контекстным меню и строкой состояния 97
12. Разработка приложения с архитектурой «документ-вид». Часть 1 112
13. Разработка приложения с архитектурой «документ-вид». Часть 2 120
14. Разработка приложения с архитектурой «документ-вид». Часть 3 135
15. Класс вектор 152
16. Приложение с таблицей 160
1.Разработка типового консольного приложения
Неопределимые ошибки бесконечны, а определимые ограничены возможностями компилятора
Закон Мерфи
Цель работы – освоить основные возможности интегрированной среды Microsoft Visual Studio 2008 (далее ИС MVS-2008) по разработке и отладке типового консольного приложения на языке С++. (4 час.)
Задание. Проделайте следующее:
Прочитайте это задание и методические указания до конца, прежде чем терзать клавиатуру, соседа, преподавателя и пр. сущности
Запустите на выполнение ИС MVS-2008, ознакомьтесь с командами меню и инструментальными панелями.
Создайте консольное приложение, которое использует библиотеку MFC.
Освойте использование команд компиляции, запуска и отладки приложения (F7, Ctrl+F7, F5, Ctrl+F5, Shift+F5, F10, F11 и пр.).
Научитесь вызывать контекстное меню Debug, выполнять трассировку программы, просматривать значения переменных во время отладки, устанавливать и снимать контрольные точки (breakpoint).
Научитесь использовать окна «Autos», «Locals» и «Watch» для просмотра значений переменных во время выполнения (трассировки) программы. Воспользуйтесь помощью (Help) и трассировкой для изучения назначения перечисленных окон.
1.1.Методические указания
1. Запуск и настройка ис mvs-2008.
Запустите на выполнение среду MVS-2008. Вид главного окна ИС зависит от того, была ли она запущена на выполнение самый первый (после установки) раз или не первый. Если ИС запускается не первый раз, то на вкладке «Recent Projects» в окне «Start Page» ИС отображает последние созданные проекты и «решения» (solutions).
По умолчанию среда MVS-2008 предполагает, что Вы имеете скоростной доступ в Интернет и, поэтому, справочная система (MSDN) установлена в режим работы «online», то бишь при нажатии кнопки F1 ИС будет связываться с сервером Microsoft для снабжения Вас самой свежей справочной информацией. Если Вы не уверены в том, что доступ к online-справке быстрее доступа к локальному диску, то рекомендую все же отказаться от такой услуги и использовать локальную справку. Для этого выполните тему меню ToolsèOptions, в появившемся окне выберите ветвь EnvironmentèHelpèOnline и установите флаг «Try local only, not online» (рис. 1), то есть «использовать локальную справочную систему», а не получать справку по Интернет. По завершении этой процедуры (а она может оказаться несколько длинной) не забудьте нажать кнопку ОК. Это действие достаточно выполнить один раз – ИС не страдает склерозом и запомнит Ваш выбор.
|
Рис. 1. Настройка ИС на использование локальной справки MSDN
В том же меню настоятельно рекомендуется сделать установки в соответствии с рис. 2 для того, чтобы при наличии ошибок компиляции или сборки (линкерования) не запускалась автоматически на выполнение предыдущая версия программы, не имеющая ошибок.
|
Рис. 2. Настройки ИС, влияющие на ее «поведение» при наличии ошибок в проекте
Шаг 1. Создание заготовки приложения. Выполните команду FileÞNewÞProjects. В появившемся окне (рис. 3.) мастер ИС предлагает Вам выбрать template (шаблон, скелет, заготовку) создаваемого проекта. Выберите Win32 в списке Project types и Win32 Console Application в списке Templates. Внизу окна, в поле Location, Вы должны выбрать каталог, в котором, в свою очередь, будет создан каталог проекта (D:\Temp на рис. 3).
Совет. В условиях работы в сети рекомендую выбрать локальный диск компьютера, а не сетевой, для ускорения работы, отсутствия проблем согласования времени локального компьютера и сетевого, уменьшения вероятности потери проекта из-за возможных сбоев сети. На локальном компьютере рекомендую выбирать каталог, имя которого и путь к нему не содержат символов кириллицы, например, C:\Temp. Самое плохое место для работы над проектом – флешка. Сохраняйте проект на флешке только тогда, когда вы закончили работу с ним, например, в конце лабораторной работы.
В поле Name надо задать имя проекта (Lab1 на рис. 3).
Если флаг (переключатель) «Create directory for solution» установлен по умолчанию, то лучше снимите его – каталог с сохраненными файлами проекта будет иметь более простую структуру и меньший размер.
После выполнения этой части работы нажмите, нежно, кнопку ОК. Если это Вам удалось, то должно появиться следующее окно (рис. 4), в котором Вам будет предложено выбрать свойства создаваемого проекта. Щелкните ЛКМ по метке Application Settings в левой части окна и сделайте установки в соответствии с рис. 4, т.е. отметьте флажок MFC и щелкните флаг Console application. Еще раз рекомендую снять флажок “Create directory for solution” для упрощения структуры файлов и каталогов проекта.
После нажатия кнопки Finish принимайте поздравления: Вы создали сверхсложное консольное приложение, которое, правда, пока почти ничего полезного не делает, но зато не содержит ошибок.
|
Рис. 3. Окно выбора шаблона проекта
|
Рис. 4. Окно выбора свойств проекта
Шаг 2. Компиляция, сборка и тестирование приложения.
После того как Вы нажали кнопку Finish, проект будет создан и Вы сможете посмотреть на плоды своего труда, если … разберетесь с окнами (рис. 5).
|
Рис. 5. Основные окна ИС
ИС MVS-2008 имеет, как Вы догадываетесь, множество окон, часть из которых показана на рис.5. По всей видимости, Вы сейчас видите на экране не то, что на рис.6. Окна вызываются и прячутся с помощью меню View. На рис.5 показаны такие окна:
1 –окно решений, ресурсов и классов;
2 – окно просмотра и редактирования кода;
3 – Properties Window (окно свойств проекта);
4 – Output Window (окно вывода).
Все перечисленные окна, кроме окна 2, можно вызвать с помощью соответствующих команд меню View. Разумеется, можно управлять размещением и размерами окон и можно их пристыковать к границам главного окна (docking) общепринятыми способами.
Теперь о назначении окон.
Окно решений, ресурсов и классов в версии Microsoft Visual Studio 6.0 имело специальное название Workspace (рабочее пространство), что, на мой взгляд, более точно отражало его назначение. В версии ИС MVS-2008 это окно имеет такие вкладки, как:
Solution Explorer (перечень файлов проекта);
Class View (перечень классов проекта);
Resource View (перечень ресурсов).
На вкладке Solution Explorer отображаются имена почти всех файлов, входящих в проект: щелчок по имени файла, например, Lab1.cpp, вызывает окно просмотра и редактирования содержимого этого файла (окно 2 на рис.5).
На вкладке Class View отображаются имена классов, входящих в состав проекта, их член-функций и член-данных, а также глобальные функции и описания. В данном приложении никаких классов нет и, по этой причине, на этой вкладке (рис. 6) мы увидим только имя проекта Lab1, а в нижней части вкладки – единственную пока функцию _tmain() и глобальный объект theApp, который и представляет собой собственно приложение. По сути дела, вкладка Class View является альтернативным способом навигации по исходному коду по сравнению с вкладкой Solution Explorer, но не только.
Вкладка Resource View содержит перечень файлов ресурсов, диалоговых окон, строковых и других ресурсов.
Замечание. Перечисленные вкладки часто объединяются – «докируются» – в одно окно для удобства, но это, естественно, дело вкуса. Как раз такой случай и показан на рис. 5.
|
Рис. 6. Вкладка Class View окна рабочего пространства
Созданный мастером ИС скелет приложения на самом деле является работоспособным консольным приложением. Для проверки этого факта выполните команду DebudÞStart Debugging F5. Эта команда меню выполняет компиляцию файлов проекта, их сборку (построение ехе-файла) и запуск приложения на выполнение в режиме отладки. При ее выполнении в окне Output (окно 4 на рис. 5) отображается ход компиляции и сборки проекта, выводятся предупреждения Warnings и сообщения об ошибках. С помощью списка Show output from в этом окне можно выбирать вкладки Debug и Build. На вкладке Build отображается ход компиляции и сборки, а также сообщения об ошибках. На вкладке Debug отображается ход выполнения приложения: загрузка библиотек, сообщения об ошибках времени выполнения, выводится код завершения приложения.
Если при запуске приложения с помощью команды F5 появится диалоговое окно (рис. 7), с помощью которого ИС хочет выяснить, действительно ли Вы хотите построить приложение и запустить его на выполнение, рекомендую установить переключатель “Do not show this dialog again” и, незаметно, натиснуть кнопку Yes.
|
Рис. 7. Запрос на построение приложения
Программу можно компилировать, собрать и запустить на выполнение и с помощью команды DebudÞStart Without Debugging Ctrl+F5, но в этом случае невозможна собственно отладка, т.е. игнорируются контрольные точки, «не работают» макросы TRACE и т.д. При разработке и отладке программы имеет смысл использовать только команду F5.
Выполните команду F5 и посмотрите на результат. Вы должны увидеть ход компиляции и сборки проекта, запуск построенного приложения на выполнение, при этом появится и тут же исчезнет окно консольного приложения, так как программа не ожидает какого-либо ввода пользователя. Теперь внесите в приложение ошибку, например, вставьте пробел в идентификатор namespace, и попробуйте еще раз откомпилировать приложение. Обратите внимание на сообщение об ошибке, которое появляется в окне Output, на возможные способы перехода к ошибочной строке программы.
Полезно посмотреть, после компиляции и сборки программы, на содержимое каталога, в котором сохраняются файлы проекта. Если проекту было присвоено имя Lab1, то в каталоге Lab1 мы обнаружим файлы, перечисленные в табл.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 |
основной файл проекта, содержащий исходный текст программы |
Из всех перечисленных в табл.1 типов файлов непосредственно редактируются файлы с исходными текстами программы .cpp и заголовочные файлы .h. Остальные файлы, за исключением файла .rc, не редактируются в ИС напрямую и их не стоит модифицировать с помощью внешних редакторов.
При компиляции и сборке приложения создается каталог Debug или Release, в зависимости от выбранной конфигурации (Debug или Release), в которых размещается исполняемый файл приложения (.ехе), объектные файлы (.obj), предкомпилированные заголовочные файлы (.pch) и некоторые другие вспомогательные файлы. Для работы приложения необходим только ехе-файл, а остальные можно удалять (из каталогов Debug и Release только!) при необходимости сокращения объема памяти, занимаемого проектом. Также для сокращения объема памяти можно удалить файл .ncb. Простым и удобным способом удаления необязательных файлов, в том числе ехе-файла, является использование команды меню BuildÞClean Solution. Эта команда бывает также полезна при необходимости повторной компиляции и сборки приложения в случае какой-либо непонятной ошибки.
Рекомендую просмотреть не двоичные файлы проекта с помощью какого-либо внешнего редактора, например, с помощью файлового менеджера Far.
Шаг 3. Добавляем код «Hello world!» («I am fine attaboy!», «I am fine attagirl!», «I work like crazy in that classroom!!» … ) и тестируем приложение.
Самый простой способ добавления какого-либо кода в данное консольное приложение состоит в том, чтобы добавить операторы в главную функцию _tmain() в то ее место, которое помечено комментарием
// TODO: code your application's behavior here.
// Доделать: программируйте поведение своего приложения здесь
Так и сделаем. Добавим оператор вывода строки текста и приостановим выполнение программы с помощью вызова функции getch(), предназначенной для ввода символа (эта функция аналогична функции ReadKey в Borland Pascal). Текст функции _tmain() должен стать примерно таким (строки комментариев опущены, а добавленные строки выделены полужирным):
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL,
::GetCommandLine(), 0))
{
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
cout<<"How do you do?"<<endl;
getch();
}
return nRetCode;
}
Выводимый текст пока наберем без использования кириллицы. Запустив программу на компиляцию или выполнение, получим сообщение об ошибке:
error C3861: 'getch': identifier not found
Поместите курсор мыши (в окне текста программы) на любой символ идентификатора getch и нажмите клавишу F1 для вызова справки. Если на компьютере установлена справочная система MSDN, то Вы должны увидеть окно справки, в котором Вам будет предложено использовать функцию _getch вместо getch. Когда Вы перейдете по ссылке _getch, то увидите справку по этой функции и, главное, имя требуемого заголовочного файла – Conio.h. Подключите этот заголовочный файл к программе (в начало файла Lab1.cpp)
#include "stdafx.h"
#include "Lab1.h"
#include <conio.h>
и попытайтесь вновь собрать приложение и запустить его на выполнение в режиме отладки с помощью команды F5. Имя функции getch можно заменить на _getch, а можно и не заменять. Должно появиться окно консольного приложения и, по нажатию любой клавиши, закрыться.
Замечание. Добавляйте директивы препроцессора в то место файла, где уже имеются другие подобные директивы. Не удаляйте и не изменяйте тех строк программы, которые сгенерированы мастерами ИС (или подмастерьями), если Вы не уверены в корректности своих действий.
Прежде чем двигаться дальше, давайте посмотрим на наиболее часто используемые команды меню Build.
Таблица 2
Основные команды меню Build
Команда |
Назначение |
Build Solution F7 |
Компилирует и собирает все проекты решения, обрабатывая все файлы, которые были изменены со времени последней сборки. После сборки программа может быть запущена на выполнение, если во время сборки не было фатальных ошибок |
Rebuild Solution Ctrl+Alt+F7 |
Делает то же, что и команда Build, но при этом обрабатываются все файлы всех проектов, даже те, которые не были изменены со времени последней сборки. Команда полезна для того случая, когда имеются какие-либо проблемы со временем модификации файлов или есть другие причины для того, чтобы выполнить повторную полную сборку проекта |
Clean Solution |
Удаляет все временные и промежуточные файлы, создаваемые компилятором и компоновщиком. Полезно использовать в тех случаях, когда есть какие-либо проблемы с повторной компиляцией и сборкой решения или проекта. После выполнения этой команды надо повторно откомпилировать и собрать проект. Эту команду удобно также использовать перед тем, как архивировать проект или сохранять на мобильном носителе вроде флешки, так как она сильно уменьшает размер проекта в байтах. |
Compile Ctrl+F7 |
Компилирует выбранный (выбранные) файлы проекта |
Configuration manager … |
Вызов окна для установки текущей активной конфигурации (Debug или Release) и программной платформы приложения |
Выполнение команды BuildÞConfiguration manager приведет к появлению окна (рис. 8), в котором можно выбрать активную конфигурацию решения (на рис. это Debug) и программную платформу (Win32 на рис. 8).
|
Рис. 8. Окна выбора конфигурации решения
Важно. Если Вы будете использовать примеры приложений (samples) из MSDN, то не забудьте после открытия проекта или решения установить платформу Win32 вместо установленной в примерах платформы Itanium, так как в противном случае Вам не удастся собрать и запустить приложение, если только Ваш компьютер не оснащен процессором Itanium с 64-битной архитектурой
Основные команды меню 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 |
Установить или удалить контрольную точку |
Hex |
Вывод числовых данных, отображаемых в окнах ИС, в шестнадцатеричной системе |
Из других команд отладки часто используют Run to Cursor Ctrl+F10 – выполнить программу до оператора, на который указывает курсор. При запуске программы в режиме отладки на панели инструментов ИС появляется группа (панель) кнопок, дублирующих указанные в табл. 3 команды. Эти кнопки имеют такие же пиктограммы, как показанные на рис. 9.
|
Рис. 9. Команды отладки на панели инстументов
Шаг 4. Тренаж по завершению и возобновлению работы над проектом.
Прежде чем дорабатывать программу, давайте научимся завершать работу с проектом и возобновлять ее, что совсем несложно. При открытом проекте раскройте меню File и выполните в нем команду Close Solution. Если Вы предварительно не сохраняли файлы проекта, то Вам будет предложено это сделать. Видимо, в большинстве случаев так и надо поступить.
Замечание. Вы могли не сохранять файлы проекта и при этом у Вас не появляется окно с предложением сохранить файлы. Почему? Да потому, что по умолчанию в среде MVS-2008 (Tools|Options|Projects and solutions|Build and Run) установлено автоматическое сохранение файлов проекта перед его сборкой (в списке Before building выбрано значение Save all changes – убедитесь сами). Кстати, в том же окне настоятельно рекомендую в выпадающем списке “On Run, when build or deployment errors occur” (что необходимо делать при наличии ошибок построения или развертывания приложения) выбрать значение “Do not launch” (не запускать). Если оставить опцию “Launch old version” (запускать старую версию), то Вы можете не заметить ошибок, заподозрить в них неисправность компьютера, колдовство, нечистую силу или действие потусторонних сил и это будет очень неудобно. Кстати, если после многократных безуспешных попыток исправить ошибки компиляции вы решите купить новый компьютер, оставьте старый кафедре.
Имена последних проектов отображаются в окне Start Page на вкладке Recent Projects, откуда можно загрузить любой проект простым щелчком ЛКМ. Для повторного открытия проекта (или решения) можно также выполнить команду FileÞRecent Projects и в появившемся списке выбрать имя требуемого проекта. Альтернативная команда – FileÞOpen Project/Solutions, но она менее удобна.
Замечание. Не открывайте файл проекта (.vcproj) или другие файлы проекта просто как файлы с помощью команды FileÞOpen, так как при этом могут быть конфликты. Команду FileÞOpen следует использовать только для открытия каких-либо файлов, не входящих в состав проекта
Шаг 5. Русификация приложения.
Русифицируйте свое приложение, внедрив в него вывод сообщений на русском языке, т.е. использование символов кириллицы. Для этого изучите подраздел конспекта 24.1 «Русификация приложений» (VC_Lect.doc).
Для продвинутых: найти краткую информацию по работе со строками – класс CString и «обычные» строки char * – можно в подразделах конспекта «Работа со строками» и «Использование ini-файла» в конспекте лекций.
Шаг 6. Второе усовершенствование программы: добавляем собственную функцию и находим корни квадратного уравнения.
Добавим в нашу программу описания переменных, например, символьного типа char, целочисленного типа int, вещественного типа double. Число байт памяти, занимаемое данными некоторого типа, можно узнать с помощью операции sizeof. Напишем также в элементарном виде, безо всяких проверок, алгоритм вычисления корней квадратного уравнения (a*x^2+b*x+c=0).
Итак, приведем текст программы к следующему обличью:
|
Как Вы обратили внимание, перед функцией _tmain() мы добавили определение своей собственной функции sqr(), возвращающей квадрат аргумента. Использованная нами функция sqrt() описана в файле math.h, который надо подключить к своей программе так же, как это было сделано с файлом conio.h.
В приведенном тексте программы при нахождении корней квадратного уравнения не выполняется анализ значений коэффициентов уравнения и, соответственно, наличия, кратности и действительности корней уравнения. Вам предоставляется честь восполнить этот вопиющий пробел в математике и прославиться на весь мир. Правда, Нобелевскую премию Вы не сможете получить, так как математикам она не присуждается. Но, взамен, Вы сможете получить отметку за выполнение лабораторной работы. Вот примеры применения условного оператора if, иллюстрирующие его особенности:
if(3>2) cout<<"Все в порядке"; else { cout<<"Кажется, я схожу с ума..."; getch(); } /*В следующем выражении два знака = (без пробела между ними) обозначают операцию отношения "равно" */ if(5==5) cout<<"Ура!!!"; else cout<<"Не может быть!!!"; if(a=b)...//всегда истина, так как = – операция "присвоить", а не "равно"
|
Для того чтобы за один сеанс запуска программы на выполнение можно было решить несколько уравнений, надо добавить цикл. Сделать это можно следующим образом:
|
Шаг 7. Использование отладчика.
Тестируйте программу, опробуйте действие различных команд отладчика, научитесь использовать команды трассировки, точки прерывания программы (breakpoint), освойте применение средств просмотра значений переменных в процессе отладки. Вы сможете просматривать значения переменных (и выражений тоже) в процессе выполнения программы только в том случае, если будете находиться в режиме трассировки или остановитесь на контрольной точке.
|
Рис. 10. Меню ToolsèOptions, с помощью которого, в частности, можно включить
нумерацию строк исходных текстов программы
Шаг 8. Усовершенствование программы. Доработайте программу таким образом, чтобы она позволяла находить корни квадратного уравнения при любых, в том числе и нулевых, значениях коэффициентов a,b и c. Добавьте в программу проверку корректности нахождения корней уравнения путем подстановки найденных корней в уравнение и вывода полученного результата. Программа должна выводить толковые сообщения на русском (или близком к украинскому) языке.
Шаг 9 – последний? Примеры контрольных коварных вопросов преподавателя:
Выполните программу до указанного перстом преподавателя оператора.
Продемонстрируйте применение трассировки с «заходом» в функции и без оного и объясните разницу между ними
Поставьте в программе контрольную точку (breakpoint) и выполните программу до нее.
Прервите процесс отладки программы с помощью команды меню или с помощью «горячей» клавиши.
Покажите в MSDN место, где описано назначение окон Watch, Autos и Locals.
Покажите, как вызываются окна Watch, Autos и Locals.
Покажите, как просматривать значения переменных и выражений с помощью окон Watch, Autos и Locals.
В чем отличия между окнами Watch, Autos и Locals?
Вопрос «на засыпку»: что это за окно Immediate Window и как его можно использовать в «мирных» целях?