мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
Следующая версияСледующая версия справа и слева
java:elective [28/11/2012 22:27] nbazhenovjava:elective [20/11/2013 14:32] nbazhenov
Строка 1: Строка 1:
 +====== Семинары (2013-2014) ======
 +
 +  * [[java:elective:lesson_10_02_13|Занятие 1 (введение)]]
 +  * [[java:elective:lesson_10_09_13|Занятие 2 (задача о датах)]]
 +  * [[java:elective:lesson_10_16_13|Занятие 3 (римская система счисления)]]
 +  * [[java:elective:lesson_11_06_13|Занятие 4 (позиционные системы счисления)]]
 +  * [[java:elective:lesson_11_20_13|Занятие 5 (палиндромы)]]
 +
 +====== Семинары (2012-2013) ======
 +
 +  * [[java:elective:lesson1|Семинар 1 (введение)]]
 +  * [[java:elective:lesson2|Семинар 2 (задача о датах)]]
 +  * [[java:elective:lesson3|Семинар 3 (быстрая сортировка)]]
 +  * [[java:elective:lesson4|Семинар 4 (двусвязный список и задача Иосифа Флавия)]]
 +  * [[java:elective:lesson5|Семинар 5 (двоичные деревья поиска)]]
 +  * [[java:elective:lesson6|Семинар 6 (неориентированные графы и поиск в ширину)]]
 +
 ====== Полезные ссылки ====== ====== Полезные ссылки ======
  
