ПРИМЕРЫ ПРОГРАММ НА ЯЗЫКЕ Java

Содержание

Пример 1. Два варианта простейшай программы HeloWorld:
            а)выполнение из командной строки;
            б)апплет.

Пример 2. В одном файле несколько классов. Использования конструктора

Пример 3. Интерфейс

Пример 4. Потоки
            а) Геометрические фигуры
            б) Синус-фигуры. Потоки и класс Math
            в) Гонки. Интерфейс Runnable
            г) Демонстрация задания 8
            д) Демонстрация задания 9
            е) Коды цветов.

Пример 5. События

            a) События mouseDown, mouseMove, Event. Рисование произвольной линии
            б)Вывод координат мышки

Пример 6. Кнопки

Пример 7. Экранные формы

Пример 8. Графики тригонометрических функций

Пример 9. Прередача параметров в апплет. Тег <PARAM>

Пример 10. Получение данных от программы CGI

Пример 11. Загрузка файлов из каталогов веб-сервера

Пример 12. Коструктор и оператор return


Пример 1. Два варианта простейшай программы HeloWorld
     а)выполнение из командной строки
Текст программы (файл HelloWorld.java )
public class HelloWorld 
{ public static void main(String[] args) 
  {  System.out.println("Hello World!");
  }
}
Cоздание байт-кода
(файл HelloWorld.java находится в каталоге C:\javaPrim\)
Сделать каталог с программой текущим:
C:\>cd javaPrim
Странслировать программу
C:\javaPrim>"C:\Program Files\Java\jdk1.7.0_06\bin\javac.exe" HelloWorld.java
Результат трансляции - файл HelloWorld.class

Выполнить программу

C:\javaPrim>java.exe HelloWorld
Напечатается
Hello World!

     б)апплет
Апплет встроен в HTML-страницу HelloJava.html на сайте hello (в каталоге ../hello/www).
Текст страницы

<HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Апплет HelloWorld</title></head>
<BODY vLink=#000066 bgColor=#fafcfe leftMargin=0 topMargin=0>
<H2 style="color:770055;font-size:20pt;font-family:'times new roman';text-align:center">
Пример использования Java</h2>
<APPLET CODE="HelloWorldApp.class" WIDTH="200" HEIGHT="140" ALIGN="left" ALT="Апплет">
Если вы видите этот текст, значит ваш браузер не поддерживает Java.</APPLET>
</body></html>
Текст программы (апплета) HelloWorldApp.
import java.applet.Applet;
import java.awt.*;

// Applet code for the "Hello, world!" example.
// This should be saved in a file named as "HelloWorldApp.java".
public class HelloWorldApp extends Applet
{ // This method is mandatory(обязательный), but can be empty (i.e., have no actual code).
  public void init() { }

  // This method is mandatory, but can be empty (i.e., have no actual code).
  public void stop() { }

  // Print a message on the screen (x=20, y=10).
  public void paint(Graphics g) 
  { g.drawString(" Маша! Здравствуй! Hello, world! ", 20,10);
    // Draws a circle on the screen (x=40, y=30).
    g.drawArc(40,30,50,50,0,360);
  }
}
/*
Abstract Window Toolkit (AWT) — это исходная платформо-независимая оконная 
библиотека графического интерфейса (Widget toolkit) языка Java. 
Форма методов drawArc и fillArc следующая:
drawArc(int x, int у, int width, int height, int startAngle, int sweepAngle)
Эти методы вычерчивают (fillArc заполняет) дугу, ограниченную прямоугольником 
(x,y,width, height), начинающуюся с угла startAngle и имеющую угловой размер
 sweepAngle. Ноль градусов соответствует положению часовой стрелки на 3 часа,
 угол отсчитывается против часовой стрелки (например, 90 градусов соответствуют 
12 часам, 180 — 9 часам, и так далее).
*/
В результате выполнения апплета в окно браузера выведется текст
Маша! Здравствуй! Hello, world!
и окружность диаметром 50 пикселей
Просмотр примера 1б в браузере

Пример 2. Программы c двумя классами. Использование конструктором
Текст программы без конструктора (файл pr2.java в каталоге javaPrim)

class Point 
{ int x, y;
  void init(int x, int y) 
  {  this.x = x;
     this.y = y; 
  }
}
class TwoPointsInit 
{  public static void main(String args[]) 
  {  Point p1 = new Point();
     Point p2 = new Point();		
     p1.init(10,20);		
     p2.init(42,99);		
     System.out.println("x = " + p1.x + " y = " + p1.y)
     System.out.println("x = " + p2.x + " y = " + p2.y);
  } 
}
В результате компиляции этой программы будут созданы в каталоге javaPrim файлы Point.class и TwoPointsInit.class
Точка входа в программу - метод main
Команда запуска программы
C:\javaPrim>java TwoPointsInit

КОНСТРУКТОРЫ
В объектно-ориентированном программировании конструктор класса (от англ. constructor, иногда сокращают ctor) — специальный блок инструкций, вызываемый при создании объекта. Конструктор схож с методом, но отличается от метода тем, что не имеет явным образом определённого типа возвращаемых данных, не наследуется, и обычно имеет различные правила для рассматриваемых модификаторов. Конструкторы часто выделяются наличием одинакового имени с именем класса, в котором объявляется. Их задача — инициализировать члены объекта и определить инвариант класса, сообщив в случае некорректности инварианта. Корректно написанный конструктор оставит объект в «правильном» состоянии. Неизменяемые объекты тоже должны быть проинициализированы конструктором.

Заменим метод init из предыдущей программы конструктором.

class PointK 
{ int x, y;
   //Конструкторы часто выделяются наличием одинакового имени с именем класса
   //Здесь коструктор объявляет переменные (атрибуты) класса PointK
  PointK(int x, int y) 
  {  this.x = x;
     this.y = y;
  }
}
class TwoPointsInitK 
{  public static void main(String args[]) 
   {//Создание объекта класса PointK и присвоение значений переменным созданного объекта 
    //вместо 
   //PointK p = new PointK();
   //p.init(10,20);
    PointK p1 = new PointK(10,20);		
    PointK p2 = new PointK(42,99);		
    System.out.println("x = " + p1.x + " y = " + p1.y);		
    System.out.println("x = " + p2.x + " y = " + p2.y);	
   } 
}
Результат выполнения обеих программ:
x = 10 y = 20
x = 42 y = 99

