Основы программирования. Массивы

Содержание

Слайд 2

Массивы Массив представляет набор однотипных переменных. Объявление массива похоже на объявление

Массивы

Массив представляет набор однотипных переменных. Объявление массива похоже на объявление переменной

за тем исключением, что после указания типа ставятся квадратные скобки:
тип_переменной[] название_массива;
Слайд 3

Массивы Например, определим массив целых чисел: int[] numbers; После определения переменной

Массивы

Например, определим массив целых чисел:
int[] numbers;
После определения переменной массива мы можем

присвоить ей определенное значение:
int[] nums = new int[4];
Здесь вначале мы объявили массив nums, который будет хранить данные типа int. Далее используя операцию new, мы выделили память для 4 элементов массива: new int[4]. Число 4 еще называется длиной массива. При таком определении все элементы получают значение по умолчанию, которое предусмотренно для их типа. Для типа int значение по умолчанию - 0.
Слайд 4

Массивы Также мы сразу можем указать значения для этих элементов: int[]

Массивы

Также мы сразу можем указать значения для этих элементов:
int[] nums2 =

new int[4] { 1, 2, 3, 5 };
int[] nums3 = new int[] { 1, 2, 3, 5 };
int[] nums4 = new[] { 1, 2, 3, 5 };
int[] nums5 = { 1, 2, 3, 5 };
Все перечисленные выше способы будут равноценны.
Слайд 5

Элементы массива Для обращения к элементам массива используются индексы. Индекс представляет

Элементы массива

Для обращения к элементам массива используются индексы. Индекс представляет номер

элемента в массиве, при этом нумерация начинается с нуля, поэтому индекс первого элемента будет равен 0. А чтобы обратиться к четвертому элементу в массиве, нам надо использовать индекс 3, к примеру: nums[3]. Используем индексы для получения и установки значений элементов массива:
Слайд 6

Элементы массива

Элементы массива

Слайд 7

Элементы массива int[] nums = new int[4]; nums[0] = 1; nums[1]

Элементы массива

int[] nums = new int[4];
nums[0] = 1;
nums[1] = 2;
nums[2] =

3;
nums[3] = 5;
Console.WriteLine(nums[3]); // 5
И так как у нас массив определен только для 4 элементов, то мы не можем обратиться, например, к шестому элементу: nums[5] = 5;. Если мы так попытаемся сделать, то мы получим исключение IndexOutOfRangeException.
Слайд 8

Свойство Length Все массивы являются объектами и у них есть некоторые

Свойство Length

Все массивы являются объектами и у них есть некоторые свойства. Самым полезным

для нас будет свойство Length, которое возвращает количество элементов в массиве (во всех размерностях)
int[] numbers = new int[5]; int size = numbers.Length; // size = 5
Слайд 9

Перебор массивов. Цикл foreach Цикл foreach предназначен для перебора элементов в

Перебор массивов. Цикл foreach

Цикл foreach предназначен для перебора элементов в контейнерах,

в том числе в массивах. Формальное объявление цикла foreach:
foreach (тип_данных название_переменной in контейнер)
{
// действия
}
Слайд 10

Перебор массивов. Цикл foreach Например: int[] numbers = new int[] {

Перебор массивов. Цикл foreach

Например:
int[] numbers = new int[] { 1, 2,

3, 4, 5 };
foreach (int i in numbers)
{
Console.WriteLine(i);
}
Здесь в качестве контейнера выступает массив данных типа int. Поэтому мы объявляем переменную с типом int
Слайд 11

Перебор массивов. Цикл for Подобные действия мы можем сделать и с

Перебор массивов. Цикл for

Подобные действия мы можем сделать и с помощью

цикл for:
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
Слайд 12

Перебор массивов. Цикл for Цикл for более гибкий по сравнению с

Перебор массивов. Цикл for

Цикл for более гибкий по сравнению с foreach.

Если foreach последовательно извлекает элементы контейнера и только для чтения, то в цикле for мы можем перескакивать на несколько элементов вперед в зависимости от приращения счетчика, а также можем изменять элементы:
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    numbers[i] = numbers[i] * 2;
    Console.WriteLine(numbers[i]);
}
Слайд 13

Задачи с массивами Рассмотрим пару задач для работы с массивами. Найдем

Задачи с массивами

