Задания к лабораторной работе №1



  1. Ввести n строк с консоли, найти самую короткую строку. Вывести эту строку и ее длину.
  2. Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания их длин, а также значения их длин.
  3. Ввести n строк с консоли. Упорядочить строки и вывести эти строки в порядке убывания длины, а также значения их длин.
  4. Ввести n строк с консоли. Вывести на консоль те строки, длина которых меньше средней, также их длины.
  5. Ввести n строк с консоли. Вывести на консоль те строки, длина которых больше средней, а также их длины.
  6. Ввести n строк с консоли, найти самую короткую строку. Вывести эту строку и ее длину.
  7. Ввести n строк с консоли. Найти самую длинную строку. Вывести найденную строку и ее длину.
  8. Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания их длин, а также значения их длин.
  9. В каждом слове текста k-ю букву заменить заданным симво­лом. Если k больше длины слова, корректировку не выполнять.
  10. В русском тексте каждую букву заменить ее номером в алфави­те. В одной строке печатать текст с двумя пробелами между буквами, в следующей строке внизу под каждой буквой печа­тать ее номер.
  11. В тексте после буквы Р, если она не последняя в слове, ошибочно напечатана буква А вместо О. Внести исправления в текст.
  12. В тексте слова заданной длины заменить указанной подстрокой, длина которой может не совпадать с длиной слова.
  13. В тексте после k-го символа вставить заданную подстроку.
  14. После каждого слова текста, заканчивающегося заданной под­строкой, вставить указанное слово.
  15. В зависимости от признака (0 или 1) в каждой строке текста удалить указанный символ везде, где он встречается, или вставить его после k-гo символа.
  16. Из небольшого текста удалить все символы, кроме пробелов, не являющиеся буквами. Между последовательностями подряд идущих букв оставить хотя бы один пробел.
  17. Из текста удалить все слова заданной длины, начинающиеся на согласную букву.
  18. Удалить из текста его часть, заключенную между двумя сим­волами, которые вводятся (например, между скобками "(" и ")" или между звездочками (*) и т.п.).
  19. В тексте найти все пары слов, из которых одно является об­ращением другого.
  20. Найти и напечатать, сколько раз повторяется в тексте каждое слово, которое встречается в нем.
  21. В тексте найти и напечатать символы, встречающиеся наибо­лее часто.
  22. Найти, каких букв, гласных или согласных, больше в каждом предложении текста.
  23. В тексте найти количество слов, начинающихся и заканчиваю­щихся гласной буквой.
  24. Напечатать без повторения слова текста, у которых первая и последняя буква совпадают.
  25. В тексте найти и напечатать все слова максимальной и все слова минимальной длины.
  26. Напечатать квитанцию об оплате за телеграмму, если стоимость одного слова задана.
  27. В трех словах найти одинаковые буквы, которые встречаются во всех словах.
  28. В тексте найти первую подстроку максимальной длины, не со­держащую букв.
  29. Задан небольшой русский текст, состоящий не более чем из 80 символов. Определить все согласные буквы встречающиеся не более, чем в двух словах.
  30. Создайте свое собственное поведение по типу возобновления, используя цикл while, который будет повторяться, пока исключение больше не будет выбрасываться.
  31. В следующих заданиях требуется ввести последовательность строк из текстового потока и выполнить указанные действия. При этом могут рассматриваться два варианта: каждая строка состоит из одного слова; каждая строка состоит из нескольких слов. Имена входного и выходного файлов могут быть введены как параметры командной строки.
  32. Найти и вывести слова, для которых последняя буква одного слова совпадает с первой буквой следующего слова.
  33. Найти наибольшее число цифр в строке, идущих подряд.
  34. Определить частоту повторяемости слов в тексте.
  35. Прочитать текст Java-программы и записать в другой файл в обратном порядке символы каждой строки.
  36. Ввести строки из файла, записать в стек. Вывести строки в файл в обратном порядке.
  37. Ввести число, занести его цифры в стек. Вывести в число, у которого цифры идут в обратном порядке.
  38. Найти в стеке индексный массив для быстрого доступа к записям в бинарном файле.
  39. Определить класс Set на основе множества целых чисел, n = размер. Создать методы для определения пересечения и объединения множеств.
  40. Программа получает N параметров вызова (аргументы командной строки). Эти параметры – элементы вектора. Строится массив типа double, а на базе этого массива – объект класса DoubleVector. Далее программа выводит в консоль значения элементов вектора в виде: Вектор: 2.3 5.0 7.3.
  41. Списки (стеки) I(1..N) и U(1..N) содержат результаты N измерений тока и напряжения на неизвестном сопротивлении R. Найти приближённое число R методом наименьших квадратов.
  42. Выполнить попарное суммирование произвольного конечного ряда чисел следующим образом: на первом этапе суммируются попарно рядом стоящие числа, на втором этапе суммируются результаты первого этапа и т.д. до тех пор, пока не останется одно число.
  43. Сложить два многочлена заданной степени, если коэффициенты многочленов хранятся в объекте HashMap.
  44. Умножить два многочлена заданной степени, если коэффициенты многочленов хранятся в списках.
  45. Не используя вспомогательных объектов, переставить отрицательные элементы данного списка в конец, а положитель­ные - в начало этого списка.
  46. Во входном файле хранятся наименования некоторых объектов. Построить список C1, элементы которого содержат наименова­ния и шифры данных объектов, причем элементы списка должны быть упорядочены по возрастанию шифров. Затем "сжать" список C1, удаляя дублирующие наименования объектов.
  47. Во входном файле расположены два набора положительных чисел; между наборами стоит отрицательное число. Построить два списка C1 и С2, элементы которых содержат соответственно числа 1-го и 2-го набора таким образом, чтобы внутри одного списка числа были упорядочены по возрастанию. Затем объединить списки C1 и С2 в один упорядоченный список, изменяя только значения полей ссылочного типа.
  48. Выбрать три разные точки заданного на плоскости множества точек, составляющие треугольник наибольшего периметра.
  49. Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна.
  50. Выпуклый многоугольник задан на плоскости перечислением координат вершин в порядке обхода его границы. Определить пло­щадь многоугольника.
  51. Из множества точек на плоскости, заданных координатами, выб­рать точки, наиболее и наименее удаленные от прямой Ax+By+C=0.
  52. Ввести строки из файла, записать в стек. Вывести строки в файл в обратном порядке.
  53. Ввести число, занести его цифры в стек. Вывести в число, у которого цифры идут в обратном порядке.
  54. Найти в стеке индексный массив для быстрого доступа к записям в бинарном файле.
  55. Создать стек из номеров записи. Организовать прямой доступ к элементам записи.
  56. Организовать вычисления в виде стека.
  57. Занести изображения в стек, затем просмотреть.
  58. Задать два стека, поменять информацию местами.
  59. Сложить два многочлена заданной степени, если коэффициенты многочленов хранятся в объекте HashMap.
  60. Умножить два многочлена заданной степени, если коэффициенты многочленов хранятся в списках.

