Студопедия

КАТЕГОРИИ:


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

До розд. 2.1 і 2.3) Введення даних у динамічний масив




Заповнення масиву конкретними значеннями — це самостійна задача. Вона може бути простою, як у випадку, що описаний у вправі 1 до розд. 2.1. А може бути і складною, якщо дані, які потрібно помістити в масив, варто автоматично витягти з будь-якого файлу. Або ввести їх вручну за допомогою текстового поля на екранній формі чи за допомогою системного вікна введення (Нагадаємо, що використовувати системне вікно введення можна за допомогою вбудованої функції InputBox).

Автоматичне (запрограмоване) читання даних з файлу і запис їх у масив будуть розглянуті в главі, присвяченій роботі з файлами.

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

Приклад 2.9. Допустимо, що нам необхідно заповнити масив рядками, що являють собою імена чи прізвища (чи імена з прізвищами) деякої групи людей. При цьому заздалегідь невідомо, скільки людей у цій групі. На кожен рядок накладене обмеження: у ньому не повинно бути більше 30 символів. Рядки повинні вводитися користувачем після натиснення мишею командної кнопки на екранній формі додатка. Це натиснення кнопки повинне викликати появу вікна введення, що зображено на мал. 2.4.

Мал. 2.4. Системне вікно вводу для заповнення масиву рядками

Після натиснення кнопки OK в цьому вікні, рядок з його текстового поля повинен бути поміщеним у масив, після чого вікно вводу повинне з'явитися знову. Після відмовлення від введення чергового значення (кліка кнопки Cancel) останнім елементом масиву повинен стати порожній рядок. А на екранній формі повинні бути надруковані значення індексу масиву і рядка з цими значеннями індексу (мал. 2.5).

Мал. 2.5. Екранна форма з результатом вводу рядків у масив

Представлена задача цікава тим, що розмір масиву, у який поміщаються рядки, заздалегідь не відомий. Можна, звичайно, задати його «з надлишком», встановивши його рівним, наприклад, 1000. Але якщо число рядків буде на один чи на два порядки меншим, таке рішення буде здаватися марнотратним — велика частина відведеної масиву пам'яті буде пустувати. І буде зовсім недобре, якщо число рядків, що вводяться, перевищить встановлене значення.

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

Початкове оголошення робиться за допомогою слова Dim, при цьому після імені масиву в дужках нічого не вказується. Наприклад, так:
Dim Maccue() As Double.

У процесі роботи програми можна багаторазово заново повідомляти цей масив і щоразу встановлювати для нього нову верхню границю значень індексу (Нижню границю змінювати не можна. А якщо перевизначити багатомірний масив, то змінювати можна тільки верхню границю і тільки останній індекс.). Робиться це за допомогою ключового слова ReDim (замість слова Dim). Наприклад, так:
ReDim Macuв(N).

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

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

Наступний програмний код демонструє введення даних у вигляді рядків фіксованої довжини за допомогою системного вікна введення в одномірний динамічний масив (код 2.15).

Код 2.15.

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

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




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


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


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



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




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