Пример 3. Интерфейс
Интерфейс в Java играет ту же роль, что и блоки объявлений
переменных и функций в C
Интерфейс отличается от класса тем, что в нем можно объявить методы, но нельзя
реализовать их. Они реализуются в наследуемых классах.
Рассмотрим две программы. Вторая программа отличается от первой только тем, что в
ней используется интерфейс.
Текст программы без интерфейса

class Shoe  
{   public String getName(int id)  
    {   if(id==1)  return("Shoes");
        if(id==2)  return("Girl's shoes");
        if(id==3)  return("Boots");
        return  ("Unknow");
    }
}
class Bread
{   public String getName(int id)
    {   if(id==1)  return("White");
        if(id==2)  return("Black");
        if(id==3)  return("Loaf");
        return  ("Unknow");
    }
 }

public  class Wares
{  public  static  void main(String[] args) 
   {    Shoe a;
        a=new Shoe();
       System.out.println(a.getName(1));
       System.out.println(a.getName(2));
       System.out.println(a.getName(3));
       System.out.println(a.getName(4));
       Bread b;
       b=new Bread();
       System.out.println(b.getName(1));
       System.out.println(b.getName(2));
       System.out.println(b.getName(3));
   }
}
В этой программе в классе Wares объекты Shoe и Bread хранятся в разных переменных. Интерфейс позволяет использовать для хранения объектов разных классов одну переменную.

Текст программы с интерфейсом

interface Ware
{   static final String origin="My corp";
    public String getName(int id);
}
 
class Shoe implements Ware
{    public String getName(int id) 
     {   if(id==1) return("Shoes");
         if(id==2) return("Girl's shoes");
         if(id==3) return("Boots");
         return ("Unknow");
     }
}
 
class Bread implements Ware 
{   public String getName(int id) 
    {  if(id==1) return("White");
       if(id==2) return("Black");
       if(id==3) return("Loaf");
       return ("Unknow");
    }
}
public class Proba
{  public static void main(String args[])
   {    Ware a; //Объявление переменной а типа интерфейс Ware
        a=new Shoe();
        System.out.println(a.getName(1));
        System.out.println(a.getName(2));
        System.out.println(a.getName(3));
        System.out.println(a.getName(4));
        a=new Bread();
        System.out.println(a.getName(1));
        System.out.println(a.getName(2));
        System.out.println(a.getName(3));
    }
}
Результат выполнения обеих программ:
Shoes
Girl's shoe
Boots
Unknow
White
Black
Loaf
Пример 4. ПОТОКИ

Пример 4a. Геометрические фигуры
Пример с сайта http://www.warayg.narod.ru/context/prog/Java/1/vol10/ch9.html .
См. также две предыдущие страницы ch7.html и ch8.html
В примере создается три потока. Первый поток рисует в окне аплета прямоугольники
случайного размера и цвета, второй - эллипсы, а третий управляет потоком рисования эллипсов.

import java.applet.*;
import java.awt.*;
public class Rectangles extends Applet
{   DrawRectangles m_DrawRectThread = null;
    DrawEllipse m_DrawEllipseThread = null;
    NotifyTask m_NotifyTaskThread = null;
    public String getAppletInfo()
    {  return "Name: Rectangles";
    }
    public void paint(Graphics g)
    {   Dimension dimAppWndDimension = getSize();
        g.setColor(Color.yellow);
        g.fillRect(0, 0, dimAppWndDimension.width  - 1,dimAppWndDimension.height - 1);
        g.setColor(Color.black);
        g.drawRect(0, 0,dimAppWndDimension.width  - 1,dimAppWndDimension.height - 1);
        
    }
    public void start()
    { if (m_DrawRectThread == null)
      {   m_DrawRectThread = new DrawRectangles(this);
          m_DrawRectThread.start();
      }
      if(m_DrawEllipseThread == null)
      {  m_DrawEllipseThread = new DrawEllipse(this);
         m_DrawEllipseThread.start();
      }
      if (m_NotifyTaskThread == null)
      {   m_NotifyTaskThread =new NotifyTask(m_DrawEllipseThread);
        m_NotifyTaskThread.start();
      }
    }
    public void stop()
    { if (m_DrawRectThread != null)
      { m_DrawRectThread.stop();
        m_DrawRectThread = null;
      }
      if (m_DrawEllipseThread == null)
      { m_DrawEllipseThread.stop();
        m_DrawEllipseThread = null;
      }    
      if (m_NotifyTaskThread != null)
      {
        m_NotifyTaskThread.stop();
        m_NotifyTaskThread = null;
      }
    }
}

class DrawRectangles extends Thread
{ Graphics g;
  Dimension dimAppWndDimension;
  public DrawRectangles(Applet Appl)
  { g = Appl.getGraphics();
    dimAppWndDimension = Appl.getSize();
  }
  public void run()
  { while (true)
    { int x, y, width, height;
      int rColor, gColor, bColor;      
      x = (int)(dimAppWndDimension.width* Math.random());
      y = (int)(dimAppWndDimension.height* Math.random());
      width  = (int)(dimAppWndDimension.width * Math.random()) / 2;
      height = (int)(dimAppWndDimension.height* Math.random()) / 2;      
      rColor = (int)(255 * Math.random());
      gColor = (int)(255 * Math.random());
      bColor = (int)(255 * Math.random());
      g.setColor(new Color(rColor,gColor, bColor));
      g.fillRect(x, y, width, height);
      try
      {	Thread.sleep(50);
      }
      catch (InterruptedException e)
      {	stop();
      }
    }
  }
}

class DrawEllipse extends Thread
{ Graphics g;
  Dimension dimAppWndDimension;
  public DrawEllipse(Applet Appl)
  { g = Appl.getGraphics();
    dimAppWndDimension = Appl.getSize();
  }
  public synchronized void run()
  { while (true)
    { int x, y, width, height;
      int rColor, gColor, bColor;
      x =      (int)(dimAppWndDimension.width* Math.random());
      y =      (int)(dimAppWndDimension.height * Math.random());
      width  = (int)(dimAppWndDimension.width * Math.random()) / 2;
      height = (int)(dimAppWndDimension.height * Math.random()) / 2;
      rColor = (int)(255 * Math.random());
      gColor = (int)(255 * Math.random());
      bColor = (int)(255 * Math.random());
      g.setColor(new Color(rColor,gColor, bColor));
      g.fillOval(x, y, width, height);
      try
      {	this.wait();
      }
      catch (InterruptedException e)
      {
      }
    }
  }
}

