Завдання з програмування на Visual Basic

Тип работы:
Практическая работа
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Завдання з програмування на VBA

2009 рiк

Завдання 1

Обчислити суму перших 5-ти членiв арифметичної прогресiї за формулами:

Sn = n*(a1 + an)/2,

a1 = 1,3*x2 + 4,8*cos2y,

an = a1 + d*(n-1),

де n = 5, y = 1,87, d = 5,83, x = e2,5.

Розв’язок

Програмуємо вiдповiдну програму на VBA, спочатку декларуючи потрiбнi змiннi, а потім задаючи їхні значення. Далi програмуємо задані розрахункові формули. Для виводу результату розрахунку в документ Word застосовуємо оператор WordBasic. Insert. Нижче наведений текст програми Завдання1, скопійований з редактора Visual Basic for Application.

Attribute VB_Name = «Модуль1»

'Iгор Каплик — жовтень, 2006 р.

Sub Завдання1()

Dim S, a1, an, x, y, d

Dim n

n = 5

d = 5. 83

y = 1. 87

x = Exp (2. 5)

a1 = 1.3 * x ^ 2 + 4.8 * Cos (y) ^ 2

an = a1 + d * (n — 1)

S = n * (a1 + an) / 2

WordBasic. Insert «Sn = «

WordBasic. Insert Str (S)

End Sub

Для виклику цієї програми на виконання iз середовища Word набираємо Сервіс > Макрос > Макроси > Завдання1 > Выполнить, або (Alt+F8) > Завдання1 > Выполнить. В результаті отримаємо таке: Sn = 1025. 7 072 799 505

Завдання 2

Задано дiйснi числа а, b, с (а? 0). Знайти дiйснi корені рівняння

ax2 + bx + c = 0.

Якщо дiйснiх коренів немає, на друк вивести повідомлення «Корені комплексні».

Розв’язок

Рішення цього повного квадратного рівняння виражаються формулою:

x1,2 = (-b ± D½) / 2a,

де D = b2 — 4ac -- детермінант. Якщо D < 0, то рівняння не має дійсних коренів.

У вiдповiдностi з цим i програмуємо це завдання з використанням операторів умовного переходу If… Then… Else. Оскільки в умові завдання не сказано про конкретні значення коефiцiєнтiв рівняння, будемо задавати їх всередині програми довільно.

Текст програми Завдання2 наведений нижче.

Attribute VB_Name = «Модуль2»

'Iгор Каплик — жовтень, 2006 р.

Sub Завдання2()

Dim X1, X2, D, a, b, c

a = 5

b = 7

c = -10

D = b ^ 2 — 4 * a * c

If D >= 0 Then

X1 = -b + Sqr (D): X2 = -b — Sqr (D)

WordBasic. Insert «X1 = «

WordBasic. Insert Str (X1)

WordBasic. ParaDown

WordBasic. Insert «X2 = «

WordBasic. Insert Str (X2)

Else: WordBasic. Insert «Корені рівняння комплексні!»

End If

End Sub

Задаючи значення a = 5, b = 7, c = -10, отримаємо таку вiдповiдь:

X1 = 8. 7 797 338 380 595

X2 = -22. 7 797 338 380 595

Якщо ж задати значення a = 5, b = 7, c = 10 отримаємо вiдповiдь:

Корені рівняння комплексні!

Завдання 3

Скласти блок-схему та програму для обчислення вiдповiдних кожному варіанту виразів. Завдання виконати для таких варiантiв:

а) Змінна у при повтореннях циклу змінюється вiд початкового значення у = 1 до кінцевого у = 9 з кроком 1.

б) Змінна у, що змінюється при повтореннях циклу, є одновимірним масивом у = {1,5; 3; 0,6; 0,9}.

Вивести початкові дані та результати обчислень у вигляді таблиці значень X, P, Z, де:

X = (ln y + a*cos c) / (ey — tg a — sin2 c)

sin X + |X — y|½ * sin2 b при X > у

P = 1,35 * X2 при X = у

ln |X + 1,45y| * tg (bc) при X < у

Z = P + 0,5b2 + cos (P — a)

а = 4,32; b = 6,89; c = 17½

Розв’язок

Не дивлячись на те, що варіанти а) i б) представляють собою два окремих завдання, ми їх поєднаємо в одній програмі. Для цього нам буде потрібно ввести такі допомiжнi змiннi:

n -- кiлькiсть повторень циклу: для а) n = 9, для б) n = 4;

