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

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
java:basics [19/01/2015 08:31] ybezrukovjava:basics [19/01/2015 09:23] (текущий) ybezrukov
Строка 1: Строка 1:
 +[[Первый семестр]]
  
-====== Урок 1 ====== +[[Второй семестр]]
-===== Начало работы ===== +
- +
-  - Запустите Eclipse +
-  - Создайте новый проект (Правой кнопкой по левой вкладке Package Explorer, New, Project) +
-  - Создайте новый пакет (Правой кнопкой по имени проекта New, Package) +
-  - Создайте новый класс (Правой кнопкой по имени пакета, New, Class) +
- +
-В результате в редакторе должнен быть результат, похожий на: +
-<code java> +
-package ru.nsunc.lskywalker; +
- +
-class Privet { +
- +
-+
-</code> +
- +
-===== Вывод на экран ===== +
- +
-Чтобы напечатать строчку на экране, можно воспользоваться функциями System.out.print (напечатает строку) или System.out.println (напечатает строку и перейдет на начало следующей строки). Например: +
- +
-<code java> +
-package ru.nsunc.lskywalker; +
- +
-class Privet { +
-   public static void main (String[] args){ +
-     System.out.println("Привет"); +
-   } +
-+
-</code> +
- +
-===== Объявление переменных ===== +
- +
-Чтобы объявить переменную в Яве, нужно сначало указать ее тип (множество значений, которые может принимать переменная) и ее имя. +
- +
-Например: +
-<code java> +
-int userID; +
-</code> +
-Описывает переменную целого типа (int) имеющую имя userID. +
- +
-<code java> +
-double multiplicationResult; +
-</code> +
-Описывает вещественную переменную (double) имеющую имя multiplicationResult. +
- +
-<code java> +
-package ru.nsunc.lskywalker; +
- +
-class Privet { +
-   public static void main (String[] args){ +
-     int a; +
-     a = 5; +
-     int b = 10; +
-     double c, d; +
-     c = 10.2; +
-     d = a * b * c; +
-     System.out.println("d = " + d); +
-   } +
-+
-</code> +
- +
-===== Ветвления ===== +
- +
-Если вы хотите, чтобы поведение вашей программы изменялось в зависимости от состояния переменных, можно воспользоваться оператором ветвления. +
- +
-<code java> +
-if (условие) { +
-   выражения, которые выполняются если условие истинно +
-} else { +
-   выражения, которые выполняются если условие ложно +
-}    +
-</code> +
- +
-Ветвь else в операторе ветвления необязательна и может быть пропущена. +
-<code java> +
-class Privet { +
-   public static main (String[] args){ +
-     int a; +
-     a = 5; +
-     int b = 10; +
-     double c, d; +
-     c = 10.2; +
-     d = a * b * c; +
-     System.out.println("d = " + d); +
-     if (d > 100) { +
-        System.out.println("d > 100"); +
-     } else { +
-        System.out.println("d <= 100"); +
-     } +
-   } +
-+
-</code> +
- +
- +
-===== Циклы ===== +
- +
-Если какой-то участок кода надо выполнить несколько раз, можно воспользоваться следующим оператором: +
- +
-<code java> +
-for (начальное условие; ограничение; способ изменения){ +
- +
-+
-</code> +
-Например: +
- +
-<code java> +
-class Privet { +
-   public static main (String[] args){ +
-     int a; +
-     a = 5; +
-     for (int i = 0; i < a; i++) { +
-        System.out.println(a); +
-     } +
-   } +
-+
-</code> +
- +
-Напечатает переменную a a раз. +
- +
-====== Урок 2 ====== +
- +
-===== Оператор выбора ===== +
- +
-Когда в программе требуется проверить много однотипных вариантов, пользоваться цепочками операторов if..else нерационально. Упростить задачу помогает вот такая конструкция: +
- +
-<code java> +
-switch (переменная){ +
-   case значение1: выражения; break; +
-   case значение2: выражения; break; +
-   case значение3: выражения; break; +
-   case значение4: выражения; break; +
-   case значение5: выражения; break; +
-   case значение6: выражения; break; +
-   case значение7: выражения; break; +
-   default: выражения; break; +
-+
-</code> +
- +
-===== Чтение данных с клавиатуры ===== +
-<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> +
- +
-===== Заполнение массива случайными числами ===== +
-<code java> +
- +
-int size = 10; +
-int[arr = new int[size]; +
- +
-for(int i = 0; i < size; i++) +
-+
-   arr[i] = (int)Math.round(Math.random() * 10); +
-+
-</code> +
- +
-====== Урок 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, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 3, shtrich, 0); +
-        g.setStroke(bs); +
-        g.draw(new Line2D.Float(20, 20, 360, 20)); +
-        g.setStroke(oldStroke); +
-  +
-        g.draw(new Rectangle2D.Float(20, 40, 340, 20)); +
-  +
-        g.draw(new RoundRectangle2D.Float(20, 70, 340, 30, 20, 15)); +
-  +
-        g.draw(new Ellipse2D.Float(20, 110, 150, 60)); +
-  +
-        g.draw(new Ellipse2D.Float(200, 110, 60, 60)); +
-  +
-        g.draw(new Arc2D.Float(280, 110, 80, 60, 0, 180, Arc2D.OPEN)); +
-        g.draw(new Arc2D.Float(280, 150, 80, 50, 0, 80, Arc2D.CHORD)); +
-        g.draw(new Arc2D.Float(240, 150, 80, 60, 0, 90, Arc2D.PIE)); +
-  +
-        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], arrayY[0]); +
-        for (int inn = 1; inn < 8; inn++) { +
-            genPath.lineTo(arrayX[inn], arrayY[inn]); +
-        } +
-        genPath.closePath(); +
-        g.draw(genPath); +
-  +
-        Color newColor = new Color(0, 0, 255); +
-        g.setColor(newColor); +
-        Font font = new Font("Tahoma", Font.BOLD | Font.ITALIC, 50); +
-        Font oldFont = g.getFont(); +
-        g.setFont(font); +
-        bs = new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 3); +
-        g.setStroke(bs); +
-        FontRenderContext fontCont = g.getFontRenderContext(); +
-        TextLayout tLayout = new TextLayout("SBP", font, fontCont); +
-        AffineTransform affTrans = new AffineTransform(); +
-        affTrans.setToTranslation(270, 220); +
-        g.draw(tLayout.getOutline(affTrans)); +
-        g.setFont(oldFont); +
-        g.setColor(oldColor); +
-        g.setStroke(oldStroke); +
-  +
-        // Draw axes; +
-        g.drawLine(20, 220, 20, 350); +
-        g.drawLine(20, 350, 360, 350); +
-        g.drawString("Y", 25, 230); +
-        g.drawString("X", 350, 346); +
-        // 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], yArray[0]); +
-        for (int inn = 1; inn < 10; inn++) { +
-            genPath.lineTo(xArray[inn], yArray[inn]); +
-        } +
-        //genPath.closePath(); +
-        g.draw(genPath); +
-        g.setColor(oldColor); +
-        g.drawString("y = f(x)", 180, 267); +
-  +
-        GradientPaint gradPaint = +
-                new GradientPaint(20, 50, Color.green, 200, 50, Color.yellow); +
-        g.setPaint(gradPaint); +
-        g.fillRect(21, 41, 339, 19); +
-        g.setPaint(paint); +
-  +
-        gradPaint = +
-                new GradientPaint(20, 110, Color.blue, 96, 110, Color.white, true); +
-        g.setPaint(gradPaint); +
-        g.fill(new Ellipse2D.Float(21, 111, 149, 59)); +
-        g.setPaint(paint); +
-  +
-        gradPaint = +
-                new GradientPaint(230, 100, Color.black, 230, 113, Color.white, true); +
-        g.setPaint(gradPaint); +
-        g.fill(new Ellipse2D.Float(200, 110, 60, 60)); +
-        g.setPaint(paint); +
-  +
-        g.fill(new RoundRectangle2D.Float(20, 70, 340, 30, 20, 15)); +
-        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(), window.getWindowHeight()); +
-        f.setLocation(200,200); +
-        f.setVisible(true); +
-    } +
- +
- +
-+
- +
-</code> +
-То же, только без шахмат и первокурсниц: +
-<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, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 3, shtrich, 0); +
-        g.setStroke(bs); +
-        GeneralPath genPath = new GeneralPath(); +
-        g.draw(genPath); +
-  +
-        Color newColor = new Color(0, 0, 255); +
-        g.setColor(newColor); +
-        Font font = new Font("Tahoma", Font.BOLD | Font.ITALIC, 50); +
-        Font oldFont = g.getFont(); +
-        g.setFont(font); +
-        bs = new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 3); +
-        g.setStroke(bs); +
-        FontRenderContext fontCont = g.getFontRenderContext(); +
- //        TextLayout tLayout = new TextLayout("SBP", font, fontCont); +
- //   AffineTransform affTrans = new AffineTransform(); +
-        //affTrans.setToTranslation(270, 220); +
- //        g.draw(tLayout.getOutline(affTrans)); +
-        g.setFont(oldFont); +
-        g.setColor(oldColor); +
-        g.setStroke(oldStroke); +
-  +
-        // Draw axes; +
-        g.drawLine(20, 220, 20, 350); +
-        g.drawLine(20, 350, 360, 350); +
-        g.drawString("Y", 25, 230); +
-        g.drawString("X", 350, 346); +
-        // Draw a curve; +
-        double[] xArray; +
-        double[] yArray; +
-        double left = -4; +
-        double right = 4; +
-        double step = 0.1; +
-        int size = (int)((right-left)/step); +
-        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], yArrayLong[0]); +
-        for (int inn = 1; inn < size; inn++) { +
-            genPath.lineTo(xArrayLong[inn], yArrayLong[inn]); +
-        } +
-        //genPath.closePath(); +
-  +
-        g.draw(genPath); +
-        g.setColor(oldColor); +
-        g.drawString("y = f(x)", 180, 267); +
-    } +
-  +
-    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(), window.getWindowHeight()); +
-        f.setLocation(200,200); +
-        f.setVisible(true); +
-    } +
-  +
-  +
-+
-</code> +
- +
-====== Урок 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("superfile.txt"); +
-            // и открываем его на чтение  +
-            inputFileReader = new InputStreamReader(inputFileStream, "UTF-8"); +
-        } +
-        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> +
- +
-===== Работа с файлами, чтение посимвольно ===== +
-<code java> +
-package ru.nsesc.lskywalker; +
-import java.io.*; +
- +
-public class Reader { +
- +
-    public void readData() +
-    { +
-        // описываем входной файловый поток +
-        FileInputStream inputFileStream; +
-        // описываем входной читатель из потока +
-        InputStreamReader inputFileReader = null; +
-        try { +
-            // сопоставляем входной поток файлу +
-            inputFileStream = new FileInputStream("superfile.txt"); +
-            // и открываем его на чтение +
-            inputFileReader = new InputStreamReader(inputFileStream, "UTF-8"); +
-        } +
-        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> +
- +
-===== Как выбрать только четные числа из строки? ===== +
-<code java> +
-package ru.nsesc.lskywalker; +
-import java.io.*; +
- +
-public class Reader { +
- +
-    public void readData() +
-    { +
-        // описываем входной файловый поток +
-        FileInputStream inputFileStream; +
-        // описываем входной читатель из потока +
-        InputStreamReader inputFileReader = null; +
-        try { +
-            // сопоставляем входной поток файлу +
-            inputFileStream = new FileInputStream("superfile.txt"); +
-            // и открываем его на чтение +
-            inputFileReader = new InputStreamReader(inputFileStream, "UTF-8"); +
-        } +
-        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> +
- +
- +
-===== Запись текстовых данных в файл ===== +
- +
-<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("filename.txt"); +
-            OutputStreamWriter outputFileWriter = new OutputStreamWriter(outputFileStream); +
-            writer = new BufferedWriter(outputFileWriter); +
-            writer.write(text); +
-             +
-            // ВАЖНО. Так как мы используем буферзованный вывод, то выходной поток необходимо закрывать, чтобы  +
-            // сохраненные там данные были записаны на диск +
-            writer.close(); +
-        } +
-        catch (FileNotFoundException e) +
-        { +
-            e.printStackTrace(); +
-        } +
-        catch (IOException e) +
-        { +
-            e.printStackTrace(); +
-        } +
-    } +
-}     +
- +
-</code> +
- +
-====== Литература ====== +
-|[[http://www.nsunc.com/docs/Java/Heads_first_Java.djvu|Изучаем Java]]| Учебник для курса | +
- +
-|[[http://sourceforge.net/projects/djvu/files/DjVuLibre_Windows/3.5.25%2B4.9/|DjView]] | Программа для чтения DjVu| +
- +
-====== Задачи ====== +
- +
-===== Задача 6 ===== +
- +
-Файл представляет собой набор произвольного количества строк разнообразной длины. Строки разбиты на слова пробелами. Требуется обработать содержимое файла таким образом, чтобы ширина строк в символах была не больше наперед заданного числа. +
- +
-Пример: +
- +
-Дан файл +
-<code> +
-aaa bb ccccc dd e f +
-gg hhh +
-</code> +
- +
-Заданная длина строки:+
- +
-<code> +
-aaa +
-bb +
-ccccc +
-dd e +
-f gg +
-hhh +
-</code> +
- +
-===== Задача 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(); +
-     tmp.setData(data); +
-     tmp.setNext(NULL); +
-     List current = this.next; +
-     while(current != NULL) +
-     { +
-       next = next.getNext(); +
-     } +
-     next.setNext(tmp); +
-  }; +
-  // удаляет элемент с номером 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> +
- +
-===== Первое задание на оценку ===== +
- +
-Реализовать программу, управляющую библиотекой. В ней должно быть создано необходимое количество классов, которые описывают нужные структуры данных (например, классы Book и Library) +
- +
-В программе должна присутствовать следующая функциональность: +
- +
-  * Добавление книги в библиотеку +
-  * Выдача книги читателю +
-  * Получение книги обратно +
-  * Если книга просрочена, читателя нужно оштрафовать. +
- +
-Пример главного класса программы: +
- +
-<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("Лермонтов", "Мцыри", 2010, 398); +
-         +
-        Library lib = new Library(); +
-         +
-        lib.addBook(book1); +
-        lib.addBook(book2); +
-         +
-        lib.giveToReader("Сергей", "Руслан и Людмила", 25, 10, 2014); // Выдать книжку читателю Сергей 25 октября 2014 года +
-        lib.giveToReader("Николай", "Руслан и Людмила", 24, 10, 2014); // Вывести сообщение об ошибке, так как эта книжка уже выдана +
-        lib.giveToReader("Марина", "Мцыри", 30, 12, 2014); +
-         +
-        lib.getBack("Сергей", "Руслан и Людмила", 14, 12, 2014); // Сдал в срок, просто получить книжку +
- +
-        lib.getBack("Марина", "Мцыри", 10, 9, 2015); // Просрочила, выписать штраф +
-    } +
-+
- +
-</code> +
- +
-===== Второе задание на оценку ===== +
- +
-Написать программу, реализующую следующие структуры данных: +
- +
-  - Список преподавателей +
-  - Список предметов +
-  - Список соответствия преподавателя предмету (один преподаватель может вести несколько предметов) +
-  - Написать методы: +
-    - Вывести список преподавателей с теми предметами, которые они ведут в формате <code>имя преподавателя предмет1, предмет2, предмет3</code> +
-    - Вывести список предметов <code>предмет имя преподавателя</code> +
-    - Вывести преподавателя с наибольшим количеством предметов +
- +
-<code java> +
-    HashMap<String, String> teachers = new HashMap<String, String>(); +
-    // где-то тут заполняется карта 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(); +
-    } +
-</code> +
- +
-===== Итоговая контрольная работа ===== +
- +
-[[https://drive.google.com/file/d/0B88BcoMr40VINTJIX1VuSlAxSTA/view?usp=sharing|Задание]] +
- +
-==== Второй семестр ==== +
- +
-===== Задание 1. Тур де Франс ===== +
- +
-Наша задача состоит в том, чтобы написать красивую объектно-ориентированную программу, которая будет заниматься обработкой данных результатов велогонки Тур де Франс. Данные гонки хранятся в трех текстовых файлах. +
- +
-Файл 1. tdf14_teams.txt +
- +
-В нем перечислены участники и команды. В каждой строке файла хранится запись вида: +
- +
-национальность фамилия имя год_рождения номер команда +
- +
-Например +
- +
-<code> +
-SUI ALBASINI Michael 1980 182 ORICA GREENEDGE +
-</code> +
- +
-Каждый участник однозначно идентифицируется по своему имени, а команда по названию (т.е. дубликатов нет) +
- +
-Файл 2. tdf14_stage.txt +
- +
-В нем перечислены этапы гонки в виде: +
- +
-номер_этапа дата место_отправления место_прибытия дистанция +
- +
-Например +
- +
-<code> +
-1 05/07/14 Leeds Harrogate 190 +
-</code> +