Лабораторная работа №2 Разработка визуального приложения.

Данная лабораторная работа посвящена построению приложений с использованием графического интерфейса библиотек awt и swing. Все задачи предполагают решение подзадач управления событиями и\или сложной динамикой отображения и требуют построения графического приложения.  В сети Интернет (помимо ссылок, указанных в прошлой лабораторной работе) рекомендуется также:

http://www.ibm.com/developerworks/ru/edu/j-dw-java-intswing-i.html

http://www.mexmat.sgu.ru/sites/chairs/prinf/materials/java/lesson8.htm

http://www.uic.rsu.ru/doc/programming/java/TIJ2e.ru/Chapter13.html

Графические инструменты в языке Java реализованы с помощью двух пакетов:

– AWT(для доступа загружается пакет java.awt)содержит набор классов, позволяющих выполнять графические операции и создавать элементы управления.

– Swing (для доступа загружается пакет import.javax.swing) содержит новые классы, в основном аналогичные AWT. К именам этих классов добавляется J(JButton, JLabel и т. д.).

Работа с окнами и графикой в системе Java осуществляется в апплетах и графических приложениях. Апплеты – это небольшие программы, встраиваемые в веб-документ и использующие для своей визуализации средства веб-броузера. Графические приложения сами отвечают за свою прорисовку. Апплеты используют окна, производные от класса Panel, графические приложения используют окна, производные от класса Frame, порожденного от классаWindow.

