КАТЕГОРИИ: Архитектура-(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; Просмотров: 913; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |