Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ / Лабы / lab 8Sqr C#.doc
Скачиваний:
48
Добавлен:
10.06.2015
Размер:
424.96 Кб
Скачать

8. Проект решения квадратного уравнения

Подготовка к работе

1. По указанной литературе изучить:

  • свойства компонентов Form1, richTextBox1, button1, label1, panel1;

  • создание обработчиков событий Click и функций пользователя.

2. Составить процедуры решения задач.

Контрольные вопросы

  1. Какие компоненты используются для ввода данных в оконный проект ИСР C#?

  2. Какие компоненты используются для вывода данных в оконном проекте C#?

  3. Какие функции для преобразования строковых выражений в соответствующие им коды вы знаете? Привести формат их записи.

  4. Назначение функции MessageBox().

  5. Формат вызова функции MessageBox.Show().

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

  7. Чем отличается обработчик события от процедуры пользователя?

  8. Какова структура функции пользователя?

  9. Отличие функции от процедуры пользователя?

  10. Дайте понятие свойства элемента и назовите известные свойства компонентов Form1, panel1, richTextBox1, , button1, label1.

  11. Дать понятие модуля. Как он вызывается в программе?

  12. Какова структура модуля?

  13. В чем выражаются преимущества модульного программирования?

  14. Какие управляющие структуры Вы знаете?

  15. Дайте понятие разветвляющегося процесса. Приведите формат условного оператора.

  16. Дайте понятие итерационного циклического процесса. Какими операторами он описывается?

Задание и порядок выполнения работы

Используя возможности ИСП Microsoft Visual C# Express, создать проект – оконное приложение, предназначенное для вычисления действительных корней квадратного уравнения типа Ax2 + Bx + C = 0. Интерфейс квадратного уравнения редактора должен содержать следующие элементы:

1) окна для ввода коэффициентов A, B, C уравнения, сопровождающиеся пояснительными надписями;

2) средства для вывода результатов решения символами разного цвета:

  • некорректность задания коэффициентов уравнения ( A=0 ) – синим цветом,

  • отсутствие решения (дискриминант (D= B2 – 4AC)<0) – красным цветом.

  • значения корней уравнения x1=(-B +D)/(2A) и x2=(B+D)/(2A) – черным цветом

3) средства, позволяющие произвести “Запуск решения” после ввода коэффициентов, возможность обновления коэффициентов без закрытия формы и повторного запуска приложения, а так же завершения работы.

Методические указания по выполнению задания

  1. Создать приложение Windows Forms (Application) ), выбирая его в диалоговом окне Начальная страница командой Файл\ Создать\Проект\ Приложение Windows Forms \ ОК.

  2. Используя команду Вид \ Другие окна, установить недостающие окна: Панель элементов, Свойства, Обозреватель решений.

  3. Перенести на форму компоненты, позволяющие вводить исходные данные textBox1-3, выводить сообщения label1, пояснительные надписи (label 2-4), переключать режимы работы приложения (button1-3) и панель для размещения элементов управления panel1, находящиеся на панели Элементов (рис. 8.1 а).

  4. Выделить Form1 и в окне «Свойства» для этого компонента выбрать пункт «Size». Установить размеры формы 400х250.

  5. Используя свойство Text изменить надписи компонент в соответствии с выполняемыми ими функциями (рис. 8.1 б).

textBox1

textBox2

textBox3

Рис 8.1. Интерфейс проекта решение квадратного уравнения:

а – заготовка проекта, b – окончательный вид.

  1. Создать функцию пользователя, вычисляющую дискриминант уравнения Ax2+Bx+C=0 (п.1.2).

  2. Создать обработчик события Click для кнопки «Вычислить» компонента button1, в котором необходимо описать:

  • все переменные, используемые при вычислении корней квадратного уравнения,

  • процедуру преобразования текста в число для трех коэффициентов уравнения,

  • код вычисления коэффициентов уравнения, при вводе в соответствующие текстовые поля коэффициентов, и вывода полученных корней x1 и x2 в label1,

  • сообщения о некорректности задания коэффициентов уравнения при А=0 (рис. 8.2),

  • сообщения об отсутствия решения, если дискриминант меньше 0 (рис.8.2).

  • процедуру преобразования числа в строку при выводе корней уравнения;

Рис.8.2. Виды окон сообщений

  1. Создать обработчик события Click для кнопки «Очистить» компонента button2. В этой процедуре необходимо отразить очистку полей редактирования textbox(1-3) от первоначальных записей и очистку поля вывода решения уравнения label1.

  2. Создать обработчик событий Click для кнопки «Завершить» компонента button3, при котором происходит завершение работы и проект закрывается.

  3. Сохранить код проекта в папке Р8\P81 под именем под именем Roots.

  4. Откомпилировать проект командой Отладка \ Начать отладку. Ошибки необходимо устранить, после чего повторно откомпилировать проект

  5. Запустить программу командой Run, а затем вести такие коэффициенты квадратного уравнения, чтобы проверить все виды сообщений и вывода корней уравнения.

  6. Закрыть проект 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();

}

}

}

В оконном приложении все данные, вводятся в компоненты с клавиатуры, и они воспринимаются программой в строковом виде. Поэтому, прежде чем проводить арифметические операции их необходимо сформировать, т.е. преобразовать в числовой эквивалент. Для этого используются функции преобразования:

Соседние файлы в папке Лабы