Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программирование циклических алгоритмов




End Sub

MsgBox c

Dim a, b, c As Integer

Программирование линейных алгоритмов

Компьютер как исполнитель алгоритмов. Программа как изображение алгоритма в терминах команд, управляющих работой компьютера

Программирование на VBA

Для решения задачи с помощью компьютера, сначала разрабатывают алгоритм ее решения, отлаживают его, а потом, уже отлаженный алгоритм изображают в терминах команд, понятных ЭВМ. В качестве примера приведем алгоритм ввода-вывода двухмерного массива, где слева приведен алгоритм, а справа процедура, реализующая данный алгоритм на языке VBA, понятный ЭВМ.

Известно, что ЭВМ работает с двоичным кодом (в виде набора единиц и нулей), а команды на VBA в диалоговом окне набираются в виде команд (операторов) и символов на данном языке. Возникает необходимость преобразования языка высокого уровня (VBA) на язык, понятный ЭВМ – машинный код. Эту операцию производит транслятор. Исходный модуль преобразуется в объектный модуль. А исполняемая эту операцию программа называется транслятором.


 

Рис. 9.25. Ввод-вывод двухмерного массива

Необходимо сложить два целых числа: a=1, b=2.

Алгоритм решения задачи (рис.9.26.).

Пуск    

 

 

a=1, b=2, c

 


 

c=a+b

 


 

c

 

останов    

 

Рис. 9.26. Алгоритм сложения двух целых чисел

 

Знак операции сложения (+) используется для выполнения операции простого сложения. Оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число.

Текст процедуры показан на (рис.9.27).

Sub Slogenie()

a = 5

b = 3

c = a + b

Рис. 2.27. Текс процедуры сложения двух целых чисел

 

Sub Slogenie () – Начало работы и название процедуры сложения двух целых чисел

Dim – оператор, объявляет переменные a, b, c

As Integer - тип данных, «целое число»

a=5, b=3 – присваивание значений переменным a и b

c = a+b - операция сложения, результат – c

MsgBox – вывод c на диалоговом окне

End Sub - окончание вычисления заданной процедуры

Остальные арифметические операции выполняются аналогично.

 

Программные структуры, приводящие к неоднократному повторению одного или нескольких операторов, называются структурами организации циклов, потому что поток выполнения операторов процедуры проходит циклично по одним и тем же операторам неоднократно.

Процесс выполнения всех операторов, заключенных в структуру цикла, один раз называется итерацией (iteration) цикла. Некоторые структуры цикла организуются так, что они всегда выполняются заданное количество раз. Структуры цикла, всегда выполняющиеся заданное количество раз, называются циклами с фиксированным числом итераций (fixed iteration). Другие типы структур цикла повторяются переменное число раз в зависимости от некоторого набора условий. Поскольку количество раз повторений этих гибких структур цикла является неопределенным, такие циклы называются неопределенными циклами (indefinite loops).

Существует два основных способа создания неопределенного цикла. Можно построить цикл так, что VBA будет тестировать некоторое условие (детерминант цикла) перед выполнением цикла: если условие для повторения цикла не равно True, VBA пропускает все операторы в цикле. Можно также построить цикл таким образом, что VBA будет тестировать условие детерминанта цикла после выполнения операторов в цикле.

Для цикла, в котором детерминант проверяется перед выполнением операторов внутри цикла, VBA определяет следующую последовательность действий:

1. В верхней части цикла тестируется условие детерминанта.

2. Если условия для выполнения цикла удовлетворяются, выполняются операторы внутри цикла.

3. После выполнения последнего оператора внутри цикла VBA возвращается к началу цикла и снова оценивает условие детерминанта цикла.

4. Если условия для выполнения цикла все еще удовлетворяются, VBA повторяет операторы внутри цикла и снова возвращается к началу цикла тестирования детерминанта.

5. Как только условия для выполнения цикла перестанут удовлетворяться, VBA останавливает выполнение цикла и начинает выполнение операторов после цикла.

Когда VBA тестирует выполнение детерминанта первый раз, VBA не выполняет операторы внутри цикла ни разу, при этом тело цикла пропускается (не выполняется).

Тело цикла – это блок операторов VBA, находящихся между началом и концом цикла.

Для цикла, в котором детерминант проверяется после выполнения операторов в теле цикла, VBA определяет следующую последовательность действий:

1. Выполняются все операторы в теле цикла.

2. При достижении конца тела цикла, VBA оценивает условие детерминанта цикла.

3. Если условия для выполнения цикла удовлетворяются, VBA возвращается к началу цикла и повторяет инструкции в теле цикла.

4. В конце цикла VBA снова тестирует условие детерминанта цикла.

5. Как только условия для выполнения цикла больше не удовлетворяются, VBA прекращает выполнение цикла и начинает выполнение операторов после цикла.

Использование цикла For ….Next

Используется тогда, когда необходимо повторить действие или ряд действий заданное количество раз, известное до начала выполнения цикла.

Цикл For ….Next

Алгоритм цикла For….Next приведен на рис. 5.28.

Counter – любая численная переменная VBA, обычно переменная типа Integer или Long.

Start - любое численное выражение и определяет начальное значение для переменной Counter.

End – численное выражение, определяющее конечное значение для переменной Counter.

Statements – один, несколько или ни одного оператора. Эти операторы выполняют тело цикла. VBA выполняет каждый из этих операторов при каждом выполнении цикла.

Ключевое слово Next сообщает VBA о том, что достигнут конец цикла. Не обязательная переменная Counter поcле ключевого слова Next должна быть той же самой переменной Counter, которая была задана после ключевого слова For начале структуры цикла.

 

 

Counter=Start

 


Counter=counter+StepSise
Statements  
F

Counter>End

 

 


T

 

Рис.9.28. Алгоритм цикла For….Next

Ключевое слово Next сообщает VBA о том, что достигнут конец цикла. Не обязательная переменная Counter поcле ключевого слова Next должна быть той же самой переменной Counter, которая была задана после ключевого слова For начале структуры цикла.

Синтаксис:

For counter = Start To End [Step StepSize]

Statemends

Next [conter]

При выполнении цикла For …Next VBA поступает следующим образом:

- Присваивает значение, представленное Star, переменной Сounter.

- Выполняет все операторы, представленные с помощью Statements, пока не достигнет ключевого слова Next. Ключевое слово Next показывает VBA на то, что достигнут конец тела цикла.

- Изменяет переменную Сounter на величину StepSize (если включается необязательное слово Step) Если Step не определено, то VBA увеличивает переменную counter на 1.

- Возвращается к началу цикла и сравнивает текущее значение переменной Сounter со значением, представленным End. Если значение Сounter меньше значения End, VBA продолжает выполнение с первого оператора после ключевого слова Next.

 




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 1326; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.029 сек.