НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Основи програмування. W3Schools українською. Уроки для початківців

En Es De Fr

Масиви в програмуванні


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


Що таке масив?

Масив – це колекція значень.

На зображенні нижче показано, як можна уявити масив з назвою myFruits, у якому зберігатимуться значення 'banana', 'apple' та 'orange'.

'apple' 'orange' 'banana' Values Array Name myFruits Indexes 0 1 2

Кожне значення в масиві має позицію, яка називається індексом, і починається з 0.

Нижче показано, як створюється масив myFruits за допомогою коду Python:

myFruits = Name ['banana', 'apple', 'orange'] Values Indexes 0 1 2

Перше значення 'banana' позиціонується за індексом 0 у масиві.


Що я можу зробити з масивом?

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

Отже, замість створення 3 змінних:

fruit1 = 'banana'
fruit2 = 'apple'
fruit3 = 'orange'

Ми можемо просто створити масив:

myFruits = ['banana','apple','orange']

За допомогою масиву ви можете:

  • Зберігайте колекцію чисел, слів або об'єктів.
  • Мати доступ до будь-якого значення за його індексом (позицією).
  • Зчитувати, оновлювати, вставляти або видаляти будь-які значення масиву.

Дивіться, як можна створити та використовувати масив, у розділах нижче.


Створення масиву

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

Ось як можна створити масив myFruits за допомогою різних мов програмування:


Python:
myFruits = ['banana','apple','orange']
JavaScript:
const myFruits = ['banana','apple','orange'];
Java:
String[] myFruits = {"banana","apple","orange"};
C++:
string myFruits[] = {"banana","apple","orange"};
Run Example »

У наведеному вище коді Python:

  • myFruits – це назва масиву.
  • Знак рівності = зберігає значення з правого боку в масиві.
  • Квадратні дужки [ ] означають, що ми створюємо масив.
  • 'banana','apple','orange' – це значення всередині масиву, розділені комою.

Примітка: Під час створення масиву в мовах програмування, таких як C/C++ та Java, необхідно вказати тип даних значень усередині масиву.


Операції з масивами

Масиви можна читати та маніпулювати ними багатьма різними способами, ось деякі поширені дії, які можна робити з масивом:

Операція Опис
read Зчитує значення з індексу в масиві.
update Оновлює існуюче значення в позиції індексу масиву.
insert Вставляє нове значення в масив, на додаток до існуючих значень.
remove Видаляє значення з масиву в заданій позиції індексу.
length Дає нам кількість значень у масиві. Кількість значень – це довжина масиву.
loop Відвідує кожне значення в масиві, використовуючи Цикл.

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


Зчитування значення масиву

Щоб прочитати значення масиву, ми використовуємо ім'я масиву з індексом значення, яке ми хочемо прочитати, в дужках, ось так myFruits[0].

{{ i }} '{{ el.value }}'

Результат: '{{ result }}'

Ми також повинні використати команду для запису myFruits[0] у консоль/термінал, щоб ми могли побачити результат, і це робиться дещо по-різному залежно від мови програмування.


Python:
myFruits = ['banana','apple','orange']

print(myFruits[0])
JavaScript:
const myFruits = ['banana','apple','orange'];

console.log(myFruits[0]);
Java:
String[] myFruits = {"banana","apple","orange"};

System.out.println(myFruits[0]);
C++:
string myFruits[] = {"banana","apple","orange"};

cout << myFruits[0];
Run Example »

Оновлення значення масиву

Щоб оновити значення в масиві, ми використовуємо назву масиву з позицією індексу значення, яке ми хочемо оновити, наприклад, myFruits[0], а потім використовуємо знак рівності =, щоб зберегти там нове значення.

{{ i }} '{{ el.value }}'

 

Ось як можна виконати оновлення значення масиву з індексом 0 різними мовами програмування:


Python:
myFruits = ['banana','apple','orange']

myFruits[0] = 'kiwi'
JavaScript:
const myFruits = ['banana','apple','orange'];

myFruits[0] = 'kiwi';
Java:
String[] myFruits = {"banana","apple","orange"};

myFruits[0] = "kiwi";
C++:
string myFruits[] = {"banana","apple","orange"};

myFruits[0] = "kiwi";
Run Example »

Вставка значення масиву

Щоб вставити значення в масив, на додаток до існуючих значень, нам потрібно:

  • ім'я масиву
  • команда для виконання операції вставки
  • значення, яке потрібно вставити
{{ i }} '{{ el.value }}'

 

Коли ми вставляємо значення таким чином, нове значення вставляється в кінець масиву.

Команда вставки значення в масив дещо відрізняється залежно від мови програмування.


Python:
myFruits = ['banana','apple','orange']

myFruits.append('kiwi')
JavaScript:
const myFruits = ['banana','apple','orange'];

myFruits.push('kiwi');
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.add("kiwi");
C++:
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.push_back("kiwi");
Виконати приклад »

Динамічний масив - це масив, розмір якого може змінюватися, як це необхідно для операцій вставки та видалення. У випадках, коли розмір масиву змінюється, ми використовуємо ArrayList в Java та vector в C++.

Значення також можна додати до певної позиції в масиві, використовуючи індекс, ось так:


Python:
myFruits = ['banana','apple','orange']

myFruits.insert(1,'kiwi')
JavaScript:
const myFruits = ['banana','apple','orange'];

myFruits.splice(1,0,'kiwi');
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.add(1,"kiwi");
C++:
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.insert(myFruits.begin() + 1, "kiwi");
Виконати приклад »

Видалення значення масиву

Значення масиву видаляється шляхом вказівки індексу, з якого слід видалити значення.

{{ i }} '{{ el.value }}'

 

Ось як можна видалити значення масиву, розміщене за індексом 1, у різних мовах програмування:


Python:
myFruits = ['banana','apple','orange']

myFruits.pop(1)
JavaScript:
const myFruits = ['banana','apple','orange'];

myFruits.splice(1,1);
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.remove(1);
C++:
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.erase(myFruits.begin() + 1);
Виконати приклад »

Значення також можна видалити з кінця масиву без використання індексу (за винятком Java), ось так:


Python:
myFruits = ['banana','apple','orange']

myFruits.pop()
JavaScript:
const myFruits = ['banana','apple','orange'];

myFruits.pop();
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

myFruits.remove(myFruits.size()-1);
C++:
vector<string> myFruits = {"banana", "apple", "orange"};

myFruits.pop_back();
Виконати приклад »

Знаходження довжини масиву

Ви завжди можете перевірити довжину масиву:

{{ i }} '{{ el.value }}'

Результат: {{ result }}

Ось як визначається довжина масиву в різних мовах програмування:


Python:
myFruits = ['banana','apple','orange']

print(len(myFruits))
JavaScript:
const myFruits = ['banana','apple','orange'];

console.log(myFruits.length);
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");

System.out.println(myFruits.size());
C++:
vector<string> myFruits = {"banana", "apple", "orange"};

cout << myFruits.size();
Виконати приклад »

Цикл через масив

Дивіться розділ Цикли для пояснення того, що таке цикл.

Перебір масиву означає перегляд кожного значення в масиві.

Ось як ми можемо перебрати масив myFruits за допомогою циклу for, виводячи кожне значення:

{{ i }} '{{ el.value }}'

Результат:

Існує більше одного способу перебору масиву, але використання циклу for, мабуть, є найпростішим способом, який також підтримується всіма мовами програмування, ось так:


Python:
myFruits = ['banana','apple','orange']

for fruit in myFruits:
  print(fruit)
JavaScript:
const myFruits = ['banana','apple','orange'];

for (let fruit of myFruits) {
  console.log(fruit);
}
Java:
String[] myFruits = {"banana", "apple", "orange"};

for (String fruit : myFruits) {
  System.out.println(fruit);
}
C++:
string myFruits[] = {"banana", "apple", "orange"};

for (auto fruit : myFruits) {
  cout << fruit + "\n";
}
Виконати приклад »

Інший спосіб перебрати масив – це використовувати цикл for зі змінною підрахунку для індексів, ось так:


Python:
myFruits = ['banana','apple','orange']

for i in range(len(myFruits)):
  print(myFruits[i])
JavaScript:
const myFruits = ['banana','apple','orange'];

for (let i = 0; i < myFruits.length; i++) {
  console.log(myFruits[i]);
}
Java:
String[] myFruits = {"banana", "apple", "orange"};

for (int i = 0; i < myFruits.length; i++) {
  System.out.println(myFruits[i]);
}
C++:
string myFruits[] = {"banana", "apple", "orange"};
int size = sizeof(myFruits) / sizeof(myFruits[0]);

for (int i = 0; i < size; i++) {
  cout << myFruits[i] + "\n";
}
Виконати приклад »

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

Нижче наведено приклад циклу по масиву імен у пошуках "Bob".


Python:
listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice']

for i in range(len(listOfNames)):
  print(listOfNames[i])
  if listOfNames[i] == 'Bob':
    print('Found Bob!')
    break
JavaScript:
let listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice'];

for (let i = 0; i < listOfNames.length; i++) {
  console.log(listOfNames[i]);
  if (listOfNames[i] === 'Bob') {
    console.log('Found Bob!');
     break;
  }
}
Java:
String[] listOfNames = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};

for (int i = 0; i < listOfNames.length; i++) {
  System.out.println(listOfNames[i]);
  if (listOfNames[i] == "Bob") {
    System.out.println("Found Bob!");
    break;
  }
}
C++:
string listOfNames[] = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};
int size = sizeof(listOfNames) / sizeof(listOfNames[0]);

for (int i = 0; i < size; i++) {
  cout << listOfNames[i] + "\n";
  if (listOfNames[i] == "Bob") {
    cout << "Found Bob!\n";
    break;
  }
}
Виконати приклад »

У наведеному вище коді оператор break зупиняє цикл, як тільки знайдено "Bob". Саме тому "Alice" не виводиться.


Суворе визначення масиву

Масиви, що використовуються в сучасних мовах програмування, таких як Python або JavaScript, є гнучкими, тобто масиви можуть збільшуватися, зменшуватися та зберігати різні типи значень. Інші мови програмування, такі як C та Java, вимагають чіткішого визначення масивів.

Більш суворе визначення масиву означає, що масив, окрім того, що є колекцією значень, також є:

  • фіксована довжина
  • однаковий тип даних для всіх значень
  • зберігаються послідовно в пам'яті

Фіксована довжина означає, що довжину масиву (кількість значень усередині масиву) не можна змінити.

Наприклад, під час використання мови програмування C, якщо ви створили масив із 4 значень, довжина масиву (4) фіксована і не може бути змінена. Тому, якщо ви хочете вставити 5-те значення в кінець масиву, ви повинні створити новий масив довжиною 5 значень, вставити туди початкові 4 значення та помістити 5-те значення в останнє місце в новому масиві, де тепер є для нього місце.

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

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

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

Коли розробники потребують більш гнучкої/динамічної функціональності масивів у таких мовах, як C або Java, вони часто використовують бібліотеки, щоб отримати розширену функціональність динамічних масивів, яку вони шукають.

У прикладах коду на цій сторінці, щоб досягти динамічної довжини масиву, щоб ми могли вставляти та видаляти значення, ми використовували Python Списки, JavaScript Масиви, Java Список масивів та C++ Вектори.