class NotifyTask extends Thread
{  Thread STask;
  public NotifyTask(Thread SynchroTask)
  {    STask = SynchroTask;
  }
  public void run()
  { while (true)
    { try
      {	Thread.sleep(30);
      }
      catch (InterruptedException e)
      {
      }
      synchronized(STask)
      {  STask.notify();
      }
    }
  }
}

Просмотр примера 4a в браузере

Пример 4в. Синус-фигуры. Класс Math

//Пример с сайта http://frolov-lib.ru/programming/javasamples/vol1/vol1_11/index.html
import java.applet.*;
import java.awt.*;
public class Sinus extends Applet
{  DrawSinus m_DrawSinusThread = null;//Ссылка на поток класса DrawSinus,
                                      // созданный на базе класса Threa
  public String getAppletInfo()
  {    return "Name: Rectangles";
  }
 public void paint(Graphics g)
  { Dimension dimAppWndDimension = size();
    g.setColor(Color.yellow);
    //В окне рисуется приямоугольник жёлтого цвета размером почти во всё окно 
    g.fillRect(0, 0, dimAppWndDimension.width  - 1,dimAppWndDimension.height - 1);
    g.setColor(Color.black);
   //Рисуется чёрная рамка вокруг прямоугольника
    g.drawRect(0, 0, dimAppWndDimension.width  - 1,dimAppWndDimension.height - 1);
  }
  //Запускается поток DrawSinus
 public void start()
  { if (m_DrawSinusThread == null)
    { m_DrawSinusThread = new DrawSinus(this);
      m_DrawSinusThread.start();
    }
  }
  public void stop()
  { if (m_DrawSinusThread != null)
    { m_DrawSinusThread.stop();
      m_DrawSinusThread = null;
    }
  }
}
// *****************
//Класс, управляющий потоком 
class DrawSinus extends Thread
{ Graphics g;
  Dimension dimAppWndDimension;
//Конструктор 
  public DrawSinus(Applet Appl)
  { g = Appl.getGraphics();
    dimAppWndDimension = Appl.size();
  }
//Управление потоком. Поток "просыпается" каждые 300 мс
  public void run()
  { // int k=0;
     // while (k<10)
    while (true)
    { //Создание массивов координат точек
      //k++;
          int nPoints = dimAppWndDimension.width;
      int[] xPoints = new int[nPoints];
      int[] yPoints = new int[nPoints];
      int rColor, gColor, bColor;
      int maxAngle = (int)((30 * Math.PI) *Math.random());
      int Amplitude = (int)(dimAppWndDimension.height *Math.random());
	
      int Offset = 
	(int)(dimAppWndDimension.height *Math.random());
	
      double deltaFi = (Math.PI / 2) *Math.random();
      
      for(int i=0; i < nPoints; i++)
      { xPoints[i] = i;
        yPoints[i] = Offset + (int)(Amplitude * 
         Math.sin(deltaFi +  (double)((maxAngle * i)) / nPoints)); 
      }
      rColor = (int)(255 * Math.random());
      gColor = (int)(255 * Math.random());
      bColor = (int)(255 * Math.random());
      g.setColor(new Color( rColor, gColor, bColor));
      g.fillPolygon(xPoints, yPoints, nPoints);
      try
      {	Thread.sleep(300);
      }
      catch (InterruptedException e)
      {  stop();
      }
    }
  }
}
Просмотр примера 4b в браузере

Пример 4в. Гонки Поток реализуется классом Racer, объявленным от интерфейса Runnable

/*Слегка изменённый пример с сайта 
 http://easyprog.ru/index.php?option=com_content&task=view&id=666&Itemid=29
В оригинале происходят три одинаковых процесса: по трём горизонтальным осям
синхронно движутся три вытянутых эллипса ("гонщики").
В изменённом примере  гонщики движутся с разными скоростями.
Пример состоит из двух классов: Rase и Raser.
  Метод run() класса Racer задаёт темп каждого гонщика и с помощью repaint() -
перерисовку всего изображения. Метод paint() рисует ось и эллипс-гонщика для
каждого из трёх процессов.
  Вход в пограмму происходит с помощью методов init()и start()класса Rase 
 В методе init() создаются два массива:
   - массив theRacers из трёх объектов (гонщиков);
   - массив theThreads из трёх потоков гонщиков
 Метод  run() класса Race служит для отслеживания всех потоков и удаления их 
 после завершения
*/
import java.awt.Graphics;
import java.awt.GridLayout;
//Класс Thtead принадлежит пакету lang (java.lang.Thread)

 public  class Race  extends java.applet.Applet  implements Runnable  {
 Racer theRacers[];  //массив гонщиков (объектов)
 static  int count=3;  //количество гонщиков
 Thread theThreads[];  //массив потоков
 Thread thisThread;  //основной поток (поток, который управляет другими потоками)
 static  boolean inApplet=true;
 int numberOfTheradAtStart;  //в конце программы при помощи этой переменной 
                            //определяем, все ли потоки прекратили существование
      public  void init()  {
         numberOfTheradAtStart=Thread.activeCount();
        // System.out.println("num="+numberOfTheradAtStart);
          //определеяем расположение гонщиков в окне,
          //они будут добавлятся один за друим
         setLayout(new GridLayout(count,1));
          //создаем массивы гонщиков и потоков
         theRacers=new Racer[count];
         theThreads=new Thread[count];       
          //в цикле создаем каждый элемент массивов
         for(int i=0;i<count;i++)  
         {  theRacers[i]=new Racer("Racer "+i);
            theRacers[i].resize(size().width,size().height/count);
            add(theRacers[i]);
            theThreads[i]=new Thread(theRacers[i]);
         }
      }   
      //этой процедурой мы запускаем все потоки
      public  void start() 
      {  for(int i=0;i<count;i++) theThreads[i].start();
         thisThread=new Thread(this);//Поток этого класса (Rase)
        // System.out.println(numberOfTheradAtStart+" count="+Thread.activeCount());
      }
      public  void stop()  
      { thisThread.stop();
      } 
     
      public  void run() 
      {  // цикл, пока все гонщики не закончат гонку
          while(Thread.activeCount()>numberOfTheradAtStart+2)  
          {   try 
              {   thisThread.sleep(100);
              }
              catch  (InterruptedException e)  
              {   System.out.println("thisTread was interruped");
              }
          }
          if(inApplet)  
          {  stop();
             destroy();
          } 
          else System.exit(0);
     }
    
 /*    public  static  void main(String argv[])  
     {    inApplet=false;
         Race theRace=new Race();
          theRace.init();
         theRace.start();
      }
  */
 }

