Оператор Select Case


Приклад використання оператора множинного вибору. Розглянемо використання оператора множинного вибору Select Case на прикладі обчислення денного заробітку робітника з врахуванням тарифу і тарифного розряду. Код і форма відображені на рис. 3.8.

На формі розмістимо командну кнопку, яку перейменуємо на «Пуск» та відповідно змінимо напис на ній.

Подією для програмування оберемо клацання лівою кнопки миші на кнопці Пуск.

Для вибору тарифного коефіцієнта за розрядом використаємо оператор Select Case r.

Параметр вибору r може приймати 7 різних значень тож використання множинного оператора вибору значно зручніше ніж багаторазове використання лінійної форми умовного оператора If.

If r=1 then k=1

If r=2 then k=1.1

………………….

If r=7 then k=2.2

 

Private Sub Пуск_Click()

Dim Z!, r%, t!, tr!, k!

Т = Val(InputBox("Т", "Укажіть тариф"))

r = Val(InputBox("r", "Тарифний розряд"))

tr = Val(InputBox("tr", "Відпрацьований час"))

Select Case r

Case 1: k = 1: Case 2: k = 1.1: Case 3: k = 1.35:

Case 4: k = 1.5: Case 5: k = 1.7: Case 6: k = 2:

Case 7: k = 2.2

End Select

Z = t * tr * k

Print "Тариф Т=" & Т; " Грн/годину"

Print "Розряд r=" & r

Print "k=" & k

Print " Відпрацьовано tr=" & tr & " Годин"

Print "Заробіток Z=" & Z & " Грн."

End Sub

 

Рисунок 3.8. Результат обчислень заробітку

 

В вище розглянутому додатку запрограмовано подію, якою є щиглик на командній кнопці Пуск, єдиному елементу інтерфейсу встановленому на формі. Введеня даних здійснюється за допомогою функції InputBox, а фіксація їх і результату виконується безпосереднім виведенням на форму за допомогою оператора Print.

4.2. ПРОЕКТУВАННЯ ДОДАТКА НА БАЗІ ОПЕРАТОРІВ ЦИКЛУ

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

Розрізняють цикли, де число повторень заздалегідь відоме (арифметичні) і такі цикли, де число повторень заздалегідь невідоме, але його можна визначити під час виконання циклу (ітераційні).

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

Цикл в програмі можна організувати за допомогою операторів циклу For...Next, While…Wend, Do...Loop.

 

4.3. ОПЕРАТОРИ УМОВНОГО ЦИКЛУ

 

Умовний цикл одержав свою назву через те, що при кожному повторенні превіряється виконання умови, і рішення про подальші дії приймається залежно від результатів перевірки.

Оператор циклу While…Wend

Синтаксис:

While<умова>

<Група операторів>

Wend

де умова – логічний вираз, який оцінюється як істина (1), або хибність (0).

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

Допускається використання вкладених циклів. При цьому кількість операторів While і відповідних їм Wend повинна збігатись.

Приклад.Обчислити:

Створимо форму без жодного постійного елемента керування. Подія для програмування – завантаження форми.

Private Sub Form_Load()

Dim I%, n%, S!

N=InputBox(“n=”)

I=1: S=0

While I <=n

S=S+cos(i)/(I+1)^3

I=I+1

Wend

MsgBox (“S=”+Str(S))

End

End Sub

 

Оператор циклу Do…Loop

Поряд з операторами For…Next та While…Wend застосовується більш сучасний оператор циклу Do…Loop, що має два можливих формати: з верхнім і нижнім закінченням.

Першому формату відповідає наступний синтаксис:

Do {While/Until}<умова>

<група операторів >

[Exit Do]

Loop

Конструкція {While/Until} означає, що використовується тільке одне з ключових слів: або While (Поки),або Until (До).

При такій формі запису спочатку здійснюється перевірка умови повторення циклу і якщо вона не виконується, то цикл ні разу не виконується. Фрагменти While/Until мають умови, що визначають вихід з циклу чи його повторення. В конструкції While записується умова, хибність якої визначає вихід з циклу – перехід до оператора, що йде за оператором циклу, тобто після слова Loop. Хибність логічного виразу (умови) в конструкції Until визначає повторення циклу, яке здійснюється до її виконання, після чого відбувається вихід з циклу.

Другому формату відповідає синтаксис

Do

<група операторів>

[Exit Do]

Loop {While/ Until} <умова>

де <умова> – логічний вираз, який може приймати два значення: істина (не 0), або хибність (0);

While – виконання циклу, поки умова істина;

Until – виконання циклу, поки умова хибна:

Дія: У цій формі запису спочатку виконується група операторів (тіло циклу), після чого виконується перевірка умови повторення циклу. Таким чином, цей цикл завжди виконується хоча б один раз.

Цикл з нижнім закінченням вживається тоді, коли оператори тіла циклу повинні виконуватися хоча б один раз, а з верхнім – навіть жодного.

Серед операторів тіла циклу може бути оператор Exit Do,що забезпечує негайний вихід з циклу (до досягнення ключового слова Loop)

Приклад. Обчислити суму спадного ряду, використовуючи усі можливі варіанти використання оператора Do…Loop.

з точністю ε=10-5

Наведемо 4 варіанти реалізації циклу Dо Loop для обчислення суми ряду.

Варіант 1

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

s=0: k=1: e=0.00001

Do

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop While Abs(h) >e

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Варіант 2

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

s=0: k=1: e=0.00001:h=1

Do While Abs(h) > e

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Варіант 3

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

s=0: k=1: e=0.00001

Do

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop Until Abs(h) >e

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Варіант 4

Private Sub Комманда1_Click()

Dim s!, e!, h! , k%

S=0: k=1: e=0.00001:h=1

Do Until Abs(h) < e

h=sin(k)/(k^3+3)

s=s+h

k=k+1

Loop

Print “k=”; k, “s=”; s, “h=”, h

End Sub

Приклад. Розглянемо задачу економічного характеру.

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

Для визначення загальної вартості покупок необхідно врахувати вартість кожного виду товару відібраного покупцем, для чого потріно знати його ціну і кількість. Продавці звичайно ведуть облік проданих товарів, тому крім ціни і кількості передбачимо введення назви товару (або його коду). Кодом може слугувати порядковий номер товару в спискові товарів цього магазину чи відділу. Отримані відомості бажано зберегти на дискові в файлі послідовного чи безпосереднього доступу. Маючи це на увазі, розмістимо на формі три елементи ListBox (Списки), в які будемо заносити дані про покупки.

В Список1 запишемо коди, в Список2 – Ціни (Грн.), в Список3 –кількість. Над списками розмістимо відповідні мітки. Вводити дані будемо за допомогою функції InputBox, запитання до покупця і підсумок будемо виводити за допомогою функції MsgBox. Розмістимо на формі ще командну кнопку, яку перейменуємо на Обчислити, змінивши відповідно надпис на ній. За подію для програмування виберемо щиглик на кнопці Обчислити. Оскільки Ціна і Вартість S повинні подаватися в горшових одиницях, то оголошуємо їх As Currency, кількість оголошуємо числом одинарної точності (As Single), код товару відображується цілим числом (As Integer).

Код процедури має вигляд:

Private Sub Обчислити_Click()

Dim Код As Integer, Ціна As Currency, S As Single, i As Integer

S=0: ‘ Загальна вартість

i=0 ‘ номер покупки

Do While MsgBox(“Будуть ще покупки?”, vbQuestion + _ vbYesNo, “Покупки”)=vbYes

i=i+1

Код=Val(InputBox(“Введіть ціну”, i & “ –го товару”))

Ціна=CCur(InputBox(“Введіть ціну”, i & “ –го товару”))

Кількість=Val(InputBox(“Введіть ціну”, i & “ –го товару”))

Список1. AddItem Код

Список2. AddItem Ціна

Список3. AddItem Кількість

S=S+Ціна*Кількість

Loop

MsgBox “Вартість всіх покупок “ & Format( S, “0.00”) & “Грн.”

End Sub

 

Рисунок 3.10. Результат дії додатку Покупки


4.4. ОПЕРАТОР ЦИКЛУ FOR...NEXT

Синтаксис:

For х=х0 То xn [ Step h ]

<Група операторів>

[Exit For]

Next x,

де х – параметр циклу;

xo, xn, h – арифметичні вирази, значення яких визначають:

x0 – початкове значення параметра циклу;

xn – кінцеве значення параметра циклу;

h – крок, з яким змінюється параметр циклу. Якщо h=1,то Step h не пишеться. Exit For використовується в разіі необхідності дострокового виходу з циклу.

Дія оператора. При виконанні оператора циклу For...Next в першу чергу обчислюється (якщо це необхідно) і запам'ятовується початкове значення (x0), кінцеве значення (хn) та крок зміни (h) параметра циклу. Параметру циклу присвоюється початкове значення (х=х0) і перевіряється умова, чи перевищує значення параметра циклу х значення xn. Якщо значення параметру циклу знаходиться в інтервалі між початковим та кінцевим значенням, виконуються оператори, що знаходяться між операторами For та Next (тіло циклу). Далі оператор циклу збільшується на величину h. Дії повторюються до того часу, поки параметр циклу х не стане більшим за xn. В такому випадку управління передається на виконання оператора, що стоїть в програмі після оператора Next x.

При виході з циклу достроково (наявність оператора Exit For) значення параметра циклу дорівнює останньому значенню в середині циклу.

При виході з циклу через оператор Next значення параметру дорівнює останньому його значенню плюс величина кроку зміни параметру.

Дозволяється використання циклу в циклі ( вкладених циклів ). В цьому випадку внутрішній цикл повинен повністю знаходитися в тілі зовнішнього циклу.

Приклад. Скласти схеми та програми для варіантів (а) та (б) обчислення значень а, р та у. Результати отримати у вигляді таблиці значень.

a) х={1; 1,5; 2, ... 5}, b) x={1,5; 4,9; 8,36; -0,87 }

Параметри початкового (х0=1.5), кінцевого (хn=5) значень та кроку (h==0.5) визначаються із вказанної послідовності значень змінної х (варіант (а)).

Для введення змінних d, с, х0, хn, h створюємо масив z (використовуємо функцію Array)

Програма до варианту а).

Private Sub Комманда1_Click()

Rem Програма до варіанту а)

Dim a!,y!,p!

Z=Array(4.7,1.854,1,5,5,0.5)

D=z(0):c=z(1): x0=z(2): xn=z(3); h=z(4)

Print Tab (10);”Таблица”

Print Tab(10); String$(14,”*”)

Print Tab(3);”x”;Tab (12);”a”;_

Tab(24);”y”;Tab (48);”p”

Print String$(52,”*”)

For x=x0 To xn Step 0.5

A=sqr(17.89)*x+(c+sin(d))/(c-cos(d))

If a>x then

Y=Atn(a+x)

Else

Y=log(ABS(cjs(y)))+exp(x)

Print x;Tab(8);a; Tab(19);y; Tab(33); p

Next x

Print string$(52,”*”)

End sub

 

Програма до варианту b)

Розглядаємо х як масив чисел, тобто x={Xi}, і=1…n (n=4)

Option Base 1

Private Sub Комманда1_Click()

Rem програма по варіанту b)

Dim a!, y!, p!

Z=Array(4.7,1.854)

D=z(1):c=z(2)

X=Array(1.5,4.9,8.36, -0.87)

n=InputBox(“n=”)

Print Tab(10);”Таблиця”

Print Tab(10);String$(14,”*”)

Print Tab(3); “x”; Tab(12); “a”;_

Tab(24); “y”; Tab(40); “p”

Print String$(53,”*”)

For I=1 To n

A=Sqr(17.89)*x(i)+(c+sin(d))/(c-cos(d))

If a>x(i) then

Y=Atn(a+x(i))

Else

Y=log(abs(a+x(i)))

End If

P=Sqr(abs(cos(y)))+exp(x(i))

Print x(i); Tab(19);y; Tab (33);p

Next I

Print String$(53,”*”)

End Sub

Приклад. Cкласти програму для обчислення Z!

Реалізуємо алгоритм блок-схема якого відображена на рис.1.7.

Розмістимо на формі лише один елемент управління – командну кнопку, ім’я якої і напис на якій змінимо з CommandButton1 на Пуск.

Запрограмуємо подію – щиглик (Click) на кнопці Пуск. Для введення Z використаємо оператор InputBox(), для виведення результату – оператор MsgBox().

Private Sub Пуск_Click()

Dim Z %, P%, i%

Z=Val(Input(“Z=?”,”Задайте Z”)

P=1

For i=1 to Z

P=P*i

Next i

MsgBox=”Z!=” & P

End Sub

 

 

Рисунок 3.9.Результат обчислення Z! для Z=7.

 


КОНТРОЛЬНІ ЗАПИТАННЯ

 

1. У яких випадках використовують розгалужені алгоритми? Наведіть приклади.

2. Яке призначення має умовний оператор?

3. Порівняйте за призначенням лінійну та блочну форми умовного оператора?

4. З якою метою можна застосовувати функцію MsgBox?

5. Придумайте три задачі з повсякденного життя, де було б використано умовний оператор.

6. Яке призначення мають оператори циклу?

7. У яких випадках використовуються оператори умовного циклу? Наведіть приклади.

8. За допомогою яких операторів можна організувати цикл?

9. Які типи циклів розрізняють?

10. Який синтаксис має оператор циклу While…Wend?

11. Який синтаксис має оператор циклу Do…Loop?

12. У чому полягає відміннісь у вживанні ключових слів While та Until? Чи можуть вони вживатись одночасно?

13. Який синтаксис має оператор циклу For…Next?

14. Яким чином організуються ітераційні цикли при програмуванні на Visual Basic? Яким чином можна використовувати вкладені цикли під час програмування?

15. Чи завжди можна замінити оператор циклу з лічильником на оператор умовного циклу і навпаки?


Лекція 5

МАСИВИ

План лекції:

5.1. Статичні масиви

5.2. Динамічні масиви

5.3. Функція створення масиву Array

5.4. Використання одновимірних маси

5.5. Використання двовимірних масивів

 

Масив – це впорядкований набір даних одного типу, кожен з яких має свій порядковий номер, що називається індексом. Розрізняють статичні та динамічні масиви.

Кожен елемент масиву має свій номер (індекс). Причому таких номерів може бути декілька. Кількість різних індексів визначає вимірніть масиву. Бувають одновимірні (вектори), двовимірні (матриці), тривимірні і т.д. кожен індекс може набувати різних значень з визначеного діапазону. Мінімальне Nmin і максимальне Nmax значення діапазону зміни індексу називається граничною парою. Кількісь різних знвчень індексу визначає кількість елементів К в масиві. Так, для одновимірного масиву

К=Nmax-Nmin+1

При використанні масивів в Visual Basic нумерація масивів за замовчуванням починається з нуля. В математиці елементи масивів нумеруються з одиниці (1). Оператор Option Base дозволяє задати індексацію з 1.

Синтаксис: Option Base 1

Зауваження! Цей оператор повинен знаходитись в секції (General) (Declrations) контейнеру (форми, модулю, класу). Допустимими значеннями для Option Base є тільки 0 або 1.

 

5.1. СТАТИЧНІ МАСИВИ

 

Для об’явлення масивів використовують оператор Dim.

Синтаксис:

Dim <ім'я> (n) As <тип>,

де <ім'я> – довільний ідентифікатор;

n – натуральне число, яке вказує на розмірність масиву (max кількість елементів в масиві);

Приклад. Dim а(5) As Single – означає, що маємо 5 значень в масиві а (a0,a1,a2,a3,a4) одинарної точності з плаваючою десятковою комою.

Для встановлення інших границь масиву необхідно використати наступний синтаксис:

[Static | Public| Dim|<Імя >(<нижня границя > То <верхня границя>)

Visual Basic дозволяє також створювати багатовимірні масиви. При оголошенні багатовимірного масиву, границі кожного виміру розділяються комами.

Синтаксис:

Dim<Ім’я> (<нижня границя> То <верхня границя>, ..., <нижня границя> То <верхня границя>)

Приклад. Dim X(10 To 80, 1 То 25, 1956 То 2050) – задано тривимірний масив X, де 10,1,1956 – нижні границі; 80, 25, 2050 – верхні границі.

5.2. ДИНАМІЧНІ МАСИВИ

 

Інколи при оголошенні масиву його розмір невідомий. В такому випадку слід оголошувати динамічний масив, що дозволяє його розмір, або розмірність змінювати під час виконання програми.

Динамічний масив створюється в два етапи. Спочатку масив визначають в секції (General) (Declarations) контейнеру (форми, модуля) без указання розміру.

Приклад. '(General) (Declarations)

Dim А( ) As Variant

Потім за допомогою оператора ReDim встановлюють фактичний розмір масиву.

Синтаксис: ReDim [ Preserve ] <ім'я> (границі) [As тип даних]

Оператор ReDim використовується тільки в процедурах. Тип даних вказувати необов'язково, особливо, коли тип вже визначений оператором Dim.

Приклад. '(General) (Declarations)

Dim А( ) As Variant

Private Sub Command 1_Click()

ReDim A(50То10)

Тіло процедури

End Sub

Не допускається оголошувати масив з даними одного типу, а потім використати ReDim для приведення до іншого типу, за виключенням випадку, коли масив містить змінні типу Variant.

При застосуванні оператора ReDim виникає небезпека втрати його змісту, оскільки після зміни розмірності елементам масиву присвоюються значення за замовчуванням. Щоб не було втрати змісту необхідно застосовувати ReDim разом з ключовим словом Preserve.

Приклад. '(General) (Declarations)

Dim А( ) As Variant

Private Sub Command 1_Click()

ReDim Preserve A(50 To 15)

Тіло процедури

End Sub

 

Зауваження! При використанні ключового слова Preserve можна змінювати тільки верхню границю.

 

Приклад. ‘(General) (Declarations)

Dim А( ) As Variant

Private Sub Command 1_Click

ReDim A (10 To 20)

ReDim Preserve A(10 To 25)’ Вірно

ReDim Preserve A(15 To 25)’ Помилка

Тіло процедури

End Sub

 

5.3. ФУНКЦІЯ СТВОРЕННЯ МАСИВУ ARRAY

 

Призначення.

Функція створює новий масив типу Variant, який буде відразу заповнений зазначеними елементами. Якщо Ви хочете створити масив іншого типу, то оголошуйте його за допомогою оператора Dim.

Синтаксис: Аrrау(<список елементів масиву>)

Список елементів масиву типу Variant, в якому елементи розділяються комами. При відсутності списку, створюється масив нульової довжини.

 

Зауваження! Зверніть увагу, що нумерація елементів масиву починається з 0. Якщо хочете почати з 1, використовуйте Option Base 1.

 

Приклад.Створити масив А з елементами 5, 7, 12. Змінній В присвоїти значення елемента масиву А, який стоїть на третьому місці.

Dim A,B As Integer ’Об’явлені цілочисельні змінні,

A=Array(5,7,12) ’Створено масив з трьох елементів. Індексація елементів масиву починається з 0.

B=A(2) ’В передається другий елемент масиву А.

Print B ’Повертається 12.

5.4. ВИКОРИСТАННЯ ОДНОВИМІРНИХ МАСИВІВ

 

Описування одновимірного масиву здійснюється оператором Dim такими способами:

Dim Ім’я_змінної (Nmax)[<As Тип_елементів>]

Dim Ім’я_змінної (Nmin To Nmax)[<As Тип_елементів >]

У першому випадку вважається, що Nmin=0. якщо потрібно, щоб нижня межа діапазону зміни індексу у всіх масивів, описаних першим способом, була не 0, а 1, то перед першою процедурою коду потрібно помістити оператор Option Base 1.

У цьому разі верхня межа буде визначати кількість елементів у масиві.

Доступ до елемента масиву здійснюється за допомогою імені масиву й індексу. Як індекс може вживатися вираз.

Слід мати на увазі, що будь-яка обробка масивів здійснюється поелементно.

Наведемо приклади типових алгоритмів обробки одновимірних масивів.

Приклад. Введення одновимірного масиву B розміром N:

Dim B(N)

For i=1 To N

B(i)=Inputbox(“Введіть B(“& i &”)” & “елемент масиву”, “Вікно вводу вектора”)

Next i

Приклад. Виведення одновимірного масиву B(N):

For i=1 To N

Print B(i)

Next i

Приклад. Підсумовування елементів масиву B(N):

S=0

For i=1 To N

S=S+B(i)

Next i

Приклад. Підсумовування двох масивів А і В розміром N:

For i=1 To N

C(i)=A(i)+B(i)

Next i

Приклад. Визначити кількість елементів масиву В(N), задовольняючих задані умови, наприклад, В(і)>Т, де Т – задане число:

K=0

For i=1 To N

If B(i)<=T goto м1

K=K+1

м1

Next i

Приклад. Підсумовування елементів масиву В(N), задовольняючих заданій умові (В(і)>Т):

S=0

For i=1 To N

If B(i)>=T Then S=S+B(i)

Next i

Приклад. Формування масиву В(М) із елементів іншого масиву А(N), задовольняючих заданій умові (А(і)>Т):

j=0

For i=1 To N

If A(i)>T Then

j=j+1

B(j)=A(i)

End If

Next i

Приклад. Пошук максимального елементу в масиві А(N) із запам’ятовуванням його положення (індексу) в масиві:

P=A(1)

K=1

For i=2 To N

If P<=A(i) Then

P=A(i):K=i

End If

Next i

Приклад. Об’єднання двох масивів А і В розміром N в один масив С розміром 2N з чергуванням елементів початкових масивів:

For i=1 To N

C(2*i-1)=A(i)

C(2*i)=B(i)

Next i

Приклад. Упорядкування масиву А(N) в порядку зростання елементів:

For i=1 To N-1

P=A(i):K=i

For j=i+1 To N

If A(j)<=P Then

P=A(j):K=j

End If

Next j

A(k)=A(i):A(i)=P

Next i

5.5. ВИКОРИСТАННЯ ДВОВИМІРНИХ МАСИВІВ

 

Часто доводиться обробляти великі груп даних.

Перед створенням двовимірний масив також оголошують, при цьому залежно від місця оголошення масив може бути як локальним, так і глобальним. Якщо кількість елементів масиву відомо, то це масив з фіксованими межами. У випадку змінної кількості елементів створюють динамічний масив. Для оголошення масиву використовують оператор

Dim <ім’я масиву> (<число1>,<число2>)[<As тип даних>]

де імя масиву – імя змінної типу «масив», число1 – розмір масиву (число рядків), число2 – розмір масиву (число стовпців), тип даних – тип даних масиву, за замовчуванням – тип Variant.

Кожен елемент масиву має свій індекс (місце розташування в масиві), що складається з номера рядка та номера стовпця. По замовчуванню значення нижньої ежі масиву дорівнюється нулю.

Наприклад, елементи двовимірного масиву А(2,3), що складається із трьох рядків і чотирьох стовпців, характеризуються такими індексами:

А(0,0); А(0,1); А(0,2); А(0,3)

А(1,0); А(1,1); А(1,2); А(1,3)

А(2,0); А(2,1); А(2,2); А(2,3)

Але, якщо в розділі General модуля програми помістити оператор Option Base 1, то елементи масиву будуть нумеруватись з одиниці. При необхідності базовий індекс при оголошенні масиву можна змінювати шляхом використання ключового слова То: Dim StrMyArray(1 To 3, 1 To 4) As String.

Під час роботи з масивами використовують оператори циклу For…Next, при цьому лічильник повторень циклів пов’язується з індексами елементів.

В якості індексів можна використовувати не тільки константи, але і змінні, що дає можливість задавати дії над будь-якими елементами масиву. В пам’яті елементи двовимірного масиву розташовуються по рядках.

В мові VB 6.0 не визначені операції із матрицями, тому будь-яка обробка матриць здійснюється поелементно.

Наведемо приклади типових алгоритмів обробки матриць.

Приклад. Введення двовимірного масиву В розміром 4х5 можна здійснити за допомогою опереторів:

Dim B(4,5)

For i=1 To 4

For j=1 To 5

B(i,j)=Inputbox(“Введіть B(“& i &”,”& j &”)” & “елемент масиву”, “Вікно вводу матриці”)

Next j

Next i

Введеня двовимірного масиву в наведеній програмі здійснюється по рядкам.

Приклад. Виведення двовимірного масиву по рядкам

For i=1 To 5

For j=1 To 5

Print B(i,j)

Next j

Print

Next i

В даній програмі виведення нового рядка масиву здійснюється в новий рядок форми.

Приклад. Сумування елементів масиву. Для двовимірного масиву В розміром NxM необхідно обчислити

S=0

For i=1 To N

For j=1 To M

S=S+B(i,j)

Next j

Next i

Приклад. Підсумовування матриць. Для двовимірних масивів А та В розміром NxM. Необхідно обчислити

, i=1,2,…,N j=1,2,…,M

For i=1 To N

For j=1 To M

C(i,j)=A(i,j)+B(i,j)

Next j

Next i

Приклад. Підсумовування діагональних елементів матриці. Обчислення ліду матриці. Для матриці В розміром NxN

REM Обчислення сліду матриці

S=0

For i=1 To N

S=S+B(i,j)

Next i

Приклад. Підсумовування елементів рядків матриці. Необхідно обчислити суму елементів кожного рядка матриці В розміром NxМ. Результат отримати у вигляді вектора D, тобто обчислити

REM Сумування матриці по рядкам

For i=1 To N

S=0

For j=1 To M

S=S+B(i,j)

Next j

D(i)=S

Next i

Приклад. Транспонювання матриці. Необхідно заменіти рядки матриці її стовпцями, а стовпчики – рядками, тобто обчислити

, i=1,2,…,N j=1,2,…,M

REM Транспонування матриці

For i=1 To N

For j=1 To M

B(i,j)=A(j,i)

Next j

Next i

Приклад. Множення матриці на вектор. Для обчислення добутку С матриці А розміром NxМ на вектор В розміром М, тобто обчислити

REM Множення матриці на вектор

For i=1 To N

For j=1 To M

S=S+A(i,j)*B(j)

Next j

С(i)=S

Next i

Приклад. Множення матриці на матрицю. Для множення матриці А(N,К) матрицю В(К,М) необхідно обчислити

, i=1,2,…,N j=1,2,…,M

REM Множення матриці на матрицю

For i=1 To N

For j=1 To M

S=0

For l=1 To K

S=S+A(i,l)*B(l,j)

Next l

С(i,j)=S

Next j

Next i

Приклад. Перестановка рядків матриці:

а) з використанням допоміжної змінної Р

REM Перестановка рядків

For К=1 To M

Р=A(і,К)

A(і,К)=A(j,К)

A(j,К)=Р

Next К

б) з використанням допоміжного масиву С

