Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задачник на VBA (часть I)*

.pdf
Скачиваний:
364
Добавлен:
10.06.2015
Размер:
916.18 Кб
Скачать

21

прибавлять. Обойти этот недостаток можно, используя условные операторы, которые будут рассмотрены в следующем параграфе.

1.4. Задания для программирования задач с неявно заданным линейным алгоритмом

1.Вычислить общее сопротивление трех резисторов, соединенных последовательно и параллельно.

2.Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.

3.Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.

4.Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь

5.Даны катеты прямоугольного треугольника. Найти радиус вписанной окружности.

6.Дана сторона равностороннего треугольника. Найти площадь этого треугольника.

7.Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности.

8.Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.

9.Найти площадь кольца, внутренний радиус которого равен 20, а внешний – заданному числу r (r > 20 ).

10.Треугольник задан величинами своих углов и радиусом описанной окружности. Найти стороны треугольника (по теореме синусов).

11.Найти площадь равнобочной трапеции с основанием а и b и углом α при большем основании а.

12.Вычислить расстояние d между двумя точками с координатами x1,

y1 и х2, y2 ( d = (x2 x1)2 + (y2 y1)2 ).

13.Определить периметр правильного n-угольника, описанного около окружности радиуса r.

14.Смешано v1, литров воды температуры t1 с v2 литрами воды

температуры t2. Найти объем и температуру образовавшейся смеси.

15.Определить время падения камня на поверхность земли с высоты h.

16.Вычислить период колебания маятника длины l.

17.Определить силу притяжения F между телами массы m1 и m2 находящимися на расстоянии r друг от друга.

22

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

19.В группе N студентов. Сколько компьютеров нужно поставить в классе, чтобы за одним ПК работало не более трёх человек.

20.Кластер диска содержит 2048 байт. Составить программу, определяющую число кластеров, обеспечивающих адресацию к файлу объемом V.

21*. Кластер диска содержит 2048 байт. Составить программу, определяющую число свободных секторов последнего незанятого кластера для файла объемом 2 Мбайта.

1.5. Примеры программирования сложных арифметических выражений

Пример 1.5. Составить

программу,

вычисляющую

функцию

y = (a lg 2x + b x )

для любого заданного

x. Параметры:

а = 1,4 102 ,

c2d ln5 e4x

 

 

 

 

b = 2,5 103 , c = 0,31 104 , d = 4,6 10–2.

Решение:

Программируем заданное выражение, пользуясь таблицей стандартных функций (Табл. 4) и помня о приоритете выполнения арифметических операций.

Function y(x)

a = 1.4E+02: b = 2.5E-03: c = 0.31E+04: D = 4.6E-02

y = (a * Log(2 * x) / Log(10) + b * Sqr(x)) / (с^ 2 * b * с* Log(5) – Exp(4 * x)) End Function

1.6 Задания для самостоятельного программирования арифметических выражений

Составитьподпрограмму-функциюдлявычисленияследующихфункций.

1.z =3 x2 ctg(x +1) 0,35 1015

2.y = 3 ctg2x + lg x + 0,47 1011

3.y = 5 tgex 0,35 1017 + sin x

4.z = sin tgx 0,71 1013 + arctgx2 5.

23

5.y = a + 7 b3 + ln x3 + 0,11 105 ctgb

6.Q = sin2 y cos3 x + 5 ln y 0,3 1012

7.y = arctgx2 0,53 1033 + arcsin x

8.y =3 ln cos x + x a+ c + 0,71 1015 + ctg x

9.y = arctg3 x 0,75 1015 + e2x e x + ctg x3

10.y = arcsin3x + ctg2 x + lg x + 5,87 1021

11.S =3 ln cos3 x + x a+ c + 0,71 1015 + lg x

12.y = arctgx2 0,75 1015 +ex ex +ctgx

13.y = ctg2x + cos x +lg x2 +3.5 1011

14.y = arcsin x + ctgx + lg x +8.57 1011

15. y = e x + cos x + ctgx + 0,35 1012 + lg x e x cos x

