- •Введение
- •Структура программы на 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 с.
- •Содержание
Пример 14
option explicit
'демонстрация синтаксиса и семантики поразрядных битовых операций
dim a,b
a=Cint(inputbox("Введите два целых числа","введите первое число"))
b=Cint(inputbox("Введите два целых числа","введите первое число"))
msgbox a&" and "&b&" = "&(a and b),,"Битовая операция AND"
msgbox a&" or "&b&" = "&(a or b),,"Битовая операция OR"
msgbox a&" xor "&b&" = "&(a xor b),,"Битовая операция xor"
msgbox " not "&a&" = "&(not a),,"Инверсия битов в числе A"
Пример 15
option explicit
dim a
'Программа вывода битовой последовательности положительного 'десятичного числа
a=InputBox("Ввод числа","Введите число типа INT",0)
if IsNumeric(a) then
dim str
While a>0
str=CInt(Cint(a) and 1)&Str
a=a\2
WEnd
msgbox str
else msgbox "Ошибка ввода"
end if
Пример 16
option explicit
dim a
'Программа определения количества бит в двоичном
'представлении целого положительного числа
a=Cint(InputBox("Ввод числа","Введите число типа INT",0))
dim i 'параметр цикла
dim m
m=14
i=2^m
While ((a\i) and 1)<>1
m=m-1
i=2^m
Wend
msgbox m+1
3.4 Задачи для самостоятельного решения
Операторы цикла.
-
Вычислите множество значений функции y=x 52 0+b для аргумента х, изменяющегося от -10 до 10 с шагом 2, при b=5.
-
Вычислите k первых членов арифметической прогрессии, заданных следующим рекуррентным образом: a0 =1, an+1 =a n+2, где n=0,1,2,...
-
Вычислите произведение m членов арифметической прогрессии, если известны её первый член a1 и разность арифметической прогрессии h.
-
Найдите последовательность {a1 ,a2 ,...,a20 }, элементы которой вычисляются по формуле an=n/(n+1).
-
Вычислите значение n! для n=7. Ответ: 5040.
-
*Вычислить кубический корень из A с помощью применения итерационной формулы: . Начальное приближение выберите самостоятельно. Прекратите вычисления, если разность двух последовательных итераций станет меньше, чем произведение последнего приближения на 10-7.
-
Определите, существует ли такая четверка последовательных натуральных чисел, сумма квадратов которых равна сумме квадратов трёх следующих натуральных чисел.
-
Напишите программу вычисления при заданном х выражения:
Sin(x)+ Sin(Sin(x)) + Sin(Sin(Sin(x)))+…+Sin(Sin(…Sin(x)…))
n
-
Вычислите наибольший общий делитель натуральных чисел A и B.
-
Вычислите (1-1/22)·(1-1/32)·…· (1-1/n2), n>2.
-
Вычислите cos(1+cos(2+ … +cos(39+cos40)...)).
-
Пусть k>0 - целое число. Вычислите k-й член последовательности {xn},
где x0=1, xn=n·xn-1+1/n, n=1,2,3,...
-
Подсчитайте количество цифр в десятичной записи целого неотрицательного числа N.
-
Присвойте логической переменной T значение TRUE или FALSE в зависимости от того, является натуральное число k степенью 3 или нет.
-
Вычислите (2n-1)!!=1·3·5·…·(2n-1), n>0.
Вычислите:
-
Вычислите 1!+2!+3!+…+n!, для n>1.
-
Числа Фибоначчи f n определяются итерационными формулами
f 0=f 1=1; f n=fn-1+f n-2, n=2,3,... Определите десятое число Фибоначчи.
-
Числа Фибоначчи f n определяются итерационными формулами
f 0=f 1=1; f n=fn-1+f n-2, n=2,3,... Найдите первое число Фибоначчи, большее заданного m, m>1.
-
Вычислите sin(1)+sin(1.1)+sin(1.2)+ … +sin(2).
-
Вычислите сумму квадратов всех целых чисел, попадающих в интервал (ln(x),exp(x)), x>1.
-
Присвойте логической переменной P значение TRUE, если целое n (n>1) является простым числом, и значение FALSE - в противном случае.
-
Вычислите
-
Определите, является ли заданное натуральное число совершенным, т.е. равным сумме всех своих (положительных) делителей, кроме самого этого числа (например, число 6 является совершенным числом, т.к. 6=1+2+3). Приведём ещё несколько совершенных чисел: 28, 496, 8128, 33550336, 8589869056. Отметим, что если сумма делителей числа больше самого числа, то такое число называется избыточным числом, если меньше - дефектным числом .
-
Дано целое n>2. Найдите все простые числа из [2,n].
-
Найдите сумму цифр заданного натурального числа.
-
Определите натуральное число, получаемого выписыванием в обратном порядке цифр заданного натурального числа.
-
Определите, является ли заданное натуральное число палиндромом, т.е. таким натуральным числом, десятичная запись которого читается одинаково слева направо и справа налево.
-
Установите, верно ли, что все четыре цифры данного натурального числа n<10000 различны?
-
Дано натуральное k. Напечатайте k-ю цифру последовательности 1234567891011121314..., в которой выписаны подряд все натуральные числа.
-
Дано натуральное k. Напечатайте k-ю цифру последовательности 149162536..., в которой выписаны подряд квадраты всех натуральных чисел.
-
Дано натуральное k. Напечатайте k-ю цифру последовательности 1123581321..., в которой выписаны подряд все числа Фибоначчи.
-
Не используя стандартные функции (за исключением Abs), вычислите с точностью Eps>0 сумму функционального ряда 1+x/1!+x 2/2!+ … +xn/n!+…. Считайте, что требуемая точность достигнута, если очередное слагаемое по модулю меньше Eps (все последующие слагаемые можно уже не учитывать).
-
Определите, в каких двузначных числах удвоенная сумма цифр равна их произведению?
Ответ: 36,44,63.
-
Найдите двузначное число, равное утроенному произведению его цифр.
Ответ: 15,24.
-
Найдите двузначное число, обладающее тем свойством, что куб суммы его цифр равен квадрату самого числа.
Ответ: 27.
-
Найдите все трёхзначные числа, представимые в виде сумм факториалов своих цифр.
Ответ: 145.
-
Найдите все двузначные числа, сумма квадратов цифр которых делится на 17.
Ответ: 14,28,29,35,41,53,67,76,82,92.
-
Найдите все трёхзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры.
Ответ: 100,147.
-
Найдите все трёхзначные числа, средняя цифра которых равна сумме первой и второй цифр.
-
Найдите все трехзначные числа, сумма цифр которых равна данному целому числу.
-
Найдите все делители числа 1234.
-
Найдите все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9.
-
Даны целое число а и натуральное число n. Вычислите: a ·(а+1) ·...· (а+n-1).
-
Установите, можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел?
-
Найдите первую степень числа 3, превышающую данное целое число a.
-
Найдите наибольшую степень числа 2, делящую данное целое число a.
-
Проверьте, содержит ли квадрат данного натурального числа n цифру 3 в своей записи.
-
Приведите дробь вида a/b, b≠0, к несократимому виду.
-
Найдите среднее арифметическое последовательности целых чисел произвольной длины.
-
Найдите наименьшее положительное число x, удовлетворяющее условию 1+x>1.
-
Письма-вызовы, содержащие предложение решить ряд трудных математических задач, были распространены в XVI-XVII вв. П.Ферма направил свой вызов математикам Франции, Голландии и Англии, в частности Дж.Валлису. П.Ферма в письме, названном "Первый вызов математикам" (3 января 1657 г), привёл следующие две задачи: (1) найти куб, который при добавлении всех его аликвотных частей дал бы квадрат. Например, число 343 есть куб со стороной 7. Все его аликвотные части это: 1, 7, 49; если их прибавить к самому 343, получится число 400, которое является квадратом со стороной. Найти другой куб с таким же свойством; (2) найти квадратное число, которое при прибавлении всех своих аликвотных частей составило бы кубическое число. Напишите программы, решающие указанные задачи.
-
Вычислите множество значений функции y для х, изменяющихся от -10 до 10 с шагом 2.
(a) y=x+3x-1; (e) y=;
(b) y=2x+4; (f) y=x;
(c) y=x-16x; (g) y=;
(d) y=;
ЛАБОРАТОРНАЯРАБОТА 4. ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ ПРИ ПОМОЩИ ПРОЦЕДУР И ФУНКЦИЙ
4.1 ЦЕЛЬ РАБОТЫ
Познакомиться с понятиями "процедура" и "функция" в языке программирования VBScript, рассмотреть их сходства и различия, закрепить практические навыки работы с VBScript на примере реализации алгоритмов при помощи процедур и функций.
4.2 ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Функция (процедура) – самостоятельная единица программного кода, спроектированная для реализации конкретной задачи.
Принципы многих языков программирования императивной парадигмы (в том числе и VBS) построены на использовании функций(процедур).
Процедуры
В практике программирования часто бывает необходимо выполнять одни и те же вычисления, но при различных исходных данных. Чтобы исключить повторение одинаковых записей и сделать тем самым программу проще и понятнее, можно выделить эти повторяющиеся вычисления в самостоятельную часть программы, которая может быть использована многократно по мере необходимости. Такая автономная часть программы, реализующая определенный алгоритм и допускающая обращение к ней из различных частей общей программы, называется процедурой. Любая процедура содержит заголовок и раздел операторов. По сути, процедура очень похожа на программу. Синтаксис объявления процедуры:
Sub MyProc(Param1, Param2, Param3 … ParamN)
[Operator1: Operator2]
[Operator3]
…
OperatorN
End Sub
Sub и End Sub - это служебные слова (операторные скобки), означающие начало и конец объявления процедуры.
MyProc - это задаваемое программистом имя для создаваемой процедуры.
Operator1: Operator2
Operator3 - раздел операторов, используемых в процедуре.
…
OperatorN
Естественно именование процедуры должно проходить по определённым правилам, таким же, как при именовании переменной или, проще говоря, состоять только из латинских букв и цифр. Каждая процедура или функция имеет свое УНИКАЛЬНОЕ имя.
В скобках за именем процедуры следуют формальные параметры, от которых будет зависеть результат выполнения процедуры. Формальные параметры - это наименования переменных, через которые передается информация из основной программы или другой процедуры в процедуру.
Говоря о процедурах и функциях, следует отметить, что переменные, используемые в программе, могут быть локальными и глобальными. Локальные переменные (объявленные только в процедуре или функции) существуют только во время выполнения процедуры или функции. Глобальные переменные (объявленные в самой программе) распространяются, в том числе и на процедуры и функции. Такие переменные существуют, пока программа выполняется.
Для того, чтобы "запустить" процедуру в работу, необходимо к ней обратиться (ее вызвать).
Вызов процедуры производится следующим образом:
MyProc Param1, Param2, Param3 … ParamN
или
call MyProc(Param1, Param2, Param3 … ParamN)
MyProc - имя процедуры,
Param1, Param2, Param3 … ParamN - фактические параметры.
Замечание: список фактических параметров может отсутствовать.
Соответствие между фактическими и формальными параметрами должно быть
следующим:
-
Количество фактических параметров должно быть равно количеству формальных параметров;
-
Соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу. Соответствующие параметры не обязательно должны быть одинаково обозначены (имя формального параметра может быть не таким как у фактического).
Выполнение оператора вызова процедуры состоит в следующем:
-
все формальные параметры заменяются соответствующими фактическими;
-
после этого создается так называемый динамический экземпляр процедуры, который и выполняется;
-
после выполнения процедуры происходит передача управления в основную программу, т.е. начинает выполняться оператор, следующий за оператором вызова процедуры.
Пример использования процедуры в программе (без параметров):
Задача: вывести на экран значение выражения: (7+8)*100/5, используя процедуру summa
Текст программы:
Sub summa
MsgBox ((7+8)*100/5)
End Sub
summa
Замечание: объявлять процедуру вы можете в любой части программы (в начале, в середине, в конце).
Пример использования процедуры в программе (с параметрами):
Задача: ввести значения трёх переменных при помощи функции vvod, и распечатать значение введённых переменных.
Текст программы:
option explicit 'Запрет на использование необъявленных переменных
dim a, b, c 'Описание глобальных переменных
Sub vvod(x) 'Процедура ввода значений переменных, х – формальный параметр
x=InputBox("Введите значение переменной: ","Окно ввода")
End Sub
vvod a 'Обращение к процедуре vvod, а – фактический параметр
vvod b 'Обращение к процедуре vvod, b – фактический параметр
vvod c 'Обращение к процедуре vvod, c – фактический параметр
'Вывод введённых значений переменных на экран
MsgBox "Вы ввели три переменных: "&a&" "&b&" "&c