REM Перестановка рядків

For К=1 To M

С(К)=A(і,К)

Next К

For К=1 To M

A(і,К)=A(j,К)

Next К

For К=1 To M

A(j,К)=С(К)

Next К

Приклад. Пошук мінімального елемента матриці:

Р=А(1,1)

К=1 : L=1

For i=1 To N

For j=1 To M

If P<=A(i,j) Then Goto metka1

P=A(i,j)

K=i

L=j

metka1:

Next j

Next i

КОНТРОЛЬНІ ЗАПИТАННЯ

 

1. Що таке масив? З якою метою використовуються масиви даних?

2. Які існують види масивів? Наведіть пиклади.

3. Що означає поняття вимірність масиву?

4. Наведіть приклади одновимірних, двовимірних і тривимірних масивів.

5. Як здійснюється введення та виведення елементів матриці на мові Visual Basic?

6. Введення-виведення елементів одновимірного масиву. Наведіть приклади.

7. Наведіть приклади формування елементів одновимірного масиву на довільному проміжку за допомогою функції RND.

8. Яким чином формується масив по умові. Наведіть приклади.

9. Яким чином можна обробити масив, відсортувати його елементи?

10. Наведіть приклади формування елементів двовимірного масиву на довільному проміжку за допомогою функції RND.

11. Який алгоритм визначення найбільшого та найменшого елементів матриці?

12. Для чого використовується функція Option Base?

13. Яку пару елементів масиву можна назвати гранічною?

14. Для чого використовується ключове слово Preserve?

15. За дапомогою якого оператору можна оголосити масив типу Variant?


Лекція 6



Дата добавления: 2021-11-16; просмотров: 267;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.136 сек.