Иерархия классов применяемых для построения визуальных приложений приведена на рисунке 1.

Рис.2. Иерархия классов основных графических компонент.

СуперклассComponent является абстрактным классом, инкапсулирующим все атрибуты визуального компонента.Порожденный от него подкласс Container содержит методы, которые позволяют вкладывать в него другие компоненты (объекты) и отвечает за размещение любых компонентов, которые он содержит. Этот класс порождает подклассы Panel и Window.

Класс Panelиспользуется апплетом, графический вывод которого рисуется на поверхности объектаPanel-окна, не содержащего области заголовка, строки меню и обрамления.

Графические приложения используют классWindow (окно верхнего уровня), который сам непосредственно для вывода не используется. Для этого применяется его подкласс Frame. С помощью объекта типа Frame создается стандартное окно со строкой заголовка, меню, размерами.

Еще один используемый для вывода класс Canvasне является подклассомContainer, этопустое окно, в котором можно рисовать.

В настоящее время при использовании управляющих компонентов в апплетах принято использовать интерфейсные классы, в которых компонент на экране создается средствами Java и в минимальной степени зависит от платформы и оборудования. Такого рода классы компоненты были объединены в библиотеку под названием Swing.

import javax.swing.*;

import java.awt.*;

public class MyJApplet extends JApplet {

   JLabel lbl= new JLabel("Swing-applet!");;

public void init() {

Container c = getContentPane();

  c.add(lbl);

}

}

Рис.3. Простой аплет

В этой программе производится помещение текстовой метки JLabel на форму в апплете. Конструктор класса JLabel принимает объект String и использует его значение для создания метки. Автоматически вызываемый при загрузке апплета метод init() обычно отвечает за инициализацию полей и размещение компонента на форму. Для этого вызывается метод add()класса Container,который помещает компонент в контейнер. Метод add() сразу не вызывается, как в библиотеке AWT. Пакет Swing требует, чтобы все компоненты добавлялись в "панель содержания" формы ContentPane, так что требуется сначала вызывать метод getContentPane()классаJAppletдля создания ссылки на объект, как часть процесса add().

import java.awt.*;

import javax.swing.*;

public class InitDemo extends JApplet {

 private int i;

 private String msg = null;

 private Color c;

public void init() {

c = new Color(0, 0, 255);

this.setBackground(c);

this.setForeground(Color.white);

setFont(new java.awt.Font("Courier", 1, 14));

msg = " initialization";

i = 1;

}  

public void start() {

 int j = i * 25;

 if (j < 255){

 c = new Color (j, j, 255 - j); }

 setBackground(c);

 String str = Integer.toString(i);

 msg += " " + str;

 }

public void paint(Graphics g)

{ g.drawString(msg, 30, 30);}

public void stop() {

i++;

msg = "start() - stop()";

 }

}

Рис.4. Исследование методов аплета

При работе со шрифтами можно узнать, какие из них доступны на компьютере, и использовать их. Для получения этой информации применяется метод getAvailableFontFamilyNames()класса GraphicsEnvironment.Метод возвращает массив строк, содержащий имена доступных семейств шрифтов.

