Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2й курс - задание на все лабораторные.doc
Скачиваний:
7
Добавлен:
20.04.2015
Размер:
249.34 Кб
Скачать

На работы 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.