1_БСТ2154_Архангельский-1
.docxЛабораторная работа №3
Тема 4.3. «Структура программы на C# и функции. Средства программирования алгоритмов линейной структуры»
ФИО — Архангельский Максим Вячеславович
Группа — БСТ2154
Номер студенческого билета — ЗБСТ21001
Вариант №1
Тема и название работы:
Структура программы на C# и функции. Средства программирования алгоритмов линейной структуры – определение периметров правильных n-угольников, вписанных в окружность заданного радиуса.
Задание на разработку и вариант задания:
Создать приложение c именем Проект-4-3-Лаб определения периметров правильных n-угольников (10 – угольника, 50 – угольника, 100 – угольника), вписанных в окружность заданного радиуса R.
Назначение процедуры:
Вычисление стороны правильного n-угольника ;
Вычисление периметра n-угольника
Задано: R – радиус описанной окружности.
Требуется определить: p10, p50, p100 –периметры.
Ограничения на значения исходных данных и их соотношения: R>0, n≥3.
Формализация и уточнение задания
Для решения задачи будет использованы следующие формулы:
(1)
где n – количество углов n-угольника,
R – радиус описанной окружности,
a – сторона n-угольника.
При написании программного кода следует учесть, что тригонометрические функции работают с радианами, поэтому формула (1) примет следующий вид:
(2)
Вычисление полупериметра:
(3)
где n – количество углов n-угольника,
a – сторона n-угольника,
p – периметр n-угольника.
В соответствии с требованиями задания разобьем решение задачи на несколько отдельных задач и создадим процедуры-функции пользователя, реализующие эти задачи:
функцию double Side() вычисления стороны n-угольника;
процедуру void Perimeter() определения периметров 10 – угольника, 50 – угольника, 100 – угольника;
функцию double vvod() считывания из объекта TextBox действительного числа;
процедуру void vivod() вывода в объект TextBox действительного числа;
Разработка проекта:
Разработка графического интерфейса пользователя
Анализируя задание на разработку проекта, можно сделать вывод, что для организации ввода и вывода данных можно использовать три элемента управления.
Текстовое поле элемента textBox используется как для ввода исходных данных в программу, так и для отображения результатов, получаемых в этой программе.
Элемент label используется для размещения на форме поясняющих надписей.
Кнопка button используется для запуска и окончания программы и инициализируется щелчком левой кнопки мыши.
Таким образом, форма может иметь вид, показанный на рисунке 1.
Рисунок 1 – форма приложения
Установка свойств объектов
В таблице 1 определены свойства объектов.
Таблица 1
-
Объект
Имя
объекта
Свойство
Значение свойства
Форма
Form1
Name
Form1
Text
Тема 4.3. Определение периметров правильных n-угольников
Font
Microsoft Sans Serif; 11,25pt
Метка
label1
Text
Задание: Определить периметры правильных n-угольников (10 – угольника, 50 – угольника, 100 – угольника), вписанных в окружность заданного радиуса R
ForeColor
Blue
Font
Microsoft Sans Serif; 9,75pt
Метка
label2
Text
R =
Метка
label3
Text
P_10 =
Font
Microsoft Sans Serif; 11,25pt; style=Bold
Метка
label4
Text
P_50 =
Font
Microsoft Sans Serif; 11,25pt; style=Bold
Метка
label5
Text
P_100 =
Font
Microsoft Sans Serif; 11,25pt; style=Bold
Текстовое поле
textBox1
Name
textBox1
Текстовое поле
textBox2
Name
textBox2
ReadOnly
True
Текстовое поле
textBox3
Name
textBox3
ReadOnly
True
Текстовое поле
textBox4
Name
textBox4
ReadOnly
True
Кнопка
button1
Name
button1
Text
Вычислить
Кнопка
button2
Name
button2
Text
Выход
Разработка схемы алгоритма решаемой задачи
Блок-схема алгоритма процедуры Perimeter() представлена на рисунке 2, функции Side () – на рисунке 3.
Рисунок 2 – схема алгоритма процедуры Perimeter ()
Рисунок 3 — схема алгоритма функции Side()
Написание программного кода
Программный код представлен ниже.
//функция получения из TextBox действительного числа
double vvod(TextBox textbox)
{
return Convert.ToDouble(textbox.Text);
}
//процедура вывода в TextBox действительного числа
void vivod(TextBox textbox, double n)
{
textbox.Text = Convert.ToString(n);
}
double Side(int n, double R)
{
double a = 2 * R * Math.Sin(Math.PI / n);
return a;
}
void Perimeter(double R, out double P10, out double P50, out double P100)
{
P10 = Side(10, R) * 10;
P50 = Side(50, R) * 50;
P100 = Side(100, R) * 100;
}
private void button1_Click(object sender, EventArgs e)
{
double R, P10, P50, P100;
R = vvod(textBox1);
Perimeter(R, out P10, out P50, out P100);
vivod(textBox2, P10);
vivod(textBox3, P50);
vivod(textBox4, P100);
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
Результаты выполнения проекта
Результат выполнения проекта приведен на рисунке 4.
Рисунок 2 – результат выполнения проекта
Доказательство правильности результатов
При
При
При
Сравним результаты, полученные выше, с результатами, выполнения проекта (рис. 4). При выполнении проекта были получены верные результаты.