Битовые операции в языке Visual Basic 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Битовые операции в языке Visual Basic



Как известно, числа в памяти хранятся в виде битовой последовательности и для ускорения работы, может потребоваться работать с битами на прямую, при помощи операторов AND, OR, XOR, NOT. Операции сдвигов (shift) двоичного числа в языке Visual Basic Script отсутствуют, но если двоичное число надо сдвинуть в право то можно использовать деление на 2 и соответственно умножение на 2, если сдвинуть надо влево.

Пример 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

ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ

Операторы цикла.

1. Вычислите множество значений функции y=x 52 0+b для аргумента х, изменяющегося от -10 до 10 с шагом 2, при b=5.

2. Вычислите k первых членов арифметической прогрессии, заданных следующим рекуррентным образом: a0 =1, an+1 =a n+2, где n=0,1,2,...

3. Вычислите произведение m членов арифметической прогрессии, если известны её первый член a1 и разность арифметической прогрессии h.

4. Найдите последовательность {a1,a2,...,a20 }, элементы которой вычисляются по формуле an=n/(n+1).

5. Вычислите значение n! для n=7. Ответ: 5040.

6. *Вычислить кубический корень из A с помощью применения итерационной формулы: . Начальное приближение выберите самостоятельно. Прекратите вычисления, если разность двух последовательных итераций станет меньше, чем произведение последнего приближения на 10-7.

7. Определите, существует ли такая четверка последовательных натуральных чисел, сумма квадратов которых равна сумме квадратов трёх следующих натуральных чисел.

8. Напишите программу вычисления при заданном х выражения:

Sin(x)+ Sin(Sin(x)) + Sin(Sin(Sin(x)))+…+Sin(Sin(…Sin(x)…))

n

9. Вычислите наибольший общий делитель натуральных чисел A и B.

10. Вычислите (1-1/22)·(1-1/32)·…· (1-1/n2), n>2.

11. Вычислите cos(1+cos(2+ … +cos(39+cos40)...)).

12. Пусть k>0 - целое число. Вычислите k-й член последовательности {xn},

где x0=1, xn=n·xn-1+1/n, n=1,2,3,...

13. Подсчитайте количество цифр в десятичной записи целого неотрицательного числа N.

14. Присвойте логической переменной T значение TRUE или FALSE в зависимости от того, является натуральное число k степенью 3 или нет.

15. Вычислите (2n-1)!!=1·3·5·…·(2n-1), n>0.

Вычислите:

16. Вычислите 1!+2!+3!+…+n!, для n>1.

17. Числа Фибоначчи f n определяются итерационными формулами

f 0=f 1=1; f n=fn-1+f n-2, n=2,3,... Определите десятое число Фибоначчи.

18. Числа Фибоначчи f n определяются итерационными формулами

f 0=f 1=1; f n=fn-1+f n-2, n=2,3,... Найдите первое число Фибоначчи, большее заданного m, m>1.

19. Вычислите sin(1)+sin(1.1)+sin(1.2)+ … +sin(2).

20. Вычислите сумму квадратов всех целых чисел, попадающих в интервал (ln(x),exp(x)), x>1.

21. Присвойте логической переменной P значение TRUE, если целое n (n>1) является простым числом, и значение FALSE - в противном случае.

22. Вычислите

23. Определите, является ли заданное натуральное число совершенным, т.е. равным сумме всех своих (положительных) делителей, кроме самого этого числа (например, число 6 является совершенным числом, т.к. 6=1+2+3). Приведём ещё несколько совершенных чисел: 28, 496, 8128, 33550336, 8589869056. Отметим, что если сумма делителей числа больше самого числа, то такое число называется избыточным числом, если меньше - дефектным числом.

24. Дано целое n>2. Найдите все простые числа из [2,n].

25. Найдите сумму цифр заданного натурального числа.

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

27. Определите, является ли заданное натуральное число палиндромом, т.е. таким натуральным числом, десятичная запись которого читается одинаково слева направо и справа налево.

28. Установите, верно ли, что все четыре цифры данного натурального числа n<10000 различны?

