Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Масив об'єктів




Вправи

Питання для роздумів

Масив, одновимірний масив, змінна з індексом, послідовність, список, ім'я масиву, індекс масиву, заповнення масиву значеннями, оголошення масиву, діапазон значень індексу.

1. Як Ви вважаєте, чим одновимірний масив відрізняється від списку? Чому ці поняття не можна вважати синонімами?

2. Чи має сенс поміщати в один масив прізвища і дати народження студентів одного курсу?

3. Як Ви думаєте, який, приблизно, обсяг пам'яті відведе Visual Basic масиву Температура(Денъ), розглянутому в прикладі 2.1, якщо в цьому масиві 30 елементів? Вказівка: Згадайте, скільки байт пам'яті займають значення різних типів.

4. А який обсяг пам'яті буде відведений масиву КвадратЧисла(Число) із прикладу 2.3? І чому для цього масиву обраний тип Long, у той час як для його індексу обраний тип Integer?

5. Нехай тип масиву — рядок фіксованої довжини (наприклад, 30 символів). Як оголошений цей масив, якщо йому виділена пам'ять обсягом 2.4 Кбайт?

6. Як потрібно змінити визначення масиву у прикладі 2.3 для того, щоб він заповнювався квадратами чисел не від 0 до 1000, а від 1000 до 2000? Чи зміниться обсяг пам'яті, що надається для цьому масиву?

7. Як Ви думаєте, який максимально можливий розмір одномірного масиву?
(Відповідь: приблизно 4.3 мільярда елементів.)

1. Напишіть програму, за допомогою якої масив, що містить 1000 елементів, заповнюється цілими випадковими числами, що рівномірно розподілені від 1 до 100. Знайдіть середнє значення цих чисел.

2. Доповніть програму обрахування максимального і мінімального значень температури в червні (код 2.3) так, щоб додатковими результатами її роботи були дні, коли зафіксовані ці значення.

3. Спроектуйте додаток, що видає діаграму зміни середньодобової температури в червні (за даними табл. 2.1).
Вказівка: Згадайте, як працюють графічні методи Scale і Line (див. главу 5), і застосуйте ці методи для малювання ламаної лінії в графічному полі Вашого додатка.

При проектуванні деяких додатків іноді доводиться створювати на екранній формі багато об'єктів, що повинні виконувати майже однакові функції. Наприклад, часто доводиться створювати багато командних кнопок чи кнопок-перемикачів. І для кожної такої кнопки потрібно скласти особливу процедуру-подію, наприклад: Кнопка1_Click(), Кнопка2_Click(),...,Кнопка_Click().

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

Приклад 2.5. Нехай спроектований додаток призначений для демонстрації користувачу картинок, — наприклад, зображень прапорів держав. Для визначеності розглянемо можливість демонстрації тільки шести таких зображень: Франції, Греції, Великої Британії, Фінляндії, Бразилії і Куби.

Екранні форми додатка. Зображення будуть з'являтися на першій з двох екранних форм додатка. А на другій формі розмістяться командні кнопки, на кожній з який зроблено напис — назва держави.

На мал. 2.1 показана перша (основна) екранна форма даного додатка після того, як користувач, скориставшись другою екранною формою, вибрав і натиснув командну кнопку з написом Франція.

Мал. 2.1. Перша з двох екранних форм додатка Зображення прапорів

Друга екранна форма показана на мал. 2.2. Натискання кожної з її кнопок повинне гасити старе зображення і викликати появу нового.

Мал. 2.2. Друга екранна форма додатка Зображення прапорів

Зверніть увагу на те, що одна з кнопок (з написом Франція) виділена — на ній розташована пунктирна рамка. Це означає, що в робочому додатку ця кнопка знаходиться у фокусі введення (чи, як говорять, на ній встановлений фокус вводу). Фокусом вводу називається такий стан об'єкта, при якому він здатний сприймати сигнали, що посилаються з допомоги миші чи клавіатури. Фокус вводу встановлюється на об'єкті або після зазначеного сигналу, або програмно за допомогою методу SetFocus мови Visual Basic. Якщо фокус вводу встановлюється в текстовому полі, на цьому полі з'являється маркер — мерехтлива вертикальна смужка.

На першій формі ми встановили 6 об'єктів (елементів) управління, в які помістили зображення тварин.

