Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Зауваження до програми



Лекція 1

Масиви

Масив - це структура даних, яка містить безліч значень, які відносяться до одного і того ж типу. Наприклад, масив може містити 60 значень типу int, які представляють інформацію про обсяги продажів за 5 років, 12 значень типу short, що представляють кількість днів у кожному місяці, або 365 значень типу float, які вказують щоденні витрати на харчування протягом року. Кожне значення зберігається в окремому елементі масиву, і комп'ютер зберігає всі елементи масиву в пам'яті послідовно - один за одним.

Для створення м­­асиву використовується оператор оголошення. Оголошення масиву має описувати три аспекти:

· тип значень кожного елемента;

· ім'я масиву;

· кількість елементів в масиві.

У C++ це досягається модифікацією оголошення простої змінної, до якого додаються квадратні дужки, що містять всередині кількість елементів. Наприклад, наступне оголошення створює масив з ім’ям months, що має 12 елементів, кожен з яких може зберігати одне значення типу short:

short months[12]; //створює масив з 12 елементів типу short

По суті, кожен елемент - це змінна, яку можна трактувати як просту змінну.

Так виглядає загальна форма оголошення масиву:

ім’яТипу им’яМасиву[розмірМасиву];

Вираз розмірМасиву, що представляє кількість елементів, має бути цілочисельною константою, такою як 10, значенням const або константним виразом на зразок 8*sizeof(int), B якому всі значення відомі на момент компіляції. Зокрема, розмірМасиву не може бути змінною, значення якої встановлюється під час виконання програми. Однак пізніше ви дізнаєтеся, як з використанням операції new обійти це обмеження.

Масив як складний тип

Масив називають складним типом, тому що він будується з якогось іншого типу. (У мові С використовується термін похідний тип, але оскільки поняття похіднийв C++ застосовується для опису відносин між класами, довелося ввести новий термін.) Ви не можете просто оголосити, що щось є масивом; це завжди повинен бути масив елементів конкретного типу. Узагальненого типу масива не існує. Замість цього є безліч специфічних типів масивів, таких як масив char або масив long. Наприклад, розглянемо таке оголошення: float loans[20];

Типом змінної loans буде не просто "масив", а "масив float". Це підкреслює, що масив loans побудований з типу float.

Велика частина користі від масивів визначається тим фактом, що до його елементів можна звертатися індивідуально. Спосіб, який дозволяє це робити, полягає у використанні індексу для нумерації елементів. Нумерація масивів в C++ починається з нуля. (Це обов'язково - ви повинні починати з нуля. Це особливо важливо запам'ятати програмістам, які раніше працювали на мовах Pascal і BASIC.) Для вказівки елемента масиву в C++ використовується позначення з квадратними дужками та індексом між ними. Наприклад, months[0] - це перший елемент масиву months, a months[11] - його останній елемент. Зверніть увагу, що індекс останнього елемента на одиницю менше, ніж розмір масиву мал. 1). Таким чином, оголошення масиву дозволяє створювати безліч змінних в одному оголошенні, і ви потім можете використовувати індекс для ідентифікації та доступу до індивідуальних елементів.

Важливість вказівки правильних значень індексу

Компілятор не перевіряє правильність вказуваного індексу. Наприклад, компілятор не буде скаржитися, якщо ви надасте значення неіснуючого елементу months[101]. Однак таке присвоєння може викликати проблеми під час виконання програми - можливо, пошкодження даних або коду, а може бути і аварійне завершення програми. Тобто забезпечення правильності значень індексу покладається на програміста.

 
 

Мал. 1. Створення масиву

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

Лістинг 1. arrayone.cpp

Далі показано виведення програми з лістингу 1:

Зауваження до програми

Спочатку програма створює масив з трьох елементів по імені yams. Оскільки yams має три елементи, вони нумеруються від 0 до 2, і arrayone.срр використовує значення індексу від 0 до 2 для присвоювання значень трьом окремим елементам. Кожен індивідуальний елемент yams - це змінна типу int, з усіма правилами і привілеями типу int, тому arrayone.срр може (і робить це) присвоювати значення елементам, складати елементи, множити їх і відображати.

У цій програмі застосовується довгий спосіб присвоювання значень елементам yams. C++ також дозволяє ініціалізувати елементи масиву безпосередньо в операторі оголошення. У лістингу 1 демонструється цей скорочений спосіб при заданні значень елементів масиву yamcosts:

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

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

Як ви, можливо, пам'ятаєте, операція sizeof повертає розмір в байтах типу або об'єкта даних. Зверніть увагу, що застосування sizeof до імені масиву дає кількість байт, займаних усім масивом. Проте використання sizeof відносно елемента масиву дає розмір в байтах одного елемента. Це ілюструє той факт, що yams - масив, але yams[1] - просто int.




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.