ITI0011RUS:занятие 02

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

Вернуться на страницу предмета

Общая информация

Данная страница материал 2 практического занятия.

Темы

  • Eclipse
  • git?
  • Язык Java
    • переменные
    • основные операторы
    • функции
  • Упражнение

Eclipse

Eclipse это среда разработки программного кода -- IDE (Integrated Development Environment), которой будем пользоваться на занятиях для решения заданий. При желании можно пользоваться другими средами разработки:

  • NetBeans [[1]]
  • IntelliJ IDEA [[2]]

Установка и запуск Eclipse

Для тех, кто будет делать работы на компьюерах в классе, устанавливать Eclipse не требуется - он уже установлен на компьютерах в классе. Те, кто будет делать работы на своих личных компьютерах или ноутбуках - читайте дальше.

Eclipse можно скачать со следующей страницы: [[3]]
Там с правой стороны выберите "DOWNLOAD" -> Eclipse IDE for Java Developers, после чего следует выбрать операционную систему, если она была неверно определена.

После того как скачали zip архив, ео следует распаковать (например, в системе Windows в c:\users\aleksandr\eclipse). Никакого процесса инсталляции не происходит. Запуск программы осуществляется из этой же самой директории, например c:\users\aleksandr\eclipse\eclipse.exe .

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

Рабочее пространство Eclipse

При первом запуске Eclipse покажет вам страницу приветствия "Welcome". Кнопка закрытия окна располагается выше и правее "Workbench".

Окно Eclipse разделено на несколько отдельных частей. В каждой части можете располагать необходимые панели. В настройках по умолчанию в левой панели расположен "Обозреватель пакетов" (Package explorer), внизу находятся панели "Проблемы" (Problems), "Документация" (Javadoc), "Объявления" (Declarations) и "Консоль" (Console). Справа можно увидеть панели "Список задач" (Task list) и "Краткое описание" (Outline). Панель расположенная в центральной области окна зарезервирована для отображения активного файла исходного кода - файла, который вы редактируете и куда пишите код. Месторасположение всех панелей можно менять (например, перетащить какую-нибудь панель из нижней области в правую и т.д), спрятать или совсем удалить из окна (позже выбрав соответствующий пункт меню панель можно вернуть на место). Панель можно "свернуть" нажав на кнопку "-", которая находится в верхнем правом углу панели. В свернутом состоянии панель по умолчанию не видна на экране, но у правой границы появляется полоса, при помощи которой данная панель (или группа панелей) видна в виде иконки. Нажав на эту полосу панель снова можно сделать видимой. Нажатие на "x" удаляет панель с экрана окончательно, но ее можно восстановить в любое время выбрав панель в меню в верхней части окна. Перемещение панели из одной части окна в другую производится за строку заголовка. Новое месторасположение сохраняется автоматичеки - при следующем запуске Eclipse восстанавливается то состояние панелей, которое было когда вы последний раз закрывали Eclipse.

Все панели доступны в меню Window -> Show view -> Other... в верхней части окна. Оттуда любую панель можно восстановить. Можно производить поиск панели по имени или по структурному расположению. Если случайно удалили какую-нибудь панель, сможете восстановить ее из этого меню.

Не существует предписанных правил насчет того, какая панель где должна располагаться. Можно раположить панели, например, так, что панель "Обозреватель пакетов" (Package explorer) будет располагаться в правой части окна, в левой части "Краткое описание" (Outline) (если вы умеете этой панелью пользоваться). В нижней части могли бы расположиться панели "Проблема" (Problems), "Документация" (Javadoc), и "Консоль" (Console). Все зависит от тог какие панели нужны разработчику, к какому расположению он привык и какими панелями пользуется чаще всего во время работы.

Настройка Eclipse

Настройки Eclipse расположены в меню Window -> Preferences. Откроется отдельное окно, где сможете искать требуемые настройки по имени или по структурному расположению. Например, типичная настройка которую регулярно производит преподаватель это изменение размера шрифта. Для того, чтобы найти эту настройку достаточно написать в область поиска слово "font". Результатом поиска будут лишь те настройки, которые содержат заданное слово. В данном случае General -> Appearance -> Colors and Fonts. Далее выбираю Java -> Java Editor Text Font. Устанавливаю размер шрифта, например, 20.

У вас нет необходимости что-то менять в настройках, но в некоторых случаях это все же может оказаться полезным. По ходу курса мы укажем, если какие-либо настройки потребуют их изменения.

Установка и настройка плагина Checkstyle для Eclipse

