
8. Проект решения квадратного уравнения
Подготовка к работе
1. По указанной литературе изучить:
-
свойства компонентов Form1, richTextBox1, button1, label1, panel1;
-
создание обработчиков событий Click и функций пользователя.
2. Составить процедуры решения задач.
Контрольные вопросы
-
Какие компоненты используются для ввода данных в оконный проект ИСР C#?
-
Какие компоненты используются для вывода данных в оконном проекте C#?
-
Какие функции для преобразования строковых выражений в соответствующие им коды вы знаете? Привести формат их записи.
-
Назначение функции MessageBox().
-
Формат вызова функции MessageBox.Show().
-
Какие функции для преобразования числовых значений в соответствующие им строковые отображения вы знаете? Привести формат их записи.
-
Чем отличается обработчик события от процедуры пользователя?
-
Какова структура функции пользователя?
-
Отличие функции от процедуры пользователя?
-
Дайте понятие свойства элемента и назовите известные свойства компонентов Form1, panel1, richTextBox1, , button1, label1.
-
Дать понятие модуля. Как он вызывается в программе?
-
Какова структура модуля?
-
В чем выражаются преимущества модульного программирования?
-
Какие управляющие структуры Вы знаете?
-
Дайте понятие разветвляющегося процесса. Приведите формат условного оператора.
-
Дайте понятие итерационного циклического процесса. Какими операторами он описывается?
Задание и порядок выполнения работы
Используя возможности ИСП Microsoft Visual C# Express, создать проект – оконное приложение, предназначенное для вычисления действительных корней квадратного уравнения типа Ax2 + Bx + C = 0. Интерфейс квадратного уравнения редактора должен содержать следующие элементы:
1) окна для ввода коэффициентов A, B, C уравнения, сопровождающиеся пояснительными надписями;
2) средства для вывода результатов решения символами разного цвета:
-
некорректность задания коэффициентов уравнения ( A=0 ) – синим цветом,
-
отсутствие решения (дискриминант (D= B2 – 4AC)<0) – красным цветом.
-
значения корней уравнения x1=(-B +D)/(2A) и x2=(B+D)/(2A) – черным цветом
3) средства, позволяющие произвести “Запуск решения” после ввода коэффициентов, возможность обновления коэффициентов без закрытия формы и повторного запуска приложения, а так же завершения работы.
Методические указания по выполнению задания
-
Создать приложение Windows Forms (Application) ), выбирая его в диалоговом окне Начальная страница командой Файл\ Создать\Проект\ Приложение Windows Forms \ ОК.
-
Используя команду Вид \ Другие окна, установить недостающие окна: Панель элементов, Свойства, Обозреватель решений.
-
Перенести на форму компоненты, позволяющие вводить исходные данные textBox1-3, выводить сообщения label1, пояснительные надписи (label 2-4), переключать режимы работы приложения (button1-3) и панель для размещения элементов управления panel1, находящиеся на панели Элементов (рис. 8.1 а).
-
Выделить Form1 и в окне «Свойства» для этого компонента выбрать пункт «Size». Установить размеры формы 400х250.
-
И
спользуя свойство Text изменить надписи компонент в соответствии с выполняемыми ими функциями (рис. 8.1 б).
textBox1
textBox2
textBox3
Рис 8.1. Интерфейс проекта решение квадратного уравнения:
а – заготовка проекта, b – окончательный вид.
-
Создать функцию пользователя, вычисляющую дискриминант уравнения Ax2+Bx+C=0 (п.1.2).
-
Создать обработчик события Click для кнопки «Вычислить» компонента button1, в котором необходимо описать:
-
все переменные, используемые при вычислении корней квадратного уравнения,
-
процедуру преобразования текста в число для трех коэффициентов уравнения,
-
код вычисления коэффициентов уравнения, при вводе в соответствующие текстовые поля коэффициентов, и вывода полученных корней x1 и x2 в label1,
-
сообщения о некорректности задания коэффициентов уравнения при А=0 (рис. 8.2),
-
сообщения об отсутствия решения, если дискриминант меньше 0 (рис.8.2).
-
процедуру преобразования числа в строку при выводе корней уравнения;
Рис.8.2. Виды окон сообщений
-
Создать обработчик события Click для кнопки «Очистить» компонента button2. В этой процедуре необходимо отразить очистку полей редактирования textbox(1-3) от первоначальных записей и очистку поля вывода решения уравнения label1.
-
Создать обработчик событий Click для кнопки «Завершить» компонента button3, при котором происходит завершение работы и проект закрывается.
-
Сохранить код проекта в папке Р8\P81 под именем под именем Roots.
-
Откомпилировать проект командой Отладка \ Начать отладку. Ошибки необходимо устранить, после чего повторно откомпилировать проект
-
Запустить программу командой Run, а затем вести такие коэффициенты квадратного уравнения, чтобы проверить все виды сообщений и вывода корней уравнения.
-
Закрыть проект Roots, а затем запустить его из среды Windows и проверить на его работоспособность (рис. 8.3).
Рис. 8.3. Проект решения квадратного уравнения в процессе запуска
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public double d(double p1, double p2, double p3)
//функция дискриминант с параметрами p1, p2, p3
{
return p2*p2-4*p1*p3;
}
private void button1_Click(object sender, EventArgs e)
{
double x1=0,x2=0;
double a = double.Parse(textBox1.Text);
double b = double.Parse(textBox2.Text);
double c = double.Parse(textBox2.Text);
if (a == 0)
MessageBox.Show("Коэффициент при второй степени неизвестного х равен 0 ", "Уравнение не квадратное!", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
if (d(a, b, c) > 0)
{
DialogResult rsl = MessageBox.Show("Корни расчитать?: ", "Имеются действительные корни!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (rsl == DialogResult.Yes)
x1 = (-b + Math.Sqrt(d(a, b, c))) / 2 * a;
x2 = (-b - Math.Sqrt(d(a, b, c))) / 2 * a;
label1.Text = "Корни уравнения:\n x1= " + String.Format("{0,6:f3}", x1) + "\n x2= " + String.Format("{0,6:f3}", x2);
MessageBox.Show("Корни уравнения:\n x1= " + String.Format("{0,6:f3}", x1) + "\n x2= " + String.Format("{0,6:f3}", x2), "Квадратное уравнение");
}
else
{
MessageBox.Show("Уравнение не имеет действительных корней! ", "Дискриминант < 0", MessageBoxButtons.OK, MessageBoxIcon.Warning);
label1.Text = "Ответ: ";
}
}
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
label1.Text = " ";
}
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
В оконном приложении все данные, вводятся в компоненты с клавиатуры, и они воспринимаются программой в строковом виде. Поэтому, прежде чем проводить арифметические операции их необходимо сформировать, т.е. преобразовать в числовой эквивалент. Для этого используются функции преобразования: