Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример табулирования функции и ряда




End Sub

End Sub

End Sub

 

Пример №4. Подсчитать 100 раз сумму случайных чисел и вывести сумму только, если она окажется кратной трем, иначе повторять процесс бесконечно. Случайные числа берутся из диапазона от –50 до 50..

Private Sub Command1_Click()

 

Dim S As Long, n As Integer, f As Boolean, i As Integer

Randomize

f = False

Do

S = 0

For i = 1 To 100

n = Rnd * 100 - 50

S = S + n

Next i

If S Mod 3 = 0 Then f = True

Loop Until f

Text2.Text = S

 

Пример №4. Сколько раз нужно поделить число пополам, чтобы результат был менее заданного значения?

Заданное значение определим как константу. Число вводится в поле Text1. При объявлении переменной для хранения числа выберем тип Double исходя из того, что значение переменной типа Single ограничены примерно порядком 1038. Если в строке ввода присутствует буква «Е», означающая экспоненту, то для правильного преобразования его в число используем функция Val.

 

Private Sub Command1_Click()

Const t As Double = 0.000001

Dim Число As Double, n As Integer

Число = Val(Text1.Text)

n = 0

While Число > t

Число = Число / 2

n = n + 1

Wend

Text2.Text = n

 

 

· Постановка задачи.

Протабулировать ряд суммы и функцию y =sin2 x на отрезке [ а, b ] с шагом h. Функциональный ряд S вычисляется с точностью e. Суммируются все члены ряда, значения которых больше e, то есть | Uk |>e, где Uk - k - й член функционального ряда, который вычисляется по рекуррентной формуле

.

Рекуррентной называется всякая формула, выражающая каждый член последовательности через предыдущие члены этой последовательности.

 

· Настройка интерфейса.

Сформируйте на форме объекты Text1, Text2, Text3, Label1, Label2, Label3, Command1 и Command2 как на следующем рисунке. Для полей Text1 - Text3 установите свойства MultiLine=True и ScrollBars=Vertical. Для остальных объектов заполните свойство Caption соответствующим значением.

 

· Код программы.

 

Private Sub Command1_Click()

Const e = 0.00001 ' Точность вычисления

a! = Val(InputBox("Введите нижнюю границу Х",, 1))

b! = Val(InputBox("Введите верхнюю границу Х",, 10))

h! = Val(InputBox("Введите шаг",, 0.005))

x! = a

s1$ = "": s2$ = "": s3$ = ""

Do

k% = 1

U! = x ^ 2

S! = U

Do

U = U * (-1) * 4 * x ^ 2 / (2 * k + 1) / (2 * k + 2)

S = S + U

k = k + 1

Loop Until Abs(U) < e

s1 = s1 + CStr(x) & vbCrLf

s2 = s2 + Format(S, "#0.00000") & vbCrLf

s3 = s3 + Format(Sin(x) ^ 2, "#0.00000") & vbCrLf

x = x + h

Loop Until x > b + h

Text1 = s1 ' Вывод в текстовые поля результатов табулирования

Text2 = s2

Text3 = s3

End Sub

Private Sub Form_Load()

Text1 = "" ' Обнуление текстовых полей

Text2 = ""

Text3 = ""

End Sub

Private Sub Command2_Click()

End ' Команда входа из приложения

End Sub

 

· Комментарии к программе.

Программа содержит ряд функций:

v Val(<Строка>) – функция, преобразующая строку в число.

v CStr(<Переменная>) – функция, преобразующая число в строку.

v Format(<Переменная>, <Формат>) – функция, преобразующая число в строку по формату.

В программе константой vbCrLf программно проставляется маркер конца абзаца (это все равно, что если бы Вы нажали клавишу Enter).

Второй вариант решения предыдущей задачи выполнен без использования рекуррентной формулы. Однако время, затраченное на выполнение следующей программы, будет больше, так как при вычислении y в цикле участвуют функции возведения в степень и рекурсивное обращение к функции (fact) факториал:

 

Private Function fact(m As Integer) As Double

If m < 0 Then

MsgBox ("Параметр факториала меньше нуля")

End If

If m = 0 Then

fact = 1

Else

f# = fact(m - 1)

fact = f * m

End If

End Function

Private Sub Command1_Click()

Const e = 0.00001

a! = Val(InputBox("Введите нижнюю границу х",, 1))

b! = Val(InputBox("Введите верхнюю границу Х",, 10))

h! = Val(InputBox("Введите шаг",, 0.005))

x! = a

s1$ = "": s2$ = "": s3$ = ""

Do

k% = 1

S! = 0

Do

y = (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * x ^ (2 * k) / fact(2 * k)

S = S + y

k = k + 1

Loop Until Abs(y) < e

s1 = s1 + CStr(x) & vbCrLf

s2 = s2 + Format(S, "#0.00000") & vbCrLf

s3 = s3 + Format(Sin(x) ^ 2, "#0.00000") & vbCrLf

x = x + h

Loop Until x > b + h

Text1 = s1

Text2 = s2

Text3 = s3

End Sub

Private Sub Form_Load()

Text1 = ""

Text2 = ""

Text3 = ""

End Sub

Private Sub Command2_Click()

End ' Команда входа из приложения

End Sub

 

· Задание на самостоятельную работу.

 

Выполнить табулирование варианта задания двумя способами. Если ряд суммы содержит факториал, то получить результаты в текстовых полях по рекуррентной формуле и с использованием функции факториал. Если ряд суммы не содержит факториал, то табулирование осуществить по рекуррентной формуле в текстовые поля и в объект MSFlexGrid. Объект MSFlexGrid загружается на панель ToolBox General через команду Project/Components/опция Microsoft FlexGrid Control 6.0.

Вот некоторые команды по управлению объектом MSFlexGrid, которые могут Вам пригодиться:

 

MSFlexGrid1.Cols=5 ‘ Формирование 5 столбцов

MSFlexGrid1.Rows=5 ‘ Формирование 5 строк

‘Формирование строки заголовка (определяется символом <)

U$=”<| 1 | 2 | 3 | 4 |”

MSFlexGrid1.FormatString=U

‘Формирование столбца заголовка (определяется символом;)

U$=”;|Массив|Влево|Вправо|Центр|” ‘Формирование столбца заголовка

MSFlexGrid1.FormatString=U

MSFlexGrid1.Row=0 ‘ Текущая нулевая строка

MSFlexGrid1.Col=0 ‘ Текущий нулевой столбец

MSFlexGrid1.Text=”X” ‘ Вывод в ячейку 0,0 символа Х

MSFlexGrid1.ColWidth(0)=700 ‘ Ширина нулевой колонки=700 Twip

For I=1 to 5 ‘ Ширина остальных колонок=500 Twip

MSFlexGrid1.Col=I

MSFlexGrid1.ColWidth(0)=500

MSFlexGrid1.Text=I

Next

 




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 874; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.