Одной из целей данного курса является приучить вас к написанию "красивого" кода. Для этого нам пригодится плагин для Eclipse, который помогает следить за "красотой" кода: Checkstyle. Для того, чтобы установить данный плагин, выполните следующие действия:

  • Help -> Eclipse Marketplace
  • В область поиска напишите "Checkstyle"
  • В результатах найдите "Checkstyle Plug-in 6.2.0" (должен быть первым или вторым результатом в списке) и нажмите на кнопку "install" которая располагается правее и ниже надписи.
  • Появится окно, которое покажет вам список, состоящий из двух элементов. У каждого из этих элементов должна быть выставлена "галочка" (тоесть оба элемента отмечены автоматически). Нажмите "Confirm >".
  • Далее нажмите "I accept..." (естественно, текст соглашения следует прочитать...), после чего нажмите "Finish".
  • Начнется установка плагина. Во время установки Eclipse попросить подтвердить, что вы согласны установить плагин который не имеет дигитальной подписи - Security Warning, you are installing software that contains unsigned content. Нажмите "OK".
  • После завершения установки Eclipse захочет сделать рестарт. Нажмите "Yes".

После того как Eclipse снова запустится плагин Checkstyle уже будет установлен. Eclipse снова может спросить у вас месторасположение рабочей области (workspace), предложив вам то же месторасположение, которое вы выбрали при последнем запуске Eclipse. Если вы довольны месторасположением рабочей области, внизу окна можно поставить "галочку", которая позволит Eclipse запомнить ваш выбор и больше вопросов о выборе месторасположения рабочей области не возникнет.

После установки Checkstyle плагина следует произвести его настройку. Загрузите файл настроек: Meedia:ITI0011-Checkstyle iti0011.xml. Этот файл доступен также в репозитарии учебных материалов stuff/checkstyle-iti0011.xml . Возможно, что в течение курса мы изменим этот файл, в случае если какая-либо настройка покажется слишком мягкой или слишком жесткой. Для того чтобы Checkstyle плагин смог бы следить за "красотой" вашего кода согласно с правилами нашего курса, планигу слетует "сказать" где эти настройки находятся. Для этого выполните следующее:

  • В меню в верхней части окна выберите Window -> Preferences.
  • Произведите поиск по слову "Checkstyle" (на самом деле данная категория настроек видна сразу в левой части окна)
  • Выбрав пункт "Checkstyle" в меню, справа сможете увидеть настройку "Global Check Configurations", где находятся три конфигураци (одна от Google и две от Sun). В этот список мы добавим свою конфигурацию.
  • Найдите справа от списка кнопку "New..."
  • Откроется окно. Выберите в нем следующие поля:
  • Type: External Configuration File
  • Name: ITI0011
  • Location: Укажите местонахождение загруженного XML файла конфигурации.
  • Нажмите "OK".
  • Теперь в списке должна появиться четвертая конфигурация - ITI0011. Выделите ее мышью и нажав на правую кнопку выберите "Set as Default". Тем самым мы указали Checkstyle плагину использовать наши настройки по умолчанию.

Теперь требуемая конфигурация настроена в плагине. Если вам интересно, можете здесь же посмотреть какие проверки настроены в нашей конфигурации. Для этого выберите конфигурацию из списка и в меню, которое появится по клику правой кнопки мыши выберите пункт "Configure...".

Checkstyle плагин не активируется автоматически. Для того, чтобы излечь какую-то пользу от этого плагина, следует вручную активировать проверку "красоты" кода для каждого проекта с которым вы будете работать. Однако, прежде чем активировать плагин нужно для начала создать какой-нибудь проект.

Создание нового проекта

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

В целях данного занятия мы создадим новый проект. Для этого:

  • File -> New -> Java Project
  • Project name: например "praktikum02´"
  • Остальные настройки можно оставить без изменения.
  • "Finish"

В панели обозревателя пакетов появится папка (проект) с именем "praktikum02". При нажатии на символ треугольника, который находится перед названием проекта, можно увидеть его "содержимое". Вся структура проекта представлена иерархической струтурой именуемой деревом каталогов (анаогичное иерархическое представление файлов можете увидеть в Windows Explorer). Если вы откроете директорию, соответствующую рабочему пространству (workspace) то вы увидите, что каждый проект представляет собой отдельную директорию. В проекте есть директория "src" (эта директория также является физически существующей директорией внутри директории проекта в рабочем пространстве). Поначалу эта директория пустая.

