Найти тему
Кодовые Мемуары

Разбираемся с массивами в C#: не для слабонервных 😨!

Оглавление

Предисловие

Статья входит в подборку: C# Starter Pack: Учимся с нуля

Удобная навигация по подборке: тык

Введение

Привет, дружище! Сегодня у нас новая тема из нашего крутого C# Starter Pack. Посмотри на прошлую статью, если пропустил: тыкай сюда.

А сегодня присаживайся поудобнее, завари чайку/кофейку или чего ты там завариваешь (не чифир ли?), ведь мы будем разбирать массивы, поехали!

Массив как шкатулка со всякими штучками

Объявляешь переменную коробку и вуаля, там уже твои мелочи уютно расположились.

После типа обязательны квадратные скобки, это говорит о том, что переменная является массивом
После типа обязательны квадратные скобки, это говорит о том, что переменная является массивом

Например, у тебя есть куча всяких монеток: рубль там, два рубля и так далее. Так вот чтобы они не валялись у тебя просто так - складываем их в копилку:

Операция new выделяет нам память для 5 элементов массива
Операция new выделяет нам память для 5 элементов массива

И вот теперь у тебя есть копилка, которая может вмещать в себя 5 элементов. То бишь длина массива уже равна 5, ни больше, ни меньше, но пока что мы в твою копилку ничего не положили, поэтому, по умолчанию, все 5 элементов будут значениями по умолчанию (в случае чисел - 0). Так устроен C#, друг!

Как заполнить эту копилку? - легко!

Ты можешь заранее решить, какие монетки туда положишь:

-4

Или даже так:

-5

Да-да, мы можем назначить массиву все необходимое через фигурные скобки! Иначе пришлось бы заморачиваться над этим делом таким вот образом:

В программировании индекс начинается с 0, поэтому первый элемент будет располагаться под индексом 0
В программировании индекс начинается с 0, поэтому первый элемент будет располагаться под индексом 0

Такие же фокусы можно провернуть и с другими штуками, например, со строками:

-7

Индексы: Как найти нужную монетку

В массивах всё начинается не с один, два, три, вовсе нет! Все начинается именно с нуля. Чтобы достать монетку из копилки:

-8

А если хочешь поменять монетку:

-9

Но помни, если ты попытаешься достать шестую монетку из копилки, где их всего четыре, C# тебе вежливо скажет: "Так не пойдет, дружище!" и выкинет тебе ошибку.

Как узнать размер шкатулки?

Каждая коробка знает, сколько в ней местечка:

-10

Вытаскиваем последнюю монетку

А чтобы вытащить монетки с конца, воспользуйся этим трюком:

Длина - 1 всегда равна индексу последнего элемента в массиве, так как индекс начинается с нуля
Длина - 1 всегда равна индексу последнего элемента в массиве, так как индекс начинается с нуля

Но можно сделать еще проще и без головняка:

-12

Перебираем монетки

Теперь, если захочешь посмотреть, что у тебя в коробке, просто перебери её циклом foreach:

-13

Или с помощью for, если хочешь чего поинтереснее:

-14

Разница между foreach и for в том, что в foreach массив или коллекция каких-либо элементов не может меняться, когда в for тебе доступна любая шалость!

А бывают ли многомерные массивы?

Постой-ка! У нас есть не только одномерные массивы (1D), но и двухмерные (2D), и даже трехмерные (3D)! Для лучшего понимания покажу между ними разницу одной картинкой:

-15

Переходим к 2D

Тут уже будут дела чуть посерьезнее, но давай вспомним игру "Морской бой" и сразу все станет понятно. Поиграемся с координатами!

-16

Как найти кораблик (или элемент массива)?

-17

А чтобы пройтись и обстрелять каждую клетку - делаем таким образом:

-18

А что по поводу инициализации? Держи пример:

Вот так вот легко и просто!
Вот так вот легко и просто!

А 3D это как вообще?

Да вот так! Представим себе кубик Рубика - это и будет 3D.

Создаем их так:

-20

Инициализация тут чуть мудренее, всего-то:

Можно переносить фигурные скобки на новую строку, чтобы глазам было удобнее прочитать всю эту заварушку
Можно переносить фигурные скобки на новую строку, чтобы глазам было удобнее прочитать всю эту заварушку

И вот ты уже исследуешь трехмерное пространство!

Зубчатые массивы

Или другими словами: массив массивов. Ну вы поняли..

-22

Представим себе полки разной длины, типа так модно было, вы просто не понимаете:

-23

Здесь две пары квадратных скобок говорят нам "Друг, мы массив из массивов, то есть тот массив, который хранит в себе другие массивы!". Длина такого массива указывается только в первых квадратных скобках. В случае с нашими полками длина будет равна 3, а вот на каждой полке мы уже сами решаем, что и сколько храним, поэтому размеры могут скакать в непонятном порядке, на то он и зубчатый!

Выглядеть это будет примерным образом:

-24

И вот у тебя полки для всех твоих штучек.

А вот мы и добрались до практики!

Задачки на одномерные массивы:

  1. Создай массив из 5 элементов, представляющих количество конфет в разных пачках. Заполни его и найди общее количество конфет.
  2. Создай массив из 3 песен (просто названия). Попроси пользователя ввести их названия одно за другим, сохраняя в массив. Выведи на экран список введенных песен.
  3. Создай массив из 7 элементов, где каждый элемент – это количество пройденных шагов в разные дни недели. Заполни его и выведи общее количество шагов за неделю.

Задачки на двухмерные массивы:

  1. Создай двухмерный массив 3x3, представляющий оценки трех учеников по трем предметам. Заполни его случайными оценками от 2 до 5 и выведи на экран.
  2. Создай двухмерный массив 10x10 и заполни его таблицей умножения (произведения индексов строк и столбцов).

Задачки на трехмерные массивы:

  1. Создай трехмерный массив 3x3x3, представляющий кубик Рубика. Заполни его цветами (можно использовать числа для представления разных цветов).

Задачки на зубчатые массивы:

  1. Создай зубчатый массив, представляющий ряды в кинотеатре. Пусть будет 3 ряда с разным количеством мест (3, 4, 5). Заполни его числами, где "1" – место занято, "0" – место свободно.
  2. Создай зубчатый массив, где каждый подмассив – это список подарков, которые хочет получить каждый член семьи. Заполни массив и выведи списки подарков.

Итак, что у нас получилось?

Мы прошли путь от простых одномерных до сложных трехмерных массивов и даже разобрались с зубчатыми полками! Теперь ты знаешь, как устроены массивы в C# и как с ними работать.

Если у тебя будут вопросы - стучись, не стесняйся. Тут мы все друзья! А в следующей статье мы познакомимся с умными контейнерами для ваших данных.

Ставь ❤️ и подписывайся на канал, до новых встреч!

Предыдущая статья: тык

Поддержать автора:

Донат для Кодовые Мемуары | donate.stream

Наука
7 млн интересуются