import java.awt.Graphics;
 import java.awt.Color;
//класс поточный, поэтому он должен наследовать интерфейс Runnable

 public  class Racer  extends java.awt.Canvas  implements Runnable  {
      int position=0;
     String name;
      int stepsCount=600;
      boolean isFinished;   //флаг, что гонщик пришел на финиш 
      //конструктор класса
      //экземпляр класса создаем по имени
      public Racer  (String aName) 
      {   name=aName;
      }
      public  synchronized  void paint(Graphics g)  
      {  //рисуем дорожку
          int x;
          String str;
          str=name; //имя текущего потока
       //   System.out.println(str);
         g.setColor(Color.black);
         g.drawLine(0,size().height/2,size().width-170,size().height/2);
         //рисуем гонщика в виде желтого овала
         if(isFinished) g.setColor(Color.green);  else g.setColor(Color.yellow);
         if(str.equals("Racer 1"))
         {   g.setColor(Color.red);
             x=(int)(15*Math.random());
             if(position>stepsCount-15)x=0;
             g.fillOval(x+position*(size().width-170)/stepsCount,0,15,size().height);
         } 
         else
         g.fillOval(position*(size().width-170)/stepsCount,0,15,size().height);
         //если гонщик пришел на финиш, выдадим об этом сообщение
         if(isFinished)  
         {   g.setColor(Color.red);
             g.drawString("Racer '"+str+"'* is finished",size().width-150,size().height);
         }
         g.setColor(Color.red);
         g.drawString(""+position,0,size().height);
      }
     //
      public  void run() 
      {   isFinished=false;
          //цикл до конца гонки
          while(position<stepsCount) 
          {  position++;
             repaint();
              //останавливаем поток, чтобы началось отображение
             try  
             { String str;
               str=name;
               //System.out.println(str);
               if(!str.equals("Racer 2"))Thread.currentThread().sleep(15);
               else Thread.currentThread().sleep(20);
              // System.out.println(str);
              //System.out.println("Текущий поток - "+Thread.currentThread().getName()+" name="+name);
              }  
              catch  (Exception e)  
              {System.out.println("Exception on sleep");}
          }
         isFinished=true;
         repaint();
      }

 }
Для запуска программы браузером служит следующий html-документ:
<HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Апплет Racer</title></head>
<BODY vLink=#000066 bgColor=#fafcfe leftMargin=0 topMargin=0>
<H2 style="color:770055;font-size:20pt;font-family:'times new roman';text-align:center">
Пример использования Java  Потоки</h2>
<APPLET CODE="Race.class" WIDTH="200" HEIGHT="140" ALIGN="left" ALT="Апплет">
Если вы видите этот текст, значит ваш браузер не поддерживает Java.</APPLET>
</body></html>
Просмотр примера 4в в браузере

Пример 4е. Коды цветов в модели RGB
Метод paint переопределён в классе Multy2, а перерисовка (repaint)
производится из метода run() класса ColorThread. Для получения доступа к
методу repaint() в конструкторе класса ColorThread создаётся ссылка a = (Multy2)appl

//Пример с сайта http://frolov-lib.ru/programming/javasamples/vol6/vol6_2/index.html
import java.applet.Applet;
import java.awt.*;

public class Multy2 extends Applet
{  Thread thrColor = null;
  Thread thrSize = null;
  int rColor, gColor, bColor;
  int nFontSize = 12;
  // ============================================
  public void start()
  { if(thrColor == null)
    { thrColor = new SizeThread(this);
      thrColor.start();
    }
    if(thrSize == null)
    { thrSize = new ColorThread(this);
      thrSize.start();
    }
  }
  // ============================================
  public void stop()
  { if(thrColor != null)
    { thrColor.stop();
      thrColor = null;
    }
    if(thrSize != null)
    { thrSize.stop();
      thrSize = null;
    }
  }
  // ============================================
  public void paint(Graphics g)
  { String s;
    g.setColor(new Color(rColor, gColor, bColor));
    s = "(R, G, B) = (" + rColor + ", " + 
    gColor + ", " + bColor + ")";
    g.setFont(new Font("Courier",Font.PLAIN, nFontSize));   
    g.drawString(s, 10, 30);    
  }
  // ============================================
  public String getAppletInfo()
  {    return "Name: Multi2";
  }
}
// ============================================
//  ************* Class ColorThread **********
// ============================================
class ColorThread extends Thread
{ Multy2 a = null;
//Поле c именем a хранит ссылку на аплет, то есть на объект 
//главного класса аплета Multi2
//Это поле инициализируется конструктором класса ColorThread:  
  public ColorThread(Applet appl)
  {   a = (Multy2)appl;
  }
  public void run()
  { while(true)
    { a.rColor = (int)(255 * Math.random());
      a.gColor = (int)(255 * Math.random());
      a.bColor = (int)(255 * Math.random());
      a.repaint();
      try
      {	Thread.sleep(1000);
      }
      catch(InterruptedException ie)
      {  stop();
      }
    }
  }
}
// ============================================
// ************* Class SizeThread *************
// ============================================
class SizeThread extends Thread
{  Multy2 a = null;
  public SizeThread(Applet appl)
  {  a = (Multy2)appl;
  }
  // ============================================
  public void run()
  { boolean incr = true;
    while(true)
    { if(incr)
      { if(a.nFontSize < 30)
        a.nFontSize++;
        else
        incr = false;
      }
      else
      {   if(a.nFontSize > 12)
          a.nFontSize--;
          else
          incr = true;
      }
      a.repaint();
      try
      {	Thread.sleep(100);
      }
      catch(InterruptedException ie)
      {	stop();
      }	
    }
  }
}
Просмотр примера 4е в браузере