Добавим файл исходного кода. Для этого:

  • Клик правой кнопкой по директории "src"
  • В появившемся меню New -> Class
  • Появится новое окно
  • Name: HelloWorld
  • Поставить галочку у "public static void main(String[] args)"
  • Сотрите значение "package" (пока что оно нам не понадобится)
  • Нажмите "Finish"

Теперь в панели обозревателя пакетов в директории "src" должна появиться поддиректория "(default package)". Директория файлов исходного кода ("src") структурно разделяется на пакеты. Каждый пакет физически представлен просто директорией в рабочем пространстве на диске компьютера. Поскольку сейчас мы для простоты не создавали никакого пакета, файл исходного кода HelloWorld.java был создан прямо в директории "src" (хотя Eclipse показывает, будто файл находится в директории "(default package)" ). Если бы мы указали в поле "package" значение "hello" например, тогда внутри директории "src" была бы создана директория "hello" внутри которой бы находился файл HelloWorld.java. Поначалу нам не понадобится пользоваться пакетами. Поэтому нет большой разницы был ли создан пакет и с каким именем он был создан.

В центральной панели должен открыться файл (HelloWorld.java) и мы можем увидеть исходный код.

Код должен выглядеть примерно таким образом: <source lang="java"> public class HelloWorld {

public static void main(String[] args) { // TODO Auto-generated method stub

}

} </source>

Первая программа, которую мы создадим, не будет делать ничего более умного, кроме как выводить строку "Hello World!" на экран.

Некая часть исходного кода который вы видите пока что останется без объяснений (ее мы объясним через неколько недель, после того, как поймем основы). Некоторую часть кода мы объясним сейчас:

  • 1 строка "public class HelloWorld" говорит о том, что мы имеем дело с классом который называется "HelloWorld". В Java действуют определенные правила, такие как, например, в файле исходного кода может располагаться только один класс и имя класса должно быть идентично имени файла. Тело класса размещено между собками {}. Этой строкой начинается объявление класса и заканчивается на последней строке файла.
  • 3 строка "public static void main(String[] args)" определяет метод/функцию, которая называется "main". Это особенная функция, поскольку с функции "main" начинается работа программы. Если такой функции в классе нет - то мы не можем запустить этот класс (или файл). В собках указывают какие-то аргументы, передаваемые функции - они сейчас не важны для нас.
  • 4 строка " // ..." - это коментарий. Коментарии пишутся программистами для программистов - компилятор игнорирует комментарии. Советуем вам использовать коментарии в своем коде. Например, коментарий перед определенным блоком кода, который описывает что этот код делает.
  • 6 строка "}" завершает объявление функции "main"
  • 8 строка "}" завершает объявление класса HelloWorld

Наша задача - добавить код в тело функции main. Этот код выполнится тогда, когда мы запустим наш класс. Допишем в функцию main одну строчку кода: <source lang="java"> public class HelloWorld {

public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Hello World!")

}

} </source>

Когда вы добавите эту строку в файл (в точности так, как она написана в примере), в самом начале 5-й строки должен появиться красный крестик. Красный крестик означает, что в данной строке кода какая-то ошибка. Прежде чем мы кинемся исправлять эту ошибку давайте посмотрим какие в Eclipse существуют средства для отслеживания ошибок.

В нижней части окна должна находиться панель "Проблемы (Problems)". На ней можно увидеть сообщение об ошибке примерно следующего содержания: "Errors (1 item)". Нажатием на символ треугольника, находящийся перед этой надписью, можно развернуть/свернуть список ошибок . В этом списке присутствует запись об ошибке, допущенной нами только что. По двойному клику мышью по описанию ошибки в списке, в коде выделяется строка, в которой данная ошибка возникла. В данном случае каждое выражение в Java должно заканчиваться символом ; (в языке Python это было не нужно).

Таким образом, корректный код выглядит примерно так: <source lang="java"> public class HelloWorld {

public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Hello World!");

}

} </source>

Для того чтобы запустить программу в меню в верхней части окна выберите Run -> Run As -> Java Application. Того же самого можно добиться комбинацией клавиш ctrl + F11. При запуске программы автоматически станет активным панель Консоль (Console), в которой должен появиться строка "Hello World!". Мы завершили написание первой Java программы, хотя мы многого не говорили о том, что каждая строчка кода означает. Продолжим ознакомление с языком Java.

Система контроля версий Git

TBA

Переменные