16.y = ctg2 x + lg x + 0,78 1013 + adcb

17.y = arctgx +0,17 1011 +ctgx +lg x + ca ++db

18.y = arcsin x + 0,37 1012 + lg x + ctgx

19.y = arctgx 0,45 1015 + e x 12 + ctgx

20.

y = 5

 

 

x7

 

 

+ 0,35 1017

+ ctgx + ln2 x

 

 

21.

y =

 

 

x7

 

 

+ 0,78 1018

+ ctgx + lgx

 

 

 

 

22.y = 3 arctgx + ca ++db +ctgx +lg x +0,35 1011

23.y = 3 sinx + arctgx + 0,3 105 + lg x / 2

24.y = 5 cosx + ctgx2 + 0,7 1011 + arctgx

25.

y = 3 cos2 x +

ex ex

+ ctgx + 0,35 1011

+ lg x

 

 

 

 

2

 

 

26.

y = 5 x7 +

 

cos3 x

 

+ ctgx + lg x + 0,7 1013

 

 

 

 

24

II. Алгоритмическая структура «ветвление»

2.1. Операции отношения и логические операции

Операции отношения могут иметь результатом только два значения – True (Истина) и False (Ложь), которые могут быть присвоены переменным типа Boolean (Табл. 1.7).

Таблица 1.7. Операции отношения

Операция

Описание

Операция

 

 

Описание

сравнения

 

сравнения

 

 

 

A = B

Равно. True, если A = B

A > B

 

True, если А больше В

A < > B

True, если A не равно B

A <= B

 

А меньше или равно В

A < B

True, если A меньше B

A >= B

 

А больше или равно В

Например: выражения 25 < > 30

True; 25 < 30

True;

25 > 30

False; Number = 2E+02, тогда

Number

> 100 True.

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

Таблица 1.8 Логические операции

Логическая операция

Действие

A And B

Если связываемые значения имеют значение

 

True, то и результат тоже True

A Or B

Если хотя бы одно из значений A или B будет

 

True, то результат тоже True

Not A

Если A True, то результат False

Операции отношения имеют бóльший приоритет, чем логические операции. Например: если а = 2: b = 2: c = 3, то

a

=

b And a

< > c True;

a

<

b And a

<> c False;

a

=

b Or a

> c True

a

<

b Or a

> c False;

Not (a = b) False.

 

 

 

 

25

2.2. Условный оператор IF … THEN

Линейная форма

Истина

Если условие ТО операторы1 [Иначе операторы2]

Ложь

Например: a = 0: b = 1

IF a < b THEN t = 15: v = 16 ELSE t = 17: v = 17

Результат: t =15, v = 16

Блочная форма IF условие1 THEN Блок операторов 1

ELSEIF условие2 THEN

Блок операторов 2

ELSE

Блок операторов 3

END IF

Например: a = 0: b = 1

IF a < b THEN t = 15: v = 16

ELSE t = 17: v = 17 END IF

Врезультатеработыэтогофрагментапрограммыполучитсяt = 15, v = 16

2.3. Примеры чтения программ с алгоритмом «ветвление»

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

A

1 = z(1; 4)

Function z(a, b) IF b * a < 3 THEN

z = Sqr(a) Mod Sqr(b) ELSE

z = Sqr(a) \ Sqr(b) End If

End Function

26

Решение:

1.Сопоставляем формальные параметры a, b при вызове программы с фактическими значениями, передаваемыми в программу при ее вызове:

a = 1; b = 4.

2.Переходим к выполнению логического оператора

а) b * a 4 1 = 4.

б) Полученное значение 4 меньше трех ?

в) Если ответ «да», то выполняем действия после слова Then(Тогда), в противном случае – после слова Else (Иначе). В данном случае ответ «да», следовательно:

г) z = a Mod b = 1 Mod 2 =1

д) в ячейке A1 появится число 1

Пример 2.2. Программа-процедура сопровождает лист Excel. Оценить какой результат появится после завершения работы программы.

Sub main( ): Call prog (6, 2, 1):End Sub Sub prog (k, i, j)