Пример 5. СОБЫТИЯ
a)События mouseDown, mouseMove, Event. Рисование произвольной линии

Для запуска программы браузером служит следующий html-документ:

<HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Апплет DrawExample</title></head>
<BODY vLink=#000066 bgColor=#fafcfe leftMargin=0 topMargin=0>
<H2 style="color:770055;font-size:20pt;font-family:'times new roman';text-align:center">
Рисование линий</h2>
<APPLET CODE="DrawExample.class" WIDTH="600" HEIGHT="200" ALIGN="left" ALT="Апплет">
Если вы видите этот текст, значит ваш браузер не поддерживает Java.</APPLET>
</body></html>
Текст программы
/*Команда для трансляции
C:\WebServers\home\prim.loc\www>"C:\Program Files\Java\jdk1.7.0_06\bin\javac" -Xlint:deprecation  DrawExample.java
Ключ 
Xlint:deprecation
нужен для использования устарелых версий методов
mouseDown(Event evt,int x, int y)
и
mouseMove (Event evt,int x, int y)
*/
import java.awt.*;
import java.applet.*;
public class DrawExample extends Applet 
{   Point startPoint;
    Point points[];
    int numPoints;
    boolean drawing;
   
    public void init()  
    {   startPoint= new Point(0,0);
        points=new Point[1000];
        drawing=false;
    }
   
    public void paint(Graphics g) 
    {   int oldX=startPoint.x;
        int oldY=startPoint.y;
        for(int i=0; i < numPoints; ++i) 
        {   g.drawLine(oldX, oldY, points[i].x,points[i].y);
            oldX=points[i].x;
            oldY=points[i].y;
        }
    }
   
    public boolean mouseDown(Event evt,int x, int y) 
    {   if(!drawing) 
        {   startPoint.x=x;
            startPoint.y=y;
        }
        drawing=!drawing;
        return true;
    }
   
    public boolean mouseMove (Event evt,int x, int y) 
    {   if((drawing)&&(numPoints<1000)) 
        {   points[numPoints]=new Point(x,y);
            ++numPoints;
            repaint();
        }
        return true;
    }
}
Просмотр примера 5 a) в браузере

Пример 5 б). Вывод координат мышки
Пример с сайта http://frolov-lib.ru/programming/javasamples/vol2/vol2_9/index.html

import java.applet.Applet;
import java.awt.*;

public class EventProc extends Applet
{  Event ev = null;
  
  public void init()
  { setBackground(Color.yellow);
    setForeground(Color.black);
  }

  public String getAppletInfo()
  { return "Name: EventProc";
  }

  public void paint(Graphics g)
  { if(ev != null)
    {   g.drawString("[" + ev.x + "," +
        ev.y + "]", ev.x, ev.y);
    }
  }
  
  public boolean mouseDown( Event evt, int x, int y)
  { ev = evt;
    repaint();
    return true;
  }
}
Просмотр примера 5 б) в браузере

Пример 6. Кнопки
http://frolov-lib.ru/programming/javasamples/vol3/vol3_1/index.html - описание класса Button

Для запуска программы браузером служит следующий html-документ:

<HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Апплет InternetApplet</title></head>
<BODY vLink=#000066 bgColor=#fafcfe leftMargin=0 topMargin=0>
<H2 style="color:770055;font-size:20pt;font-family:'times new roman';text-align:center">
КНОПКИ</h2>
<APPLET CODE="InternetApplet.class" WIDTH="600" HEIGHT="200" ALIGN="left" ALT="Апплет">
Если вы видите этот текст, значит ваш браузер не поддерживает Java.</APPLET>
</body></html>
Текст программы
import java.awt.*;
import java.applet.*;
public class InternetApplet extends Applet 
{    String str;
     public void init() 
     {  Font font=new Font("TimesRoman",Font.PLAIN,24);
        setFont(font);
        Button button=new Button("Первая кнопка");
        add(button);
        button=new Button("Вторая кнопка");
        add(button);
    }
    public void paint(Graphics g) 
    {  g.drawString(str,60,130);
    }
    public boolean action(Event evt, Object arg) 
    {  if(arg=="Первая кнопка")
            str="Вы нажали на первую кнопку";
        else if(arg=="Вторая кнопка")
            str="Вы нажали на вторую кнопку";
        else
            str="";
        repaint();
        return true;
    }
}                  
Просмотр примера 6 в браузере

Пример 7. Экранные формы
Для запуска программы браузером служит следующий html-документ:

<HTML><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<TITLE>Апплет HelloWorld</title></head>
<BODY vLink=#000066 bgColor=#fafcfe leftMargin=0 topMargin=0>
<H2 style="color:770055;font-size:20pt;font-family:'times new roman';text-align:center">
Пример использования Java для создания экранных форм</h2>
<TABLE align=center><TR><TD>
<applet
  name="FormDemo"
  code="FormDemo" 
  width="500"
  height="300"
  align="Top"
  alt="If you had a java-enabled browser,
 you would see an applet here.">
  <hr>If your browser 
recognized the applet tag,
you would see an applet here.<hr>
</applet>
</table>
</body></html>
Тект программы
import java.applet.Applet;
import java.awt.*;
import java.util.*;
public class FormDemo extends Applet 
{  Button btReady;
  Checkbox chbox1;
  Checkbox chbox2;  
  CheckboxGroup grRadio;
  Checkbox rd1;
  Checkbox rd2;
  Checkbox rd3;
  Choice ch1;

  Label lbFirstName;
  Label lbSecondName;  

  TextField txtFirstName;
  TextField txtSecondName;
  TextArea  txta; 

  public void init() 
  { chbox1 = new Checkbox("First");
    add(chbox1);
    lbFirstName =
     new Label("Enter your first name:");
    add(lbFirstName);    
    txtFirstName = new TextField(" ", 30);
    add(txtFirstName);    
    chbox2 = new Checkbox("Second");
    add(chbox2);
    lbSecondName = 
      new Label("Enter your second name:");
    add(lbSecondName);
    txtSecondName = new TextField(" ", 30);
    add(txtSecondName);
    grRadio = new CheckboxGroup();
    rd1 = new Checkbox("Mode 1", 
      grRadio, true);
    rd2 = new Checkbox("Mode 2",
      grRadio, false);
    rd3 = new Checkbox("Mode 3",
      grRadio, false);    
    add(rd1);
    add(rd2);
    add(rd3);
    ch1 = new Choice();
    ch1.addItem("White");
    ch1.addItem("Green");
    ch1.addItem("Yellow");    
    add(ch1);    
    setBackground(Color.yellow);
    lbFirstName.setBackground(Color.yellow);
    lbSecondName.setBackground(Color.yellow);
    rd1.setBackground(Color.yellow);
    rd2.setBackground(Color.yellow);
    rd3.setBackground(Color.yellow);    
    chbox1.setBackground(Color.yellow);
    chbox2.setBackground(Color.yellow);    
    txta = new TextArea("", 6, 45);
    add(txta);
    txta.setBackground(Color.white);    
    btReady = new Button("Ready");
    add(btReady);
  }

