Контрольная работа по предмету "Информатика, программирование"


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

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


2009 рiк



Завдання 1


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


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


a1
= 1,3*x2
+ 4,8*cos2
y,


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.07072799505


Завдання 2


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


ax2
+ bx + c = 0.


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


Розв'язок


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


x1,2
= (-b ± D1/2
) / 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.7797338380595


X2 = -22.7797338380595


Якщо ж задати значення 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|1/2
* 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 = 171/2


Розв'язок


Не дивлячись на те, що варіанти а) 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)" Thenn = 9


For i = 1 To nt(i) = i


Next


End If


If var$ = "б)" Thenn = 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(c) ^ 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.12310562561766


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


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


y|x | p | z |


1| 6.16921036251777 | .625618747883335| 23.5106051035047|


2|-.398860206108572 | .123457564548993| 23.3662361501907|


3|-7.67044472021885E-02| .195591633792759| 23.3769597339635|


4|-1.97047675076656E-02| .236271096733771| 23.3842595618880|


5|-5.44692028846779E-03| .266678755930375| 23.3903486513538|


6|-1.52164514501239E-03| .291309521209447| 23.3956949504055|


7|-4.16081978834523E-04| .312086912073758| 23.4005023378817|


8|-1.07952008248923E-04| .330073751199657| 23.4048895849838|


9|-2.51459877725051E-05| .345936497380926| 23.4089361125556|


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


a = 4.32


b = 6.89


c = 4.12310562561766


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


y = 1.5; 3; .6; .9;


y | x | p | z |


1.5|-1.45204156144273 |-.04368718002541 | 23.3506847944415|


3 |-7.67044472021885E-02| .195591633792759| 23.3769597339635|


.6 | 2.26534231611546 | 1.18799513455253| 23.9240910970412|


.9 | 3.86856538687228 |-.104324993260116| 23.3476284888521|


Завдання 4


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


S(t) = Σ
hn
(t), n = 1 ÷ ∞,


hn
(t) = [(n-1)/(n+1)]n(n-1)
*(t2
-1,6)1/2
/(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.00001: n0 = (t1! - t0!) / dtn = 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 thn
Sn


1; 2.50; 5.223155E-02; 5.223155E-02


2; 2.51; 5.834686E-03; 5.806623E-02


3; 2.52; 8.248814E-04; 5.889111E-02


4; 2.53; 1.155269E-04; 5.900664E-02


5; 2.54; 1.604442E-05; 5.902269E-02


6; 2.55; 2.216024E-06; 0.0590249


Завдання 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.16667


-18.33333


-12.5


-6.666665


-.8333311


5.000002


10.83334


16.66667


22.5


28.33334


34.16667


40


Масив Y:


-24.16667


-12.5


-.8333311


10.83334


22.5


34.16667


Масив Z:


34.16667


-24.16667


22.5


-12.5


10.83334


-.8333311


Завдання 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! Thenc! = c! + y!(i): k = k + 1


End If


Nextc! = c! / k


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


WordBasic.Insert ", k =" & Str(k)


End Sub


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


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



Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :