Скачиваний:
20
Добавлен:
06.11.2017
Размер:
170.85 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

СВЯЗИ И ИНФОРМАТИКИ

Кафедра информатики

Лабораторная работа

по теме: «4.3. Структур VB-программ, классы и процедуры. Средства программирования алгоритмов линейной структуры»

Задание

Вычисление площади n-угольника по заданному радиусу R описанной окружности.

Формализация и уточнение задания

Для решения задачи существуют известные формулы:

S = ½ * a * n * r

a = 2*R*sin(180/n) r = R*cos(180/n)

Где а – сторона правильного n-угольника, а r – радиус вписанной окружности.

Выбор типа процедуры (Function или Sub) определяется следующими критериями. Процедуры-функции Function предназначены для вычислений и могут быть частью выражения. Результатом выполнения процедуры-Function является значение какой-либо одной величины числового, строкового или логического типа, которое функция возвращает или через свое имя, или оператором Return. Следовательно, ДлинаОтрезка( ) и vvod( ) – это процедуры типа Function.

Если же процедура должна вычислить и возвратить несколько величин (PS()), или просто выполнить определенные действия, не возвращая никаких значений (vivod()), то такую процедуру следует оформить как процедуру-Sub.

Программный код

Option Strict On

Option Explicit On

Imports System.Math

Public Class Form1

Function stor(ByVal r1 As Double, ByVal nn1 As Double) As Double

Return CDbl(2 * r1 * Sin(PI / nn1))

End Function

Function area(ByVal r1 As Double, ByVal nn As Double, ByVal aa As Double) As Double

Return CDbl((aa * nn * r1 * Cos(PI / nn) / 2))

End Function

Sub vivod(ByVal w As Double, ByVal T As TextBox)

T.Text = CStr(w)

End Sub

Function vvod(ByVal T As TextBox) As Double

Return CDbl(Val(T.Text))

End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim r, n, n1, n2, n3, a1, a2, a3, s1, s2, s3 As Double

r = vvod(TextBox4)

n1 = vvod(TextBox1)

n2 = vvod(TextBox2)

n3 = vvod(TextBox3)

a1 = stor(r, n1)

a2 = stor(r, n2)

a3 = stor(r, n3)

s1 = area(r, n1, a1)

s2 = area(r, n2, a2)

s3 = area(r, n3, a3)

vivod(a1, TextBox5)

vivod(a2, TextBox6)

vivod(a3, TextBox7)

vivod(s1, TextBox8)

vivod(s2, TextBox9)

vivod(s3, TextBox10)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Application.Exit()

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

TextBox1.Clear()

TextBox2.Clear()

TextBox3.Clear()

TextBox4.Clear()

TextBox5.Clear()

TextBox6.Clear()

TextBox7.Clear()

TextBox8.Clear()

TextBox9.Clear()

TextBox10.Clear()

End Sub

End Class

Блок-схема

Доказательство правильности результата

Введем R=70, тогда при n1=10 сторона а=2*R*sin18 =>

a≈ 2*70*0,3090169944≈ 43,262379

r=R*cos18 => r≈ 70*0,951056516≈ 66,57395612

S = (½)*a*n*r => S≈ 14400, 738668

~ 5 ~