мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
java:elective [28/02/2013 14:09] – nbazhenov | java:elective [12/03/2014 15:54] (текущий) – nbazhenov | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== | + | ====== |
- | * [[java: | + | ===== Первый семестр ===== |
- | * [[http:// | + | |
- | * [[http:// | + | |
- | ====== Семинар | + | * [[java: |
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
- | Перед началом работы рекомендуется прочитать уроки 1 и 2 из [[java: | + | ===== Второй семестр |
- | ===== Пример 1.1 ===== | + | * [[java: |
+ | * [[java: | ||
- | Программа "Hello world" | + | ====== Семинары (2012-2013) ====== |
- | < | + | * [[java: |
- | package com.nsunc.wiki.nbazhenov; | + | * [[java: |
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
- | public class HelloWorld { | + | ====== Полезные ссылки ====== |
- | public static void main (String[] args){ | + | |
- | System.out.println(" | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | ===== Пример 1.2 ===== | + | |
- | + | * [[http://www.mindviewinc.com/downloads/TIJ-3rd-edition4.0.zip|Bruce Eckel, Thinking in Java, 3rd edition | |
- | В лекции 1 был показан пример класса, | + | |
- | <code java> | + | |
- | package com.nsunc.wiki.nbazhenov; | + | |
- | + | ||
- | public class SimpleLight { | + | |
- | boolean state; | + | |
- | + | ||
- | boolean getState(){ | + | |
- | return state; | + | |
- | } | + | |
- | + | ||
- | void on(){ | + | |
- | state = true; | + | |
- | } | + | |
- | + | ||
- | void off(){ | + | |
- | state = false; | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ===== Задание 1.1.A ===== | + | |
- | + | ||
- | Создайте пакет '' | + | |
- | + | ||
- | ===== Задание 1.1.B ===== | + | |
- | + | ||
- | Модифицируйте реализацию '' | + | |
- | + | ||
- | - Добавьте в класс '' | + | |
- | - Измените код существующих методов так, чтобы при включении лампочки ее яркость принимала значение 1000, а при выключении - 0. | + | |
- | - Напишите метод '' | + | |
- | - Напишите метод '' | + | |
- | + | ||
- | Протестируйте работу методов класса '' | + | |
- | + | ||
- | // | + | |
- | + | ||
- | ===== Задание 1.1.С ===== | + | |
- | + | ||
- | Модифицируйте реализацию '' | + | |
- | - Добавьте новое статическое целочисленное поле '' | + | |
- | - Измените код метода '' | + | |
- | - Напишите 2 статических метода: | + | |
- | + | ||
- | Продемонстрируйте работу статических методов. | + | |
- | + | ||
- | ====== Семинар 2 ====== | + | |
- | + | ||
- | ===== Арифметические операторы ===== | + | |
- | Основные арифметические операторы: | + | |
- | + | ||
- | Можно использовать сокращенную форму записи операторов: | + | |
- | < | + | |
- | a += b; // a = a + b | + | |
- | a -= b; // a = a - b | + | |
- | a *= b; // a = a * b | + | |
- | a /= b; // a = a / b | + | |
- | a %= b; // a = a % b | + | |
- | </ | + | |
- | + | ||
- | ===== Операторы инкремента и декремента ===== | + | |
- | + | ||
- | Оператор инкремента записывается в виде '' | + | |
- | + | ||
- | <code java> | + | |
- | ++a; // префиксная версия оператора инкремента | + | |
- | a++; // постфиксная версия оператора инкремента | + | |
- | </ | + | |
- | + | ||
- | В префиксном варианте сначала выполняется операция, | + | |
- | + | ||
- | <code java> | + | |
- | int a = 0; | + | |
- | System.out.println(" | + | |
- | System.out.println(" | + | |
- | </ | + | |
- | + | ||
- | ===== Операторы сравнения ===== | + | |
- | + | ||
- | Операторы сравнения: | + | |
- | + | ||
- | ===== Логические операторы ===== | + | |
- | + | ||
- | Основные логические операторы: | + | |
- | + | ||
- | ===== Задание 2.1 ===== | + | |
- | + | ||
- | С клавиатуры вводится четыре натуральных числа: '' | + | |
- | + | ||
- | // | + | |
- | + | ||
- | // | + | |
- | + | ||
- | ====== Семинар 3 ====== | + | |
- | + | ||
- | ===== Задание 3.1 ===== | + | |
- | + | ||
- | Реализовать алгоритм быстрой сортировки массива. | + | |
- | + | ||
- | Описание алгоритма можно найти [[http:// | + | |
- | + | ||
- | ===== Указания к оформлению решения ===== | + | |
- | + | ||
- | * Метод, реализующий быструю сортировку, | + | |
- | <code java> | + | |
- | class MySort { | + | |
- | static void quickSort (/* Ваш список параметров */){ | + | |
- | // Ваш код | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | * В методе '' | + | |
- | <code java> | + | |
- | import java.util.*; | + | |
- | + | ||
- | public class TestClass { | + | |
- | public static void main(String[] args){ | + | |
- | int size = 20; | + | |
- | int m[] = new int[size]; | + | |
- | + | ||
- | Random rand = new Random(); | + | |
- | for(int i = 0; i < size; i++) | + | |
- | m[i] = rand.nextInt(100); | + | |
- | + | ||
- | System.out.println(Arrays.toString(m)); | + | |
- | + | ||
- | MySort.quickSort(/* нужные параметры */); | + | |
- | System.out.println(Arrays.toString(m)); | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ====== Семинар 4 ====== | + | |
- | + | ||
- | Классы и интерфейсы в языке Java могут быть шаблонными (generic), т.е. иметь типовые параметры. При создании объекта такого класса нужно указывать конкретные значения его типовых параметров. | + | |
- | + | ||
- | Пример использования generic-ов: классы, | + | |
- | + | ||
- | <code java> | + | |
- | public class TwoTuple< | + | |
- | public final A first; | + | |
- | public final B second; | + | |
- | public TwoTuple(A a, B b) { first = a; second = b; } | + | |
- | public String toString() { | + | |
- | return " | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | public class ThreeTuple< | + | |
- | public final C third; | + | |
- | public ThreeTuple(A a, B b, C c) { | + | |
- | super(a, b); | + | |
- | third = c; | + | |
- | } | + | |
- | public String toString() { | + | |
- | return " | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | Пример работы с этими классами: | + | |
- | + | ||
- | <code java> | + | |
- | TwoTuple< | + | |
- | System.out.println(tuple0.toString()); | + | |
- | ThreeTuple< | + | |
- | System.out.println(tuple1.toString()); | + | |
- | </ | + | |
- | + | ||
- | ===== Задание 4.1 ===== | + | |
- | + | ||
- | Приведем одну из возможных реализаций двусвязного списка: | + | |
- | + | ||
- | <code java> | + | |
- | public class MyLinkedList< | + | |
- | private static class Node< | + | |
- | E element = null; | + | |
- | Node< | + | |
- | Node< | + | |
- | + | ||
- | Node | + | |
- | this.element = element; | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | private Node< | + | |
- | private Node< | + | |
- | + | ||
- | private int size = 0; | + | |
- | + | ||
- | public void addLast(E element){// добавляет новый элемент в конец списка | + | |
- | Node< | + | |
- | if(tail == null){ | + | |
- | head = tmpNode; | + | |
- | tail = head; | + | |
- | } else{ | + | |
- | tail.next = tmpNode; | + | |
- | tmpNode.previous = tail; | + | |
- | tail = tmpNode; | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | public String toString(){// | + | |
- | if(head == null) | + | |
- | return null; | + | |
- | + | ||
- | Node< | + | |
- | String tmpString = " | + | |
- | + | ||
- | while (tmpNode != tail){ | + | |
- | tmpNode = tmpNode.next; | + | |
- | tmpString = tmpString.concat(", | + | |
- | }; | + | |
- | tmpString = tmpString.concat(" | + | |
- | + | ||
- | return tmpString; | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | Пример использования: | + | |
- | + | ||
- | <code java> | + | |
- | MyLinkedList< | + | |
- | for (int i = 0; i < 10; i++) | + | |
- | list.addLast(new Integer(i)); | + | |
- | System.out.println(list.toString());// | + | |
- | </ | + | |
- | + | ||
- | Допишите следующие методы: | + | |
- | | + | |
- | - Удаление первого/ | + | |
- | - Получение значения первого/ | + | |
- | - Получение размера списка. | + | |
- | - Получение значения '' | + | |
- | - Удаление '' | + | |
- | + | ||
- | ===== Указание к оформлению решения ===== | + | |
- | + | ||
- | Новые методы должны называться в соответствии с методами класса | + | |
- | + | ||
- | ===== Задание 4.2 ===== | + | |
- | + | ||
- | С помощью получившегося двусвязного списка напишите решение [[http:// | + | |
- | + | ||
- | ====== Семинар 5 ====== | + | |
- | + | ||
- | Информацию о двоичных деревьях поиска можно прочитать {{: | + | |
- | + | ||
- | ===== Задание 5.1 ===== | + | |
- | + | ||
- | Приведем одну из возможных реализаций двоичного дерева поиска: | + | |
- | + | ||
- | <code java> | + | |
- | public class MyBinarySearchTree{ | + | |
- | private static class Node{ | + | |
- | Integer data = null; | + | |
- | Node parent = null; | + | |
- | Node left = null; | + | |
- | Node right = null; | + | |
- | + | ||
- | Node (int data){ | + | |
- | this.data = new Integer(data); | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | private Node root; | + | |
- | + | ||
- | public MyBinarySearchTree(int data){ | + | |
- | root = new Node(data); | + | |
- | } | + | |
- | + | ||
- | public void treeInsert(int data){ | + | |
- | Node y = null; | + | |
- | Node x = root; | + | |
- | + | ||
- | while(x != null){ | + | |
- | y = x; | + | |
- | if(data < x.data.intValue()) | + | |
- | x = x.left; | + | |
- | else | + | |
- | x = x.right; | + | |
- | } | + | |
- | + | ||
- | Node z = new Node(data); | + | |
- | z.parent = y; | + | |
- | + | ||
- | if(y == null) | + | |
- | root = z; | + | |
- | else{ | + | |
- | if(data < y.data.intValue()) | + | |
- | y.left = z; | + | |
- | else | + | |
- | y.right = z; | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | private Node treeSearch(Node x, int data){ | + | |
- | if(x == null || data == x.data.intValue()) | + | |
- | return x; | + | |
- | else if (data < x.data.intValue()) | + | |
- | return treeSearch(x.left, | + | |
- | else | + | |
- | return treeSearch(x.right, | + | |
- | } | + | |
- | + | ||
- | private Node treeSearch(int data){ | + | |
- | return treeSearch(root, | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | Допишите методы '' | + |