- •Понятие потока данных в java. Виды потоков:
- •Общая схема записи данных в поток:
- •Общая схема чтения данных из потока:
- •Байтовый поток :свойства, связь потока с файлом, чтение, запись закрытие:
- •Потоки символов: свойства, связь потока с файлом, чтение, запись, закрытие:
- •Потоки строк: свойства, связь потока с файлом, чтение, запись, закрытие:
- •Исключения при работе с потоками:
- •Понятие рекурсии, рекурсивное вычисление факториала:
- •Понятие рекурсии, рекурсивное вычисление суммы элементов массива:
- •Понятие рекурсии, рекурсивное вычисление максимального элемента массива:
- •Формулировка задачи о ханойских башнях:
- •Применение рекурсии при определении связного списка:
- •Понятие списка. Объявление элемента списка:
- •Структура объявления двусвязного списка:
- •Типовые операции для односвязных списков:
- •Кольцевой и двусвязный списки: отличия от односвязного списка:
- •Порядок добавления элемента в односвязный список:
- •Основные типы коллекций, имеющиеся в Java Collection Framework:
- •Составные части jcf и их назначение:
- •Назначение интерфейсов и алгоритмов jcf:
- •Примеры (двух) интерфейсов и (двух) реализаций: сходства и различия:
- •Преимущества, получаемые от применения jcf в программах:
- •Коллекции: списки – основные методы интерфейса List:
- •Коллекции: множества – основные элементы интерфейса Set:
- •Выполнение стандартных операций теории множеств:
- •Списки и множества: сходства и различия:
- •Цикл for-each и его применение в коллекциях:
- •Математическая идея, представленная элементом Map:
- •Вопрос 29. Сравнительный анализ реализаций ArrayList и LinkedList.
- •Вопрос 30. Параметры по которым сравнивают реализации коллекций.
- •Вопрос 31. Понятие и назначение итератора
- •Вопрос 33. Comparable и Comparator
- •Вопрос 34. Сортировка со стандартным и нестандартным отношением порядка.
- •Вопрос 35. Вопрос 36. Вопрос 37. Вопрос 38 Поиск элемента в коллекции. Двоичный и прямой поиск. Способ идентификации ситуации «Элемент не найден».
- •Вопрос 39. Графический интерфейс пользователя. Составные элементы фрейма.
- •Вопрос 40. Библиотеки Java, поддерживающие графический интерфейс.
- •Вопрос 41. Компонент и контейнер.
- •Вопрос 42. Jframe — в иерархии объектов графики.
- •Ответы к экзамену по программированию часть 5 (вопр. 57-69)
- •События мышки. Общая схема обработки событий мышки:
- •Методы интерфейса MouseListener и их назначение:
- •Методы интерфейса MouseMotionListener:
- •Методы класса MouseEvent. Получение координат события:
- •Управляющие элементы графического интерфейса – внешний вид и назначение:
- •Кнопка. Состояния кнопки. События кнопки, их обработка и идентификация:
- •Структура программы, имеющей интерфейс с двумя кнопками:
- •Элементы интерфейса «Условие» («флажок») и его конструкторы:
- •События элемента «флажок» и их обработка.
- •Структура программы с интерфейсом, содержащим два элемента «условие»:
- •67. Элемент интерфейса «радиокнопка» и его конструкторы:
- •Группировка радиокнопок и задание начального состояния в группе.
- •События элемента «радиокнопка» и их обработка.
Формулировка задачи о ханойских башнях:
Есть три стержня A, B, и C. На стержень A надето N дисков, наверху самый маленький, каждый следующий диск больше предыдущего, а внизу самый большой. На другие стержни дисков не надето.
Hеобходимо перенести диски со стержня A на стержень C, пользуясь стержнем B, как вспомогательным, так, чтобы диски на стержне C располагались в том же порядке, в каком они располагаются на диске A перед перемещением.
При перемещении, никогда нельзя класть больший диск на меньший, диски перекладываются по одному. В основе решения задачи и реализации ее в программе лежит рекурсивный метод. Для того, чтобы переложить всю пирамиду, надо сначала переложить все, что выше самого большого диска, с первого на вспомогательный стержень, потом переложить это самое большой диск с первого на третий стержень, а потом переложить оставшуюся пирамиду со второго на третий стержень, пользуясь первым стержнем, как вспомогательным.
Применение рекурсии при определении связного списка:
Рекурсивное определение списка элементов (пусть элементами будут числа)
(Список) ::= (элемент) | //нерекурсивная часть,
(Список)(запятая)(элемент) | //рекурсивная часть
(элемент)(запятая)(Список) //рекурсивная часть
Если есть некоторый список, то можно получить новый список,
приписав элемент слева или справа
Пример:
Список 23, 35, 74, 2, 11 - это
элемент 23 запятая Список 35, 74, 2, 11
Список 35, 74, 2, 11 – это
элемент 35 запятая Список 74, 2, 11
Список 74, 2, 11 – это
Элемент 74 запятая Список 2, 11
Список 2, 11 - это
элемент 2 запятая Список 11
Список 11 – это элемент, т.е. частный случай списка
Понятие списка. Объявление элемента списка:
Рекурсивные данные: связный список
Список -упорядоченная совокупность, состоящая из элементов.
Длина списка - число элементов, содержащихся в списке, список нулевой длины называется пустым списком. К списку применимы операции включения, исключения. Основные операции (методы) для списков: добавить элемент (новый элемент становится первым в списке)удалить элемент (удаляется первый элемент списка, второй станет первым)дополнительные методы удалить все элементы копировать список проверить равенство списков добавить элемент в конец списка; удалить элемент из конца списка добавить или удалить элемент получить элемент по его номеру изменить порядок элементов на упорядочить элементы обратный найти позицию данного элемента в упорядоченном списке
Добавление элемента
1. Создается новый элемент, задается ссылка на него, и заполняется
информационная часть. Поле связи (next) пустое, т.е. = null
2. Ссылка из головы копируется в поле next нового элемента (стрелка 3).
Теперь на первый элемент списка указывают два элемента: голова списка
и новый элемент (стрелки 1 и 3).
3. Ссылка на новый элемент копируется в поле next головы, так что next начинает "указывать" на новый элемент (появляется стрелка
2, стрелка 1 исчезает).
После этого новый элемент становится первым элементом списка:
Голова указывает на новый элемент, новый элемент – на старый первый,
далее – как было в исходном списке.
Текст программы:
Определяемкласс – Элементсписка. Дляуниверсальностиполеinf –
типаObject(Object – базовый тип длявсехобъектныхтипов)
public class ListEl { //ListElement – элементсписка
Objectinf; //информационнаячасть
ListElnext; //ссылка на следующийэлемент
ListEl( ) { next = null; inf = null; } //конструктор
ListEl (Object ob) { inf = ob; next = null; } //конструктор
Первыйконструкторсоздает "пустой" элемент – обессылки == null
Второйконструктор в ссылкуinfкопируетссылкунаобъект,
заданныйкакаргументконструктора
//добавить элемент ob к списку hd
public static void printMyList ( ListEl a ) { //печатьсписка
ListEl c = a.next; //с – текущийэлементсписка
while( c != null ) { // покаестьэлементы,
System.out.print( c.inf + " "); // напечататьинфо-часть с
c = c.next; // и перейти к следующему
}; System.out.println( ); // когдавсеэлементы
// напечатаны, перейти к новой
// строке
//классObjectсодержитметодtoString, благодаря
//которомуprintlnможетвывестиобъект. При
//необходимости toString переопределяется
public static void main(String[ ] args){
ListEl list=new ListEl (); //создали≪голову≫списка
for (int i=0; i<10; i++) //10 раздобавляем к списку
// поодномуэлементу,
addToList (list, Integer.toString( i * i ) ) ; //помещаявinf-часть
//квадратыцелыхчисел
printMyList( list ); //печатаемсозданныйсписок
}
}