- •Введение
- •Структура программы на vbScript
- •Переменные
- •Подтипы данных и функции преобразования типов
- •Константы
- •Встроенная функция вывода данных MsgBox
- •Встроенная функция ввода данных InputBox
- •Комментарии
- •Непрерывные строки
- •Операторы и операции
- •Пример 4
- •Пример 5
- •Пример 6
- •Пример 7
- •Пример 8
- •Пример 9
- •1.4 Задачи для самостоятельного решения
- •Логические операции
- •Оператор условного перехода: If … Then
- •2.3 Демонстрационные примеры Пример 1
- •Пример 2
- •Пример 3
- •Пример 4
- •Пример 5
- •Пример 6
- •Пример 7
- •2.4 Задачи для самостоятельного решения
- •Лабораторная работа 3. Операторы цикла в программах на vbscript
- •3.1 Цель работы
- •3.2 Теоретические сведения
- •For…Next (цикл со счетчиком)
- •Как выбрать, какой из циклов использовать в программе?
- •Пример 10
- •Пример 11
- •Пример 12
- •Пример 13
- •Пример 14
- •Пример 15
- •Пример 16
- •3.4 Задачи для самостоятельного решения
- •Передача параметров с помощью ключевых слов ByVal и ByRef
- •Функции
- •Пример 4
- •Пример 5
- •4.4 Задачи для самостоятельного решения
- •Лабораторная работа 5. Программирование алгоритмов при помощи рекурсивных процедур и функций
- •5.1 Цель работы
- •5.2 Теоретические сведения
- •5.3 Демонстрационные примеры Пример 1
- •Пример 2
- •Пример 3
- •Пример 4
- •5.4 Задачи для самостоятельного решения
- •Лабораторная работа 6. Массивы
- •6.1 Цель работы
- •6.2 Теоретические сведения
- •Перебор элементов массива
- •6.3 Демонстрационные примеры Пример 1
- •Пример 2
- •Пример 3
- •Пример 4
- •Пример 5
- •Пример 6
- •Пример 7
- •Пример 8
- •6.4 Задачи для самостоятельного решения "Заполнение" массивов
- •Массивы. Исследование и поиск
- •Модификация массивов
- •Лабораторная работа 7. Алгоритмы поиска в регулярном типе данных. Простейшие классические алгоритмы. Сортировка в массиве
- •7.1 Цель работы
- •7.2 Теоретические сведения
- •Сортировка обменом
- •Сортировка выбором
- •Сортировка включениями
- •Сортировка бинарными включениями
- •Шейкер-сортировка
- •7.3 Демонстрационные примеры Пример 1
- •Пример 2
- •Пример 3
- •Пример 4
- •Пример 5
- •Пример 6
- •Пример 7
- •Пример 8
- •Пример 9
- •Пример 10
- •7.4 Задачи для самостоятельного решения
- •Лабораторная работа 8. Строковый тип данных в программах на vbscript
- •8.1 Цель работы
- •8.2 Теоретические сведения
- •Другие функции необходимые для работы со строками
- •Основные функции для работы с датой и временем:
- •8.3 Демонстрационные примеры Пример 1
- •Пример 2
- •Пример 3
- •Пример 4
- •Пример 5
- •Пример 6
- •Пример 7
- •Пример 8
- •Пример 9
- •8.4 Задачи для самостоятельного решения Модификаторы
- •“Вычеркиватели” (частный случай модификаторов)
- •Наблюдатели (предикаты)
- •Подсчет
- •Поиск в словах
- •Литература
- •Данчул а.Н. Информатика: Учебник. – м.: рагс , 2004 г. - 528 с.
- •Содержание
Лабораторная работа 5. Программирование алгоритмов при помощи рекурсивных процедур и функций
5.1 Цель работы
Познакомиться с понятиями "рекурсия", закрепить практические навыки работы с VBScript на примере реализации алгоритмов при помощи рекурсивных процедур и функций.
5.2 Теоретические сведения
Рекурсия (самоповторение) – это действие, возвращающееся к “самому себе”. Существует два вида рекурсии:
-
прямая рекурсия (процедура или функция вызывает саму себя);
-
косвенная рекурсия означает, что одна процедура или функция вызывает другую процедуру или функцию, а это в свою очередь прямо или косвенно приводит к вызову первоначальной процедуры или функции.
Рекурсию следует использовать только тогда, когда задача легко поддается рекурсивному решению. Важно отметить, что любая задача, которая решена рекурсивно, может быть решена и без рекурсии.
С понятием "рекурсия" тесно связано понятие "рекуррентная последовательность”, вычисление n-го члена которой производится с помощью рекурсии. Определим это понятие.
Числовая последовательность {хk} называется рекуррентной последовательностью, если
где k=p, p=1, …
5.3 Демонстрационные примеры Пример 1
'Имя файла Factorial.vbs
'Задача: вычислить значение факториала введённого натурального числа n
'--------------------------------------
FUNCTION RecFact(n)
'Рекурсивное вычисление факториала
If n=0 Then
RecFact=1
Else
RecFact=n*RecFact(n-1)
End If
End FUNCTION
'---------------------------------------
FUNCTION NonRecFact(n)
'Вычисление факториала при помощи цикла
dim P
P=1
While (n>1)
P=n*P
n=n-1
WEnd
NonRecFact=P
End FUNCTION
'---------------------------------------
Dim n
n=CInt(InputBox("Введите натуральное число",_
"Вычисление факториала натурального n:","0"))
number=n
MsgBox "Рекурсивно вычисленный факториал: "&RecFact(n)&_
VbCrLf&_
"Нерекурсивно вычисленный факториал: "&NonRecFact(n)_
,vbInformation,"Результат вычисления факториала числа "&number&":"
Пример 2
'Имя файла Nod.vbs
'Задача: найти наибольший общий делитель (НОД) двух целых чисел
'--------------------------------------
FUNCTION RecNod(n,m)
'Рекурсивное вычисление НОД
If n=m Then
RecNod=n
ElseIf n>m Then
RecNod=RecNod(n-m, m)
Else
RecNod=RecNod(n, m-n)
End If
End FUNCTION
'---------------------------------------
FUNCTION NonRecNod(n,m)
'Вычисление НОД с помощью цикла
While (n<>m)
If n>m Then
n=n-m
Else
m=m-n
End If
WEnd
NonRecNod=n
End FUNCTION
'---------------------------------------
Dim n, m
n=CLng(InputBox("Введите натуральное число n", "Вычисление НОД: ","25"))
m=CLng(InputBox("Введите натуральное число m", "Вычисление НОД: ","50"))
MsgBox "Рекурсивно вычисленный НОД: "&CStr(RecNod(abs(n),abs(m)))&_
VbCrLf&_
"Нерекурсивно вычисленный НОД: "&CStr(NonRecNod(abs(n),abs(m)))_
,vbInformation,"Результат вычисления НОД:"