import javax.swing.*;

import java.awt.*;

public class FontDemo extends JApplet {

 private int i;

 private String msg = null;

 private String[] fonts;

public void init() {

GraphicsEnvironment ge =

GraphicsEnvironment.getLocalGraphicsEnvironment();

 fonts = ge.getAvailableFontFamilyNames();

}  

public void start() {

 int j = i;

if (j > fonts.length) i = 0;

else setFont(new Font(fonts[j], 1, 14));

   String str = Integer.toString(i);

   msg = fonts[j] + " " + str;

   i++;

 }

public void paint(Graphics g) {

g.drawString(msg, 30, 30);

 } 

}

Рис.5. Вывод строки.

Библиотека Swing, также как и библиотекаAWT, поддерживает набор графических методов класса Graphics. Вся графика рисуется относительно окна. Вывод в окно выполняется через графический контекст с помощью методов paint() или update().Класс Graphics, объект которого передается в контекст, определяет функции рисования.

Фреймы

В отличие от апплетов графические приложения, расширяющие класс java.awt.Frame или его подкласс jawax.swing.JFrame, не нуждаются в броузере. Для создания графического интерфейса приложения необходимо предоставить ему объект FrameилиJFrame, в который будут помещаться используемые приложением компоненты GUI.

Такое приложение запускается с помощью метода main() и само отвечает за свое отображение в окне. Фреймы активно используются для создания распределенных систем, эксплуатируемых в локальных и закрытых сетях.

import java.awt.*;

import java.awt.event.*;

public class WindowApp extends Frame{

String msg = "Window-Application";

int x1 = 30, y1 = 50, x2 = 200, y2 = 50;

public void paint(Graphics g){

g.drawString(msg, 30, 40); /*вывод строки с позиции х=30 y=40*/

g.drawLine(x1, y1, x2, y2);//вывод линии

  int x = 30, y = 200, width = 150, height = 100;

Color c = new Color(255, 100, 100);/* установка красного цвета */

g.setColor(c);

g.drawOval( x, y, width, height);//овал

g.drawArc (x + 100, y + 50, width - 50, height, 0, 360);//сектор

}

public static void main(String args[]){

WindowApp fr = new WindowApp();

fr.setSize(new Dimension(500, 400));/*устанавливается размер окна*/

fr.setTitle("awt-Application");//заголовок

fr.setVisible(true); //видимость

fr.repaint(); //перерисовка - вызов paint()

  }

}

Рис.6. создание объекта класса Frame

 

Метод main() вызывает методы установки параметров окна и метод перерисовки окна repaint(). Большое число методов класс Frame наследует по иерархии от классов Component,Container и Window. Класс JFrameиз библиотеки Swing является подклассом класса Frame.

В следующем апплете проверяется принадлежность точки нажатия "мыши" прямоугольнику.

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MyRect extends JApplet implements MouseListener {

Rectangle a = new Rectangle(20, 20, 100, 60);

public void init() {

setBackground(Color.yellow);

//регистрация данного класса в качестве блока прослушивания

addMouseListener(this);

}

//реализация всех пяти методов интерфейса MouseListener

public void mouseClicked(MouseEvent me) {

int x = me.getX();

int y = me.getY();

if (a.inside(x,y))

System.out.println("клик в зеленом прямоугольнике");

else System.out.println("клик в желтом фоне");

}

//реализация следующих методов пустая

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {}

public void mouseReleased(MouseEvent e) {}

public void paint(Graphics g) {

g.setColor(Color.green);

g.fillRect(a.x, a.y, a.width, a.height);

}

}

Способ обработки событий в компонентах Swing - это интерфейс (графические компоненты) и реализация (код, который запускается при возникновении события). С одним компонентом может быть связано несколько событий. Каждое событие содержит сообщение, которое может быть обработано в разделе реализации.

 


Дата добавления: 2018-04-04; просмотров: 2707; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!