мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
java:basics [01/12/2014 08:55] – ybezrukov | java:basics [19/01/2015 09:23] (текущий) – ybezrukov | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | [[Первый семестр]] | ||
- | ====== Урок 1 ====== | + | [[Второй семестр]] |
- | ===== Начало работы ===== | + | |
- | - Запустите Eclipse | ||
- | - Создайте новый проект (Правой кнопкой по левой вкладке Package Explorer, New, Project) | ||
- | - Создайте новый пакет (Правой кнопкой по имени проекта New, Package) | ||
- | - Создайте новый класс (Правой кнопкой по имени пакета, | ||
- | |||
- | В результате в редакторе должнен быть результат, | ||
- | <code java> | ||
- | package ru.nsunc.lskywalker; | ||
- | |||
- | class Privet { | ||
- | |||
- | } | ||
- | </ | ||
- | |||
- | ===== Вывод на экран ===== | ||
- | |||
- | Чтобы напечатать строчку на экране, | ||
- | |||
- | <code java> | ||
- | package ru.nsunc.lskywalker; | ||
- | |||
- | class Privet { | ||
- | | ||
- | | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Объявление переменных ===== | ||
- | |||
- | Чтобы объявить переменную в Яве, нужно сначало указать ее тип (множество значений, | ||
- | |||
- | Например: | ||
- | <code java> | ||
- | int userID; | ||
- | </ | ||
- | Описывает переменную целого типа (int) имеющую имя userID. | ||
- | |||
- | <code java> | ||
- | double multiplicationResult; | ||
- | </ | ||
- | Описывает вещественную переменную (double) имеющую имя multiplicationResult. | ||
- | |||
- | <code java> | ||
- | package ru.nsunc.lskywalker; | ||
- | |||
- | class Privet { | ||
- | | ||
- | int a; | ||
- | a = 5; | ||
- | int b = 10; | ||
- | | ||
- | c = 10.2; | ||
- | d = a * b * c; | ||
- | | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Ветвления ===== | ||
- | |||
- | Если вы хотите, | ||
- | |||
- | <code java> | ||
- | if (условие) { | ||
- | | ||
- | } else { | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | Ветвь else в операторе ветвления необязательна и может быть пропущена. | ||
- | <code java> | ||
- | class Privet { | ||
- | | ||
- | int a; | ||
- | a = 5; | ||
- | int b = 10; | ||
- | | ||
- | c = 10.2; | ||
- | d = a * b * c; | ||
- | | ||
- | if (d > 100) { | ||
- | System.out.println(" | ||
- | } else { | ||
- | System.out.println(" | ||
- | } | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | ===== Циклы ===== | ||
- | |||
- | Если какой-то участок кода надо выполнить несколько раз, можно воспользоваться следующим оператором: | ||
- | |||
- | <code java> | ||
- | for (начальное условие; | ||
- | |||
- | } | ||
- | </ | ||
- | Например: | ||
- | |||
- | <code java> | ||
- | class Privet { | ||
- | | ||
- | int a; | ||
- | a = 5; | ||
- | for (int i = 0; i < a; i++) { | ||
- | System.out.println(a); | ||
- | } | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | Напечатает переменную a a раз. | ||
- | |||
- | ====== Урок 2 ====== | ||
- | |||
- | ===== Оператор выбора ===== | ||
- | |||
- | Когда в программе требуется проверить много однотипных вариантов, | ||
- | |||
- | <code java> | ||
- | switch (переменная){ | ||
- | case значение1: | ||
- | case значение2: | ||
- | case значение3: | ||
- | case значение4: | ||
- | case значение5: | ||
- | case значение6: | ||
- | case значение7: | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Чтение данных с клавиатуры ===== | ||
- | <code java> | ||
- | package ru.nsesc.lskywalker; | ||
- | |||
- | import java.io.BufferedReader; | ||
- | import java.io.IOException; | ||
- | import java.io.InputStreamReader; | ||
- | |||
- | public class Privet { | ||
- | | ||
- | public static void main(String[] args) throws IOException { | ||
- | |||
- | BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); | ||
- | | ||
- | System.out.println(" | ||
- | int input = Integer.parseInt(reader.readLine()); | ||
- | System.out.println(" | ||
- | int input2 = Integer.parseInt(reader.readLine()); | ||
- | System.out.println(" | ||
- | double input3 = Double.parseDouble(reader.readLine()); | ||
- | System.out.println(input + input2 + input3); | ||
- | |||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Заполнение массива случайными числами ===== | ||
- | <code java> | ||
- | |||
- | int size = 10; | ||
- | int[] arr = new int[size]; | ||
- | |||
- | for(int i = 0; i < size; i++) | ||
- | { | ||
- | | ||
- | } | ||
- | </ | ||
- | |||
- | ====== Урок 3 ====== | ||
- | |||
- | ===== Работа с графикой ===== | ||
- | <code java> | ||
- | package ru.nsunc.lskywalker; | ||
- | import java.awt.*; | ||
- | import java.awt.font.FontRenderContext; | ||
- | import java.awt.font.TextLayout; | ||
- | import java.awt.geom.*; | ||
- | import javax.swing.*; | ||
- | |||
- | public class Graph extends JPanel { | ||
- | private static final long serialVersionUID = 1L; | ||
- | |||
- | public int getWindowWidth() { | ||
- | return windowWidth; | ||
- | } | ||
- | |||
- | public void setWindowWidth(int windowWidth) { | ||
- | this.windowWidth = windowWidth; | ||
- | } | ||
- | |||
- | public int getWindowHeight() { | ||
- | return windowHeight; | ||
- | } | ||
- | |||
- | public void setWindowHeight(int windowHeight) { | ||
- | this.windowHeight = windowHeight; | ||
- | } | ||
- | | ||
- | private int windowWidth = 400; | ||
- | private int windowHeight = 400; | ||
- | |||
- | |||
- | @Override | ||
- | public void paintComponent(Graphics gr) { | ||
- | Graphics2D g = (Graphics2D) gr; | ||
- | |||
- | Color oldColor = g.getColor(); | ||
- | Paint paint = g.getPaint(); | ||
- | Stroke oldStroke = g.getStroke(); | ||
- | |||
- | float[] shtrich = {14, 5}; | ||
- | BasicStroke bs = new BasicStroke(1, | ||
- | g.setStroke(bs); | ||
- | g.draw(new Line2D.Float(20, | ||
- | g.setStroke(oldStroke); | ||
- | |||
- | g.draw(new Rectangle2D.Float(20, | ||
- | |||
- | g.draw(new RoundRectangle2D.Float(20, | ||
- | |||
- | g.draw(new Ellipse2D.Float(20, | ||
- | |||
- | g.draw(new Ellipse2D.Float(200, | ||
- | |||
- | g.draw(new Arc2D.Float(280, | ||
- | g.draw(new Arc2D.Float(280, | ||
- | g.draw(new Arc2D.Float(240, | ||
- | |||
- | int[] arrayX = {20, 100, 100, 250, 250, 20, 20, 50}; | ||
- | int[] arrayY = {180, 180, 200, 200, 220, 200, 200, 190}; | ||
- | |||
- | GeneralPath genPath = new GeneralPath(); | ||
- | genPath.moveTo(arrayX[0], | ||
- | for (int inn = 1; inn < 8; inn++) { | ||
- | genPath.lineTo(arrayX[inn], | ||
- | } | ||
- | genPath.closePath(); | ||
- | g.draw(genPath); | ||
- | |||
- | Color newColor = new Color(0, 0, 255); | ||
- | g.setColor(newColor); | ||
- | Font font = new Font(" | ||
- | Font oldFont = g.getFont(); | ||
- | g.setFont(font); | ||
- | bs = new BasicStroke(3, | ||
- | g.setStroke(bs); | ||
- | FontRenderContext fontCont = g.getFontRenderContext(); | ||
- | TextLayout tLayout = new TextLayout(" | ||
- | AffineTransform affTrans = new AffineTransform(); | ||
- | affTrans.setToTranslation(270, | ||
- | g.draw(tLayout.getOutline(affTrans)); | ||
- | g.setFont(oldFont); | ||
- | g.setColor(oldColor); | ||
- | g.setStroke(oldStroke); | ||
- | |||
- | // Draw axes; | ||
- | g.drawLine(20, | ||
- | g.drawLine(20, | ||
- | g.drawString(" | ||
- | g.drawString(" | ||
- | // Draw a curve; | ||
- | int[] xArray = {20, 40, 60, 80, 100, 120, 130, 140, 280, 332}; | ||
- | int[] yArray = {350, 345, 340, 310, 290, 280, 275, 273, 271, 269}; | ||
- | g.setColor(newColor); | ||
- | genPath = new GeneralPath(); | ||
- | genPath.moveTo(xArray[0], | ||
- | for (int inn = 1; inn < 10; inn++) { | ||
- | genPath.lineTo(xArray[inn], | ||
- | } | ||
- | // | ||
- | g.draw(genPath); | ||
- | g.setColor(oldColor); | ||
- | g.drawString(" | ||
- | |||
- | GradientPaint gradPaint = | ||
- | new GradientPaint(20, | ||
- | g.setPaint(gradPaint); | ||
- | g.fillRect(21, | ||
- | g.setPaint(paint); | ||
- | |||
- | gradPaint = | ||
- | new GradientPaint(20, | ||
- | g.setPaint(gradPaint); | ||
- | g.fill(new Ellipse2D.Float(21, | ||
- | g.setPaint(paint); | ||
- | |||
- | gradPaint = | ||
- | new GradientPaint(230, | ||
- | g.setPaint(gradPaint); | ||
- | g.fill(new Ellipse2D.Float(200, | ||
- | g.setPaint(paint); | ||
- | |||
- | g.fill(new RoundRectangle2D.Float(20, | ||
- | g.setPaint(paint); | ||
- | } | ||
- | |||
- | public static void main(String[] args) { | ||
- | | ||
- | JFrame f = new JFrame(); | ||
- | Graph window = new Graph(); | ||
- | window.setWindowHeight(1000); | ||
- | window.setWindowWidth(1000); | ||
- | f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
- | f.add(window); | ||
- | f.setSize(window.getWindowWidth(), | ||
- | f.setLocation(200, | ||
- | f.setVisible(true); | ||
- | } | ||
- | |||
- | |||
- | } | ||
- | |||
- | </ | ||
- | То же, только без шахмат и первокурсниц: | ||
- | <code java> | ||
- | import java.awt.*; | ||
- | import java.awt.font.FontRenderContext; | ||
- | import java.awt.font.TextLayout; | ||
- | import java.awt.geom.*; | ||
- | import javax.swing.*; | ||
- | |||
- | public class Graph extends JPanel { | ||
- | private static final long serialVersionUID = 1L; | ||
- | |||
- | public int getWindowWidth() { | ||
- | return windowWidth; | ||
- | } | ||
- | |||
- | public void setWindowWidth(int windowWidth) { | ||
- | this.windowWidth = windowWidth; | ||
- | } | ||
- | |||
- | public int getWindowHeight() { | ||
- | return windowHeight; | ||
- | } | ||
- | |||
- | public void setWindowHeight(int windowHeight) { | ||
- | this.windowHeight = windowHeight; | ||
- | } | ||
- | |||
- | private int windowWidth = 640; | ||
- | private int windowHeight = 640; | ||
- | |||
- | |||
- | @Override | ||
- | public void paintComponent(Graphics gr) { | ||
- | Graphics2D g = (Graphics2D) gr; | ||
- | |||
- | Color oldColor = g.getColor(); | ||
- | Paint paint = g.getPaint(); | ||
- | Stroke oldStroke = g.getStroke(); | ||
- | |||
- | float[] shtrich = {14, 5}; | ||
- | BasicStroke bs = new BasicStroke(1, | ||
- | g.setStroke(bs); | ||
- | GeneralPath genPath = new GeneralPath(); | ||
- | g.draw(genPath); | ||
- | |||
- | Color newColor = new Color(0, 0, 255); | ||
- | g.setColor(newColor); | ||
- | Font font = new Font(" | ||
- | Font oldFont = g.getFont(); | ||
- | g.setFont(font); | ||
- | bs = new BasicStroke(3, | ||
- | g.setStroke(bs); | ||
- | FontRenderContext fontCont = g.getFontRenderContext(); | ||
- | // TextLayout tLayout = new TextLayout(" | ||
- | // | ||
- | // | ||
- | // g.draw(tLayout.getOutline(affTrans)); | ||
- | g.setFont(oldFont); | ||
- | g.setColor(oldColor); | ||
- | g.setStroke(oldStroke); | ||
- | |||
- | // Draw axes; | ||
- | g.drawLine(20, | ||
- | g.drawLine(20, | ||
- | g.drawString(" | ||
- | g.drawString(" | ||
- | // Draw a curve; | ||
- | double[] xArray; | ||
- | double[] yArray; | ||
- | double left = -4; | ||
- | double right = 4; | ||
- | double step = 0.1; | ||
- | int size = (int)((right-left)/ | ||
- | xArray = new double[size]; | ||
- | yArray = new double[size]; | ||
- | | ||
- | xArray[0] = left; | ||
- | yArray[0] = Math.sin(xArray[0]); | ||
- | | ||
- | for(int i = 1; i < size; i++) | ||
- | { | ||
- | xArray[i] = xArray[i - 1] + step; | ||
- | yArray[i] = Math.sin(xArray[i]); | ||
- | } | ||
- | | ||
- | long xArrayLong[] = new long[size]; | ||
- | long yArrayLong[] = new long[size]; | ||
- | |||
- | for(int i = 0; i < size; i++) | ||
- | { | ||
- | xArrayLong[i] = Math.round(xArray[i]); | ||
- | yArrayLong[i] = Math.round(yArray[i]); | ||
- | } | ||
- | | ||
- | g.setColor(newColor); | ||
- | genPath = new GeneralPath(); | ||
- | genPath.moveTo(xArrayLong[0], | ||
- | for (int inn = 1; inn < size; inn++) { | ||
- | genPath.lineTo(xArrayLong[inn], | ||
- | } | ||
- | // | ||
- | |||
- | g.draw(genPath); | ||
- | g.setColor(oldColor); | ||
- | g.drawString(" | ||
- | } | ||
- | |||
- | public static void main(String[] args) { | ||
- | |||
- | JFrame f = new JFrame(); | ||
- | Graph window = new Graph(); | ||
- | window.setWindowHeight(640); | ||
- | window.setWindowWidth(640); | ||
- | f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); | ||
- | f.add(window); | ||
- | f.setSize(window.getWindowWidth(), | ||
- | f.setLocation(200, | ||
- | f.setVisible(true); | ||
- | } | ||
- | |||
- | |||
- | } | ||
- | </ | ||
- | |||
- | ====== Урок 4 ====== | ||
- | ===== Работа с файлами, | ||
- | <code java> | ||
- | package ru.nsesc.lskywalker; | ||
- | import java.io.*; | ||
- | |||
- | public class Reader { | ||
- | |||
- | public void readData() | ||
- | { | ||
- | // описываем входной файловый поток | ||
- | FileInputStream inputFileStream; | ||
- | // описываем входной читатель из потока | ||
- | InputStreamReader inputFileReader = null; | ||
- | try { | ||
- | // сопоставляем входной поток файлу | ||
- | inputFileStream = new FileInputStream(" | ||
- | // и открываем его на чтение | ||
- | inputFileReader = new InputStreamReader(inputFileStream, | ||
- | } | ||
- | catch (FileNotFoundException ex) | ||
- | { | ||
- | System.out.println(ex); | ||
- | |||
- | } | ||
- | catch (UnsupportedEncodingException ex) | ||
- | { | ||
- | System.out.println(ex); | ||
- | |||
- | } | ||
- | // создаем читатель из файла | ||
- | BufferedReader inputFile = new BufferedReader(inputFileReader); | ||
- | // переменная, | ||
- | String str; | ||
- | // массив строк, в котором будет храниться результат деления нашей свежепрочитанной строки на куски | ||
- | String[] splitted = null; | ||
- | try { | ||
- | // пока можем читать из файда | ||
- | while ((str = inputFile.readLine()) != null) { | ||
- | // делим прочитанную строку на массив строк, по разделителю ";" | ||
- | splitted = str.split(";" | ||
- | } | ||
- | } catch (IOException ex) { | ||
- | System.out.println(ex); | ||
- | } | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | ===== Работа с файлами, | ||
- | <code java> | ||
- | package ru.nsesc.lskywalker; | ||
- | import java.io.*; | ||
- | |||
- | public class Reader { | ||
- | |||
- | public void readData() | ||
- | { | ||
- | // описываем входной файловый поток | ||
- | FileInputStream inputFileStream; | ||
- | // описываем входной читатель из потока | ||
- | InputStreamReader inputFileReader = null; | ||
- | try { | ||
- | // сопоставляем входной поток файлу | ||
- | inputFileStream = new FileInputStream(" | ||
- | // и открываем его на чтение | ||
- | inputFileReader = new InputStreamReader(inputFileStream, | ||
- | } | ||
- | catch (FileNotFoundException ex) | ||
- | { | ||
- | System.out.println(ex); | ||
- | |||
- | } | ||
- | catch (UnsupportedEncodingException ex) | ||
- | { | ||
- | System.out.println(ex); | ||
- | |||
- | } | ||
- | // создаем читатель из файла | ||
- | BufferedReader inputFile = new BufferedReader(inputFileReader); | ||
- | // переменная, | ||
- | String str; | ||
- | // | ||
- | int c = 0; | ||
- | // массив строк, в котором будет храниться результат деления нашей свежепрочитанной строки на куски | ||
- | String[] splitted = null; | ||
- | try { | ||
- | // пока можем читать из файда | ||
- | while ((c = inputFile.read()) != -1) { | ||
- | if((char)c != ' | ||
- | { | ||
- | System.out.println((char) c); | ||
- | } | ||
- | else | ||
- | { | ||
- | break; | ||
- | } | ||
- | } | ||
- | } catch (IOException ex) { | ||
- | System.out.println(ex); | ||
- | } | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | ===== Как выбрать только четные числа из строки? | ||
- | <code java> | ||
- | package ru.nsesc.lskywalker; | ||
- | import java.io.*; | ||
- | |||
- | public class Reader { | ||
- | |||
- | public void readData() | ||
- | { | ||
- | // описываем входной файловый поток | ||
- | FileInputStream inputFileStream; | ||
- | // описываем входной читатель из потока | ||
- | InputStreamReader inputFileReader = null; | ||
- | try { | ||
- | // сопоставляем входной поток файлу | ||
- | inputFileStream = new FileInputStream(" | ||
- | // и открываем его на чтение | ||
- | inputFileReader = new InputStreamReader(inputFileStream, | ||
- | } | ||
- | catch (FileNotFoundException ex) | ||
- | { | ||
- | System.out.println(ex); | ||
- | |||
- | } | ||
- | catch (UnsupportedEncodingException ex) | ||
- | { | ||
- | System.out.println(ex); | ||
- | |||
- | } | ||
- | // создаем читатель из файла | ||
- | BufferedReader inputFile = new BufferedReader(inputFileReader); | ||
- | // переменная, | ||
- | String str; | ||
- | // | ||
- | int c = 0; | ||
- | // массив строк, в котором будет храниться результат деления нашей свежепрочитанной строки на куски | ||
- | String[] splitted = null; | ||
- | try { | ||
- | // пока можем читать из файла | ||
- | while ((c = inputFile.read()) != -1) { | ||
- | if((char)c != ' | ||
- | { | ||
- | if(c % 2 != 0) | ||
- | { | ||
- | System.out.println(c); | ||
- | } | ||
- | } | ||
- | else | ||
- | { | ||
- | break; | ||
- | } | ||
- | } | ||
- | } catch (IOException ex) { | ||
- | System.out.println(ex); | ||
- | } | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | |||
- | ===== Запись текстовых данных в файл ===== | ||
- | |||
- | <code java> | ||
- | package ru.nsesc.lskywalker; | ||
- | import java.io.*; | ||
- | |||
- | public class Writer { | ||
- | public static void writeData(String text) | ||
- | { | ||
- | BufferedWriter writer = null; | ||
- | try | ||
- | { | ||
- | FileOutputStream outputFileStream = new FileOutputStream(" | ||
- | OutputStreamWriter outputFileWriter = new OutputStreamWriter(outputFileStream); | ||
- | writer = new BufferedWriter(outputFileWriter); | ||
- | writer.write(text); | ||
- | | ||
- | // ВАЖНО. Так как мы используем буферзованный вывод, то выходной поток необходимо закрывать, | ||
- | // сохраненные там данные были записаны на диск | ||
- | writer.close(); | ||
- | } | ||
- | catch (FileNotFoundException e) | ||
- | { | ||
- | e.printStackTrace(); | ||
- | } | ||
- | catch (IOException e) | ||
- | { | ||
- | e.printStackTrace(); | ||
- | } | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | ====== Литература ====== | ||
- | |[[http:// | ||
- | |||
- | |[[http:// | ||
- | |||
- | ====== Задачи ====== | ||
- | |||
- | ===== Задача 6 ===== | ||
- | |||
- | Файл представляет собой набор произвольного количества строк разнообразной длины. Строки разбиты на слова пробелами. Требуется обработать содержимое файла таким образом, | ||
- | |||
- | Пример: | ||
- | |||
- | Дан файл | ||
- | < | ||
- | aaa bb ccccc dd e f | ||
- | gg hhh | ||
- | </ | ||
- | |||
- | Заданная длина строки: | ||
- | |||
- | < | ||
- | aaa | ||
- | bb | ||
- | ccccc | ||
- | dd e | ||
- | f gg | ||
- | hhh | ||
- | </ | ||
- | |||
- | ===== Задача 7 ===== | ||
- | Удалить из файла все лишние пробелы. Пробелы считаются лишними если: | ||
- | |||
- | * Повторяются более чем 1 раз подряд | ||
- | * Стоят перед знаком препинания | ||
- | * Стоят после открывающей или перед закрывающей кавычками | ||
- | * Стоят после открывающей или перед закрывающей скобками | ||
- | |||
- | ===== Списки ===== | ||
- | |||
- | По приведенному наброску написать все упомянутые функции для реализации списков на языке Java. В результате программа должна как минимум уметь (на тройку): | ||
- | |||
- | * создать список | ||
- | * добавить туда элемент | ||
- | * удалить элемент | ||
- | * вывести список на экран | ||
- | |||
- | <code java> | ||
- | class List | ||
- | { | ||
- | private: | ||
- | int data; | ||
- | List next; | ||
- | public: | ||
- | // возвращает значение, | ||
- | int getData(); | ||
- | // устанавливает значение, | ||
- | void setData(int data) | ||
- | { | ||
- | this.data = data; | ||
- | } | ||
- | // возвращает ссылку на следующий элемент списка | ||
- | List getNext() | ||
- | {}; | ||
- | // устанавливает ссылку на следующий элемент | ||
- | void setNext(List next) | ||
- | {}; | ||
- | // добавляет элемент списка с данными data после элемента с номером index | ||
- | void addElement(int data, int index) | ||
- | {}; | ||
- | // добавляет элемент списка с данными data в конец списка | ||
- | void addElement(int data) | ||
- | { | ||
- | List tmp = new List(); | ||
- | | ||
- | | ||
- | List current = this.next; | ||
- | | ||
- | { | ||
- | next = next.getNext(); | ||
- | } | ||
- | | ||
- | }; | ||
- | // удаляет элемент с номером index | ||
- | void removeElement(int index) | ||
- | {}; | ||
- | // возвращает голову списка (первый элемент) | ||
- | List head() | ||
- | {}; | ||
- | // возвращает хвост списка (последний элемент) | ||
- | List tail() | ||
- | {}; | ||
- | // возвращает истину, | ||
- | boolean isEmpty() | ||
- | {}; | ||
- | // очищает список | ||
- | void emptyList() | ||
- | {}; | ||
- | // считает количество элементов в списке | ||
- | int size() | ||
- | {}; | ||
- | // выводит список на экран | ||
- | void print() | ||
- | {}; | ||
- | public static void main() | ||
- | { | ||
- | List list; | ||
- | // заполним список элементами | ||
- | for(int i = 0; i < 10; i++) | ||
- | { | ||
- | list.addElement(i); | ||
- | } | ||
- | // выведем его на экран | ||
- | list.print(); | ||
- | | ||
- | return 0; | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Первое задание на оценку ===== | ||
- | |||
- | Реализовать программу, | ||
- | |||
- | В программе должна присутствовать следующая функциональность: | ||
- | |||
- | * Добавление книги в библиотеку | ||
- | * Выдача книги читателю | ||
- | * Получение книги обратно | ||
- | * Если книга просрочена, | ||
- | |||
- | Пример главного класса программы: | ||
- | |||
- | <code java> | ||
- | public class Ex { | ||
- | public static void main(String[] argc) { | ||
- | | ||
- | // Количество книжек около 10 штук, в качестве примера напишу лишь две | ||
- | Book book1 = new Book(); | ||
- | // задание знаений с помощью сеттеров | ||
- | book1.setAuthor(" | ||
- | book1.setTitle(" | ||
- | book1.setYear(2011); | ||
- | book1.setPrice(500); | ||
- | // задание значений полей с помощью конструктора (не обязательно) | ||
- | Book book2 = new Book(" | ||
- | | ||
- | Library lib = new Library(); | ||
- | | ||
- | lib.addBook(book1); | ||
- | lib.addBook(book2); | ||
- | | ||
- | lib.giveToReader(" | ||
- | lib.giveToReader(" | ||
- | lib.giveToReader(" | ||
- | | ||
- | lib.getBack(" | ||
- | |||
- | lib.getBack(" | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | ===== Второе задание на оценку ===== | ||
- | |||
- | Написать программу, | ||
- | |||
- | - Список преподавателей | ||
- | - Список предметов | ||
- | - Список соответствия преподавателя предмету (один преподаватель может вести несколько предметов) | ||
- | - Написать методы: | ||
- | - Вывести список преподавателей с теми предметами, | ||
- | - Вывести список предметов < | ||
- | - Вывести преподавателя с наибольшим количеством предметов | ||
- | |||
- | <code java> | ||
- | HashMap< | ||
- | // где-то тут заполняется карта teachers | ||
- | Iterator it = teachers.entrySet().iterator(); | ||
- | while (it.hasNext()) { | ||
- | Map.Entry pairs = (Map.Entry)it.next(); | ||
- | System.out.println(pairs.getKey() + " = " + pairs.getValue()); | ||
- | it.remove(); | ||
- | } | ||
- | </ | ||
- | |||
- | ===== Итоговая контрольная работа ===== | ||
- | |||
- | [[https:// |