Рассмотрим пару задач для работы с массивами.
Найдем количество положительных

чисел в массиве:
int[] numbers = { -4, -3, -2, -1, 0, 1, 2, 3, 4 };
int result = 0;
foreach(int number in numbers)
{
if(number > 0)
{
result++;
}
}
Console.WriteLine(result);
Слайд 14

Задачи с массивами Вторая задача - инверсия массива, то есть переворот

Задачи с массивами

Вторая задача - инверсия массива, то есть переворот его

в обратном порядке:
int[] numbers = { -4, -3, -2, -1,0, 1, 2, 3, 4 };
int n = numbers.Length; // длина массива
int k = n / 2; // середина массива
int temp; // вспомогательный элемент для обмена значениями
Слайд 15

Задачи с массивами Вторая задача - инверсия массива, то есть переворот

Задачи с массивами

Вторая задача - инверсия массива, то есть переворот его

в обратном порядке:
for(int i=0; i < k; i++)
{
temp = numbers[i];
numbers[i] = numbers[n - i - 1];
numbers[n - i - 1] = temp;
}
Слайд 16

Задачи с массивами Вторая задача - инверсия массива, то есть переворот

Задачи с массивами

Вторая задача - инверсия массива, то есть переворот его

в обратном порядке:
foreach(int i in numbers)
{
Console.WriteLine(i);
}
Слайд 17

Задачи с массивами Вторая задача - инверсия массива, то есть переворот

Задачи с массивами

Вторая задача - инверсия массива, то есть переворот его

в обратном порядке:
Поскольку нам надо изменять элементы массива, то для этого используется цикл for. Алгоритм решения задачи подразумевает перебор элементов до середины массива, которая в программе представлена переменной k, и обмен значений элемента, который имеет индекс i, и элемента с индексом n-i-1.
Слайд 18

Array Все массивы в C# построены на основе класса Array из

Array

Все массивы в C# построены на основе класса Array из пространства имен System.

Этот класс определяет ряд свойств и методов, которые мы можем использовать при работе с массивами. Основные свойства и методы:
Свойство Length возвращает длину массива
Свойство Rank возвращает размерность массива
Статический метод BinarySearch() выполняет бинарный поиск в отсортированном массиве
Статический метод Clear() очищает массив, устанавливая для всех его элементов значение по умолчанию
Статический метод Copy() копирует часть одного массива в другой массив
Статический метод Exists() проверяет, содержит ли массив определенный элемент
Слайд 19

Array Все массивы в C# построены на основе класса Array из

Array

Все массивы в C# построены на основе класса Array из пространства имен System.

Этот класс определяет ряд свойств и методов, которые мы можем использовать при работе с массивами. Основные свойства и методы:
Статический метод Find() находит элемент, который удовлеворяет определенному условию
Статический метод FindAll() находит все элементы, которые удовлеворяет определенному условию
Статический метод IndexOf() возвращает индекс элемента
Статический метод Resize() изменяет размер одномерного массива
Статический метод Reverse() располагает элементы массива в обратном порядке
Статический метод Sort() сортирует элементы одномерного массива
Слайд 20

Array Разберем самые используемые методы. Например, изменим порядок элементов: int[] numbers

Array

Разберем самые используемые методы. Например, изменим порядок элементов:
int[] numbers = {

-4, -3, -2, -1,0, 1, 2, 3, 4 };
// расположим в обратном порядке
Array.Reverse(numbers);
foreach(int number in numbers)
{
Console.Write(number);
}
Слайд 21

Array Метод Copy копирует часть одного массива в другой: int[] numbers

Array

Метод Copy копирует часть одного массива в другой:
int[] numbers = { -4, -3,

-2, -1,0, 1, 2, 3, 4 };
int[] numbers2 = new int[5];
// копируем из numbers с 2-го индекса 5 элементов
// и поместим их в массив numbers2, начиная с 0-го индекса
Array.Copy(numbers, 2, numbers2, 0, 5);
foreach(int number in numbers2)
{
Console.Write(number);
}
Слайд 22

Array Отсортируем массив с помощью метода Sort(): int[] numbers = {

Array

Отсортируем массив с помощью метода Sort():
int[] numbers = { -3, 10, 0,

-5, 12, 1, 22, 3};
Array.Sort(numbers);
foreach(int number in numbers)
{
Console.WriteLine(number);
}