Переменная (англ.: variable) это выделенная область, которая располагается где-то в памяти процесса, к которой можно обращаться по имени и которая может содержать различные значения определенного типа. Например, именем переменной может быть x и эта переменная содержит хначение 5. В виде псевдокода будет выглядеть так: x = 5 (на самом деле точно так же можно в математике присвоить переменной какое-либо значение). Если далее переменная х где-то используется, то ее значение 5. Например x + 3 идентично выражению 5 + 3. Можно привести аналогию с ячейками Excel таблицы. Когда вы записываете какую-либо формулу, вы делаете это следующим образом: =A1 + B2. A1 и B2 по сути являются переменными, чьи значения хранятся в соответствующих ячейках.

В предыдущем параграфе мы упомянули, что переменные хранят значения определенног типа. В языке Java у каждой переменной есть не только имя, но и тип данных. Если например в Python можно написать x = 'tere' после чего сразу же x = 3, то в Java придется вначале определиться с типом данных для переменной. В дальнейшем данная переменная сможет хранить любые значения данного типа данных. Например, тип данных соответствующий целым числам int: int x = 3;. Далее в коде, если мы уже задали тип данных для переменной, можно к ней обращаться только по ее имени (тип данных использовать не нужно): x = 4;. В последнем примере мы объявили переменную с именем x которая может хранить целые числа и сразу же присвоили ей значение 3, после чего изменили значение переменной x на значение 4.

Имена переменных должны быть уникальны - если где-то в коде объявлена переменная с именем x, то больше в этой части кода (в области видимости) переменной с именем х быть не может. Об области видимости переменных мы поговорим более детально в дальнейшем.

Типы данных

Типы данных в языке Java условно разделяются на два больших класса: это так называемые "примитивные" (также известные как "атомарные") типы данных и "комплексные" типы данных (также известные как объекты). Начнем с рассмотрения примитивных типов данных. К примитивным типам данных применимо правило, что у каждой переменной свое конкретное значение. Позже мы увидим, чем объекты отличаются от примитивных типов данных.

В таблице ниже приведены примитивные типы данных вJava:

ITI0011-prax-02-datatypes.png

Тип данных Размер Значения Пример
byte 1 байт (8 бит) -128..127 byte b = 42;
short 2 байта (16 бит) -32768..32767 short s = -12345;
int 4 байта (32 бита) -2 147 483 648 (-2^31).. 2 147 483 647 (2^31 - 1) int i = 10;
long 8 байт (64 бита) -2^63 .. (2^63 - 1) long l = -100;
float 32-битное дробное число * float f = 3.14f;
double 64-битное дробное число * double d = 1.2345;
boolean 1 бит true, false boolean b = true;
char 16-битный символ 'a', 'b', ... char c = 'a';

Объявление и инициализация пременных

Объявление переменной - "резервирование" в памяти места под значения, которые будет хранить данная переменная. Никаких конкретных значений ей еще не присвоено. Структура объявления переменной представлена ниже:

[тип данных] [имя переменной];

Например:

int y;

Здесь мы указали программе, что мы хотим зарезервировать в памяти 4 байта под хранение целых чисел, и к этой области памяти мы можем обращаться по имени y.

Инициализация переменной - присвоение переменной конкретного значения. Инициализация выглядит следующим образом:

[имя переменной] = [значение];

Например:

y = 10;

Здесь мы проинициализировали переменную y значением 10 - теперь эта переменная хранит значение 10. В языке Java можно комбинировать объявление переменной и ее инициализацию начальным значением в одно выражение:

[тип данных] [имя переменной] = [значение];

Например:

int y; int x = 10;

Далее в коде можно менять значения переменных:

y = 1; x = 3;

Имена переменных

В языке Java имеют право на существование переменные со следующими именами (например): N, n, x15, a_long_name, time_is_$, HelloWorld. Имя переменной чувствительно к регистру - тоесть следующие имена являются именми разных переменных: HelloWorld, helloWorld, helloworld, HELLOWORLD, HeLLoWoRLd. Названия конструкций языка зарезервированы - поэтому не допустимы в качестве имен переменных такие имена как class, public, static, if, else и т.д.

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

  • имя должно быть осмысленным (temperature, speed, а не a, b)
  • имя должно начинаться с прописной буквы
  • имя должно содержать слово целиком (temperature, а не temp)
  • если имя состоит из одного слова - используйте только прописные буквы: weight, speed.
  • если имя состоит из двух или более слов, слова пишут вместе и первые буквы каждого слова, начиная со второго, заглавные: playAgain, currentSpeed.