t (n) -- масив значень змінної у;

i -- лічильник: для а) i = 1, 2, …, 9, для б) i = 1, 2, 3, 4;

var$ -- строкова константа, яка може приймати значення «а)» або «б)» в залежності вiд вибраного варіанту розрахунків.

Блок-схема програми Завдання3 наведена на рисунку.

Масив t (n) заповнюється в залежності вiд значення константи var$, яке вводиться у вiкнi InputBox «Номер варіанта розрахунку», показаному на рисунку нижче.

Нижче наведений текст програми Завдання3.

Attribute VB_Name = «Модуль3»

'Iгор Каплик — жовтень, 2006 р.

Sub Завдання3()

Dim x, z, p, a, b, c, y, t (9), var$

Dim n, i

a = 4. 32

b = 6. 89

c = Sqr (17)

var$ = InputBox («Введiть значення а) чи б) для номера варіанта» & var$,

«Номер варiанта розрахунку»)

If var$ = «» Then GoTo EndSub

WordBasic. Insert «a =» & Str (a): WordBasic. InsertPara

WordBasic. Insert «b =» & Str (b): WordBasic. InsertPara

WordBasic. Insert «c =» & Str (c): WordBasic. InsertPara

If var$ = «a)» Then n = 9

For i = 1 To n t (i) = i

Next

End If

If var$ = «б)» Then n = 4

t (1) = 1. 5: t (2) = 3: t (3) = 0. 6: t (4) = 0. 9

End If

WordBasic. Insert «Варiант — «& var$ & «; n =» & Str (n)

WordBasic. InsertPara: WordBasic. Insert «y = «

For i = 1 To n

WordBasic. Insert Str (t (i)) & «; «

Next

WordBasic. InsertPara: WordBasic. InsertPara

WordBasic. Insert «| y | x | p | z |»

WordBasic. InsertPara

For i = 1 To n

y = t (i)

x = (Log (y) + a * Cos (c)) / (Exp (y) — Tan (a) — Sin© ^ 2)

If x > y Then p = Sin (x) + Sqr (Abs (x — y)) * Sin (b) ^ 2

If x = y Then p = 1. 35 * x ^ 2

If x < y Then p = Log (Abs (x + 1. 45 * y)) * Tan (b * c)

z = p + 0.5 * b ^ 2 + Cos (p — a)

WordBasic. Insert Str (y) & «|» & Str (x) & «|» & Str (p) & «|» _

& Str (z) & «|»

WordBasic. InsertPara

Next

End Sub

При виборі варіанта а) отримаємо такий результат:

a = 4. 32

b = 6. 89

c = 4. 12 310 562 561 766

Варіант — a); n = 9

y = 1; 2; 3; 4; 5; 6; 7; 8; 9;

y| x | p | z |

1| 6. 16 921 036 251 777 |. 625 618 747 883 335| 23. 5 106 051 035 047|

2|-. 398 860 206 108 572 |. 123 457 564 548 993| 23. 3 662 361 501 907|

3|-7. 6 704 447 202 1885E-02|. 195 591 633 792 759| 23. 3 769 597 339 635|

4|-1. 9 704 767 507 6656E-02|. 236 271 096 733 771| 23. 3 842 595 618 880|

5|-5. 4 469 202 884 6779E-03|. 266 678 755 930 375| 23. 3 903 486 513 538|

6|-1. 5 216 451 450 1239E-03|. 291 309 521 209 447| 23. 3 956 949 504 055|

7|-4. 1 608 197 883 4523E-04|. 312 086 912 073 758| 23. 4 005 023 378 817|

8|-1. 795 200 824 8923E-04|. 330 073 751 199 657| 23. 4 048 895 849 838|

9|-2. 5 145 987 772 5051E-05|. 345 936 497 380 926| 23. 4 089 361 125 556|

При виборі варіанта б) розрахунку результат буде іншим:

a = 4. 32

b = 6. 89

c = 4. 12 310 562 561 766

Варіант — б); n = 4

y = 1. 5; 3;. 6;. 9;

y | x | p | z |

1. 5|-1. 45 204 156 144 273 |-. 4 368 718 002 541 | 23. 3 506 847 944 415|

3 |-7. 6 704 447 202 1885E-02|. 195 591 633 792 759| 23. 3 769 597 339 635|

.6 | 2. 26 534 231 611 546 | 1. 18 799 513 455 253| 23. 9 240 910 970 412|

