ЗБИК1953_лр1
.docx
Ордена Трудового Красного Знамени федеральное государственное
бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
|
Предмет: Языки программирования
Лабораторная работа №1 по теме:
«Программирование алгоритмов разветвляющихся структур»
Проверил(а): Саркисова И.О.
2 курс, факультет ЦЗОПБ
Группа БИК1953
Вариант 24
Москва, 2020
Оглавление
Тема и название работы
Программирование алгоритмов разветвляющихся структур – Вычисление значения сложной условной функции.
Задание на разработку проекта и вариант задания
Создать проект с именем YaP_LR_01C для вычисления значения функции l=f(x, a):
Разработать приложение для решения задачи и получить результаты.
Формализация задания
Алгоритм решения данной задачи представляет собой комбинацию вычисления сложной функции с условием и выбора наименьшего (наибольшего) из нескольких значений. Он использует все виды разветвлений и программируется с использованием как однострочных, так и блочных операторов If. Данная задача решается с помощью функции «double Calculate(int x, double a)», которая, получив в качестве входных параметров аргументы x, a, возвращает вычисленное значение. Вызов этой функции «double Calculate(double x, double a)» производит функция «void buttonCalculate_Click(object sender, EventArgs e)», которая сохраняет значение функции в переменную и выводит её с помощью вызова функции «void Output(double l)» в которую передаёт в качестве аргумента значение функции «double Calculate(double x, double a)», а «void Output(double l)» в свою очередь осуществляет вывод полученного параметра в текстовое поле TextBox.
Разработка проекта
Разработка графического интерфейса пользователя
Разработанная форма интерфейса пользователя приведена на рис. 4.1.
Анализируя задание на разработку проекта, можно сделать вывод, что для организации ввода и вывода данных можно использовать три элемента управления. Для ввода аргументов x и a используются объекты TextBox и для вывода результата вычисления функции так же используется объект TextBox только с установленным свойством ReadOnly в true что бы поле предназначенное для вывода нельзя было изменить вручную. Для отображения текстовой информации и для указания за что отвечают поля ввода и вывода используются объекты Label. Для вызова функций расчёта и выхода из программы используются объекты Button которые запускают соответствующие функции при нажатии на них.
Рис. 4.1
Установка свойств объектов
Свойства объектов управления разработанной формы приведены в таблице 4.2
Объект |
Имя объекта |
Свойтсво |
Значение свойства |
Form |
FormLab1 |
Name |
FormLab1 |
Text |
ЗБИК1953_ЛР1_ЩеголевГГ_В24 |
||
Font |
Century Gothic, 10 point |
||
MaximizeBox |
false |
||
BackColor |
Color.FromArgb(181, 208, 238) |
||
FormBorderStyle |
FormBorderStyle.FixedSingle |
||
Label |
labelText1Red |
Name |
labelText1Red |
Text |
Задание: |
||
ForeColor |
Color.Red |
||
Font |
Century Gothic, 18 point |
||
Label |
labelText2 |
Name |
labelText2 |
Text |
Вычислить значение условной функции l=f(x, a) |
||
Font |
Century Gothic, 10 point |
||
Label |
labelText3X |
Name |
labelText3X |
Text |
x: |
||
Font |
Century Gothic, 10 point |
||
Label |
labelText4A |
Name |
labelText4A |
Text |
a: |
||
Font |
Century Gothic, 10 point |
||
Label |
labelText4L |
Name |
labelText4L |
Text |
l: |
||
Font |
Century Gothic, 10 point |
||
TextBox |
textBoxX |
Name |
textBoxX |
Font |
Century Gothic, 12 point |
||
BackColor |
Color.FromArgb(155, 167, 183) |
||
BorderStyle |
BorderStyle.None |
||
TextBox |
textBoxA |
Name |
textBoxA |
Font |
Century Gothic, 10 point |
||
BackColor |
Color.FromArgb(155, 167, 183) |
||
BorderStyle |
BorderStyle.None |
||
TextBox |
textBoxL |
Name |
textBoxL |
Font |
Century Gothic, 10 point |
||
BackColor |
Color.FromArgb(151, 177, 238) |
||
BorderStyle |
BorderStyle.None |
||
Button |
buttonCalculate |
Name |
buttonCalculate_Click |
Text |
Вычислить l=f(x, a) |
||
Font |
Century Gothic, 10 point |
||
Click |
buttonCalculate_Click |
||
BackColor |
Color.FromArgb(140, 156, 177) |
||
FlatStyle |
FlatStyle.Flat |
||
FlatAppearance.BorderSize |
0 |
||
FlatAppearance.MouseDownBackColor |
Color.FromArgb(123, 137, 155) |
||
FlatAppearance.MouseOverBackColor |
Color.FromArgb(158, 176, 199) |
||
Button |
buttonExit |
Name |
buttonExit |
Text |
Выход |
||
Font |
Century Gothic, 10 point |
||
Click |
buttonExit_Click |
||
BackColor |
Color.FromArgb(140, 156, 177) |
||
FlatStyle |
FlatStyle.Flat |
||
FlatAppearance.BorderSize |
0 |
||
FlatAppearance.MouseDownBackColor |
Color.FromArgb(123, 137, 155) |
||
FlatAppearance.MouseOverBackColor |
Color.FromArgb(158, 176, 199) |
Таблица 4.2
Разработка схемы алгоритма
Схемы алгоритмов представлены на рис. 4.3-1 и 4.3-2.
Рис 4.3-1
Рис 4.3-2
Написание программного кода с использованием процедур
using
System; using
System.Windows.Forms;
namespace
YaP_LR_01C {
public
partial
class
FormLab1
: Form
{
public
FormLab1()
{
InitializeComponent();
}
//функция
вызываемая
при
нажатии
на
кнопку
расчёта
private
void
buttonCalculate_Click(object
sender, EventArgs e)
{
double
a, l;
int
x;
x
= InputX();
a
= InputA();
l
= Calculate(x, a);
Output(l);
}
//функция
ввода
X
private
int
InputX()
{
return
int.Parse(textBoxX.Text);
}
//функция
ввода
a
private
double
InputA()
{
return
double.Parse(textBoxA.Text);
}
//функция
вывода
private
void
Output(double
l)
{
textBoxL.Text
= l.ToString();
}
//функция
расчёта
условной
функции
private
double
Calculate(int
x, double
a)
{
double
l;
if
(x < 0)
{
double
ax = Math.Pow(a, x);
if
(x > ax)
l
= x;
else
l
= ax;
}
else
if
(x > 1)
l
= 0;
else
{
double
min1, min2, min3, min;
min1
= (x - a) / x;
min2
= Math.Sqrt(a) + x;
min3
= Math.Pow(Math.Sin(x), 2);
if
(min1 < min2)
min
= min1;
else
min
= min2;
if
(min < min3)
l
= min;
else
l
= min3;
}
return
l;
}
//функция
вызываемая при нажатии на кнопку выхода
private
void
buttonExit_Click(object
sender, EventArgs e)
{
Application.Exit();
}
} }
Рис. 4.4-1
Результаты выполнения проекта
Результаты работы проекта YaP-LR-01C представлены на рис. 5.
Рис. 5
Доказательство правильности работы программы
Разработаны следующие тестовые исходные данные для контрольного решения задачи, проверяющие все ветви процедуры функции:
x |
a |
-1,00 |
-0,50 |
-2,00 |
1,00 |
2,00 |
1,00 |
Результаты расчёта в Excel и используемые формулы приведены на рис. 6.
Рис. 6
При тестовых данных результаты расчета в Excel и вычисления в Программе совпадают.