29. Дано натуральное k. Напечатайте k-ю цифру последовательности 1234567891011121314..., в которой выписаны подряд все натуральные числа.

30. Дано натуральное k. Напечатайте k-ю цифру последовательности 149162536..., в которой выписаны подряд квадраты всех натуральных чисел.

31. Дано натуральное k. Напечатайте k-ю цифру последовательности 1123581321..., в которой выписаны подряд все числа Фибоначчи.

32. Не используя стандартные функции (за исключением Abs), вычислите с точностью Eps>0 сумму функционального ряда 1+x/1!+x 2/2!+ … +xn/n!+…. Считайте, что требуемая точность достигнута, если очередное слагаемое по модулю меньше Eps (все последующие слагаемые можно уже не учитывать).

33. Определите, в каких двузначных числах удвоенная сумма цифр равна их произведению?

Ответ: 36,44,63.

34. Найдите двузначное число, равное утроенному произведению его цифр.

Ответ: 15,24.

35. Найдите двузначное число, обладающее тем свойством, что куб суммы его цифр равен квадрату самого числа.

Ответ: 27.

36. Найдите все трёхзначные числа, представимые в виде сумм факториалов своих цифр.

Ответ: 145.

37. Найдите все двузначные числа, сумма квадратов цифр которых делится на 17.

Ответ: 14,28,29,35,41,53,67,76,82,92.

38. Найдите все трёхзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры.

Ответ: 100,147.

39. Найдите все трёхзначные числа, средняя цифра которых равна сумме первой и второй цифр.

40. Найдите все трехзначные числа, сумма цифр которых равна данному целому числу.

41. Найдите все делители числа 1234.

42. Найдите все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9.

43. Даны целое число а и натуральное число n. Вычислите: a ·(а+1) ·...· (а+n-1).

44. Установите, можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел?

45. Найдите первую степень числа 3, превышающую данное целое число a.

46. Найдите наибольшую степень числа 2, делящую данное целое число a.

47. Проверьте, содержит ли квадрат данного натурального числа n цифру 3 в своей записи.

48. Приведите дробь вида a/b, b≠0, к несократимому виду.

49. Найдите среднее арифметическое последовательности целых чисел произвольной длины.

50. Найдите наименьшее положительное число x, удовлетворяющее условию 1+x>1.

51. Письма-вызовы, содержащие предложение решить ряд трудных математических задач, были распространены в XVI-XVII вв. П.Ферма направил свой вызов математикам Франции, Голландии и Англии, в частности Дж.Валлису. П.Ферма в письме, названном "Первый вызов математикам" (3 января 1657 г), привёл следующие две задачи: (1) найти куб, который при добавлении всех его аликвотных частей дал бы квадрат. Например, число 343 есть куб со стороной 7. Все его аликвотные части это: 1, 7, 49; если их прибавить к самому 343, получится число 400, которое является квадратом со стороной. Найти другой куб с таким же свойством; (2) найти квадратное число, которое при прибавлении всех своих аликвотных частей составило бы кубическое число. Напишите программы, решающие указанные задачи.

52. Вычислите множество значений функции 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 на примере реализации алгоритмов при помощи процедур и функций.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Функция (процедура) – самостоятельная единица программного кода, спроектированная для реализации конкретной задачи.

Принципы многих языков программирования императивной парадигмы (в том числе и 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 - фактические параметры.

Замечание: список фактических параметров может отсутствовать.

Соответствие между фактическими и формальными параметрами должно быть

следующим:

1. Количество фактических параметров должно быть равно количеству формальных параметров;

2. Соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу. Соответствующие параметры не обязательно должны быть одинаково обозначены (имя формального параметра может быть не таким как у фактического).

 

Выполнение оператора вызова процедуры состоит в следующем:

1. все формальные параметры заменяются соответствующими фактическими;

2. после этого создается так называемый динамический экземпляр процедуры, который и выполняется;

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

Пример использования процедуры в программе (без параметров):

Задача: вывести на экран значение выражения: (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



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 1309; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.237.65.102 (0.117 с.)