Основные структуры языка Java (47943)

Посмотреть архив целиком


Факультет "Информатика и системы управления"










Методические указания к лабораторной работе


по курсу "Распределенные системы обработки информации"


Основные структуры языка Java















Москва 2004 г.


Оглавление


Цель работы 3

Задание для домашней подготовки 3

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

Задание 1 3

Задание 2 5

Задание 3 5

Содержание отчета 6

Контрольные вопросы. 7

Литература. 8

Приложение 1. Встроенные типы данных и основные конструкции языка. 9

Приложение 2. Работа с массивами 26

Приложение 3. Введение в интегрированную среду разработки Eclipse 28

Приложение 4. Листинг программы, подсчитывающей , как долго нужно откладывать деньги, чтобы к выходу на пенсию накопить заданную сумму, при условии, что ежегодно откладывается одна и та же сумма и размер счета возрастает в соответствии с процентной ставкойJava 43

Приложение 5. Листинг программы, иллюстрирующей работу с одномерными массивами (создание и сортировка массива) 45

Приложение 6. Спецификация класса Figure. 47



Цель работы


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


Задание для домашней подготовки


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


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


Задание 1

Номер задания соответствует порядковому номеру в журнале (по модулю 14).

  1. Написать программу, которая просит ввести два числа, получает эти два числа от пользователя, а затем печатает сумму, разность, произведение и частное этих чисел.

  2. Написать программу, запрашивающую у пользователя три числа и печатающую сумму, произведение, среднее значение, меньшее и большее их этих чисел.

  3. Написать программу, принимающую от пользователя радиус круга и печатающую диаметр круга, длину окружности и площадь круга.

  4. Написать программу, которая считывает два целых числа, определяет и печатает, является ли первое число кратным второму.

  5. Написать программу, которая определяет, является введенное число четным или нечетным.

  6. Написать программу, которая вычисляет и печатает квадрат и куб чисел от 1 до 10.

  7. Написать программу, которая печатает геометрическую фигуру: прямоугольник, ромб, стрелу:


******* * *

* * * * **

* * * * ***

* * * * *

******* * *

*

  1. Написать программу, которая читает размер стороны квадрата и затем печатает звездочками и пробелами пустой квадрат заданного размера.

  2. Написать программу, которая читает неотрицательное целое, рассчитывает и печатает его факториал.

  3. Написать программу, которая суммирует последовательность целых чисел. Предполагается, что первое прочитанное целое число указывает количество целых чисел, которые будут введены, причем программа должна читать только по одному значению в операторе ввода.

  4. Написать программу, которая подсчитывает и печатает среднее значение нескольких целых чисел. Предполагается, что последняя читаемая величина имеет значение 9999.

  5. Написать программу, которая находит наименьшее и наибольшее из нескольких чисел. Предполагается, что первое прочитанное число задает количество последующих вводимых чисел.

  6. Написать программу, которая считает и печатает произведение нечетных целых чисел от 1 до 15.

  1. Написать программу, которая печатает трафареты (А, В, С, D – см. ниже) один под другим. Необходимо использовать цикл for для генерации трафаретов.

* *** *** *

** ** ** **

*** * * ***

А В С D


Задание 2

Одномерные массивы [Л.2 на с.67-70], [Л.3 на с.136-139]. Номер задания соответствует порядковому номеру в журнале (по модулю 20).


Задание 3

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

1)

*******

* *

* *

* *

*******

2)

S S S S

S $ $ S

S $ $ S

S S S S

3)

0 0 0 0 0

0 0

0 0

0 0

0 0

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

Символы – заполнители (“*”,“ ”…) также должны либо задаваться в параметрах командной строки, либо назначаться по умолчанию в случае, если программа запущена без параметров. То есть программа при запуске должна определять запущена ли она с параметрами. Если нет – то она должна просить пользователя ввести недостающие размеры с клавиатуры, а символы – заполнители назначаться по умолчанию.

Программа должна быть реализована внутри метода

public static void main(String[] args){

//…

}

с использованием встроенных типов и основных конструкций языка Java.

Также должна быть предусмотрена обработка исключений.

Факультативно (не обязательно): Организовать вывод фигуры в текстовый файл.