Поскольку конструкции зыка (if, while, class и т.д) все англоязычные, то для повышения читабельности кода советуют использовать также имена переменных которые имеют какой-то смысл в английском языке (speed, а не kiirus). В любом случае код должен придерживаться единой логики на всем его протяжении: если начали использовать английские имена переменных - используйте их до конца. Написание кода, в котором имена переменных являются словами из разных языков очень плохой стиль написания кода.

Константы

Константы - особые переменные, которые отличаются от обычных переменных тем, что значение константе присваивается сразу при ее инициализации и значение константы неизменно на всем протяжении ее существования. Правила, которые действуют в отношении имен констант также слегка отличаются от правил для имен переменных:

  • все буквы в названии заглавные: PI, SPEED.
  • слова разделены символом подчеркивания (_): SPEED_OF_LIGHT, NUMBER_OF_GEARS.

Константы объявляются в заголовке класса (перед объявлением методов/функций):

public static final double PI = 3.14;

О константах поговорим более детально немного позже. В данном контексте константы упомянуты из-за правил их наименования.

Операторы и действия с переменными

ITI0011-prax-02-operators.png

Увеличение/уменьшение значения переменной численного типа на единицу:

  • y = x++ (увеличиваем значение x после взятия значения)
    • y = x
    • x = x + 1
  • y = ++x (увеличиваем значение x до взятия значения)
    • x = x + 1
    • y = x
  • x += y
    • x = x + y

Последовательность действий (какое значение будет содержать переменная х?):

  • x = 2 + 3 * 6;
  • x = (2 + 3) * 6;

Деление, остаток

Если мы делим два целых числа, в результате также получим тоже целое число (результат не округляется - берется целая часть результата, дробная часть теряется) - это называется целочисленным делением (integer division):

  • 6 / 5 = 1
  • 3 / 5 = 0
  • 10 / 5 = 2

Если хотя бы один из аргументов ялвяется дробным числом, результат деления также является дробным числом:

  • 6.0 / 5 = 1.2
  • 3 / 5.0 = 0.6
  • 10.0 / 5.0 = 2.0

Остаток от деления (%):

  • 22 % 5 = 2 (22 / 5 это 4 с остатком 2)
  • 5 % 5 = 0
  • 3 % 5 = 3

Пусть у нас есть 22 яблока которые нужно разделить на 5 человек (яблоки разрезать на части нельзя). Сколько яблок останется? Если у нас 3 яблока, то если разделить их между 5 людбми каждый получит 0 яблок, и 3 яблока останется.

Преобразование типов данных

Иногда бывают ситуации, когда нужно использовать переменную определенного типа как переменную другого типа. В этом случае используется преобразование типа переменной.

Пусть у нас даны две целочисленные переменные:

  • x = 8; y = 5; (aga tahaksime saada 1.6)

Если мы поделим их друг на друга, то результат будет 1:

  • x / y = 1

Мы бы хотели получить корректный результат (1.6). Для этого нам нужно преобразовать хотя бы одну переменную к дробному типу данных. Преобразование типа данных не меняет значения переменной.

Синтакс преобразования типов данных:

([новый тип данных])[имя переменной или значение];

Пример: <source lang="java"> (double)8/5; // => 1.6 x = 5; y = 2; x / y; // => 5 / 2 = 2 (double)x / y // => 5.0 / 2 = 2.5 x / y; // => 5 / 2 = 2 (int)5.5 / 3 // => 5 / 3 = 1 </source>

Функции

Небольшое вступление на тему функций. Более подробно обсудим эту тему на последующих занятиях.

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

Функции условно разделяются на два вида:

  • те, что возвращают какое-то значение (их называют функциями, как в математике y = f(x))
  • те, что не возвращают значений (их иногда называют процедурами)

Разделение на типы чисто условное - и те и другие можно называть просто "функциями", а в языке Java также и "методами" (метод - функция, находящаяся внутри класса). Эти термины используются повсеместно в литературе. Судить о том, возвращает функция значение или нет следует не по тому как ее называют - функция, метод, процедура - я по ее объявлению.

Некоторые примеры математических функций:

  • Math.sqrt(x); - возвращает квадратный корень переданного аргумента
  • Math.random(); - возвращает псевдослучайное число в промежутке [0..1)

Объявление функции:

[префиксы] [возвращаемый тип данных] [тия функции] ([параметры]) {
	[инструкции]
}

