Главная / Офисные технологии /
Основные принципы и концепции программирования на языке VBA в Excel / Тест 6
Основные принципы и концепции программирования на языке VBA в Excel - тест 6
Упражнение 1:
Номер 1
Какой из условных операторов записан корректно?
Ответ:
 (1) IF salary <9000 Then social=salary*0.2 Endif
 
 (2)
IF salary <9000
Then social=salary*0.2
Endif
 
 (3)
IF salary <9000 Then
social=salary*0.2 Endif
 
 (4) IF salary <9000 Then social=salary*0.2
 
Номер 2
Процедура запрашивает ввод числа или даты и высвечивает сообщение о типе введенных данных или о некорректном вводе. Какая из логических конструкций записана правильно?
Ответ:
 (1)
If IsDate(A) Then
MsgBox "Дата " & A
ElseIf IsNumeric(A) Then
MsgBox "Число " & A
Else
MsgBox "Некорректный ввод "
End If
 
 (2)
If IsDate(A) Then
MsgBox "Дата " & A
Else IsNumeric(A) Then
MsgBox "Число " & A
Else
MsgBox "Некорректный ввод "
End If
 
 (3)
If IsDate(A) Then MsgBox "Дата " & A
ElseIf IsNumeric(A) Then MsgBox "Число " & A
Else MsgBox "Некорректный ввод "
End If
 
Упражнение 2:
Номер 1
Для значений переменной i
, изменяющихся от -7 до 7 с шагом 1 выполняется оператор
Select Case i
Case 1, 3, 5
s = s + i
Case 2, 4, 6
s = s - i
End Select
Значение переменной s
не меняется, если
Ответ:
 (1) значение i
положительно 
 (2) i=7
 
 (3) значение i
четно 
 (4) значение i
нечетно 
Номер 2
s=0
For i = -7 To 7
Select Case i
Case is <0
s = s - i
Case -2, -4, -6
s = s + i
End Select
Next i
В приведенном фрагменте процедуры значение переменной s
Ответ:
 (1) уменьшается, если значение i
четное отрицательное 
 (2) не изменяется, если значение i
нечетное отрицательное 
 (3) увеличивается, если значение i
отрицательно 
 (4) уменьшается, если значение i
отрицательно 
Номер 3
Для значений переменной i
, изменяющихся от -7 до 7 с шагом 1 выполняется оператор
Select Case i
Case 1, 3, 5
s = s + i
Case 2, 4, 6
s = s - i
Case Else
s=s*i
End Select
Отметьте неверное утверждение.
Ответ:
 (1) значение переменной s
не меняется, если значение i
отрицательно 
 (2) если значение i
нечетное положительное, то значение s
увеличивается  
 (3) если значение i
четное положительное, то значение s
уменьшается 
 (4) значение переменной равно 0, если значение i
равно 0 
Упражнение 3:
Номер 1
Какой из операторов цикла For
для вычисления 20!
записан правильно и рассчитывает верный результат?
Ответ:
 (1)
f=1
For i = 20 To 1 Step -1
f=f*i
Next i
 
 (2)
f=1
For i = 20 To 1
f=f*i
Next i
 
 (3)
f=1
For i = 1 To 20 Step -1
f=f*i
Next i
 
 (4)
f=1
For i = 0 To 20
f=f*i
Next Step
 
Номер 2
Операторы цикла For
рассчитывают сумму нечетных чисел, начиная с единицы. Какой из трех операторов цикла дает результат суммирования, отличный от результата двух других операторов?
Ответ:
 (1)
s=0
For i = 0 To 20
i = i + 1
s = s + i
Next i
 
 (2)
s=0
For i = 1 To 20
s = s + i
i = i + 1
Next i
 
 (3)
s = 0
For i = 1 To 20 Step 2
s = s + i
Next i
 
Номер 3
В приведенном фрагменте процедуры рассчитывается произведение чисел из первых 20 натуральных чисел. Как только значение произведения превосходит 100, выполняется принудительный выход из цикла. Каково значение переменной цикла i
после завершения цикла?
s = 1
For i = 2 To 20
s = s * i
If s > 100 Then Exit For
Next i
Ответ:
 (1) 5 
 (2) 20 
 (3) 21 
 (4) 6 
Упражнение 4:
Номер 1
Какой из операторов цикла Do While…Loop
выполнится только один раз?
Ответ:
 (1)
Counter = 20
Do While Counter <= 20
Counter = Counter + 1
Loop
 
 (2)
Counter = 0
Do While Counter < 20
Counter = Counter + 1
Loop
 
 (3)
Counter = 20
Do While Counter < 20
Counter = Counter + 1
Loop
 
 (4)
Counter = 20
Do While Counter < =20
Counter = Counter - 1
Loop
 
