Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Візуал Бейсік 2010 Глінський.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.12 Mб
Скачать

§ 23. Пошук даних в одновимірному масиві

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

1. Пошук даних у масиві за заданим критерієм.

Задача 1. Нехай дохід деякого підприємства за п = 12 місяців [псується 12 цілими числами. Додатне число означає, що підпри­ємство мало прибуток, від’ємне — збиток. Визначити суму прибутків.

Розв'язування. Для зручності змоделюємо дохід підприємства формулою аi ?= 100000sini, і=1,2, ..., п. Складемо такий код:

Dim а(12) As Long, s As Long, і As Integer, n As Integer

s = 0 ’s - сума прибутків

n = 12

For і = 1 To n

a(i)= 100000 * sin(i)

If a(i) > 0 Then s = s + a(i)

Next

<вивести s>

Розробіть відповідний проект і модифікуйте код, щоб виконати завдання 1-5. Виведіть повідомлення, якщо зазначених у завданнях подій не було.

Завдання 1. Визначіть суму збитків або виведіть повідомлен­ня, що збитків не було.

Завдання 2. У яких місяцях дохід був більший, ніж 30000?

Завдання 3. Скільки протягом року було збиткових місяців?

Завдання 4. Який номер першого збиткового місяця, якщо та­кий був.

Завдання 5*. Який номер другого збиткового місяця, якщо та­кий був.

2. Найбільші та найменші значення в масиві та їхні номери. Максимальний (найбільший) елемент масиву і його номер визнача­ються так само, як і в задачах про послідовність чисел і табулюван­ня функції.

Задача 2. Який найбільший прибуток мало підприємство і в якому місяці це було?

Розв’язування. Вважаємо, що масив доходів протягом 12 місяці; уже є і він доступний. Наступний код дає розв’язок задачі:

Dim А(12) As Long

Dim max As Long, month As Integer, і As Integer

<ввести чи створити масив А>

max = а(1)

month = 1

For і = 2 То 12

If а(і) > max Then max = a(i): month = і

Next і

If max>0 Then «вивести month, max> _

Else «вивести "прибутків не було">

Завдання 1. Який найбільший збиток підприємства і в якому місяці це було? Вивести повідомлення, якщо збитків не було. Ключ найбільший збиток — це мінімальний елемент серед від’ємних.

Завдання 2. Визначіть різницю між максимальним і мінімаль­ним прибутками.

Завдання 3*. Чи були два чи більше місяців, коли дохід буї однаковий?

3. Застосування процедур і функцій користувача під час опра­цювання масивів. Розглянемо попередню задачу 1. Виокремимо в дій задачі окремі підзадачі і реалізуємо їх за допомогою підпрограм користувача. В окремі підзадачі виокремимо такі завдання:

  • створення масиву і виведення його на екран (stvoryty);

  • пошук даних у масиві (znaity).

Крім цього, оскільки формула для визначення доходу може по­мінятися, її оформимо у вигляді функції користувача (dohid).

Рис. 2.2. Використання процедур і функції користувача

Розгляньте на рис. 2.2 код розв’язування задачі в консольному режимі VBA. Переробіть його, якщо потрібно, для VB. Код складає­ться з таких частин: глобальних описів змінних, головної процеду­ри, підпрограми-функції та двох допоміжних підпрограм-процедур.

Інший спосіб застосування підпрограм полягає у використанні формальних і фактичних параметрів для передавання даних між підпрограмами. Глобальних змінних (а це перші два рядки коду) у цьому випадку не оголошуємо. Команди викликів процедур мати­муть такий вигляд:

Call stvoryty(n, А) ’передаємо n у процедуру stvoryty, отримуємо А

Call znaity(n, A, s) 'передаємо n та А у процедуру znaity, отримуємо s

Заголовки процедур переробимо так:

Sub stvoryty(ByVal n As Integer, ByRef A() As Long)

Sub znaity (ByVal n As Integer, ByVal A() As Long, ByRef s As Long)

Зверніть увагу, масиви у списках формальних параметрів опису­ють як динамічні, тобто без зазначення розміру, а в командах ви­кликів процедур назви масивів записують без дужок.

Завдання 1. Переробіть заголовки процедур і команди викли­ків на випадок застосування формальних і фактичних параметрів.

Завдання 2. Процедуру stvoryty розділіть на дві процедури: в од­ній створіть масив, а в другій виведіть його на екран чи у файл тощо.

Завдання 3. Процедуру znaity переробіть так, щоб у ній значен­ня суми лише обчислювалось і поверталося в головний код, де воно виводитиметься на екран.

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

4 . VB. Створення меню проекту. Якщо, наприклад, на формі потрібно розташувати багато кнопок, то за­мість них варто створити головне ме­ню проекту і його командам призна­чити ті дії, які мали виконувати кнопки. Щоб створити головне меню, на форму вставляють елемент керу­вання MenuStrip, піктограма якого роз­ташується під формою, а на формі з’явиться смуга головного меню. Достатньо заповнити смугу командами, як показано на рисунку поряд, і меню готове. Групу команд «Масив» складають три коман­ди: «Створити», «Вивести», «Знайти». Групу команд Проект мо­жуть складати такі команди: «Про проект», «Про автора», «Кінець роботи» тощо. За допомогою вікна властивостей різним елементам меню можна задати кольори, шрифти, картинки, комбінації гаря­чих клавіш тощо.

Меню потрібно запрограмувати. Для програмування меню двічі клацають у конструкторі на назві команди і отриману заготовку заповнюють тілом відповідної процедури. Аналогічно створюють кон­текстні меню об’єктів (елемент керування ContextMenuStrip), а також панелі інструментів користувача (ToolStrip).

Зауваження. У VBA немає візуальних елементів для створення меню.