Pi = Cells(1, 1) a = Pi / k

If a > Pi / 2 Then t = k * Cos(a) Else t = k * Sin(a) Cells(i, j) = t

End Sub

Решение:

1.Процедура main( ) предназначена для вызова программы-процедуры prog() для передачи в п/п фактических параметров. В результате, сопоставляя фактические и формальные параметры, получаем: k = 6; i = 2; j = 1

2.Управление передано п/ф Prog(6, 2, 1)

3.ИзячейкиА1 считываетсязначениепеременнойPi = ПИ() = 3,1415…

4.Рассчитывается переменная a = Pi / 6

5.Переходим к проверке условия в If: a > Pi / 2? Ответ: Нет!. Следовательно, выполняем действия после слова Else (Иначе), а именно:

t = 6 sin π6 = 6 12 = 3.

6. Результат записывается в ячейку Cells(2,1). В ней появляется число

3.

7. Управление возвращается в процедуру main( ), где работа программы заканчивается.

27

Пример 2.3. Составить программу для вычисления неэлементарной функции, заданной выражением:

 

 

x

 

,если x < 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y = x3,если 0 x 5

 

x,если x >5

4

 

 

 

 

 

Решение:

Программируем заданное выражение, пользуясь таблицей стандартных функций (Табл. 4):

Function y(x) If x < 0 Then

y = Sqr(Abs(x))

ElseIf x >= 0 And x <= 5 Then y = x ^ 3

Else: y = x ^ (1 / 4) End Function

2.4. Задания для самостоятельного чтения программ со структурой «ветвление»

На рисунке представлен фрагмент листа Excel. Справа представлен текстподпрограммыфункцииz(а, b). ЧемубудетравенрезультатвячейкеС1?

Задание 1.

 

A

B

C

1

2250,0E–01

1,21E+02

= z(7;5)

Задание 2.

 

A

B

C

1

103,0E–01

0,03E+02

=z(3;2E-02)

 

 

 

 

Function z(a, b)

x = Cells(1, 1): y = Cells(1, 2) If a * b < 3.5E+01 Then

z = Sqr(x) Mod Sqr(y) Else

z = Sqr(x) \ Sqr(y) End If

End Function

Function z(t, u)

x = Cells(1, 1): y = Cells(1, 2) If t/u>2E+01 Then

z=x*y

Else z=x \ y End If

End Function

 

 

 

28

Задание 3.

 

 

 

A

B

C

1

1000,0E–01

0,49E+02

=z(4E0;20E-01)

Задание 4.

 

A

B

C

1

203,0E–01

0,051E+02

=z(6E+11;3E-02)

Function z(a, b)

x = Cells(1, 1): y = Cells(1, 2) If b / a < 3 Then

z = Sqr(x) Mod Sqr(y) Else

z = Sqr(x) \ Sqr(y) End If

End Function

Function z(t, u)

x = Cells(1, 1): y = Cells(1, 2) If t/u < 2E+03 Then

z=x*y

else z=x \ y End If

End Function

Задание 5. Прочесть программу и определить, где на листе Excel и какой результат появится после ее выполнения.

Sub main(): Cells(1, 2) = prog4( - 6.6E+02;2): End Sub Function prog4(c; k)

If c < 0 Then t = k * Abs(c) Else t = k *Sqr(c) prog4 = t

End Function

Задание 6. Прочесть программу и определить, где на листе Excel и какой результат появится после ее выполнения.

Sub a(): t = prog1(-1, 0.2, 1, 1): End Sub Function prog1(a, b, i, j)

If a * b <= 0 Then t = a * Exp(b) Else t = a * Sqr(Abs(b)) Cells(i, j) = a * b

prog1 = t End Function

В следующих заданиях на рисунках представлен фрагмент листа Excel. Справа представлен текст программ. Где на листе Excel и какой результат появится после их выполнения?

Задание 7.

Sub main(): Call prog2(2, 1, 3):End Sub

 

sub prog2(k, i, j)

 

