- •Лабораторный практикум
- •5 Часть
- •Visual Basic. Основы программирования
- •Дмитров 2012
- •Содержание
- •Предисловие
- •Массивы данных
- •Статические массивы
- •Динамические массивы
- •Массивы объектов
- •Создание и использование вызываемых процедур и функций
- •ПроцедурыSub
- •Функции
- •Рекурсивные процедуры и функции
- •Лабораторно-практические работы лабораторно-практическая работа № 1
- •Лабораторно-практическая работа № 2
- •Лабораторно-практическая работа № 3
- •Лабораторно-практическая работа № 4
- •Лабораторно-практическая работа № 5
- •Лабораторно-практическая работа № 6
- •Лабораторно-практическая работа № 7
- •Лабораторно-практическая работа № 8
- •Лабораторно-практическая работа № 9
- •1 Часть
- •2 Часть
- •Лабораторно-практическая работа № 10
- •Лабораторно-практическая работа № 11
- •1 Часть
- •2 Часть
- •Задания для самостоятельного выполнения
Лабораторно-практическая работа № 11
Тема: Рекурсивные функции и процедуры
Цель: Закрепить навыки создания вызываемых процедур и функций
1 Часть
Постановка задачи: разработать приложение, вычисляющее факториал числа.
( Факториал числа– это произведение всех целых чисел от 1 до указанного числа.)
Порядок выполнения:
Установите на форме следующие объекты и измените им свойства:
-
Объект
Свойство
Значение
Текстовые окна
Name
Text1
Name
Text2
Командная кнопка
Caption
Вычислить
Метка
Caption
! =
Приведите свою форму в соответствие с образцом
Вокне кода процедуры обработки событияClick для командной кнопки набрать
Dim x As Integer
x = Val(Text1.Text)
Text2.Text = fact(x)
Создайте функцию со следующим кодом:
Function fact(a As Integer) As Long
If a <= 1 Then
fact = 1
Else
fact = fact(a - 1) * a
End If
End Function
Проверьте работу программы
2 Часть
Постановка задачи: Разработать приложение, которое позволяет строить фрактал (объект дробной размерности), использовать для построения рекурсивную функцию.
Порядок выполнения:
Установите на форме следующие объекты и измените им свойства:
Объект
Свойство
Значение
Командная кнопка
Name
Cmd
Флажок
Name
ChkColor
В разделе общих объявлений набрать: Dim ccc(8)
В окне кода процедуры обработки события Click для объектаCmd набрать
If chkcolor.Value = 1 Then
ccc(1) = vbBlack : ccc(2) = vbBlue
ccc(3) = vbCyan : ccc(4) = vbGreen
ccc(5) = vbMagenta : ccc(6) = vbRed
ccc(7) = vbWhite : ccc(8) = vbYellow
Else
For i = 1 To 8
ccc(i) = vbBlack
Next i
End If
d = 50
dx = 1500: x0 = 170
dy = 2500: y0 = 300
x11 = x0 + dx : x21 = x0 + 3 * dx
x12 = x0 : x22 = x0 + 2 * dx
x13 = x0 + 2 * dx : x23 = x0 + 4 * dx
y11 = y0 : y21 = y0 + dy
y12 = y0 + dy : y22 = y0 + 2 * dy
y13 = y0 + dy : y23 = y0 + 2 * dy
Call printtr(d, x11, x21, y11, y21)
Call printtr(d, x12, x22, y12, y22)
Call printtr(d, x13, x23, y13, y23)
Создайте функцию со следующим кодом
Sub printtr(d, x1, x2, y1, y2)
i = Int(8 * Rnd) + 1
If x2 - x1 > d Then
ffractal.Line (x1, y1 + 10)-(x2, y2), vbWhite, BF
ffractal.Line ((x1 + x2) / 2, y1)-(x1, y2), ccc(i)
ffractal.Line ((x1 + x2) / 2, y1)-(x2, y2), ccc(i)
ffractal.Line (x1, y2 - 10)-(x2, y2 - 10), ccc(i)
x11 = (3 * x1 + x2) / 4 : x21 = (3 * x2 + x1) / 4
y11 = y1 : y21 = (y1 + y2) / 2
x12 = x1 : x22 = (x1 + x2) / 2
y12 = (y1 + y2) / 2 : y22 = y2
x13 = (x1 + x2) / 2 : x23 = x2
y13 = (y1 + y2) / 2 : y23 = y2
Call printtr(d, x11, x21, y11, y21)
Call printtr(d, x12, x22, y12, y22)
Call printtr(d, x13, x23, y13, y23)
End If
End Sub
Проверьте работу программы. Сравните результат работы с образцом
Измените программу для того, чтобы размер минимального треугольника увеличился (уменьшился), а также добавьте паузу (например, вывод MSGBOX “”) после построения каждого треугольника.
Результат показать преподавателю