На работы 1-3 можно получить «упрощенную» версию, если задания, сформулированные здесь, кажутся слишком сложными. Все остальные номера принимаются как «упрощенные», если задание выполнено не полностью.
0Я. Работа с дебаггером.
- случайное заполнение массива
- поиск элемента по массиву
- сортировка
- бинарный поиск
1Я. Работа с профилировщиком visualVm.
- 3 любых способа сортировки массива
- тест, проверяющий правильность работы (сравнить заранее заданный массив с результатом работы программы)
- отчет, содержащий таблицу замеров среднего времени выполнения для каждого метода сортировки: для замера времени выполнения сортировки в коде приложения, для sampler, дляprofiler.
2Я. Unit-тестирование. Файловый ввод-вывод.
В файле in.txtхранятся числа. Пример:
120 12f394 101011 554 7382zofd
- определить минимально возможную систему счисления, в которой записано число: для 120 это троичная, для 12f– шестнадцатеричная, дляzofd– 36-ричная и т.д.
- преобразовать числа по следующему правилу: число в 2й системе остается как есть; система счисления с основанием 3-8 -> в восьмеричную, 9-10 -> в десятичную, 11-16 -> в 16ю, 17 и больше – в 36ю. Вывести числа в файл out.txtпосле преобразования.
Например, если во входном файле было число 101, в выходном файле также окажется число 101. Если входное число было 14, то после преобразования в восьмеричную систему из пятеричной оно будет выглядеть как 11.
Для преобразования использовать возможности стандартного класса языка java:Integer.
Максимально полно покрыть юнит-тестами возможные входные данные для 2х методов: определения системы счисления и преобразования в число в системе счисления с большим основанием (в строку, готовую для вывода). Покрытие тестами должно содержать различные длины строк, из которых «парсятся» числа (начиная с 1 символа) и различные системы счисления (обязательно включить двоичную и 36ю). Покрытие метода преобразования можно считать достаточно полным, если для каждого условия, содержащегося в программе, предусмотрены такие выходные данные, что хотя бы 1 раз выполнится каждая из веток условияif-then-else.
Ко 2й работе на парах были выданы следующие варианты индивидуальной части: 1) если для преобразования между системами счисления использовались стандартные классы - написать юнит-тест, сравнивающий результат работы вашего кода с вызовом метода Integer.parseInt. И наоборот - если использовался Integer.parseInt - написать "ручной" перевод из 10й в 16ю систему счисления 2) написать рекурсивный перевод из 10й в 16ю сс, использовать его в юнит-тесте для тестирования обычного метода из вашего кода (модифицировать исходное правило работы программы также нужно) 3) входные числа из файла - это возраст человека в днях. День рождения - 1 января 1970. Определить, если ли человеку 18 лет. Ограничения на значение возраста нет. Прибавить к дате его рождения количество дней и вывести полученную дату. Например, число 33 - получается дата 3 февраля 1970. Написать по юнит-тесту для полученных 2х методов. Использовать стандартные классы (начать с Calendar) для решения этой задачи.
Всем остальным, кто еще не получил индивидуальную часть, нужно будет сделать вариант номер 3.
3Я. Обработка текста. Регулярные выражения. Длинные числа. Исключения.
Вместо заранее подготовленных значений в in.txtхранится английский текст. Отсортировать все слова в тексте по алфавиту (или по кодам символов) любым способом. Можно полностью загрузить текст в память перед сортировкой.
Удалить из каждой строки все пробелы и знаки препинания. Полученные строки будут содержать числа в системе счисления с основанием от 2 до 36 (как и в предыдущей работе). Получить и вывести в выходной файл сумму всех чисел. Перед началом работы программа считывает с консоли диапазон систем счисления, для которых числа исключаются из суммы. Формат записи диапазона: [2..17]. Можно ввести несколько различных диапазонов, например [2..4] [7..7] [6..12]
Для обработки использовать стандартные классы «длинных чисел».
Да, задание сформулировано так, что понять требования можно в чем-то по-разному.
Программа должна перехватывать исключения, возникающие в случае передачи в методы классов «длинных чисел» строк в неправильном формате (содержащих символы, которые не были удалены на этапе считывания из файла, например “^”), и выводить текст ошибки.
Покрыть все методы юнит-тестами.
Реализовть проверку с помощью регулярных выражений (regex), содержит ли строка подстроку, являющуюся адресомe-mail.
Пример текста:
SEE ALSO ^
Email::Simple, Email::Abstract, Email::Send::IO, Email::Send::NNTP, Email::Send::Qmail, Email::Send::SMTP, Email::Send::Sendmail, perl, email.
PERL EMAIL PROJECT ^
This module is maintained by the Perl Email Project.
http://emailproject.perl.org/wiki/Email::Send
AUTHOR ^
Current maintainer: Ricardo SIGNES, <rjbs@cpan.org>.
Original author: Casey West, <casey@geeknest.com>.
COPYRIGHT ^
Copyright (c) 2005 Casey West. All rights reserved. This module is free software; you can redistribute it and modify it under the same terms as Perl itself.