Операторы

Оператор — это отдельное предложение на языке программирования, имеющее законченный смысл. На языке C++ любой оператор заканчивается символом ; (точка с запятой). При этом надо учитывать один нюанс: если в языках типа Паскаль точка с запятой — разделитель между операторами, то в C++ и других C-подобных языках — это обязательная часть оператора.

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

Рассмотрим подробнее исполняемые операторы.

Классификация исполняемых операторов

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

К простым операторам относятся: оператор присваивания, оператор-выражение, пустой оператор, операторы перехода (goto, continue, break, return), вызов функции как отдельного оператора.

Структурированные операторы — это операторы ветвление (if), выбора (switch), цикла (for, while,do).

Теперь перейдём к рассмотрению отдельных операторов.

Оператор присваивания

Оператор присваивания — это самый употребительный оператор. Его назначение — присвоить новое значение какой-либо переменной. В C++ имеется три формы этого оператора.

1)Простой оператор присваивания записывается так:

переменная = выражение;

Данный оператор работает следующим образом: вначале вычисляется выражение, записанное справа от символа операции = (равно), затем полученный результат присваивается переменной, стоящей слева от знака =. Тип результата должен совпадать с типом переменной, записанной слева, или быть к нему приводимым.

Слева от знака = может быть только переменная, справа же можно записать и константу, и переменную и вообще выражение любой сложности.

Пример операторов

x=3;

r=x;

y=x+3*r;

s=sin(x);

2)Множественное присваивание — в таком операторе последовательно справа налево нескольким переменным присваивается одно и то же значение, например:

a=b=c=1;

Так можно сразу определить, к примеру, что в равностороннем треугольнике все стороны равны одному и тому же числу 1. Приведенный выше оператор эквивалентен последовательному выполнению трёх операторов:

a=1;

b=a;

c=b;

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

3)Присваивание с одновременным выполнением какой-либо операции в общем виде записывается так:

переменная знак_операции = выражение;

и равносильно записи

переменная = переменная знак_операции выражение;

Например, оператор:

s += 5;    // 1-й вариант

делает то же самое, что и оператор

s = s + 5; // 2-й вариант

а именно: взять старое значение из переменной s, прибавить к нему число 5 и полученное значение снова записать в переменную s.

Как видим, запись 1-го варианта короче записи 2-го варианта, да и выполняется быстрее, так как в 1-м варианте адрес переменной s вычисляется 1 раз, а во 2-м варианте — дважды.

Оператор-выражение

В языке C++ любое выражение (арифметическое, логическое, и т.д.), которое заканчивается символом ; (точка с запятой), считается законченным предложением, т.е. оператором. Примеры:

1)Выполняется префиксная операция автоуменьшения:

--i;

2)Выполняется постфиксная операция автоувеличения:

i++;

3)Выполняется перегруженная операция вывода << :

cout << x;

4)Вызывается функция вывода данных на дисплей монитора (выводится текст «Test»):

printf("Test\n");

5)Вычисляется сумма двух чисел, но её значение не присваивается ни какой переменной. Оператор бессмысленный, но возможный:

a+b;

Пустой оператор

Пустой оператор — это оператор, который ничего не выполняет. Зачем нужен «бесполезный» оператор?

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

Пустой оператор — это одиночный символ ; (точка с запятой), например:

c=a+b; ;

Здесь первый символ ; (точка с запятой) завершает оператор присваивания, а второй символ как раз и даёт нам пустой оператор. В данной ситуации пустой оператор совсем не нужен (но и не является синтаксической ошибкой!), приведен только для пояснения. Более «разумные» примеры использования пустого оператора будут приведены позже в соответствующих темах.

Операторы перехода

Для изменения последовательного выполнения операторов используются операторы перехода. Это операторы goto, continue, break, return. Рассмотрим их подробнее.

1)Оператор goto

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

goto Metka;

// Любые операторы

// ...............

Metka:;

Здесь Metka — это идентификатор (метка), обозначающий то место в тексте программы, куда делается переход. Такая метка не требует описания (её и нельзя описывать!), задается по общим правилам и не может совпадать ни с ключевыми словами, ни с именами объектов программы.

В языке C++ этот оператор используется редко. Необдуманное применение goto приводит к затруднению понимания текста программы. Как правило, если в тексте программы требуется использование этого оператора, то это означает слабую логику в проектировании алгоритма программы.

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

2)Оператор break

Данный оператор применяется для выхода из операторов циклов (for, while, do) или оператора выбора switch. При использовании этого оператора метки не нужны, как как управление передаётся на оператор, следующий за оператором цикла или выбора.

Вот этот оператор в программах на C++ применяется очень часто! А оператор switch вообще без break не используют. Примеры применения оператора break рассмотрим в соответствующих темах.

3)Оператор continue

Позволяет передать управление в конец цикла. Применяется гораздо реже, чем оператор break. Как правило, всегда можно построить алгоритм решаемой задачи без использования оператора continue. Пример применения оператора continue рассмотрим в теме «Циклы».

4)Оператор return

Обеспечивает выход из функции. Управление передаётся оператору, следующему за вызовом функции. Примеры применения оператора return рассмотрим в темах, связанных с использованием функций.

Hosted by uCoz
Назад
На верх
Вперёд
Hosted by uCoz