Referat.me

Название: Завдання з програмування на Visual Basic

Вид работы: лабораторная работа

Рубрика: Информатика и программирование

Размер файла: 35.46 Kb

Скачать файл: referat.me-135027.docx

Краткое описание работы: Обчислення наближеного значення суми спадного ряду. Складання блок-схеми та програми, яка б виводила на друк сгенерований, сформований та впорядкований масиви. Використання операторів умовного переходу If - Then - Else. Розроблення програми на VBA.

Завдання з програмування на 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

Похожие работы

  • Теорія множин. Операції над множинами та їх властивості

    Теоретичні основи теорії множин. Основні операції над множинами та їх властивості. Складання програми для обчислення результуючої множини за вихідним і спрощеним виразами. Виконання операцій над множинами, застосування їх властивостей, спрощення виразів.

  • Розроблення програми на мові С для OS Windows

    Технічне обґрунтування та етапи розроблення програми на мові С для OS Windows, яка виводить у вікно запропонованої таблиці інформацію при натисненні клавіш клавіатури. Проблеми систем програмування. Резервування додаткової пам’яті в структурi класу вiкна.

  • Програма HelloWin

    Опрацювання роботи програми HelloWin, яка демонструє основні принципи створення вікна у OS Windows. Вивчення матеріалу, викладеного у файлі допомоги. Використання функцій для створення вікна, відображення у ньому тексту, відтворення звукових файлів.

  • Проектування ітераційних алгоритмів

    Використання ітерацій для обчислення приблизних значень величин. Розробка ітераційних алгоритмів з перевіркою правильності введення даних. Побудова блок-схеми і програмування мовою Turbo Pascal обчислення значення функції, розкладеної в степеневий ряд.

  • Складання сценаріїв в операційній системі LINUX

    Знайомство із текстовою операційною оболонкою bash, вивчення мови програмування оболонки bash та практичне складання найпростіших сценаріїв за допомогою редактора vi (vim). Створення файла сценарію. Змінні середовища, оператор-перемикач та оператор циклу.

  • Оцінка трудомісткості алгоритму

    Засвоєння засобів аналізу трудомісткості обчислювальних алгоритмів. Побудова графа алгоритму з отриманої блок-схеми. Мінімізація графа, його подання у вигляді стохастичної матриці. Знаходження кількості звернень до файлів за допомогою Microsoft Excel.

  • Елементи та структура програми мови Паскаль

    Загальні відомості про мову програмування, історія створення та використовування. Програма мовою Паскаль складається з лексем і символів – розділювачів. Робота з масивами, створення алгортимів. Складання програм з використанням процедур та функцій.

  • Програмування алгоритмічною мовою VBA

    Розв'язання задач мовою програмування VBA з використанням алгоритмів лінійної, розгалуженої та ітераційної циклічної структури. Розробка блок-схеми алгоритму, таблиці ідентифікаторів та тексту програми. Створення власної панелі інструментів користувача.

  • Алгоритмічні мови програмування

    Блок-схема та програма обчислення значення функції y=f(x) у точці x0. Обчислення двох значень поліному з використанням схеми Горнера. Програма табуляції функції Y на проміжку [a,b] з шагом h. Програма визначення нульових елементів квадратної матриці.

  • Визначення площі між функціями інтегралом за методом трапеції на мові Pascal

    Складання програми на мові Pascal розрахунку за методом трапецій площі між графіками функцій. Розрахунок за методом трапецій площі між графіками функцій. Алгоритм програми. Кількість відрізків, на які розбивається дільниця інтегрування. Межа інтегрування.