русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Время жизни переменной


Дата добавления: 2013-12-24; просмотров: 829; Нарушение авторских прав


Область определения переменной

Рекурсивные процедуры

 

В VВА возможно создание рекурсивных процедур, т. е. процедур, вызываюх самих себя. Стандартным примером рекурсивной процедуры является процедура вычисления факториала, т. е. функции, возвращающей результат произведения первых n натуральных чисел, где n — аргумент функции. Для этой функции имеется стандартное обозначение: Fact(n)=n!, где Fact (0) = 1. Ясно, что

Fact (n) = n Fact (n - 1)

Основываясь на данном соотношении, приводимая ниже рекурсивная функция вычисляет значение факториала.

Function Fact(n As Integer) As Integer

If n<l Then

Fact = 1

Else

Fact = Fact (n - 1) n
End If
End Function

Другим стандартным примером применения рекурсивных функций является нахождение наибольшего общего делителя двух целых чисел по алгоритму Евклида. Наибольший общий делитель (НОД) двух целых чисел — это наи­большее целое, на которое делятся оба числа. Например, НОД (10, 14) = 2 и НОД (15, 31) = 1.

Алгоритм Евклида состоит в следующем:

1. Если а делится на b, то НОД(а, b) = b

2. В противном случае — НОД(а, b) = НОД(b, a Mod b)

Приводимая ниже рекурсивная функция программирует алгоритм Евклида.

Function НОД(Целое1 As Long, Целое2 As Long) As Long

If Целое2 Mod Целое1 = О Then

НОД = Целое1

Else

НОД = НОД(Целое2, Целое! Mod Целое2)

End If

End Function

Несмотря на элегантность рекурсивных процедур, применять их надо с ос­торожностью,

т. к. неаккуратное использование может привести к пробле­мам с памятью — многократный вызов такой процедуры быстро исчерпыва­ет стековую память.

 

 

Область определения переменной задает область, в которой может быть ис пользована переменная. В VBA имеется три соответствующих уровня переменных:

1 Переменные уровня процедуры используются только в процедуре, в ко­торой они описаны при помощи инструкции Dim, размещенной в проце­дуре.



2 Переменные уровня модуля используются только в модуле, в котором они описаны при помощи инструкции Dim, размещенной в области опи­сания модуля, т. е. перед описанием процедур.

3 Общие переменные, используемые во всех модулях данного проекта. Описываются при помощи инструкции Public, размещенной в области описания модуля.

 

 

Личная (Private) переменная сохраняет свое значение только пока выпол­няется процедура, в которой эта переменная описана. При завершении про­цедуры значение переменной теряется, и при повторном запуске процедуры его надо заново инициализировать. Переменные, описанные при помощи инструкции Static, сохраняют свое значение по выходу из процедуры, но пока работает программа.

 

 



<== предыдущая лекция | следующая лекция ==>
Вызов процедуры | Разработка процедур, предотвращающих появление ошибок


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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