- •Часть 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
Содержание отчета
Готовится один отчет на бригаду в печатном виде для заданий согласно варианту из табл. 6.1. Он должен содержать следующие разделы:
титульный лист;
задание;
словесное описание алгоритма (для второй задачи);
схему алгоритма (для первой задачи);
текст программы на языке Java.
Контрольные вопросы
1. Что такое сортировка? Для каких данных она применяется?
2. Каковы особенности метода «пузырька» с двумя циклами for?
3. Существуют ли способы ускорения сортировки «пузырьком»?
4. Для чего массивы разбивают на несколько частей?
5. Какой тип будут иметь элементы частей массива?
6. Как объявить и выделить память для частей массива?
7. Почему для частей массива используются индексы, отличные от индексов исходного массива?
Лабораторная работа № 7 обработка двумерных массивов
Цель работы – знакомство с алгоритмами обработки матриц: ввод/вывод, нахождение суммы, количества, минимума/максимума по строкам/столбцам.
Источники: [3, с. 161-164], [4, с. 124-127].
Краткая теория Понятие многомерных массивов. Ввод и вывод матриц
Массив, который в качестве своих элементов содержит другие массивы, называется многомерным массивом. Они имеют два и более индексов.
Объявляются массивы следующим образом:
int[][] mas2; // двумерный – 2 индекса
double[][][] mas3; // трёхмерный массив – 3 индекса
int[][][][] mas4; // четырехмерный – 4 индекса
Чаще всего используются двумерные массивы. Такие массивы можно легко представить в виде матрицы, где строки являются обычными одномерными массивами с равным количеством элементов.
При создании массива можно указать явно размер каждого его уровня, но можно указать только размер первого уровня:
int matr = new int[3][4]; // Матрица из 3 строк и 4 столбцов
int [][] matr2 = new int[5][]; /* Двумерный массив из 5 строк. Сколько элементов будет в каждой строке, пока неизвестно. */
В последнем случае можно будет создать двумерный массив, который не будет являться матрицей из-за того, что в каждой его строке будет разное количество элементов.
Создать многомерный массив можно сразу, явно указав его элементы:
int[][] = {{1, 2, 8, 6}, {1, 2, 3, 4}, {1, 2, 3, 7}}; // матрица
int[][] = {{1, 2}, {1, 2, 3, 4, 5}, {1, 2, 3}}; // неравномерный массив
Обычно рассматриваются двумерные массивы с равным количеством элементов в каждой строке, т.е. матрицы.
Для обработки двумерных массивов используются два вложенных друг в друга цикла с разными счетчиками.
Ввод матрицы приведен на следующем примере.
int [][] x = new int[6][4];
for(int i=0; i<x.length; i++) {
for(int j=0; j<x[i].length; j++) {
x[i][j] = sc.nextInt(); // ввод элементов
}}
Вывод матрицы приведен ниже.
for(int i=0; i<x.length; i++) {
for(int j=0; j<x[i].length; j++) {
System.out.print(x[i][j] + "\t"); // вывод элементов в строку с табуляцией
}
System.out.println(); // переход на следующую строку
}
Типовые алгоритмы обработки матриц
Далее рассмотрено несколько задач с алгоритмами обработки матриц.
Алгоритмы обработки матриц в целом
Задача 7.1. Ввести матрицу а размерностью m*n. Подсчитать сумму всех элементов матрицы, а также сумму и количество положительных элементов.
Укрупненный алгоритм:
1. Ввести матрицу а.
2. Вывести матрицу а построчно.
3.1. Принять общую сумму элементов sum=0.
3.2. Принять сумму положительных элементов sump=0.
3.3. Принять количество положительных элементов kolp=0.
3.4. Для i от 0 до a.length
Для j от 0 до a[i].length
3.4.1. вычислить sum+=a[i][j];
3.4.2. если a[i][j] >0
а). kolp++;
б). sump+=a[i][j];
4. Вывести результаты: sum, sump и kolp.
5. Закончить.
Задача 7.2. Ввести матрицу x размерностью m*n. Найти максимум и минимум среди всех элементов, а также номера строк и столбцов, на пересечении которых они находятся. Поменять максимум и минимум местами.
Укрупненный алгоритм:
1. Ввести матрицу x.
2. Вывести матрицу x построчно.
3.1. Принять номер строки минимума nmini=0.
3.2. Принять номер столбца минимума nminj=0.
3.3. Принять минимум равным начальному элементу min=x[0][0].
3.4. Принять номер строки максимума nmaxi=0.
3.5. Принять номер столбца максимума nmaxj=0.
3.6. Принять максимум равным начальному элементу max=x[0][0].
3.7. Для i от 0 до x.length
Для j от 0 до x[i].length
3.7.1. если x[i][j] <min
nmini=i;
nminj=j;
min=x[i][j];
3.7.2. если x[i][j] >max
nmaxi=i;
nmaxj=j;
max=x[i][j];
3.8. Вывести результаты о максимуме и минимуме.
4. Поменять местами минимальный и максимальный элемент матрицы.
4.1. x[nmaxi][ nmaxj] = min;
4.2. x[nmini][ nminj] = max.
5. Вывести матрицу.
6. Закончить.
