|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
End Function2. В конструкторе форм создать форму с элементами: 2 текстовых поля под вывод матрицы и суммы элементов массива и кнопку, по нажатию которой пишем процедуру:
Private Sub Кнопка8_Click() Dim A(3, 3) As Integer, i, j As Byte, s As String, y As Integer ' Заполнение матрицы через генератор случайных чисел For i = 1 To 3 For j = 1 To 3 A(i, j) = Int(10 * Rnd(5)) s = s & Str(A(i, j)) & " " Next j s = s & Chr(13) & Chr(10) Next i Поле0.Value = s ' Вызов функции СУММА с передачей параметра А y = СУММА(A) Поле6.Value = Str(y) End Sub Пример Вычислить n! n!=1*2*3*4*5* … При решении этой задачи удобно использовать понятие рекурсивности объекта. Объект называется рекурсивным, если он целиком или частично определяет самого себя. Рекурсивной функцией-процедурой называется такая функция-процедура, которая вызывает саму себя.
Алгоритм.
1. Создаём модуль с функцией:
Public Function factorial(n As Integer) As Double factorial = 1 If n > 0 Then ‘ Рекурсивный вызов функции factorial = n * factorial(n - 1) End If End Function
2. В конструкторе создаём форму с 2 текстовыми полями для ввода n и вывода значения факториала и кнопкой, по нажатию которой пишется процедура:
Private Sub Кнопка8_Click() Dim n As Integer, y As Double n = Val(Поле0.Value) ‘ В переменную n записываем преобразованное в ‘ число значение текстового поля0 y = factorial(n) Поле6.Value = Str(y) End Sub
Классические задачи программирования: сортировка, Поиск Пример Сортировка методом “пузырьков”. 1. Функция для сортировки: Public Function сортировка(массив() As Variant) As Boolean Dim a As Boolean, t As Variant, x As Integer For x = LBound(массив) To UBound(массив) If IsNull(массив(x)) Then Exit Function Next x Do a = False For x = UBound(массив) To (LBound(массив) + 1) Step -1 If массив(x - 1) > массив(x) Then t = массив(x - 1) массив(x - 1) = массив(x) массив(x) = t a = True End If Next x For x = (LBound(массив) + 1) To UBound(массив) If массив(x - 1) > массив(x) Then t = массив(x - 1) массив(x - 1) = массив(x) массив(x) = t a = True End If Next x Loop While a сортировка = True End Function 2. Создадим форму с двумя текстовыми полями и кнопкой и по событию Нажатие кнопки пишем процедуру для вызова этой функции: Private Sub Кнопка0_Click() Dim массив() As Variant Dim test As Boolean массив = Array(4, 12, 3, 7, 9, 1) ‘задание массива For i = LBound(массив) To UBound(массив) ‘ печать исходного массива s = s & массив(i) & " " Next i Поле1.Value = s test = сортировка(массив) ‘ вызов функции “Сортировка” s = " " For i = LBound(массив) To UBound(массив) ‘ печать результата s = s & массив(i) & " " Next i Поле3.Value = s End Sub
Результат:
Пример Быстрая сортировка Алгоритм такой сортировки очень элегантен за счёт рекурсивного вызова функции. Пишем функцию для быстрой сортировки:
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.) |