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

5. Проект «На метеостанції». Застосування масивів і процедур користувача у vb.

Задача 3. Дано набір із 24 значень температур (8, 7, 7, 6, 6, 5, 5, 6, 7, 8, 10, 12, 14, 15, 17, 17, 17, 16, 16, 15, 14, 12, 11,10}, вимі­ряних щогодини протягом доби, починаючи з 00 год. Дані занести в масив. Виконати завдання, де треба визначити такі статистичні ха­рактеристики:

  1. середньодобову температуру;

  2. максимальну температуру;

  3. години, коли була максимальна температура;

  4. мінімальну температуру;

  5. години, коли була мінімальна температура;

  6. моду спостережуваних значень — значення, що найчастіше траплялося;

  7. медіану спостережуваних значень — значення, що лежить посередині числового набору;

  8. середньоквадратичне відхилення;

  9. кількість різних значень температур;

  10. таблицю частот у вигляді таблиці значень температури і кі­лькостей повторень кожного різного значення;

  11. розмах температур — різницю між максимальним і міні­мальним значенням;

  12. температуру, яка утримувалася найбільшу кількість годин підряд.

Розв’язування. Розв’язок задачі складатиметься з 12 процедур опрацювання даних, які доручимо розробляти 12 виконавцям. Про­аналізуємо, в яких випадках результати роботи деяких процедур можуть давати вхідні дані для інших процедур, і виокремимо їх в :крему послідовність створення. Наприклад, 11-те завдання суттєво залежить від 2-го і 4-го, а 6-те завдання може використати на вході результати з 10-го.

Розглянемо реалізацію 2-го, 4-го і 11-го завдань. Вважатимемо, що дані зберігаються в цілочисловому масиві t, який містить 24 еле­менти від 0-го до 23-го, що відповідають годинам спостережень. Ну­мерація елементів у масиві починається з 0.

Спрощений інтерфейс проекту. Розташуємо на формі кнопку «Обчислити» і текстове поле TextBox1 з підписом «Годин:», куди вводитимемо кількість перших годин спостережень після 24.00, які. враховуватимемо в обчисленнях, наприклад, 8, 12 чи всі 24. Роз­ташуємо на формі три текстові поля, підписані як «Максимум:», «Мінімум:», «Розмах:» для виведення результатів роботи трьох про­цедур. Реалізуємо також очищення цих полів як реакцію на подію клацання мишею у будь-якому з них.

Програмування. Спочатку складемо головний код. Запрограмуємо кнопку «Обчислити» так:

Dim t() As Integer = {8, 7, 7, 6, 6, 5, 5, 6, 7, 8, 10, 12, _

14, 15, 17, 17, 17, 16, 16, 15, 14, 12, 11, 10}

n = TextBox1.Text

Dim Maxt, Mint, Rozmah As Integer

Call Pr2(t, n, Maxt)

Call Pr4(t, n, Mint)

Call Pr11(Maxt, Mint, Rozmah)

TextBox2.Text = Maxt

TextBox3.Text = Mint

TextBox4.Text = Rozmah

Складемо процедуру Pr2, яка отримує масив t розміру n, а - змінній Maxt повертає найбільше значення температури.

Sub Pr2(ByVal t() As Integer, ByVal n As Integer, ByRef Maxt As Integer)

Dim і As Integer

Maxt = t(0)

For і = 1 To n

If t(i) > Maxt Then Maxt = t(i)

Next і

End Sub

Складемо процедуру Pr4, яка отримує масив t розміру n, а у змінній Mint повертає найменше значення температури.

Sub Pr4(ByVal t() As Integer, ByVal n As Integer, ByRef Mint As Integer)

Dim і As Integer

Mint = t(0)

For і = 1 To n

If t(i) < Mint Then Mint = t(i)

Next і

End Sub

Складемо процедуру Pr11, яка використовує результати роботи процедур Рг2 і Рг4, отримує обчислені раніше значення максималь­ної і мінімальної температур і повертає їх різницю (Rozmah).

Sub Pr11 (ByVal Maxt As Integer, ByVal Mint As Integer, _

ByRef Rozmah As Integer)

