Студопедия

КАТЕГОРИИ:


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

Одновимірний масив




У програмуванні часто вирішуються задачі, подібні до наступних. Мається велика (а іноді дуже велика) кількість даних (Під словом дані ми розуміємо значення, що можуть мати змінні програми (див. розд. 3.1) одного типу. Наприклад, числа типу Double. Необхідно знайти серед цих чисел мінімальне чи максимальне, знайти суму всіх чисел, побудувати (впорядкувати) числа в порядку зростання.

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

По-перше, Вам знадобиться велика кількість різних змінних (для кожного числа — окрема змінна зі своїм унікальним ім'ям).

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

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

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

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

Почнемо з визначення найпростішого з масивів — одномірного масиву. Крім одномірних існують багатовимірні (зокрема, двовимірні) масиви, про них йтиметься в розд. 2.3. Одномірні масиви використовуються в програмуванні значно частіше багатовимірних, тому їх зручно називати просто масивами.

Одновимірний масив (чи просто масив) — це такий засіб мови програмування (на зразок змінної) (Іноді масивом називають саму впорядковану множину значень. А кожне таке значення називають елементом масиву. Таке змішування понять не повинно Вас бентежити — програмісти не математики і не схильні до ювелірної точності визначень), що дозволяє посилатися на будь-який елемент пронумерованої множини значень. При цьому всі значення (елементи множини) повинні бути одного типу. А їхня кількість не повинна перевершувати заздалегідь заданого числа.

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

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

Приклад 2.1. Нехай послідовність — це список з 30 десяткових чисел, кожне з який — середньодобова температура повітря в червні у місті N. Номер елемента послідовності (ціле число) — це день у місяці червні (табл. 2.1).

Табл.2.1 Значення середньомісячної температури
День місяця       ...    
Температура, С° 16.5 17.3 16.2 ... 21.5 19.7

Для посилання на кожен елемент цієї послідовності досить вказати ім'я послідовності, слідом за яким у дужках вказати значення індексу. Наприклад, посилання на температуру 30-го червня можна представити так: Темnepamypa(30).

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

Згадайте: про змінну говорять, що вона одержує значення, чи що їй привласнюється значення. Про масив же говорять, що він заповнюється значеннями, чи що його елементу привласнюється значення.

Позначається масив (змінна з індексом) так:

Ім’яЗмінної (Індекс)

Що таке Ім’яЗмінної, Ви знаєте. А Індекс — це будь-який вираз, значенням якого є ціле число.

У програмі змінну з індексом можна використовувати так само, як і звичайну змінну (без індексу) — привласнювати їй конкретне значення, повідомляти її тип, використовувати її в різних виразах і т.д.

Приклад 2.2. Наступний код демонструє фрагмент програми, за допомогою якої обчислюється середня температура червня в місті N за даними табл. 2.1 із прикладу 2.1.

Код 2.1

Уважно подивіться на рядки цього коду.

Перші 3 рядка коду — це оголошення змінних. Тут використовуються і з'являються 4 змінні. Сума і СередняТемператураЧервня — звичайні змінні, Температура(День) — змінна з індексом (масив), День — індекс цього масиву (звичайна змінна).

Як з'являється звичайна змінна, Ви знаєте.

Оголошення масиву лише одним відрізняється від оголошення звичайної змінної. Після імені масиву в дужках вказується діапазон значень індексу — мінімальне і максимальне його значення. У даному випадку — це числа 1 і 30. Між ними записується ключове слово To. Всі інші значення індексу — це цілі числа між зазначеними двома.

Допускаються від'ємні значення індексу. Можливий, наприклад, такий запис діапазону: -20000 To -1000.

Часто мінімальне значення індексу не вказується. Тоді воно автоматично (за замовчуванням) приймається рівним 0. Ключове слово To при цьому не використовується.

Але максимальне значення індексу повинне бути зазначене обов'язково! Справа в тому, що при компіляції Вашої програми Visual Basic відведе Вашому масиву цілком визначений обсяг пам'яті. Цей обсяг залежить від типу, до якого належать елементи масиву, і, мабуть, від кількості цих елементів. Додаткові зведення про оголошення масиву приведені в кінці глави — у розд. 2.4.

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

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

Приклад 2.3. Допустимо, Ви хочете створити масив для посилання на кожен елемент послідовності квадратів цілих чисел від 0 до 1000. Коротше кажучи, Ви хочете створити масив таких чисел. У реальності, створювати такий масив — безглузда витівка: краще не зберігати квадрати цілих чисел, займаючи при цьому великий обсяг пам'яті, а щоразу, у міру необхідності, обчислювати їх заново. Ми привели цей приклад тільки для того, щоб показати один зі способів установки діапазону значень індексу масиву. Наступний код містить як оголошення цього масиву, так і заповнення його значеннями.

Код 2.2

Очевидно, що в даному масиві міститься 1001 число — від 0 до 1000000.

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

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

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

Приклад 2.4. Нехай масив Температура(День), як і в прикладі 2.2, вже оголошений і заповнений значеннями з табл. 2.1. Складемо алгоритм і напишемо програму знаходження мінімальної і максимальної температури червня в місті N.

Алгоритм, що ми пропонуємо, дуже популярний у програмістів. Він заснований на висуванні двох гіпотез:

1. Максимальним елементом масиву є його перший елемент.

2. Мінімальним елементом масиву також є його перший елемент.

Ці гіпотези виражаються так: те саме значення Температура (1) привласнюється двом змінним: Мах і Min.

Потім за допомогою циклу з лічильником масив проглядається (сканується) від його другого елемента і до кінця. На кожнім кроці цього процесу черговий елемент масиву порівнюється з гіпотетичними максимальним і мінімальним значеннями (значеннями змінних Мах і Min).

Якщо черговий елемент масиву виявляється більшим від гіпотетичного максимального значення, коректується перша гіпотеза, — максимальним призначається нове значення (змінюється значення змінної Мах).

Аналогічно, якщо черговий елемент масиву виявляється меншим від гіпотетичного мінімального значення, коректується друга гіпотеза про мінімальне значення (змінюється значення змінної Min).

По закінченні перегляду масиву відкоректовані гіпотези перетворюються у розв'язок даної задачі.

Програма мовою Visual Basic, у якій реалізований даний алгоритм, виглядає більш ясною і лаконічною, ніж цей алгоритм у словесному виразі:

Код 2.3

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

Код 2.4

Зверніть увагу на те, що в даному визначенні використані типи змінних, що відрізняються від тих, котрі ми застосовували в коді 2.3. Це пояснюється тим, що процедура МаксМін має універсальний характер і може бути застосована до числових масивів досить великого розміру. Максимальне значення індексу масиву може досягати максимально можливого значення змінної типу Long. А числа можуть мати не звичайну, а подвійну точність.

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




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


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


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



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




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