- •Часть 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
Содержание отчета
Готовится один отчет на бригаду по вариантам заданий в печатном виде для заданий, указанных в табл. 5.1. Он должен содержать следующие разделы:
титульный лист;
задание;
словесное описание алгоритма;
схему алгоритма;
текст программы на языке Java.
Контрольные вопросы
1. Какие циклы называются итерационными и чем они отличаются от циклов со счетчиком?
2. Привести общую форму записи цикла while и пример программного кода.
3. Привести общую форму записи цикла do-while и пример программного кода.
4. Чем отличается цикл с предусловием от цикла с постусловием?
5. Что такое массив?
6. Что подразумевается под размерностью массивов и каковы особенности задания индексов массивов в Java?
7. Как выполняется объявление и выделение памяти (инициализация) для одномерного массива?
8. Какие алгоритмы используются при обработке одномерных массивов и какое основное правило нужно выполнять для таких задач?
9. Как осуществляется ввод и вывод одномерных массивов?
10. Какие алгоритмы используются для вычисления сумм и количеств элементов массивов?
11. Приведите классический алгоритм нахождения максимума и минимума в одномерном массиве.
12. Как найти номер минимального и максимального элементов массива?
13. Как выполняется поиск максимума и минимума среди элементов, имеющих заданное свойство?
Лабораторная работа № 6 алгоритмы сортировки и разбиения одномерных массивов
Цель работы – изучение типовых алгоритмов и разработка программ упорядочения одномерных массивов и их разбиения на несколько массивов, имеющих заданные свойства.
Источники: [3, с. 160], [4, с. 121-124].
Краткая теория Сортировка одномерных массивов
Сортировка – это расположение чисел в порядке возрастания или убывания.
Наиболее распространенный и простой метод сортировки – метод «пузырька». Он требует минимального объема памяти для данных, но затраты времени на этот метод велики. Суть метода «пузырька» заключается в следующем.
Пусть, например, дано n чисел и их необходимо расположить в порядке возрастания. При упорядочении выполняются следующие операции:
1) числа сравниваются попарно: первое со вторым; второе с третьим; i-тое – с (i+1)-м;
2) если меньшее стоит в паре на втором месте, то числа меняются местами.
За один такой просмотр массива минимальное число «выталкивается», по крайней мере, на одно место вверх (вперед), а максимальное – перемещается в самый конец (вниз). То есть минимальное число как легкий пузырек воздуха в жидкости постепенно «всплывает» в начало последовательности. Отсюда – название метода. За (n – 1) просмотр произойдет полное упорядочение массива при любом исходном расположении чисел в нем. Рассмотрим работу метода на примере сортировки массива по возрастанию, приведенном на рис. 6.1.
Алгоритм сортировки 1:
1. Ввести массив из n чисел.
2. Для номера просмотра k = 0 до k < x.length –1.
2.1. Для номера числа i = 0 до i < x.length –2.
Если число[i] > число[i+1], то поменять их местами.
3. Вывести отсортированный массив.
4. Закончить.
-
19
13
5
31
1
26
7
– исходный массив
13
19
5
19
перестановки в первом просмотре
1
31
26
31
7
31
13
5
19
1
26
7
31
– после первого просмотра
5
13
1
19
7
26
5
13
1
19
7
26
31
– после второго просмотра
1
13
перестановки в третьем просмотре
7
19
5
1
13
7
19
26
31
– после третьего просмотра
1
5
перестановки в четвертом просмотре
7
13
1
5
7
13
19
26
31
– после четвертого просмотра
В пятом просмотре перестановок нет. Сортировка окончена.
1
5
7
13
19
26
31
– отсортированный массив
Рис. 6.1
Глубину просмотра можно уменьшать, основываясь на том, что большие числа «опускаются» вниз (в конец последовательности) и затем не переставляются. Во внутреннем цикле for конечное значение параметра цикла i уменьшается на номер просмотра k:
for (int k = 0; k< x.length – 1; k++) // номер просмотра
for (int i = 0; i < x.length –k; i++) //
if (x[i]>x[i+1]){…}
Сокращение количества просмотров дает лучшие временные характеристики метода. Из алгоритма можно понять, что если на одном из просмотров не было перестановок, то их не будет и потом – данные уже отсортированы, процесс сортировки можно закончить. Такой подход дает значительную экономию времени при работе с большими, «почти отсортированными» массивами.
В алгоритме используется переменная «перестановка_есть», которой сначала присваивается значение «истина», а как только в одном из просмотров не будет перестановок – ей присваивается значение «ложь». Это позволяет прервать выполнение цикла while.
Алгоритм сортировки 2:
1. Ввести массив x из n элементов.
2. Признак перестановка_есть = истина.
3. Номер просмотра к=0.
4. Пока перестановка_есть = истина, выполнять.
4.1. количество_перестановок =0.
4.2. Для i от 0 до i< x.length –k – 1
Если x[i] > x[i+1], то
4.2.1. поменять x[i] и x[i+1]
4.2.2. количество_перестановок++
4.3. Если количество_перестановок=0,
признак перестановка_есть=ложь .
4.4. k++
5. Вывести массив x.
6. Закончить.
