Масиви в програмуванні
Масиви створені для зберігання багатьох значень разом.
Що таке масив?
Масив – це колекція значень.
На зображенні нижче показано, як можна уявити масив з назвою myFruits, у якому зберігатимуться значення 'banana', 'apple' та 'orange'.
Кожне значення в масиві має позицію, яка називається індексом, і починається з 0.
Нижче показано, як створюється масив myFruits за допомогою коду Python:
Перше значення '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].
Результат: '{{ 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], а потім використовуємо знак рівності =, щоб зберегти там нове значення.
Ось як можна виконати оновлення значення масиву з індексом 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 »
Вставка значення масиву
Щоб вставити значення в масив, на додаток до існуючих значень, нам потрібно:
- ім'я масиву
- команда для виконання операції вставки
- значення, яке потрібно вставити
Коли ми вставляємо значення таким чином, нове значення вставляється в кінець масиву.
Команда вставки значення в масив дещо відрізняється залежно від мови програмування.
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");
Виконати приклад »
Видалення значення масиву
Значення масиву видаляється шляхом вказівки індексу, з якого слід видалити значення.
Ось як можна видалити значення масиву, розміщене за індексом 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();
Виконати приклад »
Знаходження довжини масиву
Ви завжди можете перевірити довжину масиву:
Результат: {{ 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, виводячи кожне значення:
Результат:
Існує більше одного способу перебору масиву, але використання циклу 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++ Вектори.
