Слайд 2Контрольные вопросы
Что такое цикл?
Когда обычно применяют цикл for?
Какие есть особенности у цикла
for?
Как работает break в циклах?
Чем отличается использование continue в цикле while и for?
Основное правило вложенных циклов
Слайд 3Одна переменная – одно значение
Для хранения данных в памяти можно использовать переменные.
Но каждая переменная способна одновременно хранить лишь один элемент информации. Чтобы сохранить второй элемент, необходимо создать ещё одну переменную... Но что же делать, если нужно будет хранить целое множество однотипных элементов?
Слайд 4Использовать массивы!
Для наглядности представьте себе собранные в один ряд пустые коробки. В
каждую коробочку можно положить что-нибудь однотипное, например, котов. Теперь, даже не зная их по именам, вы можете выполнить команду Накормить кота из 3 коробки. Сравните с командой Накормить Рыжика. Чувствуете разницу? Вам не обязательно знать котов по именам, но вы всё равно сможете справиться с заданием. Завтра в этих коробках могут оказаться другие коты, но это не составит для вас проблемы, главное знать номер коробки, который называется индексом.
Слайд 5Понятие массива
Массив – это множество однотипных переменных, последовательно расположенных в памяти (т.е.
рядом, друг за другом)
Значения переменных массива доступны по одному общему имени
При этом каждая переменная в массиве является самостоятельной единицей под названием элемент
Каждый элемент имеет свой порядковый номер - индекс. По индексу можно обращаться к конкретному элементу массива
Индексы массива начинаются с нуля (индекс - смещение от начала).
Слайд 6Синтаксис создания массива
тип[] имя = new тип[количество_элементов];
или
тип имя[] = new тип[количество_элементов];
Создание
ссылочной переменной (без массива):
int cats[]; // первый вариант
int[] cats; // второй вариант
Слайд 7Примеры кода
int[] cats;
cats = new int[8];
// все элементы массива будут равны 0
int[]
cats = new int[8];
int count = 8; // count = sc.nextInt();
int[] cats = new int[count];
String cats[] = new String[8];
// все элементы массива будут равны null
Слайд 8Явная инициализация массива
int[] cats = new int[] {5, 4, 7, 3};
int[] cats
= {5, 4, 7}; // упрощённая форма записи
String catNames[] = new String[] {"Рыжик", "Барсик", "Том" };
int[] cats, dogs, chipmunks; // три ссылки!
int cats[], dogs[], chipmunks[], amount;
Слайд 9Индексация элементов массива
int[] cats = new int[10];
Элементы располагаются по возрастанию адресов. Формула,
по которой виртуальная машина определяет нужный адрес:
базовый адрес массива + размер базового типа * индекс
Если указать неправильный индекс, программа попытается получить полный доступ к содержимому ячейки памяти, которая ей по сути не принадлежит. В результате этого произойдёт ошибка на этапе выполнения.
Слайд 10Обращение к элементам
cats[3] = 5; // четвертому по счёту элементу массива присвоено
значение 5
cats[5] = 7; // шестому по счёту элементу массива присвоено значение 7
System.out.println(cats[3]); // отображение на экране консоли четвертого элемента
cats[6] = 7; // при выходе за границы массива выбрасывается исключение ArrayIndexOutOfBoundsException
Слайд 11Количество элементов
// количество элементов массива может быть явно запрошено через свойство length.
int count = 10;
int[] ar = new int[count];
int size = ar.length; // 10
System.out.println("Размер массива: " + size);
Слайд 12Вопрос
Сколько места занимает в памяти массив такого вида?
int[] ar = new int
[10];
Слайд 13Размер массива в байтах
Структура заголовка объектов в Java:
https://habrahabr.ru/post/134102/
Слайд 14Инициализация циклом
int[] ar = new int[3];
ar[0] = 10;
ar[1] = 20;
ar[2] = 30;
int[]
ar = new int[3];
for (int i = 0; i < ar.length; i++) {
ar[i] = (i + 1) * 10;
}
Слайд 15Практика: gismeteo
Упражнение: написать программу, которая рассчитает среднегодовую температуру (среднюю, максимальную и минимальную),
по предоставленным данным. Между какими двумя месяцами года происходит максимальный перепад средних температур?