Лабораторная 1
Общее задание
1. Установите JDK 1.7 или 1.8. Задайте пути к компилятору в PATH. В отчете опишите порядок своих действий и приведите скриншоты для каждого этапа.
2. Скомпилируйте и выполните простую программу в IDE. Объясните, что делает каждая ее строка. В отчете опишите порядок своих действий и приведите скриншоты для каждого этапа.
import java.util.Scanner;
public class Joke {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your first name ");
String name = scanner.next();
String reverse = "";
for (int i = name.length()-2; i>=0; i--) {
reverse += name.substring(i,i+1);
}
reverse = name.substring(name.length()-1,name.length()).toUpperCase() + reverse.toLowerCase();
System.out.println("Then my name is "+reverse);
}
}
3. Объясните, что делает каждая строка приведенной программы.
4. Протестируйте на примере той же программы работу средств дополнения и автогенерации кода, подсказок, а также средств отладки IDE. В отчете перечислите возможности, которыми вы научились пользоваться и приведите их скриншоты.
Лабораторная 2
Для выполнения каждого индивидуального задания напишите консольное приложение. Реализуйте ввод исходных данных с клавиатуры и контроль правильности ввода. Результат выведите в консоль в отформатированном и удобном для чтения виде.
Общее задание
1. Реализуйте простейший калькулятор, который обрабатывает строковые команды вида «a operation b», где a, b – вещественные числа, operation – один из знаков операций +, -, *, /, ^. Если первый операнд не указан, то вместо него нужно использовать результат предыдущего действия. Например:
2 ^ 4
16
- 2.5
13.5
Для разбора вводимых выражений и проверки правильности ввода используйте регулярные
выражения.
Вариант 3
2. Выпуклый многоугольник на плоскости задан координатами своих вершин. Найдите его
площадь.
Указание: разбейте многоугольник диагоналями на несколько треугольников и найдите
площадь каждого треугольника отдельно.
3. Заданный двумерный массив (не обязательно квадратный) разверните на 90 градусов по
часовой стрелке и выведите полученный таким образом новый массив.
Лабораторная 3
Для выполнения каждого индивидуального задания напишите консольное приложение. Реализуйте ввод исходных данных с клавиатуры и контроль правильности ввода. Результат выведите в консоль в отформатированном и удобном для чтения виде. Реализуйте обработку возможных исключений.
Общее задание
1. Выполните задание 1 по варианту , при этом:
– в базовом классе определите минимум два разных конструктора;
– в базовом классе переопределите методы equals() и toString();
2. Создайте несколько объектов (как базового, так и производного класса) и сохраните их в один массив. Напишите цикл, который проходит по этому массиву и для каждого объекта выводит:
– название класса этого объекта;
– результаты работы методов, определенных в базовом классе;
– результаты работы методов, определенных только в производном классе (если это возможно для данного объекта);
3. Объедините несколько созданных объектов своего класса (из задания 1 по варианту) в список List. Реализуйте добавление, удаление объектов в списке, а также вывод списка на экран. Для полученного списка выполните задание 3 по варианту двумя способами:
а) с помощью методов класса Collectcions;
б) без использования методов класса Collections
(т. е. реализовав алгоритм самостоятельно).
4. Сохраните те же объекты в коллекцию HashMap, где ключами будут строковые имена объектов. Напишите методы для обработки такой коллекции:
– метод для поиска значения по ключу;
– метод для поиска ключей по значению;
– метод, выполняющий операцию из задания 4 по варианту.
Вариант 3
1. Создайте класс "Цвет". Внутренне представление цвета – три целые числа в диапазоне [0; 100], задающие процент яркости красной, зеленой и синей составляющей. Реализуйте методы класса (статические) и методы реализации (не статические):
– для создания цвета по заданным трем целым числам в диапазоне [0; 255];
– для создания цвета по трем вещественным числам в диапазоне [0; 100] либо [0; 1];
– метод, который по заданным двумя цветами a и b создает градиент между ними, то есть новый массив объектов-цветов, в котором первый цвет равен a, последний равен b, а все остальные являются промежуточными цветами.
– метод нахождения яркости цвета, а также методы сравнения цветов на «больше» – «меньше» по значению яркости цвета.
Создайте производный класс, в котором:
– добавьте метод для перевода цвета в модель HSV;
– добавьте метод, который в массиве объектов-цветов находит тот цвет, который является ближайшим к заданному (по значению параметра H, «hue»);
– переопределите метод toString() для вывода цвета в формате HSV.
3. Напишите метод для сортировки списка цветов сначала по величине красной компоненты, затем по величине синей компоненты. Порядок сортировки – по возрастанию.
4. Напишите метод, который в коллекции Map удаляет все повторяющиеся значения (не ключи).
Лабораторная работа 4
Общее задание.
1. Для классов из задания 3 лабораторной работы 3 (для базового и для производного) реализуйте механизм сериализации.
2. Напишите программу, которая:
– читает набор объектов (как базового, так и производного класса) из CSV файла и помещает их в массив либо список;
– сериализует этот массив (или список) в бинарный файл;
– десериализует массив (или список) из бинарного файла.
Имена файлов задаются в виде параметров при запуске программы.
Программа должна корректно обрабатывать ошибочные данные во входном файле!
Вариант 3
3. Напишите программу, которая переименовывает все файлы с расширением .txt из заданной директории, давая им имена 1.txt, 2.txt, 3.txt и так далее по порядку. Выведите старые имена файлов на экран и в текстовый файл.
4*. (Для программистов) Напишите программу, которая сравнивает содержимое двух заданных директорий и выводит список файлов, которые различаются. Для сравнения файлов используйте имя, размер и дату последнего изменения файла. Программа должна обрабатывать все вложенные директории.