Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Живодерова В В / VB Лабораторный практикум 5 часть.doc
Скачиваний:
72
Добавлен:
26.03.2016
Размер:
1.78 Mб
Скачать

Лабораторно-практическая работа № 11

Тема: Рекурсивные функции и процедуры

Цель: Закрепить навыки создания вызываемых процедур и функций

1 Часть

Постановка задачи: разработать приложение, вычисляющее факториал числа.

( Факториал числа– это произведение всех целых чисел от 1 до указанного числа.)

Порядок выполнения:

  1. Установите на форме следующие объекты и измените им свойства:

Объект

Свойство

Значение

Текстовые окна

Name

Text1

Name

Text2

Командная кнопка

Caption

Вычислить

Метка

Caption

! =

  1. Приведите свою форму в соответствие с образцом

  2. Вокне кода процедуры обработки событияClick для командной кнопки набрать

Dim x As Integer

x = Val(Text1.Text)

Text2.Text = fact(x)

  1. Создайте функцию со следующим кодом:

Function fact(a As Integer) As Long

If a <= 1 Then

fact = 1

Else

fact = fact(a - 1) * a

End If

End Function

  1. Проверьте работу программы

2 Часть

Постановка задачи: Разработать приложение, которое позволяет строить фрактал (объект дробной размерности), использовать для построения рекурсивную функцию.

Порядок выполнения:

  1. Установите на форме следующие объекты и измените им свойства:

    Объект

    Свойство

    Значение

    Командная кнопка

    Name

    Cmd

    Флажок

    Name

    ChkColor

  2. В разделе общих объявлений набрать: Dim ccc(8)

  3. В окне кода процедуры обработки события 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)

  1. Создайте функцию со следующим кодом

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

  1. Проверьте работу программы. Сравните результат работы с образцом

  1. Измените программу для того, чтобы размер минимального треугольника увеличился (уменьшился), а также добавьте паузу (например, вывод MSGBOX “”) после построения каждого треугольника.

  2. Результат показать преподавателю