PiK = Cells(1, 1):a = PiK / k

 

If a < Pi Then t = k * Tan(a) Else t = k * Tan(a) ^ 2

 

Cells(i, j) = t

 

End Sub

Задание 8.

Задание 9.

Задание 10.

29

Sub main(): Cells(1, 2) = prog3(3.4E+02): End Sub Function prog3(c)

a = Cells(1, 1)

If a < > 0 Then t = c / a Else t = c / Exp(a) prog3 = t

End Function

Function Чет_нечет (m) As String If m Mod 2 = 0 Then

t$ = "Четное число"

Else: t$ = "Нечетное число" End If

Чет_нечет = t$ End Function

Function Кратность(m%, n%) As String If m% Mod n% = 0 Then

t$ = "Числа кратные"

Else: t$ = " Числа не кратные " End If

Кратность = t$ End Function

2.5. Задания для самостоятельного программирования неэлементарных математических функций

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

 

 

x3 ,

x 1

 

 

x,

 

x 2

 

 

 

 

 

 

 

 

 

3

 

 

1.

y =

 

4 , 1

< x <10

2.

y =

 

, 3

x > 2

x

x

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

5

,

x 10

 

 

 

,

x >3

 

 

x

 

 

 

x

 

 

 

 

 

 

 

 

 

x,

 

5 < x <10

 

 

5x,

x < 0

 

 

 

 

y =

 

 

 

 

 

y =

 

2 ,

x 10

3.

6x, 5 x 0

4.

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

3

 

 

 

 

 

,

x > 5

 

 

 

,

x 5

 

 

x

 

 

 

x

 

 

x 1,

 

x 0

 

 

+5,

 

1 < x < 0

5.

y = x

 

 

 

7,

 

x ≤ −1

 

x

 

 

1,

 

 

 

x < 0

 

 

 

 

0

x 3

7.

y = 2,

 

 

 

 

 

 

x > 3

 

3,

 

 

 

sin x,

 

x < 0

 

 

 

 

 

 

30 x 0

9.

y = cos x,

 

 

 

 

 

 

 

x > 30

 

tgx,

 

 

 

x,

 

 

x 1

 

 

 

 

 

 

 

11.

 

2 ,

1 < x < 2

y = x

 

 

3

 

 

 

 

 

 

,

 

 

x 2

 

x

 

 

 

 

x,

 

 

x < 5

 

 

 

 

 

 

 

13.

 

2 ,

10 x 5

y = x

 

 

3

 

 

 

 

 

 

,

 

 

x >10

 

x

 

 

 

 

x 1,

 

x 0

 

 

2,

 

1 x > 0

15.

y = x

 

 

 

3,

 

x >1

 

x

 

 

x 1,

 

x 2

 

 

 

 

 

 

 

17.

 

2 + 2,

3 x > 2

y = x

 

 

3

 

 

 

 

 

 

+3,

x > 3

 

x

 

 

sin x,

 

x 0

 

 

 

 

 

 

45 x > 0

19.

y = cos x,

 

 

 

 

 

 

 

x > 45

 

ctgx,

 

30

cos x,

6. y = sin x,

сtgx,

ex ,

y = ex ,

8.

1,

cos x,

10. y = sin x,

ctgx,

x,

y= x 1,

x2 ,

 

x,

 

 

 

 

 

14.

 

2 ,

y = x

 

 

3

 

 

 

,

 

x

 

 

x 1,

 

 

2,

16.

y = x

 

 

3,

 

x

 

x,

 

 

 

 

18.

 

2 ,

y = x

 

 

 

 

 

x,

 

 

 

 

 

 

x2 ,

 

 

 

 

20.

 

 

 

y = x3,

 

 

4 ,

 

x

 

 

 

 

x 0

x π/ 2

π/ 2 > x > 0

x>1 x < −1

1 x 1

x0

xπ

0 < x < π

0 < x <1

x1

x0

x10

10 < x <15

x15

1 < x < 0 x > 0

x≤ −1

x< 0

0 x 20 x > 20

0 x 15

x>15

x< 0