.9 | 3. 86 856 538 687 228 |-. 104 324 993 260 116| 23. 3 476 284 888 521|

Завдання 4

Обчислити наближене значення суми спадного ряду

S (t) = У hn(t), n = 1? ?,

hn(t) = [(n-1)/(n+1)]n (n-1)*(t2-1,6)½/(4,8c2+cos d)

з точністю е = 10-5 для значень параметру t0? t? t1 iз кроком Дt.

Точність обчислень визначається умовою R = |hn(t)|? е. При розробці програми передбачити переривання обчислень при n > n0 на випадок, якщо виконання умови R? е не відбудеться при прогумованих n0 членів ряду, де n0 -- обмежувач просумованих членів ряду.

Вихiднi дані:

с = 2,9; d = 0,41; t0 = 2,5; t1 = 3,5; Дt = 0,01

Розв’язок

Визначимо обмежувач просумованих членів ряду:

n0 = (t1 — t0) / Дt = (3,5−2,5)/0,01 = 100

Нижче наведена програма Завдання4 даного завдання на язику VBA. Для забезпечення безумовного виходу з програми ми використали мітку EndSub. Щоб простежувати процес обчислень, ми вивели на друк поточні значення величин n, t, hn та Sn.

Attribute VB_Name = «Модуль4»

'Iгор Каплик — жовтень, 2006 р.

Sub Завдання4()

Dim c!, d!, t0!, t!, t1!, dt!, ht!, S!, eps!, n, n0

c! = 2. 9: d! = 0. 41: t0! = 2. 5: t1 = 3. 5: dt = 0. 01

eps! = 0. 1: n0 = (t1! — t0!) / dt n = 0: S = 0

WordBasic. Insert «n t hn Sn»

WordBasic. InsertPara

For t! = t0! To t1! Step dt

n = n + 1

If n = n0 Then GoTo EndSub

ht! = ((n — 1) / (n + 1)) ^ (n * (n — 1)) * _

Sqr (t ^ 2 — 1. 6) / (4.8 * c ^ 2 + Cos (d))

S! = S! + ht!

WordBasic. Insert Str (n) & «; «& Str (t!) & «; «& _

Str (ht!) & «; «& Str (S!)

WordBasic. InsertPara

If ht! <= eps! Then GoTo EndSub

Next

EndSub: End Sub

Після виклику програми на виконання отримаємо такі результати:

n t hn Sn

1; 2. 50; 5. 22 3155E-02; 5. 22 3155E-02

2; 2. 51; 5. 83 4686E-03; 5. 80 6623E-02

3; 2. 52; 8. 24 8814E-04; 5. 88 9111E-02

4; 2. 53; 1. 15 5269E-04; 5. 90 0664E-02

5; 2. 54; 1. 60 4442E-05; 5. 90 2269E-02

6; 2. 55; 2. 21 6024E-06; 0. 590 249

Завдання 5

Скласти блок-схему та програму для персонального комп’ютера за такої умови. Задано масив Х = {x} з n = 20 чисел:

Х = {-20; 15; 3; -9; 7; -6; 14; -13; 6; -7;

9; -12; 5; 7; -2; 17; 10; -1; 16; -3}

Знайти мiнiмальне по модулю значення х та його номер k.

Розв’язок

Блок-схема даного алгоритму представлена нижче на рисунку.

Нижче наведена розроблена програма на VBA.

Attribute VB_Name = «Модуль5»

'Iгор Каплик — жовтень, 2006 р.

Sub Завдання5()

Dim x (20), t, i, k

x (1) = -20: x (2) = 15: x (3) = 3: x (4) = -9: x (5) = 7

x (6) = -6: x (7) = 14: x (8) = -13: x (9) = 6: x (10) = -7

x (11) = 9: x (12) = -12: x (13) = 5: x (14) = 7: x (15) = -2

x (16) = 17: x (17) = 10: x (18) = -1: x (19) = 16: x (20) = -3

t = Abs (x (1))

For i = 2 To 20

If Abs (x (i)) < t Then

t = Abs (x (i)): k = i

End If

Next

WordBasic. Insert «Мiнiмальне абсолютне значення — х =» & Str (t) & _

"; k =" & Str (k)

End Sub

Після виклику програми Завдання5 на виконання отримаємо такий результат:

Мiнiмальне абсолютне значення — х = 1; k = 18

Завдання 6