В ходе лабораторной работы необходимо отладить написанную дома программу и предъявить работающую программу преподавателю.


Содержание отчета


Отчет должен содержать:

  1. Постановку задачи, решаемой отлаженной программой.

  2. Руководство пользователя отлаженной программы, содержащее описание интерфейсов всех функций программы.

  3. Листинг программы с необходимыми комментариями.



Контрольные вопросы


        1. Какие условные операторы есть в языке Java?

        2. Какие операторы цикла существуют в языке Java?

        3. В чем отличие между операторами цикла for, while и do-while? Какой синтаксис у этих операторов?

        4. Как реализовать оператор goto c помощью стандартных операторов Java?

        5. Почему в блоке switch(){} оператор default ставится в конце.

        6. Как уменьшить размер блока оператора switch(){} в данной работе.

        7. Какие операции существуют в языке Java?

        8. Для чего необходимы операторы условного перехода? Какие операторы условного перехода есть в языке Java?



Литература


  1. Арнолд К., Гослинг Дж., Холмс Д. Язык программирования Java:Пер. с англ. – М.: Издательский дом «Вильямс», 2001 г. – 624 с., ил.

  2. Павловская Т.А., Щупак Ю.А. С/С++. Структурное программирование: Практикум. -СПб.: Питер, 2002. -240с.

  3. Павловская Т.А. С/С++. Программирование на языке высокого уровня -СПб.: Питер, 2002. -464с.


