Практическая работа №3
Тема: Одномерные массивы
Цель работы: изучить концепцию одномерных массивов в C#, освоить способы их объявления, инициализации, доступа к элементам и манипулирования данными.
Теоретические сведения
Массив представляет набор однотипных данных. Объявление массива похоже на объявление переменной за тем исключением, что после указания типа ставятся квадратные скобки:
| тип_переменной[] название_массива; |
Например, определим массив целых чисел:
После определения переменной массива мы можем присвоить ей определенное значение:
Здесь вначале мы объявили массив nums, который будет хранить данные типа int. Далее используя операцию new, мы выделили память для 4 элементов массива: new int[4]. Число 4 еще называется длиной массива. При таком определении все элементы получают значение по умолчанию, которое предусмотренно для их типа. Для типа int значение по умолчанию - 0.
Также мы сразу можем указать значения для этих элементов:
Все перечисленные выше способы будут равноценны.
Подобным образом можно определять массивы и других типов, например, массив значений типа string:
| string[] people = { "Tom", "Sam", "Bob" }; |
Индексы и получение элементов массива
Для обращения к элементам массива используются индексы. Индекс представляет номер элемента в массиве, при этом нумерация начинается с нуля, поэтому индекс первого элемента будет равен 0, индекс четвертого элемента - 3.
Используя индексы, мы можем получить элементы массива:
Также мы можем изменить элемент массива по индексу:
И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу. Если мы так попытаемся сделать, то мы получим ошибку во время выполнения:
Свойство Length и длина массива
каждый массив имеет свойство Length, которое хранит длину массива. Например, получим длину выше созданного массива numbers:
Для получения длины массива после названия массива через точку указывается свойство Length: numbers.Length.
Получение элементов с конца массива
Благодаря наличию свойства Length, мы можем вычислить индекс последнего элемента массива - это длина массива - 1. Например, если длина массива - 4 (то есть массив имеет 4 элемента), то индекс последнего элемента будет равен 3. И, используя свойство Length, мы можем легко получить элементы с конца массива:
Однако при подобном подходе выражения типа numbers.Length - 1, смысл которых состоит в том, чтобы получить какой-то определенный элемент с конца массива, утяжеляют код. И, начиная, с версии C# 8.0 в язык был добавлен специальный оператор ^, с помощью которого можно задать индекс относительно конца коллекции.
Перепишем предыдущий пример, применяя оператор ^:
Перебор массивов
Для перебора массивов мы можем использовать различные типы циклов. Например, цикл foreach:
Здесь в качестве контейнера выступает массив данных типа int. Поэтому мы объявляем переменную с типом int
Подобные действия мы можем сделать и с помощью цикл for:
В то же время цикл for более гибкий по сравнению с foreach. Если foreach последовательно извлекает элементы контейнера и только для чтения, то в цикле for мы можем перескакивать на несколько элементов вперед в зависимости от приращения счетчика, а также можем изменять элементы:
Также можно использовать и другие виды циклов, например, while:
Задачи:
1. Заполнить массив из восьми элементов следующими значениями: первый элемент массива равен 37, второй — 0, третий — 50, четвертый — 46, пятый — 34, шестой — 46, седьмой — 0, восьмой —13.
2. Заполнить массив из десяти элементов значениями, вводимыми с клавиатуры в ходе выполнения программы.
3. Заполнить массив из двенадцати элементов так: 1 2 … 12.
4. Заполнить массив из двадцати элементов так: 20 19 … 1.
5. Заполнить массив из восьми элементов таким образом, чтобы значения элементов при просмотре массива слева направо образовывали:
а) убывающую последовательность;
б) возрастающую последовательность.
Контрольные вопросы:
Что такое массив?
Что такое одномерный массив?