Студопедия

КАТЕГОРИИ:


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

Багатовимірний масив




Вправи

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

Фокус вводу, метод SetFocus (установки фокуса вводу), метод Show (відкриття форми), метод Hide (приховання форми), об'єкт управління Контейнер OLE, масив об'єктів управління.

1. Як Ви думаєте, чому у прикладі 2.5 параметр Index процедури Command_Click (код 2.9) має тип Integer, а не Long?

2. Як Ви думаєте, чи можна взагалі відмовитися від процедури-події Form_Load у програмі прикладу 2.5? (Програмний код при цьому скоротиться ще на 3 рядки.)
Відповідь: Можна. Початкове значення змінної НомерКартинки буде встановлено рівним 0 за замовчуванням.

3. А що потрібно зробити для того, щоб при завантаженні форми на ній з'являлося обране навмання одне із шести зображень? Відповідь: У процедуру-подію Form_Load можна включити 2 оператора: z = Int (Rnd * 6): Command_Click(z). Можна піти і далі — за допомогою функції Rnd і об'єкта управління Timer змусити з'являтися одне із шести зображень (обране навмання) через рівні проміжки часу. Про цей об'єкт управління буде розказано в 7-й главі нашого посібника.

1. Встановіть на екранній формі 10 командних кнопок, на кожну з яких помістіть цифру — від 0 до 9. У робочому додатку натиснення кожної з цих кнопок повинне викликати появу на екранній формі відповідної цифри (наприклад, у полі мітки чи в текстовому полі).

2. Вдоскональте рішення попередньої вправи — за допомогою 10 командних кнопок з цифрами від 0 до 9 користувач повинен мати можливість виводити на екранну форму будь-який рядок цифр.

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

Приклад 2.6. Нехай Windows-додаток, який Ви повинні створити, призначається для декана факультету. За допомогою цього додатка він має намір аналізувати результати іспитів. Метою цього аналізу може бути одержання відповідей, наприклад, на такі питання:

· Яке середнє значення оцінок, що одержав кожен студент?

· Яке середнє значення оцінок усіх студентів по кожному зі зданих іспитів?

· Скільки на курсі студентів, що здали всі іспити на одні п'ятірки?

· Скільки на курсі студентів, що одержали трійку хоча б з одного предмету?

Питань, подібних цим, можна придумати чимало. І на усі з них програма повинна дати точну відповідь.

При спробі запрограмувати одержання відповідей на перераховані вище питання Ви можете зіштовхнутися з труднощами. Вони аналогічні тим, про які йшла мова в попередньому розділі.

Допустимо, що кожен студент повинен здати 5 екзаменів з наступних предметів:

1. «Предмет 1»,

2. «Предмет 2»,

3. «Предмет 3»,

4. «Предмет 4»,

5. «Предмет 5».

Припустимо, що на Вашому курсі 3 групи, в яких 70 студентів (25, 15 і 30 чоловік у групі).

Нехай окреме значення, що буде обробляти Ваша програма, — це оцінка кожного Студента по кожному предмету. Їх легко порахувати: цих значень 350. Вони являють собою дані одного типу — цілі числа в межах від 0 до 5. Будемо вважати, що оцінка 2 — це провал на іспиті, оцінка 1 — неявка на іспит без поважної причини, а оцінка 0 — неявка з поважної причини (наприклад, через хворобу).

Якби Ваш додаток повинен був відповідати тільки на перше з перерахованих питань, то можна було б не зберігати всі ці значення, а відразу при введенні підсумовувати їх, щоб потім розділити на число доданків. А якщо Ви хочете зберегти десь у програмі значення оцінок для того, щоб потім використовувати їх для відповідей на інші питання? Скільки змінних треба було б Вам для цього?

Зрозуміло, немає рації повідомляти свою власну змінну для кожної з 350 оцінок. Неважко догадатися, що в даному випадку потрібно поступити аналогічно до того, як ми зробили в попередньому розділі — скористатися поняттям масиву.

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

Таблиця даних

це послідовність списків однакової довжини, що називаються рядками таблиці; елемент будь-якого рядка називається осередком таблиці; елементи всіх рядків з однаковим номером утворюють стовпець таблиці.

Набір таблиць даних

це послідовність таблиць даних з однаковим числом рядків і стовпців.

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

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

Приклад 2.7. Код 2.11 демонструє оголошення двох масивів — двовимірного і тривимірного.

Код 2.11
Dim МасивА(1 TO 100, -5 TO 4) ' - проголошення двовимірного масиву ' десяткових чисел подвійної точності, ' кількість чисел <= 1000 Dim МасивБ(19, 49, 99) As Strsng * 10 ' - проголошення тривимірного масиву ' рядків фіксованої довжини, ' кількість рядків <= 100000.

Для розв'язання задачі з прикладу 2.7 можна запропонувати кілька варіантів багатовимірних масивів.

Можна, наприклад, розглянути 3 двовимірних масиви для трьох таблиць, що містять оцінки студентів кожної з трьох груп (кожен рядок таблиці — це оцінки одного студента даної групи, а кожен стовпець — оцінки з одного предмету в даній групі).

Табл.2.2 Оцінки студентів
Предмет Предмет 1 Предмет 2 Предмет 3 Предмет 4 Предмет 5
ФИО
Андрєєва К.И.          
Бородін Д.П.          
Вороніна Л.Ф.          
... ... ... ... ... ...
Яковлєв М.А          

Сумарна кількість рядків у всіх трьох таблицях дорівнює 70 (25 + 25 + 30), а кількість значень оцінок дорівнює 350.

Замість трьох двовимірних можна запропонувати всього один тривимірний масив для набору розглянутих таблиць. При цьому сумарна кількість осередків цих таблиць може виявитися більше загальної кількості оцінок. (У даному випадку, наприклад, кількість осередків дорівнюватиме 450 — на 100 більше, ніж кількість оцінок.)

Приклад 2.8. За допомогою поняття двовимірного масиву запрограмуємо розв'язання задачі, аналогічної до тих, що перераховані в прикладі 2.7. Задача ця така:

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

Р о з в' я з о к. Насамперед оголосимо цей масив (код 2.12):

Код 2.12

Привласнювати значення елементам оголошеного масиву не будемо — будемо виходити з того, що він уже заповнений.

Код 2.13

У результаті роботи цієї програми буде знайдений індекс першого за списком Студента, у якого максимальна середня оцінка (значення змінної ІндексМакс). Нам же потрібно знайти більш повне рішення цієї задачі — вивести прізвища (a не індекси) всіх студентів, у яких максимальна середня оцінка. Адже відмінниць і відмінників може бути небагато в одній групі!

Очевидно, що для зазначеного уточнення рішення задачі нам буде потрібно ще один масив, — цього разу, одномірний: ПрізвищеСтудента(ІндексСтудента). Оголошення і заповнення цього масиву розглядати не будемо, а відразу напишемо продовження нашої програми (код 2.14).

Код 2.14

Коди 2.13 і 2.14 утворять загальну програму, що і вирішить нашу задачу. Однак впадає в око явний недолік такої «склеєної» з двох частин програми — для кожного Студента його середній бал обчислюється двічі! Подумайте самі, як можна уникнути дублювання обчислень.
Вказівка: Використайте ще один одномірний масив — середніх оцінок студентів даної групи. Цей масив варто заповнити при першому перегляді масиву оцінок — у процесі роботи першої частини програми.

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

багатовимірний масив, двовимірний масив, таблиця, тривимірний масив, набір таблиць.




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


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


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



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




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