Дополнительная

  1. Официальный сайт Javahttp://java.sun.com/ (есть раздел на русском языке с учебником).

  2. Java™ 2 SDK, Standard Edition Documentation — http://java.sun.com/products/jdk/1.5/index.html.

  3. Джеймс Гослинг, Билл Джой, Гай Стил. Спецификация языка Java (The Java Language Specification — http://www.javasoft.com/docs/books/jls/). Перевод на русский язык — http://www.uni-vologda.ac.ru/java/jls/index.html

  4. Официальный сайт проекта Eclipsehttp://www.eclipse.org/.


А также

  1. Дмитрий Рамодин. Начинаем программировать на языке Java.

  2. Николай Смирнов. Java 2: Учебное пособие.

  3. Картузов А. В. Программирование на языке Java.

  4. Вязовик Н.А. Программирование на Java.

  5. Алексей Литвинюк. Введение в интегрированную среду разработки Eclipse — http://lib.juga.ru/article/articleview/174/1/69/.


Приложение 1. Встроенные типы данных и основные конструкции языка


Константы

В языке Java можно записывать константы разных типов в разных видах. Перечислим их.

Целые

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

  • в десятичной форме: +5, -7, 12345678;

  • в восьмеричной форме, начиная с нуля: 027, -0326, 0777; в записи таких констант недопустимы цифры 8 и 9;

  • в шестнадцатеричной форме, начиная с нуля и латинской буквы х или X: 0xff0a, 0xFC2D, 0x45a8, 0X77FF; здесь строчные и прописные буквы не различаются.

Целые константы хранятся в формате типа int.

В конце целой константы можно записать букву прописную L или строчную l, тогда константа будет сохраняться в длинном формате типа long: +25L, -0371, OxffL, OXDFDF1.

Действительные

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

  • c фиксированной точкой: 37.25, -128.678967, +27.035;

  • с плавающей точкой: 2.5е34, -0.345е-25, 37.2Е+4; можно писать строчную или прописную латинскую букву Е; пробелы и скобки недопустимы.

В конце действительной константы можно поставить букву F или f, тогда константа будет сохраняться в формате типа float: 3.5f, -45.67F, 4.7e-5f. Можно приписать и букву D (или d): 0.045D, -456.77889d, означающую тип double, но это излишне, поскольку действительные константы и так хранятся в формате типа double.

Символы

Для записи одиночных символов используются следующие формы.

  • Печатные символы можно записать в апострофах: 'а', 'N', '?'.

  • Управляющие символы записываются в апострофах с обратной наклонной чертой:

    • '\n' — символ перевода строки newline с кодом ASCII 10;

    • '\r' — символ возврата каретки CR с кодом 13;

    • '\f' — символ перевода страницы FF с кодом 12;

    • '\b' — символ возврата на шаг BS с кодом 8;

    • '\t' — символ горизонтальной табуляции НТ с кодом 9;

    • '\\' — обратная наклонная черта;

    • '\"' — кавычка;

    • '\'' — апостроф.

  • Код любого символа с десятичной кодировкой от 0 до 255 можно задать, записав его не более чем тремя цифрами в восьмеричной системе счисления в апострофах после обратной наклонной черты: '\123' — буква S, '\346' — буква Ж в кодировке СР1251.

  • Код любого символа в кодировке Unicode набирается в апострофах после обратной наклонной черты и латинской буквы ц ровно четырьмя шестнад-цатеричными цифрами: '\u0053' — буква S, '\u0416' — буква Ж.

Символы хранятся в формате типа char.

Компилятор и исполняющая система Java работают только с кодировкой Unicode.

Строки

Строки символов заключаются в кавычки. Управляющие символы и коды записываются в строках точно так же, с обратной наклонной чертой, но без апострофов, и оказывают то же действие. Строки могут располагаться только на одной строке исходного кода, нельзя открывающую кавычку поставить на одной строке, а закрывающую — на следующей. Например:

"Это строка\nс переносом"

"\"Спартак\" — Чемпион!"

Строки символов нельзя начинать на одной строке исходного кода, а заканчивать на другой.

Для строковых констант определена операция сцеплений, обозначаемая плюсом.

"Сцепление " + "строк" дает в результате строку "Сцепление строк".

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

"Одна строковая константа, записанная "+

"на двух строках исходного текста"

Также нужно учесть, что Windows 95/98/ME вообще не работает с Unicode, a Windows NT/2000 использует для вывода в окно Command Prompt шрифт Terminal, в котором русские буквы, расположены в начальных кодах Unicode, почему-то в кодировке СР866, и разбросаны по другим сегментам Unicode.

Имена

Имена (names) переменных, классов, методов и других объектов могут быть простыми (общее название — идентификаторы (idenifiers)) и составными (qualified names). Идентификаторы в Java составляются из так называемых букв Java (Java letters) и арабских цифр 0—9, причем первым символом идентификатора не может быть цифра. (Действительно, как понять запись 2е3: как число 2000,0 или как имя переменной?) В число букв Java обязательно входят прописные и строчные латинские буквы, знак доллара $ и знак 'подчеркивания _, а так же символы национальных алфавитов.

Служебные слова Java, такие как class, void, static, зарезервированы, их нельзя использовать в качестве идентификаторов своих объектов.

Составное имя (qualified name) — это несколько идентификаторов, разделенных точками, без пробелов, например, уже встречавшееся нам имя System.out.println.

Примитивные типы данных и операции

Все типы исходных данных, встроенные в язык Java, делятся на две группы: примитивные типы (primitive types) и ссылочные типы (reference types).

Ссылочные типы делятся на массивы (arrays), классы (classes) и интерфейсы (interfaces).

Примитивных типов всего восемь. Их можно разделить на логический (иногда говорят булев) тип boolean и числовые (numeric).

К числовым типам относятся целые (integral) и вещественные (floating-point) типы.

Целых типов пять: byte, short, int, long, char.

Символы можно использовать везде, где используется тип int, поэтому JLS причисляет их к целым типам. Например, их можно использовать в арифметических вычислениях, скажем, можно написать 2 + 'ж', к двойке будет прибавляться кодировка Unicode '\u0416' буквы 'ж'. В десятичной форме это число 1046 и в результате сложения получим 1048.

А в записи 2 + "Ж" плюс понимается как сцепление строк, двойка будет преобразована в строку, в результате получится строка "2ж".

Вещественных типов два: float и double.

На рис. 1 показана иерархия типов данных Java.

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

Java — язык со строгой типизацией (strongly typed language).

Разберем каждый тип подробнее.


Рис. 1. Типы данных языка Java


Логический тип

Значения логического типа boolean возникают в результате различных сравнений и используются, главным образом, в условных операторах и операторах циклов. Логических значении всего два: true (истина) и false (ложь). Это служебные слова Java. Описание переменных этого типа выглядит так:

boolean b = true, bb = false, bool2;

Над логическими данными можно выполнять операции присваивания, например, bool2 = true, в том числе и составные с логическими операциями; сравнение на равенство b == bb и на неравенство b != bb, а также логические операции.

Логические операции

  • отрицание (NOT) ! (обозначается восклицательным знаком);

  • конъюнкция (AND) & (амперсанд);

  • дизъюнкция (OR) | (вертикальная черта);

  • исключающее ИЛИ (XOR) ^ (каре).

Они выполняются над логическими данными, их результатом будет тоже логическое значение true или false. Про них можно ничего не знать, кроме того, что представлено в табл. 1.


Таблица 1. Логические операции

b1

b2

!b1

b1&b2

b1|b2

b1^b2

true

true

false

true

true

false

true

false

false

false

true

true

false

true

true

false

true

true

false

false

true

false

false

false


Если бы Шекспир был программистом, фразу "То be or not to be" он написал бы так:

2b | ! 2b. ()

Кроме перечисленных четырех логических операций есть еще две логические операции сокращенного вычисления:

  • сокращенная конъюнкция (conditional-AND) &&;

  • сокращенная дизъюнкция (conditional-OR) ||.

Удвоенные знаки амперсанда и вертикальной черты следует записывать без пробелов.

Правый операнд сокращенных операций вычисляется только в том случае, если от него зависит результат операции, т. е. если левый операнд конъюнкции имеет значение true, или левый операнд дизъюнкции имеет значение false.

Это правило очень удобно и ловко используется, например, можно записывать выражения (n != 0) && (m/n > 0.001) или (n == 0) || (m/n > 0.001) не опасаясь деления на нуль.

Практически всегда в Java используются именно сокращенные логические операции.

Целые типы

Спецификация языка Java, JLS, определяет разрядность (количество байтов, выделяемых для хранения значений типа в оперативной памяти) и диапазон значений каждого типа. Для целых типов они приведены в табл. 2.


Таблица 2. Целые типы

Тип

Разрядность (байт)

Диапазон

byte

1

от -128 до 127

short

2

от -32768 до 32767

int

4

от -2147483648 до 2147483647

long

8

от -9223372036854775808 до 9223372036854775807

char

2

от '\u0000' до '\uFFFF' , в десятичной форме от 0 до 65535


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

Хотя тип char занимает два байта, в арифметических вычислениях он участвует как тип int, ему выделяется 4 байта, два старших байта заполняются нулями.

Примеры определения переменных целых типов:

byte b1 = 50, b2 = -99, bЗ;

short det = 0, ind = 1;

int i = -100, j = 100, k = 9999;

long big = 50, veryBig = 2147483648L;

char c1 = 'A', c2 = '?', newLine = '\n';

Целые типы хранятся в двоичном виде в дополнительном коде.

Над целыми типами можно производить массу операций. Их набор восходит к языку С, он оказался удобным и кочует из языка в язык почти без изменений.

Операции над целыми типами

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

Арифметические операции

К арифметическим операциям относятся:

  • сложение + (плюс);

  • вычитание - (дефис);

  • умножение * (звездочка);

  • деление / (наклонная черта — слэш);

  • взятие остатка от деления (деление по модулю) % (процент);

  • инкремент (увеличение на единицу) ++;

  • декремент (уменьшение на единицу) --

Между сдвоенными плюсами и минусами нельзя оставлять пробелы. Сложение, вычитание и умножение целых значений выполняются как обычно, а вот деление целых значений в результате дает опять целое (так называемое "целое деление"), например, 5/2 даст в результате 2, а не 2.5, а 5/(-3) даст -1. Дробная часть попросту отбрасывается, происходит усечение частного. Это поначалу обескураживает, но потом оказывается удобным для усечения чисел.

В Java принято целочисленное деление.

Это странное для математики правило естественно для программирования: если оба операнда имеют один и тот же тип, то и результат имеет тот же тип. Достаточно написать 5/2.0 или 5.0/2 или 5.0/2.0 и получим 2.5 как результат деления вещественных чисел.

Операция деление по модулю определяется так: а % b = а - (а / b) * b; например, 5%2 даст в результате 1, а 5% (-3) даст, 2, т.к. 5 = (-3) * (-1) + 2, но (-5)%3 даст -2, поскольку -5 = 3 * (-1) - 2.

Операции инкремент и декремент означают увеличение или уменьшение значения переменной на единицу и применяются только к переменным, но не к константам или выражениям, нельзя написать 5++ или (а + b)++.

Интересно, что эти операции 'можно записать и перед переменной: ++i, — j. Разница проявится только в выражениях: при первой формe записи (постфиксной) в выражении участвует старое значение переменной и только потом происходит увеличение или уменьшение ее значения. При второй форме записи (префиксной) сначала изменится переменная и ее новое значение будет участвовать в выражении.

Приведение типов

Результат арифметической операции имеет тип int, кроме того случая, когда один из операндов типа long. В этом случае результат будет типа long.

Перед выполнением арифметической операции всегда происходит повышение типов byte, short, char. Они преобразуются в тип int, а может быть, и в тип long, если другой операнд типа long. Операнд типа int повышается до типа long, если другой операнд типа long. Конечно, числовое значение операнда при этом не меняется.

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

short b1=1, b2=2;

short k = (short)(b1 + b2);

будет верным.

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

В языке Java нет целочисленного переполнения.

Операции сравнения

В языке Java шесть обычных операций сравнения целых чисел по величине:

  • больше >;

  • меньше <;

  • больше или равно >=;

  • меньше или равно <=;

  • равно ==;

  • не равно !=.

Для записи сложных сравнений следует привлекать логические операции. Например, в вычислениях часто приходится делать проверки вида а < х < b. В данном случае следует написать выражение (а < х) && (х < b), причем здесь скобки можно опустить, написать просто а < х && х < b.

Вещественные типы

Вещественных типов в Java два: float и double. Они характеризуются разрядностью, диапазоном значений и точностью представления, отвечающим стандарту IEEE 754-1985 с некоторыми изменениями. К обычным вещественным числам добавляются еще три значения.

1. Положительная бесконечность, выражаемая константой POSITIVE_INFINITY и возникающая при переполнении положительного значения, например, в результате операции умножения 3.0*6е307.

2. Отрицательная бесконечность NEGATIVE_INFINITY.

3. "Не число", записываемое константой NaN (Not a Number) и возникающее при делении вещественного числа на нуль или умножении нуля на бесконечность.

Кроме того, стандарт различает положительный и отрицательный нуль, возникающий при делении на бесконечность соответствующего знака, хотя сравнение 0.0 == -0.0 дает true. Операции с бесконечностями выполняются по обычным математическим правилам.

Во всем остальном вещественные типы — это обычные, вещественные значения, к которым применимы все арифметические операции и сравнения, перечисленные для целых типов. Характеристики вещественных типов приведены в табл. 1.4.

В языке Java взятие остатка от деления %, инкремент ++ и декремент — применяются и к вещественным типам.


Таблица 3. Вещественные типы

Тип

Разрядность

Диапазон

Точность

float

4

3,4е-38 < |х| < 3,4е38

7—8 цифр

double

8

1,7е-308<|х|<1,7е308

17 цифр


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

  • если в операции один операнд имеет тип double, то и другой приводится к типу double;

  • если один операнд имеет тип float, то и другой приводится к типу float;

  • в противном случае действует правило приведения целых значений.

Условная операция

Эта своеобразная операция имеет три операнда. Вначале записывается произвольное логическое выражение, т. е. имеющее в результате true или false, затем знак вопроса, потом два произвольных выражения, разделенных двоеточием, например,

х < 0 ? 0 : х

х > у ? х — у : х + у

Условная операция выполняется так. Сначала вычисляется логическое выражение. Если получилось значение true, то вычисляется первое выражение после вопросительного знака ? и его значение будет результатом всей операции. Последнее выражение при этом не вычисляется. Если же получилось значение false, то вычисляется только последнее выражение, его значение будет результатом операции. Это, например, позволяет написать n == 0 ? да : m / n не опасаясь деления на нуль.

Приоритет операций

Операции перечислены в порядке убывания приоритета. Операции на одной строке имеют одинаковый приоритет.

1. Постфиксные операции ++ и —.

2. Префиксные операции ++ и —, дополнение ~ и отрицание !.

3. Приведение типа (тип).

4. Умножение *, деление / и взятие остатка %.

5. Сложение + и вычитание -.

6. Сдвиги <<, >>, >>>.

7. Сравнения >, <, >=, <=.

8. Сравнения ==, !=.

9. Побитовая конъюнкция &.

10. Побитовое исключающее ИЛИ ^.

11. Побитовая дизъюнкция | .

12. Конъюнкция &&.

13. Дизъюнкция | | .

14. Условная операция ?: .

15. Присваивания =, +=, -=, *=, /=, %=, &=, ^=, |=, <<, >>, >>>.

Операторы

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

Набор операторов языка Java включает:

  • операторы описания переменных и других объектов;

  • операторы-выражения;

  • операторы присваивания;

  • условный оператор if;

  • три оператора цикла while, do-while, for;

  • оператор варианта switch;

  • Операторы перехода break, continue и return;

  • блок {};

  • пустой оператор — просто точка с запятой.

В языке Java нет оператора goto.

Всякий оператор завершается точкой с запятой. Точка с запятой в Java не разделяет операторы, а является частью оператора (В Pascal’е наоборот).

Блоки

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

Условный оператор

Условный оператор (if-then-else) в языке Java записывается так:

if (логВыр) оператор1 else оператор2

и действует следующим образом. Сначала вычисляется логическое выражение логвыр. Если результат true, то действует оператор! и на этом действие условного оператора завершается, оператор2 не действует, далее будет выполняться следующий за if оператор. Если результат false, то действует оператор2, при этом оператор1 вообще не выполняется.

Условный оператор может быть сокращенным (if-then statement):

if (логВыр) оператор1

и в случае false не выполняется ничего.

Очень часто одним из операторов является снова условный оператор, например:

if (a >= 10) if (b <= 20) x = 0; else x = 1;

Правило таково: ветвь else относится к ближайшему слева условию if, не имеющему своей ветви else. Изменить этот порядок можно с помощью блока:

if (a > 10) {if (b < 20) x = 0; else x = 1;}

Операторы цикла

Основной оператор цикла — оператор while — выглядит так:

while (логВыр) оператор

Вначале вычисляется логическое выражение логВыр; если его значение true, то выполняется оператор, образующий цикл. Затеем снова вычисляется логВыр и действует оператор, и так до тех пор, пока не получится значение false. Если логВыр изначально равняется false, то оператор не будет выполнен ни разу. Предварительная проверка обеспечивает безопасность выполнения цикла, позволяет избежать переполнения, деления на нуль и других неприятностей. Поэтому оператор while является основным, а в некоторых языках и единственным оператором цикла.

Можно организовать и бесконечный цикл:

while (true) оператор

Второй оператор цикла — оператор do-while — имеет вид

do оператор while (логВыр)

Здесь сначала выполняется оператор, а потом происходит вычисление логического выражения логвыр. Цикл выполняется, пока логвыр остается равным true.

Существенное различие между этими двумя операторами цикла только в том, что в цикле do-while оператор обязательно выполнится хотя бы один раз.

Третий оператор цикла — оператор for — выглядит так:

for (списокВыр; логВыр; списокВыр2) оператор

Работа цикла полностью аналогична языкам C/C++

Вместо списокВыр1 может стоять одно определение переменных обязательно с начальным значением. Такие переменные известны только в пределах этого цикла.

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

for (;;) оператор

Оператор continue и метки

Оператор continue используется только в операторах цикла. Он имеет две формы. Первая форма состоит только из слова continue и осуществляет немедленный переход к следующей итерации цикла. В очередном фрагменте кода оператор continue позволяет обойти деление на нуль:

for (int i = 0; i < N; i++){

if (i '== j) continue;

s += 1.0 / (i - j);

}

Вторая форма содержит метку:

continue метка

метка записывается, как все идентификаторы, из букв Java, цифр и знака подчеркивания, но не требует никакого описания. Метка ставится перед оператором или открывающей фигурной скобкой и отделяется от них двоеточием. Так получается помеченный оператор или помеченный блок.


Случайные файлы

Файл
5.doc
139048.rtf
25373.rtf
56371.rtf
11553-1.rtf