Скласти блок-схему та програму, яка б виводила на друк сгенерований, сформований та впорядкований масиви. Генерувати i вивести на друк одновимірний масив Х = {xi}, i = 1? n, n = 13 в дiапазонi цілих чисел [-30; 40]. Сформувати i вивести на друк масив Y iз елементів масиву Х, які стоять на парних місцях. Впорядкувати масив Y за спаданням модулів його елементів.

Розв’язок. Масив Х має 13 елементів, з яких х1 = -30, хn = 40, а iншi змінюються вiд х1 з кроком величин dx = (хn — х1) / (n — 1).

Формування масиву Z за спаданням модулів елементів масиву Y представляє собою процедуру сортування, для реалiзацiї якої є багато різних спецiалiзованих підпрограм. Але тут ми реалізуємо найпростіший алгоритм сортування вибором. Блок-схема алгоритму програми Завдання6 представлена на рисунку нижче.

Текст програми Завдання6, скопійований з редактора Visual Basic, наведений нижче.

Attribute VB_Name = «Модуль6»

'Iгор Каплик — жовтень, 2006 р.

Sub Завдання6()

Dim x!(13), y!(6), z!(6), dx!, x1!, xn!, v!, n, m, i, j, k

n = 13: m = n / 2

x1! = -30: xn! = 40

dx! = (xn! — x1!) / (n — 1)

x!(1) = x1!

WordBasic. Insert «Масив Х: «: WordBasic. InsertPara

WordBasic. Insert Str (x!(1)): WordBasic. InsertPara

For i = 2 To n

x!(i) = x!(i — 1) + dx!

WordBasic. Insert Str (x!(i)): WordBasic. InsertPara

Next

WordBasic. InsertPara

WordBasic. Insert «Масив Y: «: WordBasic. InsertPara

For i = 1 To m

y!(i) = x!(2 * i): z!(i) = y!(i)

WordBasic. Insert Str (y!(i)): WordBasic. InsertPara

Next

WordBasic. InsertPara

WordBasic. Insert «Масив Z: «: WordBasic. InsertPara

For i = 1 To m

k = i

For j = i + 1 To m

If Abs (z!(j)) > Abs (z!(k)) Then

k = j: v! = z!(i): z!(i) = z!(k): z!(k) = v!

End If

Next

WordBasic. Insert Str (z!(i)): WordBasic. InsertPara

Next

End Sub

Після виклику програми Завдання6 на виконання отримаємо такi результати:

Масив Х:

-30

-24. 16 667

-18. 33 333

-12. 5

-6. 666 665

-. 8 333 311

5. 2

10. 83 334

16. 66 667

22. 5

28. 33 334

34. 16 667

40

Масив Y:

-24. 16 667

-12. 5

-. 8 333 311

10. 83 334

22. 5

34. 16 667

Масив Z:

34. 16 667

-24. 16 667

22. 5

-12. 5

10. 83 334

-. 8 333 311

Завдання 7

Скласти блок-схему та програму. Задано масив Y = {yi}, i = 1? n, n = 8. Обчислити середнє арифметичне елементів цього масиву, менших заданого числа А. Розв’язок

Оскільки в завданні не вказані числа уi та А, візьмемо їх довільно:

Y = {-2; 15; 3; -9; 7; -6; 14; -13}, А = 6

Програма буде складатися з алгоритму вибору з масиву Y елементів yk, менших А, i обчислення їх середнього арифметичного С за формулою:

С = У yk / n, k = 1? n,

де n -- кiлькiсть елементів масиву Y, менших А.

Блок-схема програми Завдання7 наведена на рисунку вище.

Текст програми Завдання7 наведено нижче.

Attribute VB_Name = «Модуль7»

'Iгор Каплик — жовтень, 2006 р.

Sub Завдання7()

Dim y!(8), a!, c!, i, j, k

y!(1) = -2: y!(2) = 15: y!(3) = 3: y!(4) = -9

y!(5) = 7: y!(6) = -6: y!(7) = 14: y!(8) = -13

n = 8: a! = 5

k = 0: c! = 0

For i = 1 To n

If y!(i) < a! Then c! = c! + y!(i): k = k + 1

End If

Next c! = c! / k

WordBasic. Insert «Середнє арифметичне С = «& Str (c!)

WordBasic. Insert «, k =» & Str (k)

End Sub

Після виклику програми на виконання отримаємо такий результат:

Середнє арифметичне С = -5. 4, k = 5

ПоказатьСвернуть
Заполнить форму текущей работой