Номер 2
В каком из случаев оператор цикла Do While …Loop
выполнится хотя бы один раз и не зациклится?
Ответ:
 (1)
Counter = 20
Do While Counter <= 20
Counter = Counter + 1
Loop
 
 (2)
Counter = 20
Do While Counter < 20
Counter = Counter - 1
Loop
 
 (3)
Counter = 0
Do While Counter < 20
Counter = Counter - 1
Loop
 
 (4)
Counter = 20
Do While Counter > =20
Counter = Counter + 1
Loop
 
Номер 3
В каком случае оператор цикла Do While …Loop
вызывет зацикливание программы?
Ответ:
 (1)
Counter = 0
Do While Counter < 20
Counter = Counter + 1
Loop
 
 (2)
Counter = 20
Do While Counter < 20
Counter = Counter + 1
Loop
 
 (3)
Counter = 0
Do While Counter < 20
Counter = Counter - 1
Loop
 
 (4)
Counter = 20
Do While Counter <= 20
Counter = Counter + 1
Loop
 
Упражнение 5:
Номер 1
В каком из случаев оператор цикла Do…Loop Until
не вызывает зацикливание программы?
Ответ:
 (1)
Counter = 20
Do
Counter = Counter + 1
Loop Until Counter = False
 
 (2)
Counter = 20
Do
Counter = Counter + 1
Loop Until Counter < 20
 
 (3)
Counter = 20
Do
Counter = Counter - 1
Loop Until Counter < 20
 
 (4)
Counter = 0
Do
Counter = Counter - 1
Loop Until Counter > 20
 
Номер 2
В каком из случаев оператор цикла Do Until …Loop
выполнится хотя бы один раз и не зациклится?
Ответ:
 (1)
myNum = 20
Do Until myNum = 10
myNum = myNum - 1
Loop
 
 (2)
myNum = 20
Do Until myNum = 10
myNum = myNum + 1
Loop
 
 (3)
myNum = 10
Do Until myNum = 10
myNum = myNum - 1
Loop
 
 (4)
myNum = 20
Do Until myNum = 10
myNum = myNum - 3
Loop
 
Номер 3
Какой из операторов цикла Do…Loop Until
выполнится только один раз?
Ответ:
 (1)
Counter = 20
Do
Counter = Counter + 1
Loop Until Counter = False
 
 (2)
Counter = 20
Do
Counter = Counter + 1
Loop Until Counter < 20
 
 (3)
Counter = 4
Do
Counter = Counter + 1
Loop Until Counter < 20
 
 (4)
Counter = 0
Do
Counter = Counter - 1
Loop Until Counter > 20
 
Упражнение 6:
Номер 1
Массив описан как Dim A(-5 to 5)
. Элементы массива имеют значения 0, 1 или 2. Отметьте корректно записанный оператор цикла, обнаруживающий первое нулевое значение в массиве.
Ответ:
 (1)
For Each i In A
If i = 0 Then Exit For
Next i
i=-5
 
 (2)
For Each i In A
If A(i) = 0 Then Exit For
Next i
i = -5
 
 (3)
For Each A(i) In A
If A(i) = 0 Then Exit For
Next
 
 (4)
For Each i=-5 to 5
If A(i) = 0 Then Exit For
Next
 
Номер 2
Диапазон ячеек A1:B10 заполняется случайными числами 0 или 1. Отметьте корректно записанный оператор цикла.
Ответ:
 (1)
Dim i As Object
For Each i In Range("A1:B10")
i = Int(Rnd() * 2)
Next i
 
 (2)
Dim myrange As Object
Set myrange = Range("A1:B10")
For Each i In myrange
i = Int(Rnd() * 2)
Next i
 
 (3)
Dim i As Object, myrange As Object
Set myrange = Range("A1:B10")
For Each In myrange(i)
i = Int(Rnd() * 2)
Next i
 
 (4)
Dim i As Range, myrange As Object
Set myrange = Range("A1:B10")
For Each Cells In myrange
i = Int(Rnd() * 2)
Next i
 
Номер 3
Отметьте правильные утверждения в отношении приведенного фрагмента процедуры.
Dim i As Range, myrange As Object
Set myrange = Range("A:B")
For Each i In myrange
i = Int(Rnd() * 2)
Next i
Ответ:
 (1) тип переменной myrange
должен быть Range
, а не Object
 
 (2) в ссылке на диапазон ячеек оператора Set myrange = Range("A:B")
указаны только обозначения столбцов и не указаны номера строк, что является ошибкой 
 (3) в операторе i = Int(Rnd() * 2)
обязательно указание свойства value
для переменной i
, т.е оператор следует записать в виде i.value= Int(Rnd() * 2)
 
 (4) в приведенном фрагменте процедуры ошибок нет