мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версияСледующая версияСледующая версия справа и слева | ||
java:elective [14/02/2013 17:56] – nbazhenov | java:elective [20/11/2013 14:32] – nbazhenov | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Семинары (2013-2014) ====== | ||
+ | |||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | |||
+ | ====== Семинары (2012-2013) ====== | ||
+ | |||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | |||
====== Полезные ссылки ====== | ====== Полезные ссылки ====== | ||
Строка 4: | Строка 21: | ||
* [[http:// | * [[http:// | ||
* [[http:// | * [[http:// | ||
- | |||
- | ====== Семинар 1 ====== | ||
- | |||
- | Перед началом работы рекомендуется прочитать уроки 1 и 2 из [[java: | ||
- | |||
- | ===== Пример 1.1 ===== | ||
- | |||
- | Программа "Hello world" | ||
- | |||
- | <code java> | ||
- | package com.nsunc.wiki.nbazhenov; | ||
- | |||
- | public class HelloWorld { | ||
- | public static void main (String[] args){ | ||
- | System.out.println(" | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Пример 1.2 ===== | ||
- | |||
- | В лекции 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 ====== | ||
- | |||
- | ===== Арифметические операторы ===== | ||
- | Основные арифметические операторы: | ||
- | |||
- | Можно использовать сокращенную форму записи операторов: | ||
- | <code java> | ||
- | 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 (E element){ | ||
- | 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());// | ||
- | </ | ||
- | |||
- | Допишите следующие методы: | ||
- | - Добавление нового элемента в начало списка. | ||
- | - Удаление первого/ | ||
- | - Получение значения первого/ | ||
- | - Получение размера списка. | ||
- | - Получение значения '' | ||
- | - Удаление '' | ||
- | |||
- | ===== Указание к оформлению решения ===== | ||
- | |||
- | Новые методы должны называться в соответствии с методами класса [[http:// | ||
- |