Цими елементами в даному випадку є контейнери OLE (Для збереження зображень на екранній формі можна використовувати й інші об'єкти управління, — наприклад, Графічне вікно (Picture Box) чи Зображення (Image). Але на відміну від них, контейнер OLE дозволяє звертатися до більш широкого арсеналу зображень, наприклад, до багатої колекції картинок Microsoft ClipArt.). Для установки такого елемента варто скористатися інструментом Контейнер OLE стандартного набору Toolbox середовища проектування Visual Basic.

— піктограма цього інструмента.

Після розміщення контейнера OLE на екранній формі з'являється системне вікно Windows (Мал. 2.3).

Мал. 2.3. Системне вікно Windows для вставки об'єкта OLE у проектований додаток

Для того, щоб картинка галереї ClipArt цілком вміщалася в границях об'єкта OLE на екранній формі, варто встановити значення властивості SizeMode цього об'єкта рівним Stretch чи AutoSize. У першому випадку розміри зображення підстрояться під розміри об'єкта, а в другому — розміри об'єкта стануть рівними розмірам зображення. (Краще вибрати другий випадок, тому що в першому зображення може виявитися витягнутим чи сплющеним.)

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

Програма. Програма додатка складається з двох модулів — модуля першої (основної) форми, що має ім'я Держава Р, і модуля другої (допоміжної) форми, що має ім'я Обери Р.

Модуль першої форми (з ім'ям Держава Р) складається усього з однієї процедури-події (код 2.5).

Код 2.5.

Призначення цієї процедури — відкрити (показати) другу екранну форму. Для цього використовується метод Show мови VisualBasic, що застосовується до екранної форми з ім'ям Обери. Для того, щоб сховати екранну форму, використовується метод Hide.

До складу модуля другої форми (з ім'ям ОбериР) входять наступні частини:

· загальний розділ (General) з оголошенням глобальної змінної НомерКартинки і процедура-подія Form_LoadЗавантаження форми (код 2.6);

· загальна процедура Приховати, призначення якої — приховування зображення (код 2.7);

· 6 процедур-подій для натискання кожної із шести командних кнопок (код 2.8).

Код 2.6.

 

Код 2.7

 

Код 2.8

Код 2.8 містить опис тільки однієї із шести процедур — коди інших Ви легко складете за аналогією.

Велику роль в управлінні демонстрацією зображень за допомогою даної програми грає змінна НомерКартинки. Після натиснення однієї із шести кнопок на другій формі, ця змінна одержує значення, рівне номеру кнопки. Після натиснення іншої кнопки запускається загальна процедура Приховати, що має один параметр — НомерКартинки. Єдина задача цієї процедури — зробити невидимим попереднє зображення.

Щоб істотно скоротити дану програму, можна скористатися таким поняттям мови Visual Basic як масив об'єктів управління.

На об'єкти (елементи) управління одного класу можна посилатися за допомогою єдиного імені з індексом (точно так само, як можна посилатися на значення одного типу за допомогою масиву — змінної з індексом). Для цього досить привласнити цим об'єктам одне ім'я і привласнити цілочислові значення їх властивості Index.

У даному прикладі привласнимо шістьом об'єктам OLE1 одне ім'я і встановимо для них значення властивості Index від 0 до 5. Значення цієї властивості, якщо їх не встановлювати, при компіляції програми будуть встановлені автоматично від 0 до 5 (у даному випадку), як тільки ми зробимо імена об'єктів однаковими. Але їх можна встановити і вручну, наприклад, від 1 до 6.

Tе ж саме ми проробимо і з шістьма іншими об'єктами (командними кнопками) — привласнимо їм однакове ім'я Command і встановимо значення властивості Index від 0 до 5.

Тепер 6 процедур-подій попереднього коду перетворяться в єдину процедуру (код 2.9).

Код.2.9

Значно коротше стане і загальна процедура Приховати (код 2.10):

Код 2.10.

Інші 4 рядки даного модуля (код 2.6) залишаться незмінними.

Отже, до вводу масивів об'єктів у програмі модуля другої форми було 56 рядків коду, а після вводу масивів об'єктів у ній залишилося лише 14 рядків коду. Обсяг програми зменшився в 4 рази. Як говориться, коментарі зайві.

Hові поняття:




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


Дата добавления: 2014-12-23; Просмотров: 511; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.023 сек.