Rozmah = Maxt – Mint

End Sub

Для зачищення трьох текстових полів створимо процедуру MyProcClick. Для цього двічі клацнемо на елементі TextBox1 — з’яви­ться заготовка процедури, де заголовок змінимо так (зверніть увагу з заголовку на частину Handles... — діяти з...):

Sub MyProc_Click(ByVal sender As Object, ByVal e As System.EventArgs) _

Handles TextBox1.Click, TextBox2.Click, TextBox3.Click

TextBox1.Text =""

TextBox2.Text =""

TextBox3.Text =""

End Sub

Тепер достатньо клацнути на одному з трьох полів — виконаєть­ся процедура MyProc_Click, яка очистить усі три поля.

Завдання 1. Реалізуйте описаний проект і поекспериментуйте з ним, вводячи різну кількість годин спостережень. Дослідіть середні характеристики температури:

а) тільки вночі (від 0 до 6 год); б*) тільки вранці (від 7 до 12 год).

Завдання 2. Модифікуйте проект, склавши процедури для ін­ших завдань. Створіть головне меню проекту.

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

Створення модуля. Досі ми працювали в модулі класу головної корми. Щоб створити власний модуль, у меню Project поточного про­екту потрібно виконати команду Add New Item. У діалоговому вікні цієї команди виберіть шаблон Module і надайте модулю у полі Name власну назву, наприклад MyModulel, тощо. Клацніть на кнопці Open - модуль долучиться до структури проекту, а користувач отримає заготовку для введення тіла модуля:

Module MyMcdulel

...

End Module

Занесіть замість ... текст одної чи декількох підпрограм (процедур їй функцій) і збережіть модуль командою File => Save=> MyModylel.vb у папці поточного проекту або командою Save As... в іншій папці.

Використання модуля. Створіть новий проект і у меню Project виконайте команду Add Existing Item. У вікні цієї команди виберіть потрібний модуль, відшукавши його у файловій системі, і натисніть в. кнопку Open — модуль буде доданий до цього проекту. Можете використовувати його підпрограми як свої власні.

Завдання 1. З побудованих у цьому параграфі підпрограм створіть власний модуль.

7*. Використання списків для зберігання й опрацювання масивів. Об’єкт класу «списки» ListBox можна використати не лише для відображення елементів масиву на формі. Дані з масивів можні заносити у списки, опрацьовувати ці дані методами списків і повер­тати назад у масиви.

Задача 4. У шоу бере участь п’ять учасників, прізвища яких за­несено в масив. Через хворобу вибув третій учасник. Вилучити даю про учасника з масиву.

Розв’язування. Вилучити елемент з масиву так просто не можна Масиви (на відміну від списків) автоматично не стискаються. Еле­менти масиву, які розміщені за тим, який хочуть вилучити, нази­вають «хвостом». Вилучення елемента зі стискуванням масиву ви­конують, переміщуючи всі елементи «хвоста» на одну позицію впе­ред. Останній елемент у масиві буде продубльовано. Його зазвичай] не розглядають.

Задачу можна розв’язати різними способами. Використання спис­ку веде до такого алгоритму:

  1. занести масив у список (поелементно за допомогою команди циклу і методу Add);

  2. застосувати метод для вилучення елемента списку з відомих номером і з автоматичним стискування списку;

  3. елементи списку занести у масив (за допомогою команди циклу). Завдання 1. Реалізуйте розв’язок задачі 4 у вигляді проекту

самостійно.

Завдання 2*. Розв’яжіть задачу 4 без використання списку.

Вправи

  1. Створіть масив елементів ai = sin3i, де і = 1,2,...,15 і визначіть:

а) кількість додатних елементів;

б) суму додатних елементів;

в) середнє арифметичне додатних елементів;

г) максимальний елемент і його номер;

д) мінімальний елемент і його номер.

  1. Розв’язування вправи 1 оформіть з використанням процедур.

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

4. Розв’яжіть задачу № 11 свого варіанта з розділу «Задачі» з використанням лише функції користувача.

5. Розв’яжіть задачу № 9 свого варіанта з розділу «Задачі» з використанням процедур і функції користувача. Створіть меню для проекту.