мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| java:elective [14/02/2013 17:56] – 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 ===== | + | |
| - | + | ||
| - | В лекции 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 ===== | + | |
| - | + | ||
| - | Модифицируйте реализацию '' | + | |
| - | + | ||
| - | - Добавьте в класс '' | + | |
| - | - Измените | + | |
| - | - Напишите метод '' | + | |
| - | - Напишите метод '' | + | |
| - | + | ||
| - | Протестируйте работу методов класса '' | + | |
| - | + | ||
| - | // | + | |
| - | + | ||
| - | ===== Задание 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:// | + | |
| + | * [[java: | ||
| + | * [[http:// | ||
| + | * [[http:// | ||