Строка 4: Строка 21:
   * [[http://www.mindviewinc.com/downloads/TIJ-3rd-edition4.0.zip|Bruce Eckel, Thinking in Java, 3rd edition (zip archive)]]   * [[http://www.mindviewinc.com/downloads/TIJ-3rd-edition4.0.zip|Bruce Eckel, Thinking in Java, 3rd edition (zip archive)]]
   * [[http://parallels.nsu.ru/~kuznecov/JavaDoc/index.html|Зеркало JavaDoc]]   * [[http://parallels.nsu.ru/~kuznecov/JavaDoc/index.html|Зеркало JavaDoc]]
- 
-====== Семинар 1 ====== 
- 
-Перед началом работы рекомендуется прочитать уроки 1 и 2 из [[java:basics|Справочника по Яве]]. 
- 
-===== Пример 1.1 ===== 
- 
-Программа "Hello world" 
- 
-<code java> 
-package com.nsunc.wiki.nbazhenov; 
- 
-public class HelloWorld { 
- public static void main (String[] args){ 
- System.out.println("Hello, World!"); 
- } 
-} 
-</code> 
- 
-===== Пример 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; 
- } 
-} 
-</code> 
- 
-===== Задание 1.1.A ===== 
- 
-Создайте пакет ''com.nsunc.wiki.вашЛогин''. В этом пакете создайте класс ''SimpleLight'', приведенный выше, и новый класс ''TestClass''. С помощью ''TestClass'' протестируйте работу методов класса ''SimpleLight''. Убедитесь в том, что Java присваивает значение полю ''state'' по умолчанию. 
- 
-===== Задание 1.1.B ===== 
- 
-Модифицируйте реализацию ''SimpleLight'' следующим образом: 
- 
-  - Добавьте в класс ''SimpleLight'' новые целочисленные поля ''brightness'' (яркость) и ''step'' (шаг). Сделайте так, чтобы значение поля ''step'' было по умолчанию равным 100. 
-  - Измените код существующих методов так, чтобы при включении лампочки ее яркость принимала значение 1000, а при выключении - 0. 
-  - Напишите метод ''dim()'' (терять яркость), производящий следующие действия: если яркость лампочки больше значения ''step'', то яркость уменьшается на ''step''; в противном случае лампочка выключается и в консоли печатается соответствующее сообщение. 
-  - Напишите метод ''brighten()'' (делать ярче), производящий следующие действия: если яркость лампочки не превосходит значения ''(1000-step)'', то яркость увеличивается на ''step''; в противном случае в консоли печатается сообщение об ошибке. 
- 
-Протестируйте работу методов класса ''SimpleLight''. 
- 
-//Замечание:// Лампочка считается включенной если и только если ее яркость больше нуля. 
- 
-===== Задание 1.1.С ===== 
- 
-Модифицируйте реализацию ''SimpleLight'' следующим образом: 
-  - Добавьте новое статическое целочисленное поле ''maxBrightness'' (максимальная яркость). Сделайте так, чтобы по умолчанию ''maxBrightness'' принимало значение 1000. 
-  - Измените код метода ''brighten()'', заменив 1000 на ''maxBrightness''. 
-  - Напишите 2 статических метода: ''getMaxBrightness()'' - возвращает значение ''maxBrightness''; и ''setMaxBrighness(int a)'' - устанавливает значение ''maxBrightness''. 
- 
-Продемонстрируйте работу статических методов. 
- 
-====== Семинар 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> 
- 
-===== Операторы инкремента и декремента ===== 
- 
-Оператор инкремента записывается в виде ''++'' и означает "увеличить на единицу". Оператор декремента записывается в виде ''%%--%%'' и означает "уменьшить на единицу". Для каждого из операторов есть две версии: префиксная и постфиксная. 
- 
-<code java> 
-++a; // префиксная версия оператора инкремента 
-a++; // постфиксная версия оператора инкремента 
-</code> 
- 
-В префиксном варианте сначала выполняется операция, а затем выдается значение. В постфиксном варианте сначала выдается значение, и лишь затем выполняется операция. 
- 
-<code java> 
-int a = 0; 
-System.out.println("1. a = " + ++a); // напечатается: 1. a = 1 
-System.out.println("2. a = " + a++); // напечатается: 2. a = 1 
-</code> 
- 
-===== Операторы сравнения ===== 
- 
-Операторы сравнения: меньше (''<''), больше (''>''), меньше или равно (''%%<=%%''), больше или равно (''>=''), равно (''==''), не равно (''!=''). ''=='' и ''!='' применимы для всех примитивных типов данных, остальные не применимы к типу ''boolean''. 
- 
-===== Логические операторы ===== 
- 
-Основные логические операторы: ''&&'' (конъюнкция, AND), ''||'' (дизъюнкция, OR), ''!'' (отрицание, NOT). Логические операторы применимы только к значениям типа ''boolean''. 
- 
-===== Задание 2.1 ===== 
- 
-С клавиатуры вводится четыре натуральных числа: ''d'' (номер дня), ''m'' (номер месяца), ''y'' (номер года) и ''n''. Напечатайте в консоли дату, которая наступит через ''n'' дней после даты ''d.m.y''. 
- 
-//Пример:// Ввели следующие 4 числа: 2, 1, 2012, 58. Через 58 дней после 2 января 2012 года наступает 29 февраля 2012 года, поэтому в консоли должна быть напечатана следующая дата: ''29.02.2012''. 
- 
-//Замечание:// Год с номером ''y'' является високосным, если либо ''y'' кратно 4, но не кратно 100; либо ''y'' кратно 400. Например, 2000 -- високосный год, а 2100, 2200 и 2300 -- не високосные годы. 
- 
-====== Семинар 3 ====== 
- 
-===== Задание 3.1 ===== 
- 
-Реализовать алгоритм быстрой сортировки массива. 
- 
-Описание алгоритма можно найти [[http://algolist.manual.ru/sort/quick_sort.php|здесь]]. 
- 
-===== Указания к оформлению решения ===== 
- 
-  * Метод, реализующий быструю сортировку, должен быть записан в отдельном классе. Например, так: 
-<code java> 
-class MySort { 
- static void quickSort (/* Ваш список параметров */){ 
- // Ваш код  
- } 
-} 
-</code> 
-  * В методе ''public static void main(String[] args)'' //другого// класса в том же пакете создайте массив, заполните его случайными числами, напечатайте его, проведите сортировку и затем снова напечатайте массив. Например, так: 
-<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)); 
- } 
-} 
-</code>