мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
java:basics [19/01/2015 08:31] – 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:// | + | |
- | + | ||
- | ==== Второй семестр ==== | + | |
- | + | ||
- | ===== Задание 1. Тур де Франс ===== | + | |
- | + | ||
- | Наша задача состоит в том, чтобы написать красивую объектно-ориентированную программу, | + | |
- | + | ||
- | Файл 1. tdf14_teams.txt | + | |
- | + | ||
- | В нем перечислены участники и команды. В каждой строке файла хранится запись вида: | + | |
- | + | ||
- | национальность фамилия имя год_рождения номер команда | + | |
- | + | ||
- | Например | + | |
- | + | ||
- | < | + | |
- | SUI ALBASINI Michael 1980 182 ORICA GREENEDGE | + | |
- | </ | + | |
- | + | ||
- | Каждый участник однозначно идентифицируется по своему имени, а команда по названию (т.е. дубликатов нет) | + | |
- | + | ||
- | Файл 2. tdf14_stage.txt | + | |
- | + | ||
- | В нем перечислены этапы гонки в виде: | + | |
- | + | ||
- | номер_этапа дата место_отправления место_прибытия дистанция | + | |
- | + | ||
- | Например | + | |
- | + | ||
- | < | + | |
- | 1 05/07/14 Leeds Harrogate 190 | + | |
- | </ | + | |