Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Приклад проекту Windows-додатка, у якому використовуються обумовлені процедури і функції




Додаткові відомості

Вправи

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

Визначення (створення коду) функції, використання функції.

1. Чи зможете Ви привести приклад вбудованої функції мови Visual Basic без аргументів (згадайте таку функцію, що згадувалася в 1-й частини посібника)? Відповідь: функція Rnd.

2. Чи зможете Ви привести приклад обумовленої функції без аргументів? Підказка: Скористайтеся рішенням вправи 4 наприкінці розд. 1.3. У ньому приведене визначення процедури без вхідних параметрів. А Ви можете зробити з цієї процедури дві функції...

1. Визначите функцію, що повертає ціле випадкове число в заданому інтервалі (наприклад, від 1000 до 2000).

2. Визначте функцію, що повертає об'єм прямокутного паралелепіпеда, якщо аргументи функції — розміри трьох його ребер, що мають одну загальну точку.

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

4. Визначите функцію, що повертає значення True (Істина), якщо рядок (аргумент функції) закінчується крапкою, знаком оклику чи знаком питання. У протилежному випадку функція повинна повертати значення False (Неправда).
Вказівка: Згадайте вбудовані функції обробки рядків.

Розглянемо проект Windows-додатка, екранна форма якого зображена на мал. 1.12.

Мал. 1.12. Екранна форма додатка, за допомогою якого зображуються трикутники й обчислюються їхні площі

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

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

Інтерфейс. Основний об'єкт екранної форми — графічне поле, розташоване в центрі форми. На цьому полі будуть зображуватися трикутники після того, як користувач задасть значення координат їхніх вершин. Координати точок на графічному полі для простоти вважаються додатними. Початок координат знаходиться в лівому нижньому куті цього поля, вісь X спрямована зліва направо, а вісь Y — знизу нагору. Значення координат допомагає оцінити координатна сітка. (У даному випадку вона відповідає максимальному значенню кожної координати, і дорівює 20.)

Під графічним полем розташована командна кнопка, натискання якої викликає малювання трикутників і обчислення їхніх площ.

Ліворуч від графічного поля знаходяться 7 міток (зовні вони не відрізняються від текстових полів, що знаходяться праворуч від графічного поля). Імена цих міток такі: Label 8, Label 9,..., Label 14 (Над цими мітками знаходяться ще 7 міток (Label l, Label 2,..., Label 7) з написами: X 1, Y 1,..., Площа.). У перші 6 з них (Label 8 — Label l3) будуть поміщені (помістити деяке значення в мітку означає привласнити це значення властивості Caption даної мітки) координати точок, що користувач за допомогою миші буде вказувати на графічному полі. Ці точки — вершини трикутника, що буде зображуватися синім кольором. В останню мітку (Label l4) після натискання командної кнопки буде поміщена площа цього трикутника.

Праворуч від графічного поля знаходяться 6 текстових полів, у які користувач може вводити координати вершин іншого трикутника. (Він буде зображуватися червоним кольором.) Під ними знаходиться мітка з ім'ям Label 23, в яку поміститься площа цього трикутника після щиглика все тієї ж командної кнопки.

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

Крім процедур-подій, програма містить загальні процедури, поміщені в окремі програмні модулі, і функцію, що також поміщена в окремий модуль.

Ці модулі зберігаються в особливих файлах, що дозволяє використовувати їх і в інших додатках.

Розглянемо складові частини програми по окремості.

Загальна частина програми. Вона містить оголошення змінних — загальних для декількох процедур (оголошення змінних у загальній частині модуля за допомогою ключового слова Dim — це те ж саме, що оголошення їх за допомогою ключового слова Private):

Код 1.7.

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

Код 1.8.

Процедура-подія Form_Load. Подією для цієї процедури служить завантаження форми. Призначення процедури — видача користувачу короткої інструкції, що йому робити після появи форми на екрані:

Код 1.9.

Процедура-подія Form_Paint. Подією для цієї процедури служить заповнення («зафарбовування») форми після її завантаження. Призначення процедури — нанесення на графічне поле екранної форми прямокутної сітки (спроба нанесення сітки (застосування методу Line) у процедурі завантаження форми приводить до невдачі):

Код 1.10.

Процедура - подія Piсture1_MоuseDоwn. Подією для цієї процедури служить рух будь-якої клавіші миші вниз (клік лівою клавішею миші по графічному полю Picture l).

При першому кліку клавішею миші вниз координати покажчика миші привласнюються змінним x l і y l; при другому — змінним x 2 і y 2; при третьому — змінним х3 і у3. (Відлік кліків робиться за допомогою глобальної змінної Лічильник.)

Два інших параметри цієї процедури (Button і Shift) у нашій програмі не використовуються. Їхнє значення вказує на те, яка клавіша миші використовується і чи натиснуті при цьому клавіші Shift, Ctrl чи Alt.

Код 1.11.

Функція загального призначення ПлТрикутКоopд. Це функція, що повертає площу трикутника, якщо задані координати його вершин. Визначення цієї функції дане в розд. 1.5 (код 1.6).

Наступні 2 процедури не мають вихідних параметрів. Їхнє призначення — побудова зображень.

Процедура загального призначення Сітка. Призначення процедури — побудова зображення прямокутної сітки в графічному полі Picture l:

Код 1.12.

Тут пх і ny — це, відповідно, число вертикальних і горизонтальних ліній на сітці, а с— колір цих ліній.

Процедура загального призначення Трикутник. Призначення цієї процедури — побудова зображення трикутника в графічному полі Picture l:

Код 1.13.

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

Завантажити додаток




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


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


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



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




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