  public String getAppletInfo()
  {    return "Name: FormDemo";
  }
  public void paint(Graphics g)
  {   Dimension dimAppWndDimension = 
      getSize();
      g.setColor(Color.black);
      g.drawRect(0, 0, 
      dimAppWndDimension.width  - 1, 
      dimAppWndDimension.height - 1);
  }

  public boolean action(Event evt,Object obj)
  { Button btn;
    String str1, str2;    
    if(evt.target instanceof Button)
    { if(evt.target.equals(btReady))
      {   btn = (Button)evt.target;
          str1 = txtFirstName.getText();
          str2 = txtSecondName.getText();	
          if(chbox1.getState())
          txta.append(str1);
          if(chbox2.getState())  txta.append(str2);
          if(rd1.getState())     txta.append("\nMode 1\n");	
          if(rd2.getState())     txta.append("\nMode 2\n");	
          if(rd3.getState())     txta.append("\nMode 3\n");
      }
      else
      {   return false;}
      return true;
    }
    else if(evt.target instanceof Choice)
    {    if(evt.target.equals(ch1))
         {  if(ch1.getSelectedIndex() == 0) txta.setBackground(Color.white);
            if(ch1.getSelectedIndex() == 1) txta.setBackground(Color.green);
            if(ch1.getSelectedIndex() == 2) txta.setBackground(Color.yellow);
         }
    }
    return false;
  }
}
Просмотр примера 7 в браузере

Пример 8. Графики тригонометрических функций
Сценарий. В поле со списком пользователь выбирает функцию и амплитуду.
После нажатия клавиши Enter или выбора функции строится график.

В примере используются:

Текст апплета
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
// Пример из http://kek.ksu.ru/EOS/Java/gl3_4.html
public class functions extends Applet implements ItemListener, ActionListener
{  private int n=20; // пикселов в единице 			   		
   private String name=""; // название функции
        private String str1="new"; 
   private Choice tip=new Choice(); 
   private TextField size;
   Panel p1=new Panel(); // панель для элементов управления
   functions.myCanvas p2=new functions.myCanvas(); // панель для рисования
  
   @Override
   public void init()
   {  setLayout(new BorderLayout());
      p1.setLayout(new GridLayout(2,2));
      add("North",p1);	
      add("Center",p2);
      p1.add(new Label("Выбирайте функцию: "));		
      tip.addItem("Синус");
      tip.addItem("Косинус");		
      tip.addItem("Тангенс");				
      tip.addItemListener(this);
      p1.add(tip);		
      p1.add(new Label("Пикселов в единичном отрезке:"));
      size=new TextField(""+n,5); 
      p1.add(size); 
      size.addActionListener(this);
  }
  
    @Override
  public void itemStateChanged(ItemEvent e)
  {  if (e.getItemSelectable()==tip)
     {  name=(String)e.getItem();
        p2.repaint();	
     }
  }
  
  public void actionPerformed(ActionEvent e)
  {   if (e.getSource()==size)
      {   str1=size.getText();
          n=Integer.parseInt(size.getText()); 
          p2.repaint();
      }
  }
// Внутренний класс. Панель для рисования
 class myCanvas extends Canvas
    {  int M, // ширина панели
       N, // высота панели
       x, y, xold, yold;
       public void paint (Graphics g)
       {   M=getSize().width;
           N=getSize().height;
           setBackground(new Color(200,200,200));
           g.drawLine(M/2,0,M/2,N);	
           g.drawLine(0,N/2,M,N/2);		
           for (x=0; x<M; x++)
           {   if (name.equals("Синус"))
               {   y=(int)(N/2-Math.sin((double)(x-M/2)/n)*n);
               }
               else if (name.equals("Косинус"))
               {   y=(int)(N/2-Math.cos((double)(x-M/2)/n)*n);
               }
               else if (name.equals("Тангенс"))
               {   y=(int)(N/2-Math.tan((double)(x-M/2)/n)*n);
               }
               else return;
               if (x==0) { xold=x; yold=y; }
               g.drawLine(xold, yold, x, y); 
               xold=x; yold=y;			
           }
      }
    }//Конец внутреннего класса
}
Просмотр примера 8 в браузере

Пример 9. Прередача параметров в апплет. Тег <PARAM>

Пример с сайта http://www.megapolis.org/internet/web_manual/web4c.html
В примере из HTML-документа в апплет передаются параметры. В апплете эти параметры печатаются.
Текст HTML-документа

<HTML>
<HEAD>
   <TITLE>Тег PARAM>/TITLE>
   <META http-equiv="Content_Type" content="text/html;charset=windows-1251">
</HEAD>
<APPLET code="MyParametes.class" width=500 height=300>
  <param name=NameBox   value=Parameter>
  <param name=WidthBox  value=555>
  <param name=AreaBox   value=12345678>
  <param name=floatBox  value=3.141592>
  <param name=activeBox value=true>
