Документ взят из кэша поисковой машины. Адрес оригинального документа : http://hist.msu.ru/Departments/Inf/Stud/les3.doc
Дата изменения: Tue Apr 7 05:38:25 2009
Дата индексирования: Tue Oct 2 01:52:36 2012
Кодировка: koi8-r

Занятие 3 (3 марта).
Часть 2 (методическая).
. Операторы цикла:
. с фиксированным числом операций,
. с неопределенным числом операций.
. Процедуры и функции.
. Переменные и массивы


Часть 3 (практикум).
. Блок-схемы. Построение алгоритмов с циклами.
. Создание рабочей формы для теста.
. Знакомство с переключателями.

Задание 1.
1. Создайте форму с командной кнопкой "Счет"
2. В окне кода создайте процедуру, которая будет выполняться при нажатии
кнопки "Счет"
3. Эта процедура:
а) должна запросить ввод целого числа m;
б) вычислить с помощью цикла факториал, т.е. произведение m первых
натуральных чисел.
в) вывести на экран (с помощью msgbox) полученное значение.


Задание 2.
1. Создайте форму с командной кнопкой "Счет"
2. В окне кода создайте процедуру, которая будет выполняться при нажатии
кнопки "Счет"
3. Эта процедура:
а) должна запросить ввод целого числа m;
б) вызвать функцию факториал и передать ей значение m.
4. Создайте функцию Factorial с одним параметром. Эта функция:
а) должна получить от вызывающей процедуры значение параметра m;
б) вычислить факториал, т.е. произведение m первых натуральных чисел;
в) вывести на экран (с помощью msgbox) полученное значение.


Задание 3.
1. Создайте форму с командной кнопкой "Счет"
2. В окне кода создайте процедуру, которая будет выполняться при нажатии
кнопки "Счет"
3. Эта процедура:
а) должна запросить ввод целого числа m;
б) обратиться к функции Factorial;
в) получить и вывести на экран (с помощью msgbox) значение
факториала.
4. Создайте функцию Factorial с одним параметром. Эта функция:
а) должна получить от вызывающей процедуры значение параметра m;
б) вычислить факториал, т.е. произведение m первых натуральных чисел.

Задание TEST
1. Создайте форму.
[pic]
2. Разместите на ней следующие метки (надписи):
. Номер для вывода номера вопроса;
. Текст для вывода текста вопроса;
. Ответ1 и Ответ2 для вывода вариантов ответа.
3. Разместите рядом с надписями Ответ1 и Ответ2 два переключателя.
4. Разместите на форме две командные кнопки:
. "Дальше" для перехода к следующему вопросу;
. "Выход" для выхода из программы.

5. В окне кода (раздел general) объявите массив "вопросов-ответов" из двух
строк и четырех столбцов.
6. В окне кода (раздел general) объявите переменные i (для счетчика цикла)
и result (для результата) как целые и answer (для ответа) как строчную,
7. В окне кода создайте следующие процедуры:
. Обработка события активизации формы:
. задать значения элементов двумерного массива,
. установить счетчик цикла на 1,
. установить result (сумму баллов) на 0,
. установить answer на "пусто",
. установить переключатели в положение "не выбрано",
. блокировать кнопки "Дальше".
. Обработка события "выбор переключателя" (для каждого):
. получить значение answer,
. разблокировать кнопку "Дальше".
. Обработка события нажатия кнопки "Дальше":
. проверить правильность answer,
. если ответ верен, увеличить result на 1,
. увеличить счетчик цикла на 1,
. если счетчик больше 2, вывести result и выгрузить форму.
. если нет - вывести на форму следующий вопрос с вариантами
ответов, установить переключатели в "не выбрано" и
блокировать кнопку "Дальше".
. Обработка события нажатия кнопки "Выход":
. вывести result и выгрузить форму.
Решение 1
Private Sub Счет_Click()
m = InputBox("введите целое число")
a = 1
For i = 2 To m
a = a * i
Next
MsgBox ("результат = " & a)
End Sub


Решение 2
Private Sub Счет_Click()
m = InputBox("введите целое число")
factorial (m)
End Sub

Function factorial(m)
a = 1
For i = 2 To m
a = a * i
Next
MsgBox ("результат = " & a)
End Function


Решение 3
Private Sub Счет_Click()
m = InputBox("введите целое число")
f = factorial(m)
MsgBox ("результат = " & f)
End Sub

Function factorial(m)
a = 1
For i = 2 To m
a = a * i
Next
factorial = a
End Function
Dim v(1 To 2, 1 To 4) As String
Public i As Integer, result As Integer, answer As String

Private Sub UserForm_activate()
v(1, 1) = "Когда появились первые компьютеры?"
v(1, 2) = "В каменном веке"
v(1, 3) = "После Второй Мировой войны"
v(1, 4) = "После Второй Мировой войны"
v(2, 1) = "В чем измеряется память компьютера?"
v(2, 2) = "В байтах"
v(2, 3) = "В кубометрах"
v(2, 4) = "В байтах"
result = 0
i = 1
answer = ""
Текст.Caption = v(i, 1)
Ответ1.Caption = v(i, 2)
Ответ2.Caption = v(i, 3)
Номер.Caption = i
OptionButton1.Value = False
OptionButton2.Value = False
Дальше.Enabled = False
End Sub

Private Sub Выход_Click()
MsgBox "Результат= " & result
Unload UserForm3
End Sub

Private Sub OptionButton1_Click()
answer = v(i, 2)
Дальше.Enabled = True
End Sub

Private Sub OptionButton2_Click()
answer = v(i, 3)
Дальше.Enabled = True
End Sub

Private Sub Дальше_Click()
If answer = v(i, 4) Then
result = result + 1
End If
i = i + 1
If i > 2 Then
MsgBox "Результат= " & result
Unload UserForm3
GoTo finish
End If
answer = ""
Текст.Caption = v(i, 1)
Ответ1.Caption = v(i, 2)
Ответ2.Caption = v(i, 3)
Номер.Caption = i
OptionButton1.Value = False
OptionButton2.Value = False
Дальше.Enabled = False
finish: End Sub