Префиксов может быть несклько (например, public static, но префиксы могут и отсутствовать совсем. Префиксы станут важны тогда, когда мы начнем писать объектно-ориентированный код.

Параметры функции представляют собой разделенный запятыми список типов данных аргументов и их имен. Параметры функции передаются ей при вызове. Важно передавать функции параметры тех типов данных, которые она ожидает получить. Внутри функции параметры можно воспринимать как объявленные и проинициализированные соответствующими значениями переменные. В примере ниже функция принимает два параметра типа double. Мы можем думать об этих параметрах просто как о переменых с именами x и y, значения которых присвоится переменным в момент вызова функции. Эти переменные видны и доступны на всем протяжении тела функции (тело функции - код, который находится между фигурными скобками {}).

Если функция не возвращает никаких значений, то ее возвращаемый тип данных - void. Если возвращаемый тип данных нечто отличное от void, такая функция обязана вернуть значение. В теле такой функции должна содержаться инструкция:

return [выражение или значение];

Функция завершает свою работу при выполнении последней инструкции или при возврате значения (выполнении инструкции return).

Пример:

<source lang="java"> public static boolean lessThan(double x, double y) { return x < y; } </source>

Позже в коде следующие строки кода:

<source lang="java"> // ...

boolean b1 = 5.0 > 6.0;

boolean b2 = 10.0 < 5.0; </source>

можно заменить вызовом функции lessThan:

<source lang="java"> boolean b1 = lessThan(6.0, 5.0); boolean b2 = lessThan(10.0, 5.0); </source>

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

Пример:

<source lang="java"> static intnextN(int currentN) { if(currentN % 2 == 1) // test if current N is odd return 3 * currentN + 1; // if so, return this value else return currentN / 2; // if not, return this instead } </source>


Пример функции 3N:

<source lang="java"> static void print3NSequence(int startingValue) {

   int N = startingValue; 
   int count = 1; 
   System.out.println("The 3N+1 sequence starting from " + N);
   System.out.println();
   System.out.println(N); 
   while (N > 1) {
       if (N % 2 == 1)          // is N odd?
           N = 3 * N + 1;
       else
           N = N / 2;
       count++;                 // count this term
       System.out.println (N);  // print this term
   } 
   System.out.println ();
   System.out.println (
       "There were " + count + " terms in the sequence."); 

} // -print3NSequence()

</source>

Вызвать эту функцию в коде можно следующим образом:

print3NSequence(17);

Код выше вызывает функцию и передает ей значение 17 (тоесть внутри функции переменная startingValue имеет значение 17).

Аналогично можно вызвать функцию, передав ей значение переменной в качестве параметра:

print3NSequence(k);

k при этом должна быть переменной целочисленного типа. Функция вызывается со значением, которое хранится в переменной k, само значение в переменной не меняется.

Еще примеры функций и их вызовов: <source lang="java"> static void doTask(int N, double x, boolean test) { // statements to perform the task go here } </source>

Такую функцию можно вызвать следующим образом:

<source lang="java"> doTask(17, Math.sqrt(z + 1), z >= 10); </source>

При вызове первым делом высчитываются значения соответствующих параметров, после чего функция вызывается с просчитанными параметрами. Можно представить, что перед вызовом функции выполняется следующий код: <source lang="java"> // declare an int named N with initial value 17 int N = 17;

// compute Math.sqrt(z + 1), use it to initialize // a new variable x of type double double x = Math.sqrt(z + 1);

// evaluate "z >= 10" and use the resulting true/false // value to initialize a new variable boolean test = (z >= 10); </source>


Документирование кода функций (JavaDoc)

JavaDoc - программа которая может сгенерировать документацию к программе, используя для этого коментарии в коде.

Пример JavaDoc коментария в котором описана функция pythagoras (пример ниже):

<source lang="java"> /**

* Calculates the length of the hypotenuse for the right triangle
* with the side lengths a and b.
* @param a The length of one side
* @param b The length of other side
* @return The length of the hypotenuse
*/

double pythagoras(double a, double b) { ... </source>

JavaDoc коментарий к функции:

  • начинается с символа /**
  • каждая последующая строка начинается с символа *
  • первое предложение - краткое описание.
  • после него может следовать несколько предложений (даже несколько параграфов) более детального описания
  • значение парамеров обозначаются надписью @param: @param [имя переменной] [описание]
  • возвращаемое значение (если оно есть) обозначается надписью @return: @return [описание]
  • помимо вышеперечисленных двух надписей есть еще целое множество
  • завершается символами */ в отдельной строке

Полее подробно вы сможете прочесть в документации: http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html