</APPLET>
</BODY>
</HTML>
Текст апплета
import java.awt.*;
import java.applet.*;
// Создаем класс MyParameters
public class MyParametes extends Applet { 
   // Обьявляем переменные для приема параметров
   String  NameBox1 = new String();
   int     WidthBox1;
   long    AreaBox1;
   float   floatBox1;
   boolean activeBox1;
   // Прием параметров в методе start ()
   public void start () {
      String param = new String();
      // Прем первого - строкового параметра 
      NameBox1 = getParameter("NameBox");
      if (NameBox1 == null)
         NameBox1 = "Not Found";
      // Прем второго - параметра типа int
      // Функция parseInt переводит из строкового 
      // формата в целочисленный
      // Обработка исключительной ситуации 
      // связана с прерыванием, которое может
      // возникнуть в этой функции, 
      // когда перевод невозможен
      param = getParameter("WidthBox");
      try {
         if (param != null)
            WidthBox1 = Integer.parseInt(param);
         else
            WidthBox1 = 0;
      } catch (NumberFormatException e)
      { WidthBox1 = -1; }
      // Прем третьего - параметра типа long
      // Функция parseLong переводит из строкового 
      // формата в целочисленный
      param = getParameter("AreaBox");
      try {
         if (param != null)
            AreaBox1 = Long.parseLong(param);
         else
            AreaBox1 = 0;
      } catch (NumberFormatException e)
      { AreaBox1 = -1; }
      // Прем четвертого - параметра типа float
      // Функция valueOf переводит из строкового 
      // формата в формат с плавающей точкой
      param = getParameter("floatBox");
      try {
         if (param != null)
            floatBox1 = Float.valueOf(param).floatValue();
         else
            floatBox1 = 0;
      } catch (NumberFormatException e)
      { floatBox1 = -1; }
      // Прем пятого - параметра логического типа 
      param = getParameter("activeBox");
      if (param != null)
         activeBox1 = Boolean.valueOf(param).booleanValue();
   }
   // Вывод в апплет значений полученных
   // и преобразованных параметров
   public void paint (Graphics dr) {
      dr.drawString ("NameBox   : " + NameBox1   , 20, 20);
      dr.drawString ("WidthBox  : " + WidthBox1  , 20, 70);
      dr.drawString ("AreaBox   : " + AreaBox1   , 20, 120);
      dr.drawString ("floatBox  : " + floatBox1  , 20, 170);
      dr.drawString ("activeBox : " + activeBox1 , 20, 220);
   }
}
Просмотр примера 9 в браузере

Пример 10. Получение данных от программы CGI

   В примере из апплета вызывается скрипт, написанный на языке Perl.
Оператор вызова скрипта:
u=new URL("http://kafi5.loc/cgi/prosto.pl?n=50");
Для демонстрации возможности передачи параметров из апплета на веб-сервер
скрипту передаётся один параметр n.
   Скрипт генерирует 10 случайных чисел в диапазоне от 0 до 100 и передаёт их
(вместе с полученным параметром) апплету.
   Апплет выводит в своё окно текст Click me! и после щелчка мышкой по
тексту строит диаграмму, используя полученные с веб-сервера случайные числа.

Текст скипта

#!/usr/bin/perl
use CGI qw(param);
$m=param("n");
#$m=50;
print "Content-type: text/plain\r\n\r\n";
print "100,$m";
for($i = 0; $i <9; $i++) 
{  $n=rand()*100;
   printf ",%d",$n; 
} 
Текст апплета
import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;
//Пример с сайта http://www.lib.csu.ru/DL/bases/prg/frolov/articles/mirpk/08.98/index.html
public class izCGI extends Applet
{
// u - ссылка на адрес URL программы CGI
  URL u;
// c - ссылка на объект класса URLConnection,
// используемый как канал передачи данных при
// взаимодействии аплета и программы CGI
  URLConnection c;
// is - ссылка на входной поток класса DataInputStream,
// по которому аплет получает данные от программы CGI
  DataInputStream is;
// str - рабочее поле для хранения текстовой строки
// со случайными числами, принятой от программы CGI
  String str = "";
  String val[] = new String[11];
  
  public void init()
  {
    for(int i=0; i <10; i++) val[i]="0" ; // вызываем метод repaint для перерисовки окна аплета
  // до обмена данными с программой CGI; при перерисовке 
  // метод paint выводит в окне сообщение "Click me!" 
    repaint(); 
  } 
  public void paint(Graphics g) 
  { Integer iInteger; 
    int maxWidth=0; 
    int curWidth; // устанавливаем желтый цвет фона окна, определяем 
    // размеры окна и обводим его черной рамкой 
    setBackground(Color.yellow); 
	//java.awt.Component.size() возвращает объект класса Dimension, содержащий размеры окна апплета
    Dimension dimAppWndDimension=size(); 
    g.setColor(Color.black); 
    g.drawRect(0, 0, dimAppWndDimension.width, dimAppWndDimension.height); 
    //    g.drawRect(0, 0, 200, 150); 
    // для преобразования строк к типу int 
    // создаем объект класса Integer 
    iInteger=new Integer(val[0]); 
    maxWidth=iInteger.intValue(); 
    if(maxWidth== 0){ g.drawString("Click me!", 10, 100); }
    else 
    { // выводим строку, полученную от программы CGI, в исходном 
     // виде 
     g.drawString(str, 10, 20); 
     for(int i=1; i < 11; i++) 
     { // выбираем случайным образом компоненты цвета 
       // для изображения очередного столбца диаграммы 
       int rColor=(int)(255 * Math.random()); 
       int gColor=(int)(255 * Math.random()); 
       int bColor=(int)(255 * Math.random()); 
       g.setColor (new Color(rColor, gColor, bColor));
       // извлекаем случайное значение, определяющее ширину столбца
       // диаграммы 
       iInteger=new	Integer(val[i]); 
       curWidth=iInteger.intValue() + 1; g.fillRect(1, 10 + 20 * i, (300 * curWidth) / maxWidth, 20); 
       // справа от столбцов диаграммы отображаем их ширину 
       // в численном виде 
       g.drawString(val[i], 10 + (300 * curWidth) / maxWidth, 24 + 20 * i); 
     } 
    } 
  } 
  public boolean mouseDown(Event evt, int x, int y) 
  {  try 
     { // создаем объект u класса URL для загрузочного файла  программы CGI 
        //В скрипт передаётся переменная n=50 для демонстрации возможности передачи 
        //параметров из апплета на веб-сервер
         u=new URL("http://kafi5.loc/cgi/prosto.pl?n=50");
         c=u.openConnection(); 
       // после соединения создаем поток для форматированного 
       // ввода-вывода 
       // данных от программы CGI 
       is=new DataInputStream(c.getInputStream()); 
       // читаем строку из входного форматированного потока 
       str=is.readLine();
        is.close(); 
       // создаем объект класса StringTokenizer, передавая 
       // конструктору через первый 
       // параметр ссылку на разбираемую строку, а через второй 
       // строку разделителей StringTokenizer 
       StringTokenizer st=new StringTokenizer(str, ",\r\n");
       int i=0;
       while(st.hasMoreElements()) 
       { // разбираем строку и записываем токены в массив val 
          val[i]=(String)st.nextElement();
          i++; 
       } 
        repaint(); 
     }
     catch (Exception ioe) 
     { showStatus(ioe.toString()); 
     } 
     return true; 
  } 
} 
Просмотр примера 10 в браузере

