- •Главление
- •Часть 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 Тема: «Элементы графики. Использование мыши».
- •Задания для самостоятельного выполнения
Пример программы, вычисляющей сумму ряда
В качестве примера создадим приложение, которое вычисляет сумму ряда с заданной точностью.
Возьмем ряд ,
который сходится к синусу гиперболическому sh x.
1.Спроектируйте диалоговое окно как показано на рисунке.
Исходными данными являются x и точность (eps).
В качестве результата выведем сумму ряда и контрольное значение – синус гиперболический от x, который мы вычислим с помощью встроенной математической функции.
2. Свяжите с окнами редактирования переменные:
Рис.57
double x; double eps; CString sum; CString control;
3. Добавьте в начало программы #include <math.h>
4. Добавьте функцию для кнопки <Вычислить> и вставьте в тело функции операторы, показанные ниже.
void C…Dlg::OnBnClickedOk()
{
const int MaxIter = 1000;
/* Зададим максимально допустимое число итераций (повторений тела цикла), чтобы не допустить зацикливания программы в случае ошибки */
UpdateData();
double copyeps = eps;
/* Вычислим количество цифр после точки при выводе результата (оно зависит от заданной точности */
int n = 0; // количество цифр
while (copyeps < 1)
{
copyeps *= 10; // например, для eps = .001 получим n = 3
n++;
}
// Вычислим сумму ряда, используя рекурентные соотношения:
double s = x; // Начальное значение суммы
double slag = x; // Начальное значение слагаемого
double z = 2;
// Переменная, с помощью которой мы получим факториал в знаменателе
int counter = 0; // Счетчик итераций
do
{
slag = slag*x*x/(z*(z+1));
// вычисляем новое значение слагаемого, используя его предыдущее значение
s += slag; // добавляем слагаемое к сумме
TRACE(_T("Очередной член ряда = %.*f \n"), n, slag);
z += 2; // Изменяем вспомогательную переменную
counter++;
if (counter > MaxIter)
{
sum = _T("Ряд расходится");
break;
// прерываем выплнение цикла, если сделано уже слишком много итераций
}
}while (fabs(slag) >= eps);
/* добавляем слагаемые к сумме, пока модуль очередного слагаемого еще больше допустимой погрешности */
if (counter <= MaxIter) sum.Format("%.*f", n, s);
// если вычисления завершились нормально, выводим полученное значение суммы ряда
control.Format("%.*f", n, sinh(x));
// выводим контрольное значение
UpdateData(false);
}
Запустите программу и задайте значение x (например -2) и точность (например 1e-6). Хотя точных ограничений на x нет, однако sh является быстро растущей функцией и не стоит задавать x>20. Вставьте самостоятельно операторы для проверки исходных данных на допустимость и вывод сообщения об ошибке.
Задания для самостоятельного выполнения
Создать диалоговое приложение, которое считывает размер вклада и процент годового начисления. Вывести размеры вклада через 1 год (с точностью до копеек) при ежемесячном начислении процентов (сложные проценты) и при условии, что проценты начисляются только 1 раз в год.
Создать диалоговое приложение, которое считывает начальный размер вклада, ежемесячный платеж (один и тот же весь период) и процент годового начисления. Вывести размеры вклада (с точностью до копеек) через заданное количество месяцев.
Создать диалоговое приложение, которое считывает начальный размер вклада, ежемесячный платеж (один и тот же весь период) и процент годового начисления. Определить, за какое время вклад вырастет в 10 раз.
Создать диалоговое приложение, которое проверяет, является ли вводимое с клавиатуры натуральное число совершенным, (совершенным называется число, которое равно сумме своих делителей, например: 6 = 1 + 2 + 3). Вывести на экран делители числа с помощью оператора TRACE.
Создать диалоговое приложение для вычисления суммы ряда: с заданной точностью. Контрольное значение отобразить в окнеEdit, используя функцию exp(). Вывести значения слагаемых, используя оператор TRACE.
Создать диалоговое приложение, которое подсчитывает сумму цифр натурального числа. Вывести на экран цифры с помощью оператора TRACE.
Создать диалоговое приложение, которое подсчитывает количество цифр натурального числа. Вывести на экран цифры с помощью оператора TRACE.
Создать диалоговое приложение, которое извлекает кубический корень из заданного положительного числа, используя рекуррентное соотношение: с заданной точностью. Вывести на экран последовательность значенийу, используя оператор TRACE.
Создать диалоговое приложение для вычисления суммы ряда: с заданной точностью. Контрольное значение отобразить в окнеEdit, используя функцию exp(). Вывести значения слагаемых, используя оператор TRACE.
Создать диалоговое приложение, которое подсчитывает произведение ненулевых цифр натурального числа. Вывести цифры на экран с помощью команды TRACE.
Создать диалоговое приложение для вычисления суммы ряда: с заданной точностью. Контрольное значение отобразить в окнеEdit, используя функцию sin(x). Вывести значения слагаемых, используя функцию TRACE.
Создать диалоговое приложение, которое определяет, является ли вводимое с клавиатуры натуральное число простым, т.е. таким, которое делится только само на себя и на 1. Если у числа найден делитель, вывести его с помощью оператора TRACE.
Создать диалоговое приложение для вычисления суммы ряда: , гдеn вводится с клавиатуры . Контрольное значение отобразить в окне Edit, используя функцию exp(). Вывести значения слагаемых, используя функцию TRACE.
Создать диалоговое приложение, которое определяет, является ли вводимое с клавиатуры натуральное число квадратом натурального числа. Результаты промежуточных вычислений вывести на экран с помощью оператора TRACE.
Создать диалоговое приложение, которое вычисляет , используя рекуррентное соотношение:с заданной точностью. Вывести на экран последовательность значенийу, используя оператор TRACE.
Создать диалоговое приложение для вычисления суммы ряда: значение n ввести с клавиатуры. Контрольное значение отобразить в окне Edit, используя значение PI = 3.1415926535. Вывести значения слагаемых, используя оператор TRACE.
Создать диалоговое приложение, которое определяет, является ли вводимое с клавиатуры натуральное число степенью двойки (1, 2, 4, 8,….). Результаты промежуточных вычислений вывести на экран с помощью оператора TRACE.
Создать диалоговое приложение, которое извлекает корень n-ой степени из заданного положительного числа, используя рекуррентное соотношение: с заданной точностью. Вывести на экран последовательность значенийу, используя оператор TRACE.
Создать диалоговое приложение, которое находит наибольший общий делитель двух натуральных чисел. Результаты промежуточных вычислений вывести на экран с помощью оператора TRACE.
Создать диалоговое приложение, которое находит наименьшее общее кратное двух натуральных чисел. Результаты промежуточных вычислений вывести на экран с помощью оператора TRACE.
Создать диалоговое приложение, которое определяет, можно ли заданное натуральное число представить в виде суммы квадратов двух натуральных чисел. Результаты промежуточных вычислений вывести на экран с помощью оператора TRACE.