- •Главление
- •Часть 1 Решение уравнения 42
- •Практическое занятие №1 Тема: «Знакомство со средой разработки и элементами управления. Создание диалогового приложения».
- •1. Настройка среды разработки Microsoft Visual Studio 2008 при первом запуске.
- •2. Создание нового проекта.
- •3. Создание диалогового приложения.
- •3.1. Работа с мастером mfc Application Wizard. Шаг 1.
- •3.2. Работа с мастеромMfcApplicationWizard. Шаг 2. Выбор типа приложения.
- •4. Знакомство со средой разработки.
- •5.Создание диалогового окна при помощи визуальных средств разработки.
- •5.1. Знакомство с обозревателем ресурсов и окном свойств объекта. Настройка рабочего языка проектируемого приложения.
- •5.2. Работа с редактором ресурсов. Знакомство со способами удаления и размещения элементов управления в диалоговом окне.
- •5.3. Работа с окном свойств. Настройка свойств выбранных элементов управления.
- •5.4. Настройка внешнего вида диалогового окна.
- •5.5. Подготовка к работе элементов управления.
- •5.6. Выравнивание управляющих элементов и редактирование порядка переключения между элементами управления
- •6. Проверка работоспособности, компиляция и запуск программы
- •7. Связывание программного кода с элементами управления
- •7.1. Связывание переменных с элементами управления. Работа с мастером добавления новой переменной.
- •7.2. Удаление переменной, связанной с элементом управления
- •7.3. Создание обработчика события. Работа с мастером обработки событий.
- •8. Написание программного кода для выполнения вычислений.
- •9. Тестирование разработанного приложения.
- •10. Исправление ошибки, связанной сUnicode.
- •Задания для самостоятельного выполнения
- •Практическое занятие №2. Тема: «Приложения, использующие команды ветвления». Часть 1 Решение уравнения
- •Часть 2 Пример приложения, использующего операторswitch
- •Задание для самостоятельного выполнения
- •Практическое занятие №3 Тема: «Приложения, использующие команды повторения» Часть 1 Приложение, использующее циклwhile
- •Часть 2 Приложение, использующее циклdo-while
- •Часть 3 Отладка программы. Использование оператора trace
- •Приложение, использующее циклfor
- •Часть 4 Погрешность. Понятие погрешности. Проверка полученного значения на соответствие заданной точности.
- •Пример программы, вычисляющей сумму ряда
- •Задания для самостоятельного выполнения
- •Практическое занятие №4. Тема: «Вспомогательные функции. Работа с элементом управления Список(List Box)» Элемент управления «Список»
- •Добавление вспомогательной функции с помощью мастера.
- •Пример 1 Приложение, которое находит дружественные числа на заданном отрезке
- •Пример 2 Программа, которая находит заданное количество чисел, которые равны сумме квадратов двух натуральных чисел
- •Задания для самостоятельного выполнения
- •Практическое занятие №5.
- •Тема: «Работа со строками».
- •Пример 1
- •Программа, которая считывает строку символов, состоящую только из русских букв, точек и пробелов, и увеличивает длину строки, если она меньше заданной, вставляя пробелы между словами
- •Пример 2 Программа, которая считывает строку, содержащую числа, с проверкой допустимости вводимых символов и оставляет по 2 цифры после точки, удаляя остальные цифры дробной части
- •Пример 3 Программа, которая считывает строку символов и создает новую строку, заменяя заданное слово на другое.
- •Задания для самостоятельного выполнения
- •Практическое занятие №6 Тема: «Диалоговое приложение для работы с файлами»
- •6.1. Приложение, которое считывает файл посимвольно и делает ширину текста равной заданному количеству символов в строке.
- •6.2. Открытие и считывание файла. Нахождение строк, содержащих цифры. Запись нового файла
- •Задания для самостоятельного выполнения
- •Практическое занятие №7 Тема: «Однодокументное приложение для работы с файлами. Полосы прокрутки. Использование модальных диалоговых окон».
- •7.1. Простой пример однодокументного приложения для чтения текстового файла.
- •7.2. Простой пример однодокументного приложения, использующего класс документа для чтения файла и полосы прокрутки для отображения файла в окне.
- •Задания для самостоятельного выполнения
- •Практическое занятие №8 Тема: «Элементы графики. Использование мыши».
- •Задания для самостоятельного выполнения
8. Написание программного кода для выполнения вычислений.
Итак, давайте запрограммируем кнопку таким образом, чтобы при нажатии на неё происходило сложение чисел введённых в первом и втором текстовых полях, а результат наших вычислений выводился в третьем текстовом поле.
Измените код функции как показано ниже (комментарии набирать не нужно).
void CIvanovDlg::OnBnClickedButton1()
{
UpdateData(true);
//Присвоить переменным, связанным с элементами управления,
//актуальные значения (те, которые сейчас заданы в окне).
c = a + b; // Выполнить вычисления и запомнить результат
UpdateData(false);
//Обновить значения элементов управления на изменённые нами
}
9. Тестирование разработанного приложения.
Скомпилируйте (F7) и запустите программу (<Ctrl> + F5). Введите числа в поля ввода, нажмите на запрограммированную кнопку (переход между элементами управления - Tab и Shift+Tab). Задайте другие числа, нажмите клавишу <Enter> (кнопка должна сработать). Закройте окно.
10. Исправление ошибки, связанной сUnicode.
ВНИМАНИЕ: если Вы при работе с мастером создания MFC приложений не убрали галочку рядом с надписью Use Unicode libraries (см. рис. 5), то при работе со строками компилятор будет выдавать сообщения об ошибках.
В этом случае, для того, чтобы устранить появившуюся ошибку, выполните следующие действия: в окне Solution Explorer щелкните правой клавишей мыши по имени проекта. В появившемся контекстном меню выберите пункт Properties (Свойства) (см. рис.47).
Рис. 47 Контекстное меню проекта
Откроется окно свойств проекта (Property Pages) (см. рис. 48). В списке настроек слева, выберите Configuration Properties, в раскрывшемся списке выберите пункт General (Общие). В правой части окна в группе свойств Project Defaults (Настройки проекта по умолчанию) найдите свойство Character Set (Набор символов) и с помощью списка, расположенного справа, установите его значение Not Set (Не установлено) (см. рис. 48). Нажмите на кнопку Применить, затем на кнопку OK.
После этого откомпилируйте (Build) проект снова.
Рис.48 Окно свойств проекта
Задания для самостоятельного выполнения
Создайте приложение для выполнения пяти простейших арифметических операций над двумя числами (сложение, вычитание, умножение, деление, остаток от деления). Окно приложения нужно спроектировать в двух вариантах:
1 вариант: одно окно для вывода результата и несколько кнопок.
Рис.49
2 вариант: одна кнопка и для вывода результата каждой операции – свое окно.
Настройте порядок переключения между элементами управления (окно для ввода первого числа должно иметь номер 1). Окна для вывода результатов операций сделайте доступными только для чтения. Кнопку «Вычислить» сделайте кнопкой по умолчанию.
Продемонстрируйте результаты самостоятельной работы преподавателю
Рис.50
Практическое занятие №2. Тема: «Приложения, использующие команды ветвления». Часть 1 Решение уравнения
В качестве примера диалогового приложения, использующего вложенные операторы if, возьмем программу решения уравнения длялюбых a, b, c. Известно, что решением этого уравнения являются , гдеd = b2 - 4ac при .
Хорошая программа должна выдавать ответ в любом случае, поэтому мы должны рассмотреть все возможные варианты ответа. Если , то наша программа будет решать квадратное уравнение, в противном случае – линейное. В каждом из этих случаев должен быть выдан один из трех вариантов ответа, следовательно, всего эта программа должна выдавать один изшести вариантов сообщений.
Создание проекта программы
Запустите Microsoft Visual C++ и с помощью мастера MFC Application создайте диалоговое приложение в рабочем каталоге. В качестве имени проекта выберите свою фамилию, записанную латинскими буквами, и добавьте к ней номер приложения.
Проектирование диалогового окна
С помощью окна Solution Explorer откройте свойства диалоговой панели и установите для нее русский язык.
Измените заголовок диалогового окна. Для этого щелкните правой кнопкой мыши по поверхности диалогового окна, не занятой элементами управления, и в появившемся окне выберите Properties. Откроется другой вариант окна Properties. В поле Caption задайте заголовок окна, который Вы видите на рисунке 1.
2.3. Спроектируйте диалоговую панель как показано на рисунке 1. Для того, чтобы надпись располагалась в две строки, измените границы статического текста. Кнопку <Выход> сделайте из кнопки <OK>. У кнопки <Выход> отмените свойство Default button, а у кнопки <Решить уравнение> установите, т.е. сделайте эту кнопку кнопкой по умолчанию. В левой части диалогового окна мы будем задавать исходные данные, а в правой части мы должны получить сообщение о количестве корней уравнения и значения этих корней.
Рис.51 Вид главного окна приложения.
2.4. Откройте поочередно окна свойств окон редактирования и проверьте: в левом столбце окна редактирования должны иметь идентификаторы (надпись в поле ID: ) IDC_EDIT1, IDC_EDIT2, IDC_EDIT3, в правом – IDC_EDIT4, IDC_EDIT5, IDC_EDIT6. Если идентификаторы отличаются от нужных, измените их. Поскольку среда не позволяет задавать повторяющиеся идентификаторы, используйте при замене несколько измененный их вид, например IDC_EDIT11.
2.5. Измените свойства верхнего окна редактирования в правом столбце (IDC_EDIT4) так, чтобы сделать его многострочным: Multiline - true, Auto Hscroll – false, Auto VScroll – true. Размеры окна измените так, чтобы в этом окне были видны несколько строчек текста.
2.6. У окон редактирования в правом столбце диалогового окна снимите флажок Tab stop. Это означает, что при нажатии клавиши <Tab> эти окна будут пропускаться.
2.7. Выровняйте управляющие элементы.
Определение порядка активизирования управляющих элементов клавишей Tab
Выберите в главном меню Layout | Tab order и щелкните последовательно по окнам редактирования для ввода коэффициентов (они должны получить номера от 1 до 3) и по кнопкам (они должны получить номера 4 и 5). Остальные номера не имеют значения. Таким образом мы определили, в какой последовательности будут активизироваться элементы управления при нажатии клавиши <Tab>.
Компиляция и запуск программы
4.1. Выберите в меню Build | Build Solution (F7). Процесс компиляции займет некоторое время.
4.2. Выполните команду Debug | Start Without Debugging, или нажмите <Ctrl> + F5. Убедитесь, что приложение запускается нормально.
Связывание программного кода с элементами управления
Щелкайте по окнам редактирования правой кнопкой мыши и с помощью команды контекстного меню Add variable свяжите окна редактирования с переменными в соответствии с таблицей:
Идентификатор |
Имя переменой |
тип перемен. |
Идентификатор |
имя переменой |
тип перемен. |
IDC_EDIT1 |
a |
double |
IDC_EDIT4 |
text |
CString |
IDC_EDIT2 |
b |
double |
IDC_EDIT5 |
sx1 |
CString |
IDC_EDIT3 |
c |
double |
IDC_EDIT6 |
sx2 |
CString |
Обратите внимание на то, что переменные sx1 и sx2 имеют тип CString, это необходимо для того, чтобы соответствующие окна сделать пустыми, если уравнение не имеет решений.
Двойным щелчком по кнопке «Решить уравнение» добавьте функцию-обработчик для этой кнопки.
Вы увидите заготовку функции, которая будет выполняться при нажатии кнопки “Решить уравнение”. Вставьте в нее операторы, показанные ниже.
void CkvurDlg::OnBnClickedButton1()
{
UpdateData(true);
double d = b * b - 4 * a * c;
double x1, x2;
if ( a != 0 ) // Решение квадратного уравнения:
{
if ( d > 0 )
{
text="Уравнение имеет два корня:";
x1=(-b + sqrt(d))/(2*a);
x2=(-b - sqrt(d))/(2*a);
sx1.Format("%g",x1);
sx2.Format("%g",x2);
}
else if (d==0)
{
text="Уравнение имеет один корень";
x1 = -b/(2*a);
sx1.Format("%g",x1);
sx2.Empty();
}
else
{
text="Действительных корней нет";
sx1.Empty(); sx2.Empty();
}
}
else // Решение линейного уравнения:
{
if ( b )
{
text="Уравнение имеет один корень:";
x1 = -c / b;
sx1.Format("%g",x1);
sx2.Empty();
}
else if (!c)
{
text = "Решением уравнения является любое число";
sx1.Empty(); sx2.Empty();
}
else
{
text = "Уравнение не имеет решений";
sx1.Empty(); sx2.Empty();
}
}
UpdateData(false);
}
5.4.Перейдите в начало файла, нажав <Ctrl> + <Home>, и вставьте команду #include <math.h> после уже имеющихся там команд такого типа.
Сохраните проект, откомпилируйте и запустите программу.
Выполните программу для следующих исходных данных:
1 2 –3
1 2 1
1 2 3
0 2 3
0 0 2
0 0 0
Определите, какой ответ должна выдавать программа для каждого из этих наборов. Убедитесь, что программа выдает именно тот ответ, который должен быть.
Закройте окно программы.
В окне Solution Explorer перейдите на страницу ресурсов и задайте русский язык для панели IDD_ABOUTBOX. Эта панель появляется во время работы Вашей программы при вызове системного меню Вашей программы (кнопка вызова – значок MFC в верхнем левом углу диалоговой панели) и выборе из этого меню команды About
Теперь сделайте двойной щелчок левой клавишей мыши по идентификатору IDD_ABOUTBOX, чтобы перейти в режим редактирования вида диалогового окна. Отредактируйте дату создания Вашей программы, задав текущую дату (для этого щелкните левой кнопкой мыши по строке Copyright, перейдите в окно Properties и в поле Caption измените текст). Добавьте статический текст на эту панель и напишите свою фамилию, имя, отчество, группу и подгруппу.
Сохраните сделанные изменения, откомпилируйте программу, запустите ее и вызовите диалоговую панель ABOUT_BOX. Закройте программу.