- •Часть 1
- •Часть 1
- •Введение
- •Лабораторная работа № 1 разработка схем алгоритмов
- •Краткая теория Этапы решения задач на эвм
- •Определение алгоритма и способы его описания
- •Правила оформления схем алгоритмов
- •Типы алгоритмов
- •Задания
- •Построение схем алгоритмов с помощью текстового редактора word
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 2 работа в среде netbeans. Создание простейших программ с линейным алгоритмом
- •Краткая теория Установка ide NetBeans
- •Общие правила создания приложений
- •Работа с проектом NetBeans
- •Пример создания простейшего приложения
- •Общие правила построения класса
- •Типы данных
- •Объявление переменных
- •Оператор присваивания
- •Приведение типов
- •Организация ввода данных
- •Организация вывода данных
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 3 разработка простейших приложений на базе разветвляющихся алгоритмов
- •Краткая теория Средства переименования в среде NetBeans
- •Отладка кода в среде NetBeans
- •Условный оператор if-else
- •Условный оператор switch
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 4 разработка программ с циклами со счетчиком
- •Краткая теория Циклы со счетчиком
- •Особенности алгоритмов и программ с накапливанием
- •Методы класса Math
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 5 работа с итерационными циклами. Одномерные массивы
- •Краткая теория Итерационные циклы
- •Цикл while
- •Цикл do-while
- •Одномерные массивы
- •Подсчет суммы, количества и среднего значения в одномерных массивах
- •Нахождение минимума и максимума
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 6 алгоритмы сортировки и разбиения одномерных массивов
- •Краткая теория Сортировка одномерных массивов
- •Разбиение одномерных массивов
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 7 обработка двумерных массивов
- •Краткая теория Понятие многомерных массивов. Ввод и вывод матриц
- •Типовые алгоритмы обработки матриц
- •Алгоритмы обработки матриц в целом
- •Алгоритмы обработки матриц по строкам и столбцам
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 8 диагонали матрицы, умножение матриц
- •Краткая теория Обработка главной и побочной диагоналей матриц
- •Работа с диагоналями матриц выше и ниже главной/побочной
- •Умножение матриц
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 9 обработка строк класса string
- •Краткая теория Создание объектов класса String
- •Методы класса String
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 10 алгоритмы и программы обработки фрагментов строк класса string
- •Краткая теория Сравнение символов строк класса String
- •Типовые задачи обработки массивов строк (слов из текста)
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 11 разработка алгоритмов и программ с использованием классов StringBuffer/StringBuilder
- •Краткая теория Создание и обработка объектов классов stringbuffer и stringbuilder
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа № 12 разработка собственных методов
- •Краткая теория Общие правила создания методов класса
- •Описание методов класса
- •Вызов методов класса
- •Передача параметров
- •Содержание
- •Задания
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •Программирование на Java
- •443100, Г. Самара, ул. Молодогвардейская, 244. Главный корпус
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус № 8
Одномерные массивы
Массив – это именованная конечная последовательность упорядоченных элементов одного типа, в которой доступ к каждому элементу осуществляется по его индексу.
Различают:
1-мерные массивы;
2-мерные массивы;
3-мерные и т.д.
Если в математике нумерация элементов массивов начинается с единицы, то в Java – с нуля.
Ниже приведены примеры индексации массивов в Java:
– одномерный массив
х0, х1, x2, x3, ..., xn; – 1 индекс
– двумерный массив (матрица) чисел
В виде матрицы можно представить таблицы сложения и умножения, коэффициенты в системе линейных уравнений и множество других данных.
Для начала будем рассматривать одномерные массивы.
Размер или длина массива – это общее количество элементов в массиве. Размер массива задаётся при создании массива и не может быть изменён в дальнейшем, т.е. нельзя убрать элементы из массива или добавить их туда, но можно существующим элементам присвоить новые значения.
Индекс начального элемента – 0, следующего за ним – 1 и т.д. Индекс последнего элемента в массиве – на единицу меньше, чем размер массива, т.е. равен length-1.
В Java массивы являются объектами. Это значит, что имя, которое даётся каждому массиву, лишь указывает на адрес какого-то фрагмента данных в памяти. Кроме адреса в этой переменной ничего не хранится. Индекс массива, фактически, указывает на то, насколько надо отступить от начального элемента массива в памяти, чтоб добраться до нужного элемента.
Чтобы создать массив, надо объявить, а затем с этим именем связать нужный фрагмент памяти, где и будут друг за другом храниться значения элементов массива.
Возможные следующие варианты объявления массива:
тип [] имя;
тип имя [];
где тип – это тип элементов массива, а имя – уникальный идентификатор.
Например:
int [] a;
double [] ar1;
double ar2 [];
Из примеров следует, что с именем a сможет быть далее связан массив из элементов типа int, а с именами ar1 и ar2 далее смогут быть связаны массивы из вещественных чисел (типа double). Пока массивы не созданы, а только заданы их имена и типы элементов.
Создать (инициализировать) массивы можно следующим образом:
// массив из 10 элементов типа int
a = new int[10];
// Массив из 5 элементов типа double
int n = 5;
ar1 = new double[n];
// Массив из 6 элементов типа double
ar2 = {3.14, 2.71, 0, -2.5, 99.123};
То есть при создании массива можно указать его размер либо сразу перечислить через запятую все желаемые элементы в фигурных скобках (при этом размер будет вычислен автоматически на основе той последовательности элементов, которая будет указана).
Если массив был создан с помощью оператора new, то каждый его элемент получает по умолчанию значение, равное нулю, которое при выводе на экран будет выглядеть как 0 для целочисленных и как 0.0 для вещественных типов данных.
Объявить массив и создать его одновременно можно следующим образом:
тип[] имя = new тип[размер];
или
тип[] имя = {эл0, эл1, …, элN};
Примеры:
int[] mas1 = {10,20,30};
int[] mas2= new int[3];
Если необходимо обратиться к какому-то из элементов массива для того, чтобы прочитать или изменить его значение, нужно указать имя массива и за ним индекс элемента в квадратных скобках. Элемент массива с конкретным индексом ведёт себя также, как переменная. Например, чтобы вывести первый и последний элементы массива mas1, следует написать в программе:
System.out.println("1-й эл-т = " + mas1[0], “, последний эл-т =”+ mas1[mas1.length-1]); );
Присвоить элементам массива mas2 можно следующим образом:
mas2[0] = 10;
mas2[1] = 20;
mas2[2] = 30;
Обычно заполнение массива делается с использованием цикла, например:
for(int i=0; i<=2; i++) {
mas2[i] = (i+1) * 10;
}
Длину любого созданного массива не обязательно запоминать, потому что имеется свойство, которое его хранит. Обратиться к этому свойству можно, дописав .length к имени массива. Например:
int razmer = mas1.length;
Это свойство нельзя изменять (т.е. ему нельзя ничего присваивать), можно только читать. Используя это свойство, можно не знать его конкретного размера.
Для обработки массивов обычно применяется цикл for, где параметром цикла является индекс элементов.
Заполнение массива случайно сгенерированными целыми числами:
for(int i = 0; i < ar1.length; i++) {
ar1[i] = Math.floor(Math.random() * 10);
}
Ввод массива с клавиатуры приведен в следующем фрагменте:
for(int i = 0; i < ar1.length; i++) {
ar1[i] = sc.nextInt() ;
}
Вывод на экран элементов массива продемонстрирован на следующем фрагменте кода:
for(int i = 0; i <ar.length; i++) {
System.out.print(ar[i] + " ");
}
В программировании рекомендуется не объединять процессы задания значений массива, обработки элементов и вывода. Для этих целей рекомендуется использовать отдельные циклы.