Пример 11. Загрузка файлов из каталогов веб-сервера

   В примере выбранный файл загружается в текстовую область.

Текст апплета

import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.util.*;
//В основу этого апплета положены два примера
//В пример с сайта http://www.lib.csu.ru/DL/bases/prg/frolov/articles/mirpk/08.98/index.html
//читается файл с веб-сервера, но не учитывается кодировка файла (utf-8, windows-1251 и т.д.)
//Изменения для указания кодировки файла взяты с http://www.rte1.ru/softsamples/Java_ReadFile.html
public class filSerw extends Applet
{// tl - ссылка на объект класса Label
  Label tl;
// txtURLAddress - ссылка на однострочное поле редактирования текста
// используется для ввода адреса ресурса URL
  TextField txtURLAddress;
// txt - ссылка на многострочное поле редактирования класса
// TextArea, где после
// загрузки будет отображено содержимое файла
 TextArea txt;
// btnGetText - ссылка на кнопку класса Button
  Button btnGetText;
  byte buf[] = new byte[100];
  public void init()
// добавляем однострочное поле для ввода адреса URL,
// кнопку, инициирующую процесс загрузки файла,
// и многострочное поле редактирования для размещения текста прочитанного файла
  { tl = new Label("Введите адрес URL:");
    add(tl);
    txtURLAddress = new TextField("http://", 50);
    add(txtURLAddress);
    txt = new TextArea("", 20, 70);
    btnGetText = new Button("Получить файл");
// добавляем поля редактирования
    add(btnGetText);
    add(txt);
// устанавливаем желтый цвет фона для окна аплета
    setBackground(Color.yellow);
  }
  public boolean action(Event evt, Object obj)
// загрузка файла ресурса, заданного своим адресом URL,
// и отображение его в многострочном поле редактирования
// txt.
  { String st;
    Button btn;
// проверяем, вызвано ли это событие нашей кнопкой
    if(evt.target instanceof Button)
    {
      btn = (Button)evt.target;
      if(evt.target.equals(btnGetText))
      {
        URL u;
        try
        { // создаем объект класса URL
          u = new URL(txtURLAddress.getText());
           // Opens a connection to this URL and returns an InputStream for reading from that connection.
          InputStream is = u.openStream(); 
          //Указывается кодировка файла
          InputStreamReader isr=new InputStreamReader( is,"utf-8");
           //или "windows-1251"
          BufferedReader in = new BufferedReader(isr);
          while (((st = in.readLine()) != null))
          {  txt.append(st+"\n");
          }                  
          in.close();
        }
// текст описания исключения записывается в строку состояния
// браузера
        catch(Exception ioe)
        {  showStatus(ioe.toString());
        }
      }
      else
        return false;
      return true;
    }
    return false;
  }
  public void paint(Graphics g)
  {
//  определяем размеры окна
    Dimension dimAppWndDimension = size();
    g.setColor(Color.black);
// рисуем прямоугольную рамку по периметру
    g.drawRect(0, 0, 
      dimAppWndDimension.width  - 1, 
      dimAppWndDimension.height - 1);
 
  }
}
Просмотр примера 11 в браузере
URL файла для просмотра: http://kafi5.loc/kodUtf8.txt
Файл состоит из двух строк:
    Цена - 5
    ves - 10

Пример 12. Конструктор и оператор return
Создаётся класс krug с шестью полями (свойствами)и два экземпляра круга
Приводятся два варианта создания экземпляров круга:
- без использования явно заданного конструктора;
- с конструктором.
Вариант без конструктора закомментирован.
Для расчёта длины окружности и площади круга служит метод alfa(),
возвращащий площадь круга.

Текст программы

package krug;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Krug 
{   public int D;
    public String cvetKruga;
    private String granicaVid;
    private String granicaCvet;
    private int Xkruga;//координаты центра
    private int Ykruga;//круга
    //Конструктор
    public Krug(int D,String cvetKruga,String granicaVid,String granicaCvet,int Xkruga,int Ykruga )
    {  this.D=D;
       this.cvetKruga=cvetKruga;
       this.granicaVid=granicaVid;
       this.granicaCvet=granicaCvet;
       this.Xkruga=Xkruga;
       this.Ykruga=Ykruga;     
    }
    public static void main(String[] args) 
    { //Поля двух экземпляров круга задаются без явного конструктора
     /*  Krug krug1=new Krug();
       krug1.D=80;
       krug1.cvetKruga="красный";
       krug1.granicaVid="пунктир";
       krug1.granicaCvet="синий";
       krug1.Xkruga=100;
       krug1.Ykruga=120;
       Krug krug2=new Krug();
       krug2.D=60;
       krug2.cvetKruga="зелёный";
       krug2.granicaVid="сплошная линия";
       krug2.granicaCvet="розовый";
       krug2.Xkruga=50;
       krug2.Ykruga=70;
       */
       //Поля двух экземпляров круга задаются с помощью конструктора
       Krug krug1=new Krug(80,"красный","пунктир","синий",100,120);
       Krug krug2=new Krug(60,"зелёный","сплошная линия","розовый",50,70);
       double S=krug1.alfa("круг 1");
       System.out.println(" Площадь круга="+S);
    }
    
     private double  alfa(String kr)
    {  double L=Math.PI*D;
       //Округление до одного знака после запятой
       L = new BigDecimal(L).setScale(1, RoundingMode.HALF_UP).doubleValue();
       double S=Math.PI*Math.pow(D/2,2);
       S= new BigDecimal(S).setScale(1, RoundingMode.HALF_UP).doubleValue();
       System.out.println(kr + "\n Цвет круга - "+cvetKruga+".\n Диаметр - "+D+" "
               + "\n Длина окружности = "+L);
       return(S);
    }
}
Результат:
круг 1
 Цвет круга - красный.
 Диаметр - 80 
 Длина окружности = 251.3
 Площадь круга=5026.5