Понятие оператора. Составной оператор. Условный оператор

Лабораторная работа 6

Тема: Операторы управления программой в Java.

Цель - изучить основные операторы Java-программ.

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

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

Любое выражение можно превратить в оператор, поставив после него точку с запятой. Надо заметить, что в Java, как и в С++, точка с запятой не разделяет операторы она превращает выражение в оператор. В частности, допустим пустой оператор, состоящий только из точки с запятой. Такой оператор ничего не делает и может встречаться везде, где структура языка требует наличия оператора.

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

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

Синтаксис, т. е. форма записи, условного оператора в языке Java следующий:

if (условие) оператор1 else оператор2.

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

Смысл условного оператора состоит в том, что сначала вычисляется условие; если оно истинно, выполняется оператор 1 (он называется положительной альтернативой), иначе выполняется оператор2 (отрицательная альтернатива). Ключевое слово else и отрицательная альтернатива могут отсутствовать - в этом случае при ложном условии не выполняется никаких действий.

Синтаксис языка не позволяет записывать несколько операторов ни в ветви then, ни в ветви else. При необходимости составляется блок операторов в фигурных скобках. Соглашения "Code Conventions" рекомендуют всегда использовать фигурные скобки и размещать оператор на нескольких строках с отступами, как в следующем примере:

if (а < х) {

х = а + b;

}

else {

х = а — b;

}

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

if (n == 0) {

sign = 0;

}

else if (n < 0){

sign = -1;

}

else { sign = 1;

}

При этом может возникнуть такая ситуация ("dangling else"):

int ind = 5, х = 100;

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

Сохранит переменная х значение 0 или станет равной 1? Здесь необходимо волевое решение, и общее для большинства языков, в том числе и Java,. правило таково: ветвь else относится к ближайшему слева услдвию if, не имеющему своей ветви else. Поэтому в нашем примере переменная х останется равной 0.

Изменить этот порядок можно с помощью блока:

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

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

if (ind >= 10 && ind <= 20) х = 0; else х = 1;

В приведенном ниже листинге вычисляются корни квадратного уравнения
ах 2 + + с = 0 для любых коэффициентов, в том числе и нулевых.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: