1_БСТ2154_Архангельский-2
.docxЛабораторная работа №4
Тема 4.4. «Программирование алгоритмов разветвляющихся структур»
ФИО — Архангельский Максим Вячеславович
Группа — БСТ2154
Номер студенческого билета — ЗБСТ21001
Вариант №1
Тема и название работы:
Программирование алгоритмов разветвляющихся структур – Вычисление значения сложной условной функции.
Задание на разработку и вариант задания:
Создать приложение c именем Проект-4-4-Лаб для вычисления для вычисления значения функции e = f(x,y,c,d):
Формализация и уточнение задания
Алгоритм решения данной задачи представляет собой комбинацию вычисления сложной функции с условием выбора наименьшего (наибольшего) из нескольких значений. Он использует все виды разветвлений и программируется с использованием как однострочных, так и блочных операторов if. Данная задача решается с помощью процедуры-функции Razv(), которая, получив в качестве входных параметров аргументы x, y, c,d возвращает вычисленное значение.
Разработка проекта:
Разработка графического интерфейса пользователя
Анализируя задание на разработку проекта, можно сделать вывод, что для организации ввода и вывода данных можно использовать три элемента управления.
Текстовое поле элемента textBox используется как для ввода исходных данных в программу, так и для отображения результатов, получаемых в этой программе.
Элемент label используется для размещения на форме поясняющих надписей.
Кнопка button используется для запуска и окончания программы и инициализируется щелчком левой кнопки мыши.
Таким образом, форма может иметь вид, показанный на рисунке 1.
Рисунок 1 – форма приложения
Установка свойств объектов
В таблице 1 определены свойства объектов.
Таблица 1
-
Объект
Имя
объекта
Свойство
Значение свойства
Форма
Form1
Name
Form1
Text
Тема 4.4. Программирование алгоритмов…
Font
Microsoft Sans Serif; 11,25pt
Метка
label1
Text
Задание: Вычислить значение условной функции e = f(x, y, c, d)
ForeColor
Blue
Метка
label2
Text
x =
Метка
label3
Text
y =
Метка
label4
Text
c =
Метка
label5
Text
d =
Метка
label6
Text
Результат
Метка
label7
Text
e =
ReadOnly
True
Текстовое поле
textBox1
Name
textBox1
Текстовое поле
textBox2
Name
textBox2
Текстовое поле
textBox3
Name
textBox3
Текстовое поле
textBox4
Name
textBox4
Текстовое поле
textBox5
Name
textBox5
Кнопка
button1
Name
button1
Text
Вычислить e = f(x, y, c, d)
Кнопка
button2
Name
button2
Text
Выход
Разработка схемы алгоритма решаемой задачи
Блок-схема алгоритма функции Razv() представлена на рисунке 2.
Рисунок 2 - схема алгоритма функции Razv()
Написание программного кода
Программный код представлен ниже.
//функция получения из TextBox действительного числа
double vvod(TextBox textbox)
{
return Convert.ToDouble(textbox.Text);
}
//процедура вывода в TextBox действительного числа
void vivod(TextBox textbox, double n)
{
textbox.Text = Convert.ToString(n);
}
//функция для вычисления значения функции
double Razv(double x, double y, double c, double d)
{
double e, e1, t;
t = x * y;
if (t > 3)
{
e = Math.Pow(x, 3);
e1 = Math.Log10(Math.Pow(t, c * d));
if (e1 > e) e = e1;
}
else if (t >= 0 && t <= 3)
{
e = c * x;
e1 = d * y;
if (e1 > e) e = e1;
if (x < e) e = x;
if (y < e) e = y;
e *= 3;
}
else
{
e = Math.Pow(2, c * d) - x;
}
return e;
}
private void button1_Click(object sender, EventArgs e)
{
double x, y, c, d, ef;
x = vvod(textBox1);
y = vvod(textBox2);
c = vvod(textBox3);
d = vvod(textBox4);
ef = Razv(x, y, c, d);
vivod(textBox5, ef);
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
Результаты выполнения проекта
Результат выполнения проекта приведен на рисунке 3.
Рисунок 3 - результат выполнения проекта
Доказательство правильности результатов
Произведем ручной расчет и сравним с результатами, полученными при выполнении проекта.
Разработаны следующие тестовые исходные данные для контрольного решения задачи, проверяющие все ветви функции:
-
xy > 3
x = 3
y = 2
с = 1
d = 2
e = 27
0 ≤ xy ≤ 3
x = -5
y = 0
с = 1
d = 2
e = -15
xy < 0
x = -5
y =2
с = 3
d = 2
e = 69
При тестовых данных результаты ручного расчета и результаты вычисления на ПК совпадают.