
- •Лабораторная работа №4 программирование задач с циклическим алгоритмом
- •1. Порядок выполнения работы
- •2. Логические конструкции
- •2.1. Организация циклов «с предусловием»
- •2.2. Организация циклов «с постусловием»
- •2.3. Организация цикла с заранее заданным количеством раз повторений
- •3. Использование свойства cells
- •4. Пример решения задач с циклическим алгоритмом
- •4.1. Пример использования оператора Do While…Loop
- •4.2. Пример использования оператора Do…Loop Until
- •4.3. Пример использования оператора For…Next
- •5. Содержание отчета
- •6. Контрольные вопросы
2.2. Организация циклов «с постусловием»
Для реализации циклов «с постусловием» в VBA используется, как классическая конструкция – цикл «До» Do…Loop Until (рис. 9а), так и конструкция Do…Loop While (рис. 9б), присущая только VBA.
|
|
а) |
б) |
Рис. 9. Структура цикла «с постусловием»
Цикл «До» применяется в случае, когда группа операторов, которая относится к телу цикла, должна повторяться, до тех пор, пока не выполнится условие выхода из цикла. Синтаксис данного цикла имеет вид:
Do
тело цикла
Loop Until условие.
В конструкции, же Do…Loop While тело цикла, выполняется, пока заданное условие принимает значение истинно, при этом синтаксис записи рассматриваемой конструкции особо не отличается от цикла «До» и имеет вид:
Do
тело цикла
Loop Until условие.
При выборе типа цикла необходимо учитывать, тот факт, что в циклах «с постусловием», в отличии от циклов «с предусловием», тело цикла всегда выполнится, по крайней мере один раз, поскольку программа сперва проходит весь блок программного кода, а лишь затем выполняется проверка условия, чтобы повторить выполнение цикла или выйти из него.
2.3. Организация цикла с заранее заданным количеством раз повторений
Как правило, рассмотренные выше циклы, применяются в случаях с заранее неизвестным числом повторений (итерационные циклы). Однако если количество раз повторений указано явным образом – фиксированное число, или известны пределы и шаг изменения переменной цикла, тогда целесообразно использовать так называемый цикл «с параметром» (цикл с заранее известным количеством раз повторений). Типичная структура данного цикла приведена на рис. 10.
Рис. 10. Структура цикла «с параметром»
Для реализации цикла «с параметром» в VBA используется конструкция For…Next. Рассмотрим ее синтаксис:
For ПЦ=НЗ To КЗ [Step шаг]
тело цикла
Next ПЦ, где:
ПЦ – переменная цикла;
НЗ – начальное значение переменной цикла;
КЗ – конечное значение переменной цикла;
шаг – шаг изменения переменной цикла.
Для использования конструкции For…Next необходимо четко усвоить следующие нюансы:
В качестве значений НЗ, КЗ и шаг могут выступать константы (целые и дробные числа), переменные любого числового типа и результаты сложных выражений;
Для выполнения тела цикла, хотя бы один раз, должно выполняться условие: НЗКЗ;
В случае если, шаг изменения переменной цикла равен единице, тогда параметр Step указывать не обязательно;
В VBA, при использовании конструкции For…Next, включена возможность принудительного выхода из цикла, для этого, в случае необходимости, используется оператор Exit For, который будет являться частью тела цикла.
3. Использование свойства cells
При решении задач циклической структуры, зачастую возникает необходимость вывода всех значений, которые принимает, как переменная цикла, так и переменные которые изменяют свои значения в процессе выполнения цикла. При этом для дальнейшего анализа полученных результатов, каждое значение необходимо выводить в отдельную ячейку рабочего листа Excel. Для организации такого вывода в VBA используется свойство Cells объекта Range.
Форма записи:
Range("БЯ").Cells(I,J).Value=имя_переменной.
Свойство Cells(I,J) объекта Range("БЯ") позволяет поместить значение переменной «имя_переменной» в рядом расположенные ячейки, по отношению к базовой ячейке с адресом «БЯ», со смещением на (I-1) ячеек по вертикали (по строкам) и (J-1) ячеек по горизонтали (по столбцам). Например: при выполнении строки Range("С2").Cells(2,1).Value=a, значение переменной «a» будет помещено не в ячейке «С2», а в ячейке «С3».
Необходимо отметить, используя свойство Cells, есть возможность не только передавать определенное количество значений переменной, но и также организовать передачу значений из рабочего листа в программу. В этом случае используют следующую форму записи:
имя